Compare commits

...

323 Commits

Author SHA1 Message Date
Vencislav Atanasov 7c7661f8b4 Simplify Video.js setup 2024-10-31 22:13:44 +02:00
Vencislav Atanasov 9fc93ec924 Sort halls by ID 2024-10-31 21:24:28 +02:00
Vencislav Atanasov 20701350ba Add gap between the players 2024-10-31 01:22:48 +02:00
Vencislav Atanasov d464a4c181 Add basic CSS for front page stream wrappers 2024-10-31 01:20:18 +02:00
Vencislav Atanasov d2a08c7355 Rework shortcode to use heredoc instead of output buffering 2024-10-31 01:10:15 +02:00
Vencislav Atanasov 5fc953c7ec Fix shortcodes 2024-10-31 00:52:24 +02:00
Vencislav Atanasov 0f493a950f Oops 2024-10-31 00:51:05 +02:00
Vencislav Atanasov 59003fdec7 Add front page players 2024-10-31 00:49:29 +02:00
Vencislav Atanasov d7d02f59d5 Add fluid video.js option 2024-10-31 00:34:15 +02:00
Vencislav Atanasov b5fbe19c7d Delete streaming template 2024-10-31 00:10:04 +02:00
Vencislav Atanasov f78d86d5de Use array_merge instead of array unpacking 2024-10-30 23:59:09 +02:00
Vencislav Atanasov 60835892c0 Add Video.js shortcode 2024-10-30 23:53:59 +02:00
Vencislav Atanasov 42071de21d Add Video.js styles and script if a stream is active 2024-10-30 23:42:23 +02:00
Vencislav Atanasov bb9a257dd5 Move CSS to the stylesheets file 2024-10-30 22:14:56 +02:00
Vencislav Atanasov bd6e489bcb Extract date interval functions, add text if no streams are available 2024-10-30 22:05:30 +02:00
Vencislav Atanasov 1d83107b3a Fix front page style 2024-10-30 21:43:06 +02:00
Vencislav Atanasov 1d7cfbf100 Fix text after event 2024-10-30 21:40:48 +02:00
Vencislav Atanasov 483c563526 Fix array keys 2024-10-30 21:38:20 +02:00
Vencislav Atanasov 2322eb3e66 Extract front page content into a separate file, extract event times into a config file 2024-10-30 21:37:11 +02:00
Vencislav Atanasov b0ea463d53 Add countdown logic 2024-10-25 00:09:41 +03:00
Vencislav Atanasov b28f8909f9 Add padding between the digits 2024-10-24 23:50:09 +03:00
Vencislav Atanasov 823c4276a2 Fix CSS selector 2024-10-24 23:44:57 +03:00
Vencislav Atanasov 3f465a92e6 Add before and after texts to countdown 2024-10-24 23:43:03 +03:00
Vencislav Atanasov 25132d2cc2 Add static version of the countdown 2024-10-24 23:39:28 +03:00
Vencislav Atanasov 9e92868475 Remove unneeded echo 2024-10-24 23:20:34 +03:00
Vencislav Atanasov e94ff0bbea Add border to 2024 logo 2024-10-11 21:00:42 +03:00
Vencislav Atanasov 24e0aa9673 Add gradient to navbar 2024-10-11 20:56:06 +03:00
Vencislav Atanasov 941e672ce2 Delete empty readme.txt 2024-10-11 19:48:25 +03:00
Vencislav Atanasov e8a0f338e2 Remove gradient from 2024 nav bar 2024-10-10 20:44:34 +03:00
Vencislav Atanasov 8f0082debe Fix equal sign and quote style 2024-10-10 20:44:12 +03:00
Vencislav Atanasov f83beafb52 Fix should_show_sidebar() 2024-10-10 20:26:08 +03:00
Vencislav Atanasov c969dd7146 Fix schedule sidebar for workshops in 2024 2024-10-10 20:23:34 +03:00
Vencislav Atanasov bbd885d3ac Fix speaker pictures 2024-10-10 20:07:40 +03:00
Vencislav Atanasov e6d606f832 Add schedule config for 2024 2024-10-10 19:55:20 +03:00
Vencislav Atanasov abddaeff41 Add white background to the 2024 logo 2024-10-10 16:03:11 +03:00
Vencislav Atanasov 8be02b68c8 Add 2024 logo 2024-10-10 00:03:46 +03:00
Vencislav Atanasov 827ad21a33 Add 2024 banner 2024-10-10 00:03:09 +03:00
Vencislav Atanasov 9e4448b363 Add new line and word-joiner in speaker organisation label 2023-10-17 00:54:07 +03:00
Vencislav Atanasov 9f3dc1a1aa Show the organisation of each speaker, if provided 2023-10-17 00:45:48 +03:00
Vencislav Atanasov 8ad92a5fa3 Replace an arrow function with an anonymous one 2023-10-17 00:20:21 +03:00
Vencislav Atanasov 0284c3f460 Load and use the strftime replacement function only if needed 2023-10-17 00:17:55 +03:00
Vencislav Atanasov 7d6ca43395 Fix an edge case in which an event spans over adjacent slots but in different days 2023-10-17 00:00:27 +03:00
Vencislav Atanasov 0eb9145e5a Use more meaningful variable names 2023-10-17 00:00:27 +03:00
Vencislav Atanasov b33da1563f Fix for unset events 2023-10-17 00:00:27 +03:00
Vencislav Atanasov 4b072dc2df Add backwards-compatible strftime polyfill for PHP 8.1+ 2023-10-17 00:00:27 +03:00
Vencislav Atanasov 24d57ee1b5 Replace strftime() with date() 2023-10-17 00:00:27 +03:00
Vencislav Atanasov 43f83c1ca4 Get schedule year from blog slug 2023-10-17 00:00:27 +03:00
Vencislav Atanasov a0b6b4f6d9 Fix for local development 2023-10-17 00:00:27 +03:00
ignisf 08d3cd0423 Fix favicon aspect ratio.... 2023-10-16 23:30:38 +03:00
Ivaylo Markov a69388ebe3 Title fixes 2023-10-16 22:11:24 +03:00
Vencislav Atanasov 6a6a7200ea Add schedule config for 2023 2023-10-16 19:38:46 +03:00
Vencislav Atanasov 395122a411 Change fb_preview filename format to match the other images 2023-09-08 13:35:14 +03:00
Vencislav Atanasov db17984d05 Extract blog_slug detection to a new function 2023-09-08 13:31:19 +03:00
Vencislav Atanasov 6a27f51189 Fix blog_slug not being global 2023-09-08 13:20:44 +03:00
Vencislav Atanasov aa75f2f60f Implement automatic OpenGraph tags population 2023-09-08 13:17:11 +03:00
Vencislav Atanasov 4231dab898 Apply additional CSS from wp-admin 2023-09-08 13:04:50 +03:00
Iliyan Georgiev e2ea6b866f 2023: new fb preview 2023-09-07 20:28:40 +03:00
ignisf 62609b2143 Add FB banner for 2023 2023-09-04 19:56:35 +03:00
Vencislav Atanasov 6a3b7e73ad 2023 logo position 2023-09-02 23:39:59 +03:00
Vencislav Atanasov f9f94e106d Fix 2023 header again 2023-09-02 23:31:37 +03:00
Vencislav Atanasov 6952ef4277 Fix 2023 header 2023-09-02 23:28:38 +03:00
Vencislav Atanasov b8e90fd396 Replace 2023 image 2023-09-02 23:16:23 +03:00
Vencislav Atanasov 1f29fce402 Fix CSS 2023-09-02 23:15:07 +03:00
Vencislav Atanasov 47cf98cb62 Fix quotes 2023-09-02 23:11:46 +03:00
Vencislav Atanasov 9e31f24f69 Add header customisation for 2023 2023-09-02 23:09:36 +03:00
Vencislav Atanasov 1b355bd48f Add 2023 images 2023-09-02 22:55:03 +03:00
Ivaylo Markov fe28caadda streaming: remove chat for 2022 2022-10-16 15:23:15 +03:00
Vasil Kolev 4fa533919d schedule: fix XSS, reported by Hetti 2022-10-16 15:23:01 +03:00
Vasil Kolev dadf30c8ae streaming: default for 2022 is hall-a 2022-10-13 13:53:04 +03:00
Vasil Kolev c5d9daa758 parse.php: HOW THE HELL DID THAT WORK EVER 2022-09-29 15:35:55 +03:00
Ivan Popjelev 2e1323bb6a Improve displaying of sponsors logos. 2022-09-29 15:31:38 +03:00
Vasil Kolev 6c785d30e4 2022 images 2022-09-29 15:31:37 +03:00
Vasil Kolev b129823bf6 config: add 2022 2022-09-29 15:31:37 +03:00
Vasil Kolev 0e7d96a965 streaming: updated to have chat 2022-09-29 15:31:37 +03:00
Vasil Kolev 4b2c31c775 2021 hacks 2022-09-29 15:31:37 +03:00
Vasil Kolev f2b7e6f278 2022: new fb preview 2022-09-29 15:31:37 +03:00
Vasil Kolev 3d1d95c759 Change sponsor items formatting. 2022-09-29 15:31:37 +03:00
Vasil Kolev ab3f19d552 2022 temporary images 2022-09-29 15:31:37 +03:00
Vasil Kolev 1e06de42bc schedule: fix id of misc track 2022-09-29 15:31:37 +03:00
Vasil Kolev cfe9b21b82 schedule: fix for transposition to work 2021-07-27 22:12:26 +03:00
Vasil Kolev 5821861655 front-page: remove old unused code 2021-07-21 19:16:57 +03:00
Vasil Kolev 6d293220ec add about event on top 2021-07-21 19:16:44 +03:00
Vasil Kolev d4286f4688 switch the news to be in a single column 2021-07-21 19:15:51 +03:00
Vasil Kolev 4d158f28e4 2021: for mobiles, show logo centered on top 2021-07-21 18:46:02 +03:00
Vasil Kolev 8c2d6fcfa3 2021: rm author/publication date from post 2021-07-21 18:29:58 +03:00
Vasil Kolev 0b11777948 2021: rm comments-are-disabled 2021-07-21 18:29:00 +03:00
Vasil Kolev a231a3c8c1 2021: rm poster name and date 2021-07-21 18:24:29 +03:00
Ivaylo Markov ba2d4d96ad 2021: updates 2021-07-21 17:46:18 +03:00
Ivaylo Markov e9859e3937 Design update for 2021 2021-07-08 21:22:00 +03:00
Ivaylo Markov 81f5de7db8 Add Streaming page submenu 2020-11-07 19:25:54 +02:00
Ivaylo Markov a4f8e714b8 Don't display hidden language tracks in legend 2020-11-05 23:00:18 +02:00
Ivaylo Markov 9da34728cc Auto-update iCalendar link; remove Google Calendar 2020-10-31 10:39:42 +02:00
Ivaylo Markov 90d896cfe2 Add workaround for wrong FB/Twitter preview image 2020-10-31 10:34:37 +02:00
Ivaylo Markov 711f550c16 Use conference ID when linking Clarion iCalendar 2020-10-29 18:30:34 +02:00
Ivaylo Markov 84837482e2 Add schedule config for 2020 2020-10-26 22:33:50 +02:00
Ivaylo Markov afeb62845f Allow shortcodes in excerpts for BBB forms 2020-10-25 18:06:26 +02:00
Ivaylo Markov 618d65e659 Add some docs on updating the design. 2020-09-30 21:10:41 +03:00
Ivaylo Markov c9c7318578 Add the real 2020 images 2020-09-30 19:40:51 +03:00
Ivaylo Markov 88b00c586e Add 2020 temporary English banner 2020-09-05 22:47:21 +03:00
Ivaylo Markov d0fcf7eb8a Misc. 2020 tweaks 2020-09-05 11:38:33 +03:00
Ivaylo Markov 638fa0235c Add temporary 2020 design 2020-09-05 11:37:36 +03:00
Vasil Kolev 0834c196fe schedule: do not repeat multi-slot talks 2019-11-01 08:28:12 +02:00
Vasil Kolev 09bbd6adc6 calendar: temporary hack 2019-10-31 22:33:41 +02:00
Vasil Kolev 23ef4e25ed functions: add rss links in header 2019-06-18 15:33:32 +03:00
Vasil Kolev bcf09ae4b0 css: make the logo to be always on top 2019-06-18 15:16:42 +03:00
Vasil Kolev c62d86f41b 2019: add proper bg/en overlays 2019-06-18 15:16:20 +03:00
Vasil Kolev 6f65da3260 theme: add most stuff for 2019 2019-06-17 19:42:48 +03:00
Vasil Kolev 88e49db34e schedule config: add 2019 2019-06-09 15:12:19 +03:00
Vasil Kolev 0e6b47259c schedule: more visible (and translated) feedback link, shown after the event 2018-11-07 17:18:46 +02:00
Vasil Kolev f534221de0 schedule: do not show misc in fulltalk list 2018-10-16 13:08:18 +03:00
Vasil Kolev 76b46316f9 schedule: add support for full schedule 2018-10-16 13:07:52 +03:00
Vasil Kolev 18ac2789f7 schedule/config: add 2018 2018-10-16 13:07:10 +03:00
Vasil Kolev ac3a19bf73 schedule: display TBA on missing data 2018-09-11 17:08:39 +03:00
Vasil Kolev bd9e467ac7 2018 images 2018-09-11 17:08:20 +03:00
Vasil Kolev 80a1dee4b0 shortcode_attrs got changed in this version 2018-05-23 23:01:48 +03:00
Vasil Kolev 2bb875d771 add feedback link 2017-11-04 12:05:44 +02:00
Vasil Kolev 136ebf38b9 2017 changes 2017-10-25 19:06:57 +03:00
Vasil Kolev 6ad6a010b8 make the logo year-specific 2017-10-25 19:06:24 +03:00
Vasil Kolev ce7bbcbbbe don't take slots from other rooms that have nothing to do with us 2017-10-20 01:28:13 +03:00
Vasil Kolev 3e5047028f get language from wp 2017-10-20 01:27:49 +03:00
Vasil Kolev ec35c444e4 missed fetching the right language string 2017-10-20 01:01:37 +03:00
Vasil Kolev e8ab9df36f add hidden track 2017-10-20 00:56:43 +03:00
Vasil Kolev 1501e54165 updated banners 2017-10-20 00:56:21 +03:00
Vasil Kolev 08bbce3e67 streaming page 2017-08-07 11:12:05 +03:00
Vasil Kolev 0f15f6c48b interlude 2017-08-07 11:11:45 +03:00
Vasil Kolev d6b2532b24 images for 2017 2017-08-07 11:11:27 +03:00
Vasil Kolev 9d27521459 config form 2017 2017-08-07 11:10:59 +03:00
Vasil Kolev 6f913742dd update from last year 2017-08-07 11:10:32 +03:00
Vasil Kolev 4d9a3dc27a update readme 2016-10-24 22:05:03 +03:00
Vasil Kolev cd87efd6e8 parse the year properly, restore a simplified schedule-config 2016-10-24 16:22:25 +03:00
Vasil Kolev dd8e76cb76 move this to the new model schedule 2016-10-24 16:04:13 +03:00
Vasil Kolev 2cb42a34db rm unused files 2016-10-24 01:08:52 +03:00
Vasil Kolev 96eea92ebb rm unused files 2016-10-24 01:08:11 +03:00
Vasil Kolev 49e25053e0 use the new style program 2016-10-24 01:07:26 +03:00
Vasil Kolev dbbdb20b61 fix table style 2016-10-24 01:06:43 +03:00
Openfest 4225e2f191 Merge branch 'schedule-rewrite' of https://github.com/user890104/initfest into user890104-schedule-rewrite 2016-10-24 00:51:18 +03:00
Vencislav Atanasov af0f5020ec Merge branch 'master' of https://github.com/initLab/initfest into schedule-rewrite
# Conflicts:
#	schedule/load.php
2016-10-24 00:46:48 +03:00
Vasil Kolev f4daf0c5ba merge 2016-10-24 00:43:48 +03:00
Openfest 6aac03d5fb last mods 2016-10-24 00:35:05 +03:00
Vencislav Atanasov 46d9f93ac3 Fix filtering by event type 2016-10-24 00:34:15 +03:00
Vencislav Atanasov 48a0fa9c5f Remove unused variables, add filter by event type, rewrite CSS class generation 2016-10-24 00:16:00 +03:00
Vencislav Atanasov a807406eb0 Rename variables, add vertical merging of slots 2016-10-23 23:16:13 +03:00
Vencislav Atanasov e18f6d1eb7 Enable horizontal merging of slots 2016-10-23 00:44:27 +03:00
Vencislav Atanasov 06080c6249 Use the proper styles 2016-10-22 19:09:03 +03:00
Vencislav Atanasov 69058e8fab Merge event slots horizontally 2016-10-22 17:22:04 +03:00
Vencislav Atanasov 3b74bc0053 Fix rendering of schedule for 2015 2016-10-22 03:30:31 +03:00
Vencislav Atanasov da5810e68b [WIP] Properly format the schedule, fix minor bugs/whitespace 2016-10-22 03:23:29 +03:00
Vencislav Atanasov 439d778f15 Add support for showing different conferences (2014-2016), simplify some of the HTML code generation 2016-10-19 21:49:50 +03:00
Vencislav Atanasov 0857039fc5 Split code to functions, add basic config 2016-10-16 21:50:09 +03:00
Vencislav Atanasov ca4f0e0f73 Filter allowed hall ids 2016-10-16 21:13:25 +03:00
Vencislav Atanasov 33ecff552c Add legend, fix issues with the locale 2016-10-16 21:01:19 +03:00
Vencislav Atanasov bdd3caa101 Increate cut length from 50 to 70, use multibyte strlen 2016-10-16 20:46:27 +03:00
Vencislav Atanasov 117c405747 Fix closing tags, add placeholder for speaker URL 2016-10-16 20:43:36 +03:00
Vencislav Atanasov 159cd14a5e Fix html of the test page 2016-10-16 20:30:50 +03:00
Vencislav Atanasov 4eddfb2d5a Skip slots without matching event ID 2016-10-16 20:23:37 +03:00
Vencislav Atanasov 25379fab15 Add gitignore for cache 2016-10-16 20:03:05 +03:00
Vencislav Atanasov b6b02e48b0 Revert to the initial version of schedule 2016-10-16 19:47:05 +03:00
Vasil Kolev 581962c4b6 one more check 2016-10-16 00:03:36 +03:00
Vasil Kolev d69b2b7b14 halls for 2016 2016-10-16 00:02:51 +03:00
Vasil Kolev 772ec30e0f update css as per Lyubo1's suggestion 2016-07-05 14:48:32 +03:00
Vasil Kolev df3138a09e add new program conifg, tba label 2016-07-05 14:47:12 +03:00
Vasil Kolev 2ed2a73af4 fix banner style 2016-07-05 14:46:47 +03:00
Vasil Kolev f8c1de2542 fix banner style 2016-07-05 14:08:18 +03:00
Vasil Kolev 501186204b set the banner background to be switched with the year, too, add banners for 2016 2016-07-03 14:10:04 +03:00
Vasil Kolev 43b49895e5 survive if clarion is down 2016-03-31 22:13:29 +03:00
Vencislav Atanasov dc7b3b5e92 Merge pull request #30 from user890104/master
Hide stream player on homepage
2015-11-17 23:52:51 +02:00
Vencislav Atanasov 2db122c92a hide stream player on homepage 2015-11-17 23:50:33 +02:00
Vencislav Atanasov e9783ec7e6 Merge pull request #3 from initLab/master
sync with upstream
2015-11-17 23:49:32 +02:00
Vasil Kolev 22058ca66c Merge pull request #29 from qweqq/stream-player
Добавен видео плейър на началната страница
2015-11-07 08:28:44 +02:00
Vasil Kolev 1ba2eccbe4 Merge pull request #28 from qweqq/master
Разширяване на менюто за да може да побере Streaming бутон
2015-11-07 08:28:27 +02:00
Hristo Stefanov ea461fd09a Added missing translation 2015-11-07 06:11:30 +02:00
Hristo Stefanov 6ea910cd53 fixed escaping of strings when passed from php to javascript 2015-11-07 05:50:46 +02:00
Hristo Stefanov 2154e74d96 Added player for the video streams on the front page 2015-11-07 05:31:22 +02:00
Hristo Stefanov 60f84fa16c Thanks to @herince - fixes menu bar when Streaming button is added (it's more wide now when possible) 2015-11-07 05:19:12 +02:00
Vasil Kolev fdaf2752b7 Merge pull request #27 from initLab/uptading-header
Updating the header images
2015-11-04 18:02:44 +02:00
Krasimir Tsonev d628223cff Updating the header images 2015-11-04 17:29:03 +02:00
Vasil Kolev 0135a340a5 fix usage 2015-10-23 17:28:52 +03:00
Vasil Kolev 72a1a20e2f fix usage 2015-10-23 17:27:02 +03:00
Vasil Kolev 94ac9ffb43 fix for getting the speakers' page url 2015-10-22 17:32:17 +03:00
Vasil Kolev a820618363 add a config file, add per-year support 2015-10-22 17:19:51 +03:00
Vasil Kolev dde9dea189 missing check for allowedhallids 2015-10-22 14:09:29 +03:00
Vasil Kolev 8388551abd filter allowed hall ids 2015-10-22 14:06:18 +03:00
Vasil Kolev 137cddd05f missing submenu 2015-10-22 13:22:45 +03:00
Vasil Kolev 4615847bbb Merge pull request #24 from initLab/updating-top-banner
Removing under construction label
2015-10-21 12:15:25 +03:00
Krasimir Tsonev 680e4aa1b8 Removing under construction label 2015-10-21 11:42:41 +03:00
Vasil Kolev 8a92c56dcb Merge pull request #23 from initLab/css-improvements
Better breakpoint for the right column + fixing links inside paragraphs
2015-10-21 10:54:40 +03:00
Krasimir Tsonev 96d2e1efed Better color blind safe colors 2015-10-21 10:40:14 +03:00
Vasil Kolev 728675d6e7 fix for speaker links in full talk list 2015-10-21 10:36:53 +03:00
Krasimir Tsonev 305b224795 Bolding the links + softing the links' underline 2015-10-21 07:15:04 +03:00
Krasimir Tsonev 3d060cc8ec Changing the schedule's color schema 2015-10-21 07:10:18 +03:00
Vasil Kolev 8bbd10724b translate the page titles 2015-10-20 19:22:05 +03:00
Vasil Kolev 94ee8f6e23 move the setting of the locale a bit, it's needed only once 2015-10-20 10:35:40 +03:00
Vasil Kolev aa97df05ee the hall names are localized now 2015-10-20 10:27:25 +03:00
Vasil Kolev 596c530250 add langs array, localize the date 2015-10-20 01:34:14 +03:00
Vasil Kolev a414eb4154 default language 2015-10-20 01:18:04 +03:00
Vasil Kolev d06f44761f add legend 2015-10-20 01:14:42 +03:00
Vasil Kolev efa9099804 set the default timezone, as WP always sets it to GMT (bastards) 2015-10-20 00:57:20 +03:00
Vasil Kolev 0e9a3ca5f7 increase cut len, use mb_strlen 2015-10-19 21:29:12 +03:00
Vasil Kolev 463be5995a add proper links to the speakers page 2015-10-19 21:14:48 +03:00
Vasil Kolev 7fd8c66edd speaker page template 2015-10-19 13:09:20 +03:00
Vasil Kolev c8afec5e41 fix div closing 2015-10-19 13:08:49 +03:00
Vasil Kolev fea3f414b1 update the look to last year's 2015-10-19 12:04:20 +03:00
Vasil Kolev 6dc7e7f5ba add table styles 2015-10-19 11:50:48 +03:00
Openfest ef065ff366 Merge branch 'master' of https://github.com/initLab/initfest 2015-10-19 11:33:04 +03:00
Krasimir Tsonev a21d3cddb9 Resolving conflict 2015-10-19 08:45:22 +03:00
Openfest bdbeb4206b Merge branch 'master' of https://github.com/user890104/initfest 2015-10-19 02:06:11 +03:00
Openfest 65531b7e55 ignore cache 2015-10-19 02:05:27 +03:00
Vasil Kolev 6f94733908 add schedule (mostly writen by Vencislav) 2015-10-19 02:04:49 +03:00
Vasil Kolev bdc1b00258 add per-track-id classes 2015-10-18 14:03:04 +03:00
Vasil Kolev 907b4d6cd7 Merge pull request #22 from initLab/color-blind-safe-schedule-color-schema
New schedule colors
2015-10-18 13:55:24 +03:00
Krasimir Tsonev 63abd8c466 Better breakpoint for the right column + fixing links inside paragraphs 2015-10-18 10:41:13 +03:00
Krasimir Tsonev 98af9b74b7 New schedule colors 2015-10-18 10:14:51 +03:00
Vencislav Atanasov 1bfc80a8fe Merge pull request #20 from user890104/master
adds favicon
2015-10-16 14:42:40 +03:00
herince bb07ef19ce Merge branch 'master' of https://github.com/user890104/initfest 2015-10-16 14:24:05 +03:00
herince c9064f3109 adds favicon 2015-10-16 14:23:32 +03:00
Vencislav Atanasov 3ae6ed2585 Merge pull request #19 from user890104/master
Merge pull request #2 from initLab/master
2015-10-07 22:04:59 +03:00
Vencislav Atanasov a8ff983d4f Merge pull request #2 from initLab/master
Merge from upstream
2015-10-07 22:04:16 +03:00
Vencislav Atanasov 88544c6985 Merge pull request #18 from user890104/master
css: blue -> black links
2015-10-07 22:02:07 +03:00
herince 86521a51b3 Merge branch 'master' of https://github.com/user890104/initfest 2015-10-07 21:32:39 +03:00
herince c26a0ae1e4 css: blue -> black links 2015-10-07 21:31:18 +03:00
Vencislav Atanasov c310c8e2ea Merge pull request #17 from user890104/master
Fix translation strings
2015-09-30 21:13:58 +03:00
Vencislav Atanasov dbadd97c7f Merge branch 'master' of github.com:user890104/initfest 2015-09-30 21:13:03 +03:00
Vencislav Atanasov 0f0f66193f Fix translation strings 2015-09-30 21:11:27 +03:00
Vencislav Atanasov 7b3ca9cc69 Merge pull request #1 from initLab/master
add code-of-conduct for the submenu
2015-09-20 16:09:05 +03:00
Vasil Kolev cce86c0383 add code-of-conduct for the submenu 2015-09-20 15:44:01 +03:00
Vencislav Atanasov 143075adbf Merge pull request #16 from user890104/master
Fixed bottom padding for menu items
2015-09-16 10:48:45 +03:00
Hristo Stefanov 8da476a058 Fixed bottom padding for menu items 2015-09-16 09:07:34 +03:00
Vencislav Atanasov 8768f11160 Merge pull request #15 from user890104/master
fixes menu items padding
2015-09-15 02:15:47 +03:00
velikova e03fc16b52 Merge branch 'master' of https://github.com/user890104/initfest 2015-09-15 01:53:02 +03:00
velikova 9c09012994 fixes menu items padding 2015-09-15 01:52:04 +03:00
Vencislav Atanasov a515d039c1 Merge pull request #14 from user890104/master
Do not show text for menu items that are icons
2015-09-15 01:26:52 +03:00
Vencislav Atanasov 2c1bec8a68 Revert "testing.."
This reverts commit e8f32964f8.
2015-09-15 01:24:40 +03:00
Vencislav Atanasov b3c7b2204c Merge branch 'master' of github.com:user890104/initfest 2015-09-15 01:23:28 +03:00
Vencislav Atanasov 9ba3ba6fa3 Do not show text for menu items that are icons 2015-09-15 01:20:14 +03:00
Hristo Stefanov e8f32964f8 testing.. 2015-09-09 21:40:10 +03:00
Vasil Kolev 2afb0ce65b take the map type from the map, don't force it 2015-07-11 13:29:44 +03:00
Vasil Kolev 48dd874dfe replaced banner for 2015 2015-07-11 11:48:15 +03:00
Vladimir Vassilev 08f869c641 Merge branch 'master' of https://github.com/initLab/initfest
nothing special actually...
2015-04-19 22:58:00 +03:00
Vladimir Vassilev 807f16e3b8 hotfix #13 (broken image link) 2015-04-19 22:57:22 +03:00
Openfest 5a51b469f9 Merge branch 'master' of https://github.com/initLab/initfest 2015-04-19 16:54:57 +03:00
Vasil Kolev ba2ba844b2 added google analytics 2015-04-19 16:54:40 +03:00
Vasil Kolev a1dcdeffba missed commit 2015-04-19 16:54:40 +03:00
Vladimir Vassilev bc34cb16c5 images for 2014 2015-04-19 16:54:40 +03:00
Vladimir Vassilev 137a74bcd0 header image now should have year in its name 2015-04-19 16:54:40 +03:00
Vladimir Vassilev 666768e23a nope 2015-04-19 16:54:40 +03:00
Vladimir Vassilev 65d8302252 adding header image support 2015-04-19 16:54:40 +03:00
Vladimir Vassilev a804e44990 images for 2014 2015-04-19 16:09:22 +03:00
Vladimir Vassilev f2bbf73c81 header image now should have year in its name 2015-04-19 15:19:21 +03:00
Vladimir Vassilev 30df0bbfb4 nope 2015-04-19 15:18:30 +03:00
Vladimir Vassilev 2a8688a7e5 adding header image support 2015-04-19 14:42:04 +03:00
Vasil Kolev 2477b9047d add subtitle on the home page 2014-10-26 10:50:22 +02:00
Vasil Kolev b5963179f2 don't display speakerless events 2014-10-24 14:00:33 +03:00
Vasil Kolev 4d0168e711 don't display speakers for speakerless events 2014-10-24 13:51:16 +03:00
Vasil Kolev 64f2690fe9 fix from Krasimir to have space between the sponsor icons, for the sidebar 2014-10-22 20:18:37 +03:00
Vasil Kolev b85534d091 fix from Krasimir to have space between the sponsor icons 2014-10-21 23:13:25 +03:00
Vasil Kolev b81ac9c05a Merge pull request #9 from krasimir/master
Small visual tweaks
2014-10-19 00:41:19 +03:00
Krasimir Tsonev 91d457a3c9 Small visual tweaks 2014-10-19 00:20:55 +03:00
Vasil Kolev b03d586fd0 fix crappy copy-paste 2014-10-18 16:57:10 +03:00
Vasil Kolev d2cad0b150 reorder the main page a bit 2014-10-17 10:56:05 +03:00
Vasil Kolev 3a30f3ed8a Merge pull request #8 from krasimir/master
Design suggestions for the front page
2014-10-17 10:46:43 +03:00
Krasimir Tsonev 53bcd858c9 Design suggestions for the front page 2014-10-17 09:39:11 +03:00
Vasil Kolev bb6bc6c309 modify front page behavor 2014-10-16 23:18:16 +03:00
Vasil Kolev 92cee81ad3 add workshops page 2014-10-16 19:29:43 +03:00
Vasil Kolev 41d901f39d only show the main halls in the program 2014-10-16 17:51:59 +03:00
Vasil Kolev 71f009cf07 fixes 2014-10-16 10:14:34 +03:00
Vasil Kolev 95de1d3738 Merge pull request #7 from stefolog/master
Tweak the font sizes
2014-10-15 23:35:49 +03:00
Stef f0b862192f Decrease the base font size to 16px
Make the paragrapth text weight normal
Increase the paragraph line-height
Remove the bottom margin of the h4 headers (News)
2014-10-15 22:25:40 +03:00
Vasil Kolev a86cfa84a7 upd. for the speaker icons 2014-10-15 18:51:23 +03:00
Vasil Kolev 3acf3c6eec remove icons from the top row, req. by Yana 2014-10-15 18:44:27 +03:00
Vasil Kolev dfdde8441d add github, etc. icons to speakers 2014-10-15 18:41:11 +03:00
Vasil Kolev fc969b0296 add program subnav menu in the program pages, request by Yavor 2014-10-15 17:31:41 +03:00
Vasil Kolev 1216ec2f0a new map and image display fixes from Krasimir 2014-10-15 17:31:13 +03:00
Vasil Kolev 4ba6e66042 docs 2014-10-15 01:13:09 +03:00
Vasil Kolev f10f144a48 load all sponsors 2014-10-14 19:26:14 +03:00
Vasil Kolev 63e857aa29 add clarion interfacing scripts 2014-10-14 18:58:07 +03:00
Vasil Kolev bcc2315a51 add partners 2014-10-14 18:24:01 +03:00
Vasil Kolev d5213d0e64 fix typo 2014-10-14 18:22:19 +03:00
Vasil Kolev 35e31168c3 ignore vim swp files and a config file 2014-10-14 17:23:30 +03:00
Vasil Kolev 54729178ac fixes from Krasimir for the news 2014-10-14 17:08:50 +03:00
Vasil Kolev 4a4bb1a5b0 make the sponsors clickable, if they have a url 2014-10-14 16:23:22 +03:00
Vasil Kolev 01ad399aea make the sponsors clickable, if they have a url 2014-10-14 16:18:50 +03:00
Vasil Kolev da6dc132c7 have title for the front page 2014-10-14 15:56:57 +03:00
Vasil Kolev 429bf75017 remove img resizing, has to be done per-logo 2014-10-14 15:56:37 +03:00
Vasil Kolev 356e142f0b sponsors image size 2014-10-14 15:06:43 +03:00
Vasil Kolev 48c641c604 sponsors image size 2014-10-14 14:46:33 +03:00
Vasil Kolev a49014e84a fix news categories 2014-10-14 12:51:57 +03:00
Vasil Kolev 12ff13d449 fix volunteers page submenu 2014-10-14 07:18:15 +03:00
Openfest 29f608ba7d Merge branch 'master' of https://github.com/initLab/initfest 2014-10-14 06:59:30 +03:00
Vasil Kolev 1b596f46c1 underline stuff in program 2014-10-14 06:59:24 +03:00
Vasil Kolev 8306956867 Merge pull request #6 from stefolog/master
Fix the footer styles
2014-10-14 06:58:16 +03:00
Stef 78a5da5a3e Fix the footer styles 2014-10-14 01:25:56 +03:00
Vasil Kolev ddc54902f9 Merge pull request #5 from hethhhhh/patch-1
removed new line indents
2014-10-13 23:10:49 +03:00
Yavor Stefanov ee7cbede67 removed new line indents 2014-10-13 23:09:21 +03:00
Vasil Kolev 0152a9b7c6 add the halls 2014-10-13 16:37:45 +03:00
Vasil Kolev e622e2504c fix eng 2014-10-13 11:27:16 +03:00
Vasil Kolev 262db69643 merge 2014-10-13 11:26:15 +03:00
Krasimir Tsonev 338d16b423 Adding avatars 2014-10-13 09:31:35 +03:00
Openfest 62735b6767 Merge branch 'master' of https://github.com/initLab/initfest 2014-10-13 09:30:51 +03:00
Krasimir Tsonev 3742e16c30 Adding talks description 2014-10-13 09:28:56 +03:00
Vasil Kolev 52ceeaee1e merge 2014-10-13 09:22:44 +03:00
Vasil Kolev d7db159d60 old program css 2014-10-13 09:21:25 +03:00
Krasimir Tsonev 11b6764755 Bulgarian flag 2014-10-13 09:17:28 +03:00
Krasimir Tsonev c296d3142c Schedule 2014-10-13 09:09:18 +03:00
Krasimir Tsonev 7d68d128b9 Merge branch 'master' of github.com:initLab/initfest 2014-10-13 08:21:44 +03:00
Krasimir Tsonev 88019aee3d Working on schedule page 2014-10-13 08:21:37 +03:00
Vasil Kolev 83878ce184 make this to have the proper design 2014-10-12 13:10:24 +03:00
Vasil Kolev e3e1bf23ef small fixes 2014-10-12 13:00:46 +03:00
Vasil Kolev 521d306513 stolen func to get id of attachment 2014-10-12 13:00:11 +03:00
Vasil Kolev 3756bffab2 fix for the speakers' icons 2014-10-12 12:59:55 +03:00
Vasil Kolev c69cca6691 icons for team people, fix from Krasimir 2014-10-10 17:26:11 +03:00
Vasil Kolev 5e67b6886f fix warning, fix news for different languages 2014-10-10 17:25:34 +03:00
Vasil Kolev d1e9184e8b fixes for pll 2014-10-09 21:23:38 +03:00
Krasimir Tsonev 97953773be Adding a template for the team page 2014-10-09 18:07:49 +03:00
Krasimir Tsonev 43db7898bc Updating banner 2014-10-09 16:50:28 +03:00
Vasil Kolev e1921d77b6 Merge pull request #4 from petyaraykovska/various-style-changes
Various style changes
2014-10-09 15:56:07 +03:00
Petya Raykovska 82abfee07a Adds missing classes
Adds missing classes to front-page.php & footer.php
2014-10-09 15:47:59 +03:00
Petya Raykovska 63db1dc73d Style fixes 2014-10-09 15:41:46 +03:00
Vasil Kolev b9b87c8876 Merge pull request #3 from petyaraykovska/various-style-changes
Small style changes
2014-10-09 14:48:30 +03:00
Petya Raykovska 6c0d509ce1 Small style changes
HTML — >> Added a few classes to index.html
CSS — >> Titles, whitespace, link styles.
2014-10-09 14:26:06 +03:00
Vasil Kolev 85662532c9 show only three posts on the main page 2014-10-09 01:07:12 +03:00
Vasil Kolev 877df9b2cd cleanup, this was too ugly even for me 2014-10-09 00:22:36 +03:00
Vasil Kolev d7969d22fa fugly hack for the menu 2014-10-09 00:08:39 +03:00
Vasil Kolev ba93c43eb4 second floor map from Krasimir 2014-10-09 00:08:16 +03:00
98 changed files with 3397 additions and 420 deletions

2
.gitignore vendored
View File

@ -0,0 +1,2 @@
pgconn.php
*.swp

151
README.md Normal file
View File

@ -0,0 +1,151 @@
Документация на сайта на openfest
=================================
## Основни моменти
Сайтът представлява wordpress с тема, писана специално за целта (initfest), която може да се намери в github (https://github.com/initLab/initfest), polylang plugin-а за многоезичност и jetpack за друга функционалност.
Част от данните в сайта се взимат автоматично от външна система (clarion, достъпна на https://cfp.openfest.org, source има на https://github.com/ignisf/clarion/), която се грижи да събира програмата и да комуникира с лекторите.
## Кратко overview на модела на wordpress
(който си е играл по-сериозно, може да прескочи това некадърно обяснение)
Почти всичко в wordpress е post. Всеки post има следните измерения (т.е. може да има за всяко от тях точно една стойност):
* тип - post, page, custom page и т.н.
* език
* статус - published, draft, trash...
* category - категория, в които попада
Всеки post има следните задължителни неща (не са всички, само релевантните за нас):
* title - някакво заглавие
* slug - идентификатор, който се ползва в url-тата (не е title)
* author - автор
* content - текст
И всеки post също така може да има
* custom fields, които да ползваме в логиката с някаква цел (вж. url за sponsors).
* thumbnail/featured image - картинка, която се показва с post-а
* tag-ове (в момента не ги ползваме, но може да ни потрябват)
## Многоезичност
Използваме polylang plugin-а, който превежда всичко, което му падне.
Интерфейсът му е лесен за ползване, в общи линии за всеки тип post/page и т.н. има език, и вътре в редакцията може да се избере да се иде на версията за другия език (вж. по-долу процедурата за нов спонсор). Има превеждане на отделни string-ове, които са били регистрирани от plugins->polylang->strings. Стринговете в момента са регистрирани във functions.php най-отдолу.
polylang създава един проблем при автоматичните скриптове, че трябва да се прави wp_query по отделно за двата езика, защото по default дава текущия или default-ния. Ако автоматично се създава post, трябва задължително да се създаде по един за двата езика и после да се свържат.
Също така, ако например дадена категория името и го няма преведено на другия език, не дава на този език да се слагат неща в тази категория, и не дава никаква грешка.
Хубаво е да се внимава с избирането на имена на slug-овете на post-овете, понеже два post-а не могат да имат същия slug, за това в момента в сайта има schedule и schedule-3 (едното е български, другото английски).
По принцип без polylang темата няма да работи, или поне не по очаквания начин. Има една-две wrapper функции, но те са само за няколко редки места, където не е load-нат plugin-а още.
## Менюта
В темата има 6 менюта, всяко от които в два варианта, за двата езика.
* Главно меню - показва се винаги, най-отгоре на сайта
* submenu/about - показва се само на about и свързаните страници, като team, volunteers и т.н., логиката за показването му може да се види в page.php.
* Дънно openfest - като главното меню
* Дънно програма - свързаните с програмата неща
* Дънно други - хотели, пиене и т.н.
* Дънно follow - социални мрежи
Единственото по-специално е, че link-овете в главното меню за социалните мрежи и т.н. трябва да са без име и да са в специфични css класове, за да се показват както е нужно.
## Главна страница
Страницата се различава от останалите по различния си template и начин на работа. Идеята и е, че показва нещо като sidebar-а, но не същото (кодът е набит директно вътре) и след това в две колони на два реда последните post-ове от категория "news".
Беше с три колони, но отиваше твърде надолу, а текстът на главната страница го има в about и не е това, което ще гледат хората като идват на сайта.
## Custom post-ове и полета в тях
### Спонсори
Спонсорите са отделен тип post в системата. Имат език, excerpt, featured image (лого на спонсора) и две custom полета: url и partner.
* url е link към сайта на спонсора
* partner означава, че спонсорът реално е партньор и трябва да се покаже в друга част на sidebar-а.
Страницата за спонсорите трябва да е от template "Sponsors" (виж page-sponsors.php) за да работи.
Спонсорите и партньорите са в същия тип post поради това, че са твърде близки по значение и визуализация.
#### Процедура за добавяне на спонсор
* От менюто се избира sponsors->add sponsor
* Задава му се име и (ако има) текст на български
* в custom fields му се добавя url със стойност http://..дето трябва
* ако е партньор, в custom fields му се добавя partner със стойност 1
* отива се на featured image
* upload-ва се (горе има upload tab)
* избира се картинката
* дава се update
* отива се в английската версия ( щрака се на + знака до флагчето, първата кутия в дясно)
* слага се заглавието на английски (за повечето е същото) и текста на английски
дава се update
### Лектори
Лекторите са съвсем прост тип post, който има отделен template за визуализация (виж page-speakers.php). Страницата за всички лектори трябва да е от този template, за да работи.
Като наша добавка имаме 3 custom field-а, които се визуализират, ако са добавени в едно малко меню с икони:
* github - github профил (само името)
* twitter - twitter профил (само името на account-а)
* public_email - публичния email адрес
todo: да се добави и url към някакъв homepage, като се появи в clarion-а.
### Транспорти
За всеки тип транспорт до мястото на събитието има отделна страница, като всички се сглобяват в една и се показват в sidebar-а или където е нужно.
## Комуникация с clarion
Clarion ни предоставя JSON интерфейс с всичките неща, от които се генерира програмата.
Данните се дърпат чрез smartCurl (който и кешира данните) и от тях се генерират програмата на сайта и списъкът с лекторите.
Скриптовете, които генерират програмата правят #href link-ове към страницата с лекторите, за да работят линковете. href-овете са наименувани като името на лектора.
### schedule-config.php
За да се избере какво да се визуализира, се ползва schedule-config.php, който от своя страна се зарежда от page-schedule.php и page-speakers.php.
Има два елемента, които се вадят от името на сайта/страницата - дали става въпрос за лекции или workshop-и, и за коя година става въпрос. На база на тях getSchedConfig() в schedule/config.php избира кое е id-то на конференцията и кой тип са лекциите и workshop-ите.
### Генериране на външния вид на таблицата
Черна магия, Slackware трябва да го опише.
## functions.php
Вътре са добавени няколко работни функции, които трябва в някакъв момент да се прегледат:
* openfest_home_page() - връща дали е главната страница, поради един проблем, създаден от polylang, заради който is_front_page() не работеше.
* of_get_lang(), е_() - wrapper-и около polylang, ако липсва plugin-а.
* pn_get_attachment_id_from_url - отмъкната функция, която намира id на attachment от url, трябва при зареждането на снимките на лекторите.
## Създаване на сайт за ново издание на събитието
Клонира се последният сайт с помощта на NS Cloner plugin-а от главния админ панел на сайта. За slug на сайта е редно да се използва годината на предстоящото събитие, тъй като това ще бъде "ключ" за графичните елементи (виж по-долу).
Статусът на всички публикации се слага на "Чернова", за да не се виждат в сайта, но да могат при нужда да се използват за шаблони.
В **Languages -> Strings translations** трябва да се обнови информация като име и описание на събитието, дати и местоположение на залата.
За да излезе новият сайт на началната страница, maniax трябва да направи някаква магия в базата, тъй като redirect плъгинът е счупен.
### Обновяване на визията
Всяка година се променя визията на сайта. Ако няма намеса в layout-а, е достатъчно да бъдат добавени следните картинки (със съответната година в името):
* `banner-back-2020.jpg` - фон за шапката на сайта
* `banner-bg-2020.png` - надпис на български в/у горния с името на събитието, дати и място
* `banner-en-2020.png` - като горния надпис, но на английски
* `logo-2020.png` - лого на събитието
* `navbg-2020.png` - фон за менюто в най-горната част на сайта. Обикновено е градиент от бяло към основния цвят.

27
cli-header.php Normal file
View File

@ -0,0 +1,27 @@
<?php
if( php_sapi_name() !== 'cli' ) {
die("Meant to be run from command line");
}
function find_wordpress_base_path() {
$dir = dirname(__FILE__);
do {
//it is possible to check for other files here
if( file_exists($dir."/wp-config.php") ) {
return $dir;
}
} while( $dir = realpath("$dir/..") );
return null;
}
define( 'BASE_PATH', find_wordpress_base_path()."/" );
define('WP_USE_THEMES', false);
global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header, $pgconn;
require(BASE_PATH . '/wp-content/themes/initfest/pgconn.php');
$_SERVER['HTTP_HOST'] = "www.openfest.org";
require(BASE_PATH . 'wp-load.php');
require_once(BASE_PATH . 'wp-admin/includes/media.php');
require_once(BASE_PATH . 'wp-admin/includes/file.php');
require_once(BASE_PATH . 'wp-admin/includes/image.php');

16
config-events.php Normal file
View File

@ -0,0 +1,16 @@
<?php
$eventsConfig = [
'2024' => [
'startTime' => '2024-11-02 09:45:00',
'endTime' => '2024-11-03 18:15:00',
'streams' => [[
'startTime' => '2024-11-02 09:45:00',
'endTime' => '2024-11-02 19:00:00',
'tracks' => ['hall-a', 'hall-b'],
], [
'startTime' => '2024-11-03 09:45:00',
'endTime' => '2024-11-03 18:15:00',
'tracks' => ['hall-a', 'hall-b'],
]],
],
];

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,2 @@
<section class="entry-meta"> <section class="entry-meta">
<span class="author vcard"><?php the_author_posts_link(); ?></span>
<span class="meta-sep"> | </span>
<span class="entry-date"><?php the_time( get_option( 'date_format' ) ); ?></span>
</section> </section>

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -1,27 +1,32 @@
<div class="clear"></div> <div class="clear"></div>
<footer class="clear"> <footer class="clear">
<div class="content grid"> <div class="content grid footer">
<div class="col4"> <div class="col4">
<h3>OpenFest</h3> <h3>OpenFest</h3>
<p> <p>
<?php wp_nav_menu(array('theme_location' => 'footer-openfest', 'items_wrap' => '%3$s<br/>' )); ?> <?php wp_nav_menu(array('theme_location' => 'footer-openfest', 'items_wrap' => '%3$s' )); ?>
</p> </p>
</div> </div>
<div class="col4"> <div class="col4">
<h3><?php pll_e('Програма')?></h3> <h3><?php e_('Програма')?></h3>
<p> <p>
<?php wp_nav_menu(array('theme_location' => 'footer-schedule', 'items_wrap' => '%3$s<br/>' )); ?> <?php wp_nav_menu(array('theme_location' => 'footer-schedule', 'items_wrap' => '%3$s<br/>' )); ?>
</p> </p>
</div> </div>
<?php
$blog_slug = get_blog_slug();
if ( $blog_slug !== '2020' ) {
?>
<div class="col4"> <div class="col4">
<h3><?php pll_e('Други')?></h3> <h3><?php e_('Други')?></h3>
<p> <p>
<?php wp_nav_menu(array('theme_location' => 'footer-others', 'items_wrap' => '%3$s<br/>' )); ?> <?php wp_nav_menu(array('theme_location' => 'footer-others', 'items_wrap' => '%3$s<br/>' )); ?>
</p> </p>
</div> </div>
<?php } ?>
<div class="col4"> <div class="col4">
<h3><?php pll_e('Последвайте ни в:')?></h3> <h3><?php e_('Последвайте ни в:')?></h3>
<p> <p>
<?php wp_nav_menu(array('theme_location' => 'footer-followus', 'items_wrap' => '%3$s<br/>' )); ?> <?php wp_nav_menu(array('theme_location' => 'footer-followus', 'items_wrap' => '%3$s<br/>' )); ?>
</p> </p>
@ -32,5 +37,16 @@
</div> </div>
</footer> </footer>
<?php wp_footer(); ?> <?php wp_footer(); ?>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-56306862-1', 'auto');
ga('send', 'pageview');
</script>
</body> </body>
</html> </html>

99
front-page-content.php Normal file
View File

@ -0,0 +1,99 @@
<?php
if (!function_exists('get_blog_slug')) {
exit;
}
require __DIR__ . '/config-events.php';
$blog_slug = get_blog_slug();
if (!array_key_exists($blog_slug, $eventsConfig)) {
return;
}
$now = new DateTimeImmutable('now');
function interval_to_now(string $dateTimeStr) {
global $now;
return $now->diff(new DateTimeImmutable($dateTimeStr . ' Europe/Sofia'));
}
function is_before_interval(DateInterval $interval) {
return $interval->invert === 0;
}
function is_after_interval(DateInterval $interval) {
return $interval->invert === 1;
}
$eventStartInterval = interval_to_now($eventsConfig[$blog_slug]['startTime']);
$isBeforeEvent = is_before_interval($eventStartInterval);
$eventEndInterval = interval_to_now($eventsConfig[$blog_slug]['endTime']);
$isAfterEvent = is_after_interval($eventEndInterval);
$activeStreams = array_filter($eventsConfig[$blog_slug]['streams'], function($stream) {
$streamStartInterval = interval_to_now($stream['startTime']);
$streamEndInterval = interval_to_now($stream['endTime']);
return is_after_interval($streamStartInterval) && is_before_interval($streamEndInterval);
});
$activeStream = reset($activeStreams);
$noCurrentStreams = !$isBeforeEvent && !$isAfterEvent && $activeStream === false;
if ($isBeforeEvent) {
?>
<div class="countdown">
<?php e_('countdown_text_before'); ?>
<table>
<tbody>
<tr class="digits">
<td><?php echo $eventStartInterval->format('%a'); ?></td>
<td><?php echo $eventStartInterval->format('%H'); ?></td>
<td><?php echo $eventStartInterval->format('%I'); ?></td>
</tr>
<tr class="units">
<td><?php e_('countdown_days'); ?></td>
<td><?php e_('countdown_hours'); ?></td>
<td><?php e_('countdown_minutes'); ?></td>
</tr>
</tbody>
</table>
<?php e_('countdown_text_after'); ?>
</div>
<?php
}
if ($activeStream) {
?>
<div class="stream_players_wrapper">
<?php
foreach ($activeStream['tracks'] as $track) {
?>
<div>
<h3><?php e_($track); ?></h3>
<?php echo do_shortcode('[stream-player track="' . $track . '"]'); ?>
</div>
<?php
}
?>
</div>
<?php
}
if ($noCurrentStreams) {
?>
<div class="no_current_streams">
<?php e_('no_current_streams'); ?>
</div>
<?php
}
if ($isAfterEvent) {
?>
<div class="after_event">
<?php e_('after_event'); ?>
</div>
<?php
}

View File

@ -1,22 +1,20 @@
<?php get_header(); ?> <?php get_header(); ?>
<section class="content grid">
<div class="col2"> <section class="content subtitle_content">
<h1><?php echo get_bloginfo('name'); ?> </h1> <?php
<p><?php echo get_bloginfo('description'); ?></p> e_('about_event');
</div> require __DIR__ . '/front-page-content.php';
<div class="col2"> ?>
<?php echo do_shortcode( '[sponsors]' ); ?>
</div>
</section> </section>
<div class="separator"></div>
<section class="content"> <section class="content">
<?php echo do_shortcode( '[sh-latest-posts cat="news" label="'.pll__('Новини').'"]' ); ?> <?php echo do_shortcode( '[sh-latest-posts cat="news" label="'.pll__('Новини').'"]' ); ?>
</section>
<div class="separator"></div> <div class="separator"></div>
<div class="col-right sponsors sponsors-frontpage">
<?php echo do_shortcode( '[sponsors]' ); ?>
<?php echo do_shortcode( '[partners]' ); ?>
</div>
<div class="separator"></div>
</section>
<?php echo do_shortcode( '[transport]' ); ?> <?php echo do_shortcode( '[transport]' ); ?>

View File

@ -1,12 +1,47 @@
<?php <?php
# Add support for thumbnais # Add support for thumbnais
add_theme_support( 'post-thumbnails' ); add_theme_support( 'post-thumbnails' );
add_theme_support( 'automatic-feed-links' );
add_filter( 'the_excerpt', 'shortcode_unautop');
add_filter( 'the_excerpt', 'do_shortcode');
function get_blog_slug() {
if (!is_multisite()) {
// local development, non-multisite
return date('Y');
}
$blog_details = get_blog_details();
return trim($blog_details->path, '/');
}
// OpenGraph image for FB/Twitter
function og_image( $tags ) {
$blog_slug = get_blog_slug();
$imagePath = __DIR__ . '/img/fb_preview_' . $blog_slug . '.jpg';
if (file_exists($imagePath)) {
$imageUrl = esc_url('https://www.openfest.org/wp-content/themes/initfest/img/' . basename($imagePath));
list($width, $height) = getimagesize($imagePath);
$tags['og:image'] = $imageUrl;
$tags['og:image:width'] = $width;
$tags['og:image:height'] = $height;
$tags['twitter:image'] = $imageUrl;
}
return $tags;
}
add_filter( 'jetpack_open_graph_tags', 'og_image' );
register_nav_menus( register_nav_menus(
array( 'main-menu' => __( 'Main Menu', 'initfest' ), array( 'main-menu' => __( 'Main Menu', 'initfest' ),
'subnav-menu' => __( 'Sub Navigation', 'initfest'), 'subnav-menu' => __( 'Sub Navigation', 'initfest'),
'stream-menu' => __('Stream Menu', 'initfest'),
'footer-openfest' => __('OpenFest', 'initfest'), 'footer-openfest' => __('OpenFest', 'initfest'),
'footer-openfest' => __('OpenFest', 'initfest'), 'footer-openfest' => __('OpenFest', 'initfest'),
'footer-schedule' => __('Schedule', 'initfest'), 'footer-schedule' => __('Schedule', 'initfest'),
@ -19,45 +54,53 @@ register_nav_menus(
function register_shortcodes(){ function register_shortcodes(){
add_shortcode('sh-latest-posts', 'sh_latest_posts'); add_shortcode('sh-latest-posts', 'sh_latest_posts');
add_shortcode('sponsors', 'sponsors_shortcode'); add_shortcode('sponsors', 'sponsors_shortcode');
add_shortcode('partners', 'partners_shortcode');
add_shortcode('transport', 'transport_shortcode'); add_shortcode('transport', 'transport_shortcode');
add_shortcode('stream-player', 'stream_player_shortcode');
} }
add_action( 'init', 'register_shortcodes'); add_action( 'init', 'register_shortcodes');
function sh_latest_posts($atts){ function sh_latest_posts($atts){
$atts = shortcode_atts( array( if (of_get_lang()=='bg')
'cat' => 'news', $ncat = "news-bg";
else
$ncat = "news";
$atts = array(
'cat' => $ncat,
'label' => __('News', 'initfest') 'label' => __('News', 'initfest')
), $atts ); );
$result = '<section class="content"><h3>'.$atts['label'].' | <small><a href="'.esc_url(get_term_link($atts['cat'], 'category')).'">'.__('see all', 'initfest').'</a></small></h3><div class="grid">'; $result = '<section class="content"><h3>'.$atts['label'].' | <small><a href="'.esc_url(get_term_link($atts['cat'], 'category')).'">'.__('see all', 'initfest').'</a></small></h3><div class="grid">';
$news_args = array( 'catecory_name' => $cat, 'numberposts' => 3 ); $news_args = array( 'category_name' => 'news,news-bg', 'numberposts' => 6, 'lang' => of_get_lang() );
$news = new WP_Query( $news_args ); $news = new WP_Query( $news_args );
ob_start(); ob_start();
if ( $news->have_posts() ) : if ( $news->have_posts() ) :
while ( $news->have_posts() ) : $news->the_post(); $i=0;
while ( $news->have_posts() && $i++<6) : $news->the_post();
?> ?>
<div class="col3"> <div class="col3">
<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4> <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
<p class="info"><?php pll_e('От');?> <?php the_author(); ?> | <?php pll_e('Публикувано на');?> <?php the_date(); ?> </p>
<?php the_excerpt(); ?> <?php the_excerpt(); ?>
<a class="button" href="<?php the_permalink(); ?>"><?php pll_e('виж цялата новина');?></a> <a class="button" href="<?php the_permalink(); ?>"><?php pll_e('виж цялата новина');?></a>
</div> </div>
<?php <?php
# if ($i==3)
echo '</div></section><section class="content"><div class="grid">';
endwhile; endwhile;
endif; endif;
$result .= ob_get_contents(); $result .= ob_get_contents();
$result .='</div></section>'; $result .='</div></section>';
ob_end_clean(); ob_end_clean();
return $result; return $result;
} }
@ -65,21 +108,65 @@ function sh_latest_posts($atts){
function sponsors_shortcode() { function sponsors_shortcode() {
$result= '<h3>'.pll__('Спонсори').'</h3>'; $result= '<h3>'.pll__('Спонсори').'</h3>';
$sponsors_args = array( 'post_type' => 'sponsors', 'orderby' => 'rand' ); $sponsors_args = array( 'post_type' => 'sponsors', 'orderby' => 'rand', 'nopaging' => 'true');
$sponsors = new WP_Query( $sponsors_args ); $sponsors = new WP_Query( $sponsors_args );
ob_start(); ob_start();
if ( $sponsors->have_posts() ) : if ( $sponsors->have_posts() ) :
while ( $sponsors->have_posts() ) : $sponsors->the_post(); while ( $sponsors->have_posts() ) : $sponsors->the_post();
if ( has_post_thumbnail() ) { $custom = get_post_custom();
the_post_thumbnail(); if (empty($custom['partner'])) {
} else { if (!empty ($custom['url'])) {
get_the_title(); echo '<a href="'.$custom['url'][0].'" target=_blank alt="'.get_the_title().'">';
} }
endwhile; if ( has_post_thumbnail() ) {
endif; the_post_thumbnail();
} else {
get_the_title();
}
if (!empty ($custom['url'])) {
echo '</a>';
}
}
endwhile;
endif;
$result .= ob_get_contents();
ob_end_clean();
return $result;
}
# Create shortcode for partners
function partners_shortcode() {
$result= '<h3>'.pll__('Партньори').'</h3>';
$sponsors_args = array( 'post_type' => 'sponsors', 'orderby' => 'rand', 'nopaging' => 'true' );
$sponsors = new WP_Query( $sponsors_args );
ob_start();
if ( $sponsors->have_posts() ) :
while ( $sponsors->have_posts() ) : $sponsors->the_post();
$custom = get_post_custom();
if (!empty($custom['partner'])) {
if (!empty ($custom['url'])) {
echo '<a href="'.$custom['url'][0].'" target=_blank alt="'.get_the_title().'">';
}
if ( has_post_thumbnail() ) {
the_post_thumbnail();
} else {
get_the_title();
}
if (!empty ($custom['url'])) {
echo '</a>';
}
}
endwhile;
endif;
$result .= ob_get_contents(); $result .= ob_get_contents();
ob_end_clean(); ob_end_clean();
@ -88,12 +175,12 @@ function sponsors_shortcode() {
} }
# Create shortcode for transport methods # Create shortcode for transport methods
function transport_shortcode() { function transport_shortcode() {
$result= '<section class="content"><h3>'.pll__('Място').': '.pll__('Интерпред, София, България').'</h3>'; $result= '<section class="content"><h3>'.pll__('Място').': '.pll__('VENUE_LOCATION').'</h3>';
$transport_args = array( 'post_type' => 'transportation' ); $transport_args = array( 'post_type' => 'transportation' );
$transport = new WP_Query( $transport_args ); $transport = new WP_Query( $transport_args );
ob_start(); ob_start();
@ -102,13 +189,13 @@ function transport_shortcode() {
?> ?>
<h4><?php the_title(); ?></h4> <h4><?php the_title(); ?></h4>
<p><?php the_content(); ?></p> <p><?php the_content(); ?></p>
<?php <?php
endwhile; endwhile;
endif; endif;
?> ?>
</section> </section>
<?php <?php
echo do_shortcode( '[ready_google_map id="1" map_language="en" type="HYBRID" align="right"]' ); //echo do_shortcode( '[ready_google_map id="2" map_language="en" align="center"]' );
$result .= ob_get_contents(); $result .= ob_get_contents();
ob_end_clean(); ob_end_clean();
@ -117,6 +204,26 @@ function transport_shortcode() {
} }
function stream_player_shortcode($params = []) {
wp_enqueue_style('video.js', 'https://unpkg.com/video.js/dist/video-js.css');
wp_enqueue_script('video.js', 'https://unpkg.com/video.js/dist/video.min.js');
$params = array_merge([
'host' => 'stream.openfest.org',
'track' => 'hall-a',
], $params);
$urlPrefix = 'https://' . $params['host'] . '/';
return <<<EOF
<video class="video-js vjs-fluid" controls data-setup="{}">
<source type="application/x-mpegURL" src="{$urlPrefix}hls/{$params['track']}.m3u8"></source>
<source type="application/dash+xml" src="{$urlPrefix}dash/{$params['track']}.mpd"></source>
</video>
EOF;
}
# Create a custom post type for Sponsors # Create a custom post type for Sponsors
function create_sponsors_posttype() { function create_sponsors_posttype() {
@ -157,10 +264,10 @@ function create_sponsors_posttype() {
register_post_type( 'sponsors', $args ); register_post_type( 'sponsors', $args );
} }
add_action( 'init', create_sponsors_posttype ); add_action( 'init', 'create_sponsors_posttype' );
# Create a custom post type for Speakers # Create a custom post type for Speakers
function create_speakers_posttype() { function create_speakers_posttype() {
$labels = array( $labels = array(
@ -200,10 +307,10 @@ function create_speakers_posttype() {
register_post_type( 'speakers', $args ); register_post_type( 'speakers', $args );
} }
add_action( 'init', create_speakers_posttype ); add_action( 'init', 'create_speakers_posttype' );
# Create a custom post type for Tranportation # Create a custom post type for Tranportation
function transportation_posttype() { function transportation_posttype() {
register_post_type( 'transportation', register_post_type( 'transportation',
@ -219,22 +326,109 @@ function transportation_posttype() {
} }
function openfest_home_page() { function openfest_home_page() {
if (empty($wp)) {return is_front_page();} ;
return !($wp->query_vars['pagename']=='home' || $wp->query_vars['pagename']=='home-2'); return !($wp->query_vars['pagename']=='home' || $wp->query_vars['pagename']=='home-2');
} }
function of_get_lang() {
if (function_exists("pll_current_language"))
return pll_current_language('slug');
else
return 'bg';
}
function e_($word) {
if (function_exists("pll_e"))
return pll_e($word);
else
echo $word;
}
function pn_get_attachment_id_from_url( $attachment_url = '' ) {
global $wpdb;
$attachment_id = false;
// If there is no url, return.
if ( '' == $attachment_url )
return;
// Get the upload directory paths
$upload_dir_paths = wp_upload_dir();
// Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image
if ( false !== strpos( $attachment_url, $upload_dir_paths['baseurl'] ) ) {
// If this is the URL of an auto-generated thumbnail, get the URL of the original image
$attachment_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $attachment_url );
// Remove the upload path base directory from the attachment URL
$attachment_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $attachment_url );
// Finally, run a custom database query to get the attachment ID from the modified attachment URL
$attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) );
}
return $attachment_id;
}
add_action( 'init', 'transportation_posttype' ); add_action( 'init', 'transportation_posttype' );
pll_register_string('Schedule','Програма');
pll_register_string('Others','Други');
pll_register_string('follow','Последвайте ни в:');
pll_register_string('venue','Интерпред, София, България');
pll_register_string('venue_w','Място');
pll_register_string('sponsors_w','Спонсори');
pll_register_string('time','1-ви и 2-ри ноември 2014 г.');
pll_register_string('publishedon','Публикувано на');
pll_register_string('by_w','От');
pll_register_string('see_whole_news','виж цялата новина');
pll_register_string('news','Новини');
if (function_exists("pll_register_string")) {
pll_register_string('Schedule','Програма');
pll_register_string('Others','Други');
pll_register_string('follow','Последвайте ни в:');
pll_register_string('venue','VENUE_LOCATION');
pll_register_string('venue_w','Място');
pll_register_string('sponsors_w','Спонсори');
pll_register_string('partners_w','Партньори');
pll_register_string('speakers_w','Лектори');
pll_register_string('time','EVENT_TIME');
pll_register_string('publishedon','Публикувано на');
pll_register_string('by_w','От');
pll_register_string('see_whole_news','виж цялата новина');
pll_register_string('news','Новини');
pll_register_string('share_freedom','Да споделим свободата');
pll_register_string('hall1','София');
pll_register_string('hall2','Варна');
pll_register_string('hall3','G1');
pll_register_string('hall4','Пловдив');
pll_register_string('hall5','Бургас');
pll_register_string('bulgaria_hall','BULGARIA_HALL');
pll_register_string('chamber_hall','CHAMBER_HALL');
pll_register_string('music_hall','MUSIC_HALL');
pll_register_string('low_quality','LOW_QUALITY');
pll_register_string('normal_quality','NORMAL_QUALITY');
pll_register_string('high_quality','HIGH_QUALITY');
pll_register_string('all_streams','ALL_STREAMS');
pll_register_string('tba','TBA');
pll_register_string('feedback','Submit feedback');
pll_register_string('about_event','about_event');
pll_register_string('countdown_text_before','countdown_text_before');
pll_register_string('countdown_text_after','countdown_text_after');
pll_register_string('countdown_days','countdown_days');
pll_register_string('countdown_hours','countdown_hours');
pll_register_string('countdown_minutes','countdown_minutes');
pll_register_string('after_event','after_event');
pll_register_string('no_current_streams','no_current_streams');
pll_register_string('hall-a','hall-a');
pll_register_string('hall-b','hall-b');
}
add_filter( 'wp_title', 'wpdocs_hack_wp_title_for_home' );
?> /**
* Customize the title for the home page, if one is not set.
*
* @param string $title The original title.
* @return string The title to use.
*/
function wpdocs_hack_wp_title_for_home( $title )
{
if ( empty( $title ) && ( is_home() || is_front_page() ) ) {
$title = get_bloginfo('name') . ' | ' . get_bloginfo( 'description' );
} else {
$title = $title . get_bloginfo( 'tagline' );
}
return $title;
}

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html <?php language_attributes(); ?>> <html <?php language_attributes(); ?>>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="imagetoolbar" content="no" /> <meta http-equiv="imagetoolbar" content="no" />
<meta name="author" content="OpenFest" /> <meta name="author" content="OpenFest" />
@ -12,26 +12,69 @@
<meta name="description" content="" /> <meta name="description" content="" />
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<link rel="icon" type="image/png" href=""> <!--<link rel="icon" type="image/png" href="">-->
<link rel="shortcut icon" href="<?php echo get_stylesheet_directory_uri(); ?>/favicon.ico" />
<title><?php wp_title( ' | ', true, 'right' ); ?></title>
<title><?php wp_title( ' | ', true, 'right' ) ?></title>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_uri(); ?>" /> <link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_uri(); ?>" />
<?php wp_head(); ?> <?php wp_head(); ?>
</head> </head>
<body> <body>
<?php
$blog_slug = get_blog_slug();
<nav> if ($blog_slug === '2019' || $blog_slug === '2020') {
echo '<nav style="background: url(\''.get_template_directory_uri().'/img/navbg-'.$blog_slug.'.png\'); height: 84px">';
}
elseif ($blog_slug === '2024') {
echo '<nav style="background-image: linear-gradient(#FFFFFF, #BFFAF4);">';
} else {
echo '<nav>';
}
?>
<div class="content cf"> <div class="content cf">
<a href="<?php echo esc_url( home_url( '/' ) ); ?>" class="logo"><img src="<?php echo get_template_directory_uri(); ?>/img/logo.png" alt="OpenFest" /></a> <a href="<?php echo esc_url( home_url( '/' ) ); ?>" class="logo"><img src="<?php echo get_template_directory_uri().'/img/logo-'.$blog_slug.'.png'; ?>" alt="OpenFest" /></a>
<?php wp_nav_menu( array('theme_location' => 'main-menu') ); ?> <?php wp_nav_menu( array('theme_location' => 'main-menu') ); ?>
</div> </div>
</nav> </nav>
<?php <?php
if(openfest_home_page()){ if(openfest_home_page()){
echo '<section class="banner cf"><img src="'.get_template_directory_uri().'/img/banner-'.pll_current_language('slug').'.png" alt="" /></section>'; if ($blog_slug === '2019') {
echo '<section class="banner cf" style="background: url(\''.get_template_directory_uri().'/img/banner-back-'.$blog_slug.'.jpg\') top repeat-x; background-size:cover; position:relative; padding: 0.2em 0 0 0;height: 400px;"><img src="'.get_template_directory_uri().'/img/banner-'.of_get_lang().'-'. $blog_slug .'.png" alt="" style="position:absolute;top:0;left:50%;margin-left:-550px;height:100%;width:430px" /></section>';
#echo '<section class="banner cf" style="background: url(\''.get_template_directory_uri().'/img/banner-back-'.$blog_slug.'.jpg\') top repeat-x;padding: 0.2em 0 0 0;height: 400px;"><img src="'.get_template_directory_uri().'/img/banner-'.of_get_lang().'-'. $blog_slug .'.png" alt="" style="padding-right: 35%; margin-top: -0.2em;;height:400px" /></section>';
} else if ($blog_slug === '2021') {
//echo '<section class="banner cf" style="background: url(\''.get_template_directory_uri().'/img/banner-back-'.$blog_slug.'.jpg\') top repeat-x; background-size:cover; position:relative; padding: 0.2em 0 0 0;height: 400px;"><img src="'.get_template_directory_uri().'/img/banner-'.of_get_lang().'-'. $blog_slug .'.png" alt="" style="position:absolute;top:0;left:50%;height:100%;width:608px" /></section>';
//if (of_get_lang() === 'en') {
// echo '<section class="banner cf" style="background: url(\''.get_template_directory_uri().'/img/banner-back-'.$blog_slug.'.jpg\') top repeat-x; background-size:cover; position:relative; padding: 0.2em 0 0 0;height: 400px;"><img src="'.get_template_directory_uri().'/img/banner-'.of_get_lang().'-'. $blog_slug .'.png" alt="" style="position:absolute;top:0;left:50%;height:100%;width:608px" /></section>';
//} else {
// echo '<section class="banner cf content" style="top: repeat-x; background-size:cover; position:relative; padding: 0.2em 0 0 0;height: 400px; background: none">';
// echo '<img src="'.get_template_directory_uri().'/img/banner-back-2021.svg" alt="" style="position:absolute;top:0;right:65%;height:100%;">';
// echo '<img src="'.get_template_directory_uri().'/img/banner-bg-2021.svg" alt="" style="position:absolute;top:0;left:50%;height:100%;width:608px">';
// echo '</section>';
//}
echo '<section class="banner cf content" style="top: repeat-x; background-size:cover; position:relative; padding: 0.2em 0 0 0;height: 400px; background: none">';
echo '<img src="'.get_template_directory_uri().'/img/banner-back-2021.svg" alt="" style="position:absolute;top:0;right:65%;height:100%;">';
if (of_get_lang() === 'bg') {
echo '<img src="'.get_template_directory_uri().'/img/banner-bg-2021.svg" alt="" style="position:absolute;top:0;left:50%;height:100%;width:608px">';
} else {
echo '<img src="'.get_template_directory_uri().'/img/banner-en-2021.png" alt="" style="position:absolute;top:0;left:50%;height:100%;width:608px">';
}
echo '</section>';
} else if ($blog_slug === '2023') {
echo '<section class="banner cf" style="background: url('.get_template_directory_uri().'/img/banner-back-2023.png) top center no-repeat;padding: 0.2em 0 0 0;height: 258px;"><img src="'.get_template_directory_uri().'/img/banner-'.of_get_lang().'-2023.png" alt="" style="margin-left: calc(40vw - 428px);" /></section>';
} else if ($blog_slug === '2024') {
echo '<section class="banner cf" style="background: url('.get_template_directory_uri().'/img/banner-back-2024.png) top center no-repeat;padding: 0.2em 0 0 0;height: 258px;"></section>';
} else {
echo '<section class="banner cf" style="background: url(\''.get_template_directory_uri().'/img/banner-back-'.$blog_slug.'.jpg\') top repeat-x;padding: 0.2em 0 0 0;height: 258px;"><img src="'.get_template_directory_uri().'/img/banner-'.of_get_lang().'-'. $blog_slug .'.png" alt="" /></section>';
}
} }
?> ?>

View File

@ -17,7 +17,7 @@
<title>OpenFest</title> <title>OpenFest</title>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" href="css/styles.css"> <link rel="stylesheet" href="../css/styles.css">
</head> </head>
<body> <body>
@ -25,19 +25,20 @@
<nav> <nav>
<div class="content cf"> <div class="content cf">
<a href="#" class="logo"><img src="img/logo.png" alt="OpenFest" /></a> <a href="#" class="logo"><img src="img/logo.png" alt="OpenFest" /></a>
<ul> <nav>
<li><a href="#">Начало</a></li> <div class="content cf">
<li class="selected"><a href="#">За събитието</a></li> <a href="#" class="logo"><img src="img/logo.png" alt="OpenFest" /></a>
<li><a href="#">Спонсори</a></li> <div class="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d0%bc%d0%b5%d0%bd%d1%8e-container"><ul id="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d0%bc%d0%b5%d0%bd%d1%8e" class="menu"><li id="menu-item-17" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17"><a href="http://wwwt.openfest.org/bg/about/">За събитието</a></li>
<li><a href="#">Програма</a></li> <li id="menu-item-15" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15"><a href="http://wwwt.openfest.org/bg/schedule/">Програма</a></li>
<li><a href="#">Контакти</a></li> <li id="menu-item-16" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-8 current_page_item menu-item-16"><a href="http://wwwt.openfest.org/bg/sponsors/">Спонсори</a></li>
<li class="separator"></li> <li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"><a href="http://wwwt.openfest.org/bg/contacts/">Контакти</a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li> <li id="menu-item-60" class="fa fa-twitter menu-item menu-item-type-custom menu-item-object-custom menu-item-60"><a href="https://twitter.com/openfestbg"></a></li>
<li><a href="#"><i class="fa fa-facebook"></i></a></li> <li id="menu-item-61" class="fa fa-facebook menu-item menu-item-type-custom menu-item-object-custom menu-item-61"><a href="https://www.facebook.com/groups/6360369433"></a></li>
<li><a href="#"><i class="fa fa-rss"></i></a></li> <li id="menu-item-62" class="fa fa-rss menu-item menu-item-type-custom menu-item-object-custom menu-item-62"><a href="http://openfest.org/feed"></a></li>
<li class="separator"></li> <li id="menu-item-3181-en" class="lang-item lang-item-13 lang-item-en menu-item menu-item-type-custom menu-item-object-custom menu-item-3181-en"><a href="http://wwwt.openfest.org/en/sponsors-4/" hreflang="en"><img src="http://wwwt.openfest.org/wp-content/plugins/polylang/flags/en_US.png" title="English" alt="English" /></a></li>
<li><a href="#">EN</a></li> </ul></div> </div>
</ul> </div>
</nav>
</div> </div>
</nav> </nav>

View File

@ -235,16 +235,17 @@ nav ul {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
nav ul > li { nav ul li {
position: relative;
}
nav .menu > li {
float: left; float: left;
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
nav ul a {
color: #000; nav .menu > li {
text-decoration: none;
display: block;
padding: 1.5em 0.4em;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
@ -252,9 +253,56 @@ nav ul a {
-webkit-transition: border-top 200ms; -webkit-transition: border-top 200ms;
border-top: 0 solid #FFF; border-top: 0 solid #FFF;
} }
nav ul a:hover {
nav .menu > li:hover {
border-top: 0.4em solid #A8D6FF; border-top: 0.4em solid #A8D6FF;
} }
.menu li.fa::before {
display: block;
padding: 30px 4px 0 4px;
}
.menu li.fa a {
padding-top: 0;
position: absolute;
display: block;
top: 0;
left: 0;
height: 52px;
width: 10px;
}
nav ul a {
color: #000;
text-decoration: none;
display: block;
padding: 1.5em 0.4em;
}
nav ul .sub-menu {
display: none;
position: absolute;
background: #fff;
width: 200px;
left: 50%;
margin-left: -100px;
box-shadow: 0 3px 5px -3px #000
}
nav ul li:hover .sub-menu {
display: block;
position: absolute;
}
nav ul .sub-menu li,
nav ul .sub-menu li a { display: block; width: 100%; }
nav ul .sub-menu li a { padding: 1em 0; text-align: center; }
nav ul .sub-menu li { border-bottom: 1px solid #ccc; }
nav ul .separator { nav ul .separator {
display: block; display: block;
width: 0.05em; width: 0.05em;
@ -306,15 +354,15 @@ nav .selected {
/* Banner */ /* Banner */
.banner { .banner {
height: 245px; height: 258px;
background: url("../img/banner.jpg") no-repeat; background: url("../img/banner.jpg") no-repeat;
background-size: cover; background-size: cover;
padding: 4em 0 0 0; padding: 0.2em 0 0 0;
} }
.banner img { .banner img {
display: block; display: block;
max-width: 100%; max-width: 100%;
height: 157px; height: 247px;
margin: 0 auto; margin: 0 auto;
} }
@media all and (max-width: 840px) { @media all and (max-width: 840px) {
@ -350,6 +398,10 @@ nav .selected {
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
.grid .col3:nth-child(3n + 1) {
clear: both;
padding: 0;
}
.grid .col4 { .grid .col4 {
width: 25%; width: 25%;
float: left; float: left;
@ -357,6 +409,10 @@ nav .selected {
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
.grid .col4:nth-child(4n + 1) {
clear: both;
padding: 0;
}
.grid .col-left { .grid .col-left {
width: 70%; width: 70%;
float: left; float: left;
@ -368,10 +424,15 @@ nav .selected {
.grid .col-right { .grid .col-right {
width: 30%; width: 30%;
float: left; float: left;
margin-bottom: 2em;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
.grid .col-right .content {
width: 100%;
}
@media all and (max-width: 600px) { @media all and (max-width: 600px) {
.grid .col2, .grid .col3, .grid .col4, .grid .col-left, .grid .col-right { .grid .col2, .grid .col3, .grid .col4, .grid .col-left, .grid .col-right {
width: 100%; width: 100%;
@ -415,7 +476,7 @@ h4 {
/* Footer */ /* Footer */
footer { footer {
margin: 2em 0 0 0; margin: -0.3em 0 0;
padding-top: 1em; padding-top: 1em;
padding-bottom: 1em; padding-bottom: 1em;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
@ -424,16 +485,26 @@ footer {
background: #ddd; background: #ddd;
} }
footer .content li { list-style: none; }
#copyright {
text-align: center;
}
/* Sub navigation */ /* Sub navigation */
.subnav { .subnav {
margin-top: 1.6em; margin-top: 1.6em;
list-style: none; list-style: none;
padding-left: 0; padding-left: 0;
} }
.subnav .menu {
margin-left: -2.2em;
}
.subnav li { .subnav li {
float: left; float: left;
padding: 0; padding: 0;
margin: 0 1em 0 0; margin: 0 1em 0 0;
list-style: none outside;
} }
.subnav li.selected { .subnav li.selected {
font-weight: bold; font-weight: bold;
@ -462,9 +533,9 @@ footer {
float: left; float: left;
padding: 0.3em; padding: 0.3em;
background: #FFF; background: #FFF;
-moz-box-shadow: 0px 0px 1px 1px #999; -moz-box-shadow: 0px 0px 1px 1px #999;
-webkit-box-shadow: 0px 0px 1px 1px #999; -webkit-box-shadow: 0px 0px 1px 1px #999;
box-shadow: 0px 0px 1px 1px #999; box-shadow: 0px 0px 1px 1px #999;
margin: 0 1em 2em 0; margin: 0 1em 2em 0;
} }
.speaker .icons { .speaker .icons {
@ -491,4 +562,78 @@ footer {
.sponsors-item .col2 > img { .sponsors-item .col2 > img {
display: inline-block; display: inline-block;
margin: 0 0 2em 0; margin: 0 0 2em 0;
} }
/* Plugins */
.gmp_map_opts {
float: none !important;
margin-top: 2em !important;
}
/*********************************************
* GLOBAL STYLES (Small style changes)
*********************************************/
h1 { font-size: 1.8em; }
h2 { font-size: 1.8em; }
h3 { font-size: 1.6em; }
h4 { font-size: 1.4em; }
h5 { font-size: 1.2em; }
h6 { font-size: 1.0em; }
h1, h2, h3, h4, h5, h6 { font-weight: normal; }
a { color: #428bca; text-decoration: none; }
a:hover { text-decoration: underline; }
/*********************************************
* Navigation
*********************************************/
nav .menu > li { margin: 1px 10px; }
/*********************************************
* Tagline & Sponsors
*********************************************/
.col2.tagline { width: 70%; }
.col2.sponsors { width: 30%; }
.separator { margin: 2.4em 0; height: 1px; background: #DBDBDB; }
section.content.grid.homepage { margin-top: 2em; }
h4 { margin: 1em 0; }
a.footer { color: #333; }
a.button { text-decoration: none; color: #333; }
a.button:hover { opacity: 0.8; }
/*********************************************
* Team members
*********************************************/
.members {
margin: 0 0 2em 0;
}
.member {
margin: 0 0 1em 0;
}
.member a {
display: block;
}
.member a > img {
padding: 0.3em;
background: #FFF;
-moz-box-shadow: 0px 0px 1px 1px #999;
-webkit-box-shadow: 0px 0px 1px 1px #999;
box-shadow: 0px 0px 1px 1px #999;
}
.member span {
display: block;
}

View File

@ -17,7 +17,7 @@
<title>OpenFest</title> <title>OpenFest</title>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" href="css/styles.css"> <link rel="stylesheet" href="../css/styles.css">
</head> </head>
<body> <body>
@ -25,32 +25,28 @@
<nav> <nav>
<div class="content cf"> <div class="content cf">
<a href="#" class="logo"><img src="img/logo.png" alt="OpenFest" /></a> <a href="#" class="logo"><img src="img/logo.png" alt="OpenFest" /></a>
<ul> <div class="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d0%bc%d0%b5%d0%bd%d1%8e-container"><ul id="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d0%bc%d0%b5%d0%bd%d1%8e" class="menu"><li id="menu-item-17" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17"><a href="http://wwwt.openfest.org/bg/about/">За събитието</a></li>
<li><a href="#">Начало</a></li> <li id="menu-item-15" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15"><a href="http://wwwt.openfest.org/bg/schedule/">Програма</a></li>
<li><a href="#">За събитието</a></li> <li id="menu-item-16" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-8 current_page_item menu-item-16"><a href="http://wwwt.openfest.org/bg/sponsors/">Спонсори</a></li>
<li><a href="#">Спонсори</a></li> <li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"><a href="http://wwwt.openfest.org/bg/contacts/">Контакти</a></li>
<li><a href="#">Програма</a></li> <li id="menu-item-60" class="fa fa-twitter menu-item menu-item-type-custom menu-item-object-custom menu-item-60"><a href="https://twitter.com/openfestbg"></a></li>
<li><a href="#">Контакти</a></li> <li id="menu-item-61" class="fa fa-facebook menu-item menu-item-type-custom menu-item-object-custom menu-item-61"><a href="https://www.facebook.com/groups/6360369433"></a></li>
<li class="separator"></li> <li id="menu-item-62" class="fa fa-rss menu-item menu-item-type-custom menu-item-object-custom menu-item-62"><a href="http://openfest.org/feed"></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li> <li id="menu-item-3181-en" class="lang-item lang-item-13 lang-item-en menu-item menu-item-type-custom menu-item-object-custom menu-item-3181-en"><a href="http://wwwt.openfest.org/en/sponsors-4/" hreflang="en"><img src="http://wwwt.openfest.org/wp-content/plugins/polylang/flags/en_US.png" title="English" alt="English" /></a></li>
<li><a href="#"><i class="fa fa-facebook"></i></a></li> </ul></div> </div>
<li><a href="#"><i class="fa fa-rss"></i></a></li>
<li class="separator"></li>
<li><a href="#">EN</a></li>
</ul>
</div> </div>
</nav> </nav>
<section class="banner cf"> <section class="banner cf">
<img src="img/banner.png" alt="" /> <img src="../img/banner-bg.png" alt="" />
</section> </section>
<section class="content grid"> <section class="content grid homepage">
<div class="col2"> <div class="col2 tagline">
<h1>За свободния софтуер, отворените технологии, бизнеса с тях, свободното изкуство и познание.</h1> <h1>За свободния софтуер, отворените технологии, бизнеса с тях, свободното изкуство и познание</h1>
<p>OpenFest e единствената по рода си в България конференция, посветена на свободната култура, свободния софтуер и софтуера с отворен код, свободното споделяне на знания фестивал на свободното творчество.</p> <p>OpenFest e единствената по рода си в България конференция, посветена на свободната култура, свободния софтуер и софтуера с отворен код, свободното споделяне на знания. Фестивал на свободното творчество.</p>
</div> </div>
<div class="col2"> <div class="col2 sponsors">
<h3>Спонсори</h3> <h3>Спонсори</h3>
<p> <p>
<a href="#"><img src="img/sponsors/s1.jpg" alt="" /></a> <a href="#"><img src="img/sponsors/s1.jpg" alt="" /></a>

302
html/schedule.html Normal file
View File

@ -0,0 +1,302 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="author" content="OpenFest" />
<meta name="copyright" content="OpenFest" />
<meta name="robots" content="follow,index" />
<meta name="title" content="" />
<meta name="keywords" content="" lang="en-us" />
<meta name="description" content="" />
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<link rel="icon" type="image/png" href="">
<title>OpenFest</title>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" href="../css/styles.css">
</head>
<body>
<nav>
<div class="content cf">
<a href="#" class="logo"><img src="img/logo.png" alt="OpenFest" /></a>
<div class="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d0%bc%d0%b5%d0%bd%d1%8e-container"><ul id="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d0%bc%d0%b5%d0%bd%d1%8e" class="menu"><li id="menu-item-17" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17"><a href="http://wwwt.openfest.org/bg/about/">За събитието</a></li>
<li id="menu-item-15" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15"><a href="http://wwwt.openfest.org/bg/schedule/">Програма</a></li>
<li id="menu-item-16" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-8 current_page_item menu-item-16"><a href="http://wwwt.openfest.org/bg/sponsors/">Спонсори</a></li>
<li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"><a href="http://wwwt.openfest.org/bg/contacts/">Контакти</a></li>
<li id="menu-item-60" class="fa fa-twitter menu-item menu-item-type-custom menu-item-object-custom menu-item-60"><a href="https://twitter.com/openfestbg"></a></li>
<li id="menu-item-61" class="fa fa-facebook menu-item menu-item-type-custom menu-item-object-custom menu-item-61"><a href="https://www.facebook.com/groups/6360369433"></a></li>
<li id="menu-item-62" class="fa fa-rss menu-item menu-item-type-custom menu-item-object-custom menu-item-62"><a href="http://openfest.org/feed"></a></li>
<li id="menu-item-3181-en" class="lang-item lang-item-13 lang-item-en menu-item menu-item-type-custom menu-item-object-custom menu-item-3181-en"><a href="http://wwwt.openfest.org/en/sponsors-4/" hreflang="en"><img src="http://wwwt.openfest.org/wp-content/plugins/polylang/flags/en_US.png" title="English" alt="English" /></a></li>
</ul></div> </div>
</div>
</nav>
<br /><br />
<section class="content">
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium obcaecati eos expedita natus temporibus, soluta illum alias aspernatur ullam officiis autem dolore error voluptatem nisi a culpa corrupti voluptates quis!
</p>
</section>
<div class="separator"></div>
<section class="content">
<table cellpadding="0" cellspacing="0" class="schedule">
<!-- top row -->
<tr>
<th></th>
<th>Зала 1</th>
<th>Зала Варна</th>
<th>Зала Г1</th>
<th>workshops</th>
</tr>
<!-- day row -->
<tr>
<td class="schedule-day">Събота</td>
<td colspan="4" class="schedule-empty"></td>
</tr>
<!-- event row -->
<tr>
<td>10:00-10:15</td>
<td>Откриване (Яна и Мариян)</td>
<td class="schedule-empty" colspan="3"></td>
</tr>
<!-- event row -->
<tr>
<td>10:15-11:11</td>
<td class="schedule-social schedule-english">Encryption as social change (ze germans)</td>
<td class="schedule-empty" colspan="3"></td>
</tr>
<!-- event row -->
<tr>
<td>11:15-12:00</td>
<td class="schedule-technical schedule-bg">ES6: The Good Parts (Симандов)</td>
<td class="schedule-social schedule-bg">Отворени инструменти за независима журналистика (Петя и</td>
<td class="schedule-technical schedule-english">uinput-mapper (Merlijn Wajer)</td>
<td class="schedule-workshop schedule-bg" rowspan="2">How To CryptoParty</td>
</tr>
<!-- event row -->
<tr>
<td>12:15-13:00</td>
<td class="schedule-technical schedule-bg">Програмируем Дом (Олимекс)</td>
<td class="schedule-advanced-technical schedule-bg">Виртуализирай това... (Мартин Иванов)</td>
<td class="schedule-english schedule-civic">Re-usable components for civic tech (Dave)</td>
</tr>
<!-- event row -->
<tr>
<td>13:00-14:30</td>
<td class="schedule-other" colspan="4">Обяд</td>
</tr>
<!-- event row -->
<tr>
<td>14:30-15:15</td>
<td class="schedule-civic schedule-bg">I reject your reality and substitute my own (Iliyan)</td>
<td class="schedule-technical schedule-bg">Node.js going to be native (Валентин Николов)</td>
<td class="schedule-empty schedule-bg"></td>
<td class="schedule-workshop schedule-bg" rowspan="2">The web hacking competition</td>
</tr>
<!-- event row -->
<tr>
<td>15:30-16:15</td>
<td class="schedule-civic schedule-bg">Отворен код в държавата (Божо)</td>
<td class="schedule-advanced-technical schedule-bg">RIPE Atlas data processing backend (Sergey)</td>
<td class="schedule-open-biz schedule-bg">Приложение на Linux в управлението на минния добив</td>
</tr>
<!-- event row -->
<tr>
<td>16:30-17:15</td>
<td class="schedule-civic schedule-english">UI design for open data (Hollie)</td>
<td class="schedule-advanced-technical schedule-bg">ATA over Ethernet (krosnov)</td>
<td class="schedule-misc schedule-bg">Lightning talks</td>
<td class="schedule-empty"></td>
</tr>
<!-- event row -->
<tr>
<td>17:30-18:15</td>
<td class="schedule-social schedule-bg">Висше образование, университети, проблеми и решения (r</td>
<td class="schedule-advanced-technical schedule-bg">LUKS, TPM and full disk encryption without password (Никола Колев)</td>
<td class="schedule-empty" colspan="2"></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" class="schedule">
<tr>
<th></th>
<th>Зала 1</th>
<th>Зала Варна</th>
<th>Зала Г1</th>
<th>workshops</th>
</tr>
<tr>
<td class="schedule-day">Неделя</td>
<td colspan="4" class="schedule-empty"></td>
</tr>
<tr>
<td>10:15-11:00</td>
<td class="schedule-social schedule-bg">За свободата, програмиста, и менажерията (Николай Цвет</td>
<td class="schedule-advanced-technical schedule-bg">Aggressive DevOps (core-ix)</td>
<td class="schedule-civic schedule-bg">Open не е достатъчно (Тони)</td>
<td class="schedule-empty"></td>
</tr>
<tr>
<td>11:15-12:00</td>
<td class="schedule-technica schedule-bgl">Clojure (skanev)</td>
<td class="schedule-advanced-technical schedule-bg">SIM card protocol tracing using Osmocom SIMtrace (Harald)</td>
<td class="schedule-technical schedule-bg">Peer-to-peer streaming & file storage (Иво Георгиев)</td>
<td class="schedule-workshop" rowspan="2">Да хакнем дрон</td>
</tr>
<tr>
<td>11:15-12:00</td>
<td class="schedule-social schedule-english">The future is open (Chiara & Carlo)</td>
<td class="schedule-advanced-technical schedule-bg">Адаптация на Linux за ARM устройства (Леон Анави)</td>
<td class="schedule-technical schedule-bg">Polymer (Пламен)</td>
</tr>
<tr>
<td>13:00-14:30</td>
<td class="schedule-other" colspan="4">Обяд</td>
</tr>
<tr>
<td>14:30-15:15</td>
<td class="schedule-technical schedule-bg">За програмирането (краси)</td>
<td class="schedule-technical schedule-bg">Лесни стъпки към по-добра Уеб сигурност (Явор)</td>
<td class="schedule-misc schedule-bg">Lightning talks</td>
<td class="schedule-workshop schedule-bg" rowspan="2">Olimex workshop ?</td>
</tr>
<tr>
<td>15:30-16:15</td>
<td class="schedule-open-art schedule-bg">Интерактивни технологии в контекста на съвременните из</td>
<td class="schedule-advanced-technical schedule-bg">Maintaining custom Kernel builds (mm)</td>
<td class="schedule-technical schedule-bg">FFmpeg от 0 до x264 (Емил Иванов)</td>
</tr>
<tr>
<td>16:30-17:15</td>
<td class="schedule-technical schedule-english">Software Defined Radio and rtl-sdr (harald)</td>
<td class="schedule-social schedule-bg">Mind patterns and anti-patterns (Djuvi)</td>
<td colspan="2" class="schedule-empty"></td>
</tr>
<tr>
<td>17:30-18:15</td>
<td class="schedule-technical schedule-bg"><a href="#lecture-11">The Elements of Style in Programming (batsov)</a></td>
<td class="schedule-advanced-technical schedule-bg"><a href="#lecture-12">OpenCL: Как програмата ми стана 1500 пъти по-бърза (боби)</a></td>
<td colspan="2" class="schedule-empty"></td>
</tr>
<tr>
<td>18:15-18:30</td>
<td class="schedule-other">закриване (Мариян и Яна)</td>
<td colspan="3" class="schedule-empty"></td>
</tr>
</table>
<!-- legend -->
<table cllpadding="0" cellspacing="0" class="schedule schedule-legend">
<tr><td class="schedule-technical">Technical</td></tr>
<tr><td class="schedule-advanced-technical">Advanced technical</td></tr>
<tr><td class="schedule-social">Social</td></tr>
<tr><td class="schedule-open-art">Open art</td></tr>
<tr><td class="schedule-open-biz">Open biz</td></tr>
<tr><td class="schedule-civic">Civic hacking</td></tr>
<tr><td class="schedule-misc">Misc</td></tr>
<tr><td class="schedule-english">English</td></tr>
<tr><td class="schedule-bg">Български</td></tr>
</table>
<div class="separator"></div>
<section>
<a name="lecture-11"></a>
<img src="./img/speaker.jpg" class="schedule-avatar" />
<p><strong>The Elements of Style in Programming (batsov)</strong></p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est dolore illo nesciunt nemo debitis soluta similique doloribus aperiam cumque, libero quasi ab, culpa recusandae inventore, dignissimos error eius. Rem, eligendi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus eius optio, debitis odit nulla alias non molestiae blanditiis ea, itaque expedita quam iusto ipsa suscipit sit facere nesciunt eaque impedit?</p>
</section>
<div class="separator"></div>
<section>
<a name="lecture-12"></a>
<img src="./img/speaker.jpg" class="schedule-avatar" />
<p><strong>OpenCL: Как програмата ми стана 1500 пъти по-бърза (боби)</strong></p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est dolore illo nesciunt nemo debitis soluta similique doloribus aperiam cumque, libero quasi ab, culpa recusandae inventore, dignissimos error eius. Rem, eligendi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus eius optio, debitis odit nulla alias non molestiae blanditiis ea, itaque expedita quam iusto ipsa suscipit sit facere nesciunt eaque impedit?<br /><br />Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est dolore illo nesciunt nemo debitis soluta similique doloribus aperiam cumque, libero quasi ab, culpa recusandae inventore, dignissimos error eius. Rem, eligendi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus eius optio, debitis odit nulla alias non molestiae blanditiis ea, itaque expedita quam iusto ipsa suscipit sit facere nesciunt eaque impedit?</p>
</section>
<div class="separator"></div>
</section>
<footer>
<div class="content grid">
<div class="col4">
<h3>OpenFest</h3>
<p>
<a href="#">Начало</a><br />
<a href="#">Идеи и препоръки</a><br />
<a href="#">За събитието</a><br />
<a href="#">Спонсори</a><br />
<a href="#">Програма</a><br />
<a href="#">Екип</a><br />
<a href="#">Историята</a><br />
<a href="#">Контакти</a>
</p>
</div>
<div class="col4">
<h3>Програма</h3>
<p>
<a href="#">Информация</a><br />
<a href="#">Календар</a><br />
<a href="#">Зали</a><br />
</p>
</div>
<div class="col4">
<h3>Други</h3>
<p>
<a href="#">Хотели</a><br />
<a href="#">Заведения</a><br />
<a href="#">Beer Events</a><br />
<a href="#">After party</a><br />
</p>
</div>
<div class="col4">
<h3>Последвайте ни в:</h3>
<p>
<a href="#"><i class="fa fa-twitter"></i> Twitter</a><br />
<a href="#"><i class="fa fa-facebook"></i> Facebook</a><br />
<a href="#"><i class="fa fa-youtube"></i> YouTube</a>
</p>
</div>
</div>
</footer>
</body>
</html>

222
html/team.html Normal file
View File

@ -0,0 +1,222 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="author" content="OpenFest" />
<meta name="copyright" content="OpenFest" />
<meta name="robots" content="follow,index" />
<meta name="title" content="" />
<meta name="keywords" content="" lang="en-us" />
<meta name="description" content="" />
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<link rel="icon" type="image/png" href="">
<title>OpenFest</title>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" href="./css/styles.css">
</head>
<body>
<nav>
<div class="content cf">
<a href="#" class="logo"><img src="img/logo.png" alt="OpenFest" /></a>
<div class="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d0%bc%d0%b5%d0%bd%d1%8e-container"><ul id="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be-%d0%bc%d0%b5%d0%bd%d1%8e" class="menu"><li id="menu-item-17" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17"><a href="http://wwwt.openfest.org/bg/about/">За събитието</a></li>
<li id="menu-item-15" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15"><a href="http://wwwt.openfest.org/bg/schedule/">Програма</a></li>
<li id="menu-item-16" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-8 current_page_item menu-item-16"><a href="http://wwwt.openfest.org/bg/sponsors/">Спонсори</a></li>
<li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"><a href="http://wwwt.openfest.org/bg/contacts/">Контакти</a></li>
<li id="menu-item-60" class="fa fa-twitter menu-item menu-item-type-custom menu-item-object-custom menu-item-60"><a href="https://twitter.com/openfestbg"></a></li>
<li id="menu-item-61" class="fa fa-facebook menu-item menu-item-type-custom menu-item-object-custom menu-item-61"><a href="https://www.facebook.com/groups/6360369433"></a></li>
<li id="menu-item-62" class="fa fa-rss menu-item menu-item-type-custom menu-item-object-custom menu-item-62"><a href="http://openfest.org/feed"></a></li>
<li id="menu-item-3181-en" class="lang-item lang-item-13 lang-item-en menu-item menu-item-type-custom menu-item-object-custom menu-item-3181-en"><a href="http://wwwt.openfest.org/en/sponsors-4/" hreflang="en"><img src="http://wwwt.openfest.org/wp-content/plugins/polylang/flags/en_US.png" title="English" alt="English" /></a></li>
</ul></div> </div>
</div>
</nav>
<ul class="content subnav cf">
<li class="selected"><a href="#">За събитието</a></li>
<li><a href="#">Идеи и препоръки</a></li>
<li><a href="#">Екип</a></li>
<li><a href="#">История</a></li>
</ul>
<div class="separator"></div>
<section class="content grid">
<div class="col-left">
<h1 class="big">Екип</h1>
<div class="grid members">
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Васил Колев</span>
</a>
</div>
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Стефан Кънев</span>
</a>
</div>
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Васил Колев</span>
</a>
</div>
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Стефан Кънев</span>
</a>
</div>
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Васил Колев</span>
</a>
</div>
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Стефан Кънев</span>
</a>
</div>
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Васил Колев</span>
</a>
</div>
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Стефан Кънев</span>
</a>
</div>
<div class="member col4">
<a href="#">
<img src="img/speaker.jpg" alt="">
<span>Стефан Кънев</span>
</a>
</div>
</div>
<div class="separator"></div>
<div class="speaker">
<img src="img/speaker.jpg" alt="">
<h3>Васил Колев</h3>
Васил Колев е третият ветеран в екипа. Всяка година на неговите плещи лежат безпроблемното функциониране на мрежата и видео записването на събитието.Васил Колев е третият ветеран в екипа. Всяка година на неговите плещи лежат безпроблемното функциониране на мрежата и видео записването на събитието.
<div class="icons">
<a href="#"><i class="fa fa-twitter"></i></a>
<a href="#"><i class="fa fa-facebook"></i></a>
<a href="#"><i class="fa fa-share"></i></a>
</div>
</div>
<div class="speaker">
<img src="img/speaker.jpg" alt="">
<h3>Васил Колев</h3>
Васил Колев е третият ветеран в екипа. Всяка година на неговите плещи лежат безпроблемното функциониране на мрежата и видео записването на събитието.
<div class="icons">
<a href="#"><i class="fa fa-twitter"></i></a>
<a href="#"><i class="fa fa-facebook"></i></a>
<a href="#"><i class="fa fa-share"></i></a>
</div>
</div>
<div class="speaker">
<img src="img/speaker.jpg" alt="">
<h3>Васил Колев</h3>
Васил Колев е третият ветеран в екипа. Всяка година на неговите плещи лежат безпроблемното функциониране на мрежата и видео записването на събитието. Васил Колев е третият ветеран в екипа. Всяка година на неговите плещи лежат безпроблемното функциониране на мрежата и видео записването на събитието. Васил Колев е третият ветеран в екипа. Всяка година на неговите плещи лежат безпроблемното функциониране на мрежата и видео записването на събитието.
<div class="icons">
<a href="#"><i class="fa fa-twitter"></i></a>
<a href="#"><i class="fa fa-facebook"></i></a>
<a href="#"><i class="fa fa-share"></i></a>
</div>
</div>
</p>
</div>
<div class="col-right">
<h3>2-и и 3-и Ноември, 2013г.<br />Интерпред, София, България</h3>
<div class="separator"></div>
<div class="sponsors">
<a href="#"><img src="img/sponsors/s1.jpg" alt="" /></a>
<a href="#"><img src="img/sponsors/s2.jpg" alt="" /></a>
<a href="#"><img src="img/sponsors/s3.jpg" alt="" /></a>
<a href="#"><img src="img/sponsors/s4.jpg" alt="" /></a>
<a href="#"><img src="img/sponsors/s5.jpg" alt="" /></a>
<a href="#"><img src="img/sponsors/s6.jpg" alt="" /></a>
<a href="#"><img src="img/sponsors/s7.jpg" alt="" /></a>
</div>
<div class="separator"></div>
<div class="place">
<h3>Място: Интерпред, София, България</h3>
<p>С метро:<br />
Интерпред се намира в непосредствена близост до спирка “Жолио Кюри” на софийското метро. <br />
<a href="#">Карта на метрото</a>. <a href="">Разписание</a>.<br /><br />
С автобус:<br />
Автобус №413, името на спирката е СТЦ Интерпред. Автобусът тръгва от Централна гара.<br />
<a href="">Разписание и маршрут</a>.</p><br /><br />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script><div style="overflow:hidden;height:350px;width:100%;"><div id="gmap_canvas" style="height:350px;width:100%;"></div><style>#gmap_canvas img{max-width:none!important;background:none!important}</style><a class="google-map-code" href="http://www.trivoo.net" id="get-map-data">augenpflege von clinique</a></div><script type="text/javascript"> function init_map(){var myOptions = {zoom:14,center:new google.maps.LatLng(42.6977082,23.321867500000053),mapTypeId: google.maps.MapTypeId.ROADMAP};map = new google.maps.Map(document.getElementById("gmap_canvas"), myOptions);marker = new google.maps.Marker({map: map,position: new google.maps.LatLng(42.6977082, 23.321867500000053)});infowindow = new google.maps.InfoWindow({content:"<b>&#1048;&#1085;&#1090;&#1077;&#1088;&#1087;&#1088;&#1077;&#1076;</b><br/><br/> Sofia" });google.maps.event.addListener(marker, "click", function(){infowindow.open(map,marker);});infowindow.open(map,marker);}google.maps.event.addDomListener(window, 'load', init_map);</script>
</div>
</div>
</section>
<footer>
<div class="content grid">
<div class="col4">
<h3>OpenFest</h3>
<p>
<a href="#">Начало</a><br />
<a href="#">Идеи и препоръки</a><br />
<a href="#">За събитието</a><br />
<a href="#">Спонсори</a><br />
<a href="#">Програма</a><br />
<a href="#">Екип</a><br />
<a href="#">Историята</a><br />
<a href="#">Контакти</a>
</p>
</div>
<div class="col4">
<h3>Програма</h3>
<p>
<a href="#">Информация</a><br />
<a href="#">Календар</a><br />
<a href="#">Зали</a><br />
</p>
</div>
<div class="col4">
<h3>Други</h3>
<p>
<a href="#">Хотели</a><br />
<a href="#">Заведения</a><br />
<a href="#">Beer Events</a><br />
<a href="#">After party</a><br />
</p>
</div>
<div class="col4">
<h3>Последвайте ни в:</h3>
<p>
<a href="#"><i class="fa fa-twitter"></i> Twitter</a><br />
<a href="#"><i class="fa fa-facebook"></i> Facebook</a><br />
<a href="#"><i class="fa fa-youtube"></i> YouTube</a>
</p>
</div>
</div>
</footer>
</body>
</html>

BIN
img/banner-2014.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
img/banner-back-2014.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
img/banner-back-2015.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
img/banner-back-2016.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
img/banner-back-2017.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

BIN
img/banner-back-2018.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
img/banner-back-2019.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
img/banner-back-2020.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

BIN
img/banner-back-2021.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

75
img/banner-back-2021.svg Normal file
View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Creator: CorelDRAW X7 -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1920px" height="1920px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
viewBox="0 0 192000 192000"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
<![CDATA[
.fil0 {fill:none}
.fil2 {fill:white}
.fil1 {fill:#1EAC7D;fill-rule:nonzero}
.fil4 {fill:#9CDBC6;fill-rule:nonzero}
.fil3 {fill:#FFCC00;fill-rule:nonzero}
]]>
</style>
</defs>
<g id="Layer_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer"/>
<g id="_1658993452192">
<rect class="fil0" width="192000" height="192000"/>
<g>
<circle class="fil0" cx="96000" cy="96000" r="6060"/>
<g>
<circle class="fil1" transform="matrix(-1.38902 1.38902 -1.38902 -1.38902 96000 96000)" r="35942"/>
<g>
<g>
<path class="fil2" d="M132004 136375c-751,450 -1540,809 -2349,1078 -1022,339 -2071,532 -3111,575 -550,23 -1105,4 -1661,-58 -418,-46 -829,-116 -1232,-209 -46,62 -93,125 -142,186 -132,168 -272,326 -421,475 -516,516 -1114,907 -1754,1172 -667,276 -1373,414 -2076,414 -703,0 -1410,-138 -2076,-414 -640,-265 -1238,-656 -1754,-1172 -516,-516 -907,-1114 -1172,-1754 -276,-666 -414,-1373 -414,-2076 0,-497 69,-997 209,-1487 88,-309 203,-611 346,-902 -99,-69 -198,-142 -296,-218l-13 -11c-238,-185 -457,-378 -657,-577 -944,-944 -1578,-2097 -1918,-3377 -348,-1308 -384,-2748 -124,-4227 242,-1376 744,-2789 1491,-4156 718,-1313 1661,-2585 2815,-3739 1154,-1153 2425,-2096 3739,-2814 1366,-747 2780,-1249 4155,-1491 1479,-260 2919,-224 4228,123 1279,340 2432,975 3376,1919 202,202 392,417 569,643 64,82 127,166 188,251 323,-181 660,-326 1006,-435 532,-168 1084,-252 1636,-252 703,0 1409,138 2076,414 640,265 1238,656 1754,1172 516,516 907,1114 1172,1754 276,666 414,1373 414,2076 0,703 -138,1409 -414,2076 -265,640 -656,1238 -1172,1754 -183,183 -381,353 -590,510 -94,70 -189,137 -287,200 98,410 171,827 219,1248 64,562 85,1131 61,1701 -36,844 -148,1623 -346,2384 -196,752 -476,1480 -846,2229l1 0c-349,762 -512,1537 -492,2258 20,704 213,1357 578,1892 169,247 106,584 -142,754 -87,59 -185,90 -283,94 -719,30 -1309,-55 -1789,-233 -171,-64 -328,-139 -471,-224 -8,52 -15,104 -22,157 -49,365 -71,750 -71,1168 1,300 -241,543 -541,544 -157,0 -299,-66 -398,-173 -325,-321 -587,-621 -793,-909 -76,-105 -144,-210 -206,-313zm-2692 51c901,-299 1780,-727 2608,-1284l0 1c35,-23 73,-43 114,-58 280,-104 592,38 696,318 53,141 124,286 217,438 56,-391 137,-763 247,-1130l1 1c35,-117 109,-222 218,-295 249,-166 585,-99 751,150 154,232 389,420 721,543 141,52 300,93 477,122 -187,-494 -288,-1027 -304,-1581 -25,-890 170,-1832 588,-2744l2 1 7 -16c342,-689 598,-1353 775,-2035 177,-678 278,-1383 310,-2155 22,-514 4,-1027 -54,-1533 -58,-500 -155,-995 -291,-1481 -67,-238 36,-499 263,-623 179,-97 354,-209 523,-335 161,-121 319,-258 472,-411 417,-417 731,-895 941,-1403 218,-526 327,-1091 327,-1658 0,-568 -109,-1132 -327,-1658 -210,-508 -524,-986 -941,-1403 -417,-417 -895,-731 -1403,-941 -526,-218 -1090,-327 -1658,-327 -442,0 -884,67 -1309,201 -415,132 -814,326 -1180,584l0 0 -33 21c-256,155 -590,73 -745,-183 -124,-205 -263,-406 -416,-602 -148,-188 -310,-371 -485,-546 -806,-806 -1792,-1348 -2887,-1639 -1157,-308 -2437,-338 -3759,-106 -1258,222 -2559,685 -3824,1377 -1220,667 -2407,1548 -3490,2631 -1084,1084 -1965,2270 -2632,3490 -692,1266 -1155,2567 -1376,3825 -233,1321 -202,2602 105,3759 291,1095 833,2081 1639,2887 184,184 369,348 553,491l12 10c192,149 403,291 630,426l9 6c254,159 332,493 174,748 -216,347 -377,715 -485,1093 -109,384 -164,785 -164,1190 0,568 109,1132 327,1658 210,508 524,986 941,1403 417,417 895,731 1403,941 526,218 1090,327 1658,327 567,0 1132,-109 1658,-327 508,-210 986,-524 1403,-941 125,-125 238,-252 340,-381 104,-131 200,-270 290,-416l1 1c123,-200 368,-304 606,-238 477,130 961,222 1447,276 486,54 987,70 1496,49 946,-40 1894,-213 2813,-518z"/>
<path class="fil2" d="M127388 132996c-1735,1735 -4549,1735 -6285,0 -726,-726 -1148,-1640 -1266,-2586 -1654,155 -3145,-246 -4159,-1260 -1144,-1144 -1509,-2897 -1173,-4805 364,-2072 1539,-4302 3436,-6200 1898,-1898 4129,-3072 6201,-3436 1908,-336 3660,28 4804,1173 1012,1011 1414,2499 1262,4149 948,117 1865,540 2592,1267 1736,1736 1736,4550 0,6285 -1152,1152 -2779,1539 -4250,1162 377,1472 -10,3099 -1162,4251zm-7993 -10743c-277,415 -839,527 -1255,250 -416,-278 -528,-840 -250,-1255 190,-285 409,-578 654,-877 243,-296 488,-568 732,-812 245,-244 516,-489 812,-732 299,-246 592,-464 877,-654 416,-278 978,-166 1255,250 278,415 166,977 -250,1255 -267,179 -512,359 -731,539 -222,182 -450,390 -682,622 -233,233 -441,461 -623,682 -180,220 -360,464 -539,732zm4188 2912c-121,120 -279,180 -437,180 -158,0 -316,-60 -436,-180 -120,-121 -181,-278 -181,-436l0 -1c0,-158 61,-316 181,-436 120,-121 278,-181 436,-181 158,0 316,60 437,181 120,120 180,278 180,436l0 1c0,158 -60,316 -180,436zm1425 -1426c-120,121 -278,181 -436,181l-1 0c-158,0 -316,-60 -436,-181 -120,-120 -180,-278 -180,-436l0 0c0,-158 60,-316 180,-436 120,-121 278,-181 436,-181l1 0c158,0 316,60 436,181 120,120 180,278 180,436l0 0c0,158 -60,316 -180,436zm582 7459c-289,289 -701,400 -1134,346 -433,-53 -886,-272 -1258,-643 -371,-372 -590,-825 -644,-1258 -53,-433 58,-845 347,-1134 289,-290 702,-401 1135,-347 433,53 886,272 1257,644 371,371 590,824 644,1257 54,433 -58,845 -347,1135zm5412 -5413c-289,290 -701,401 -1134,347 -433,-54 -886,-272 -1258,-644 -371,-371 -590,-824 -643,-1257 -54,-433 57,-845 346,-1135 290,-289 702,-400 1135,-347 433,54 886,273 1257,644 372,372 591,825 644,1258 54,433 -57,845 -347,1134zm-11744 11046c573,0 1146,-218 1583,-656 33,-33 65,-66 95,-101 -620,-380 -1204,-837 -1738,-1371 -335,-335 -651,-708 -947,-1115 -147,-201 -284,-406 -412,-614 -37,-5 -74,-11 -111,-17 -18,17 -36,34 -53,52 -438,437 -656,1010 -656,1583 0,573 218,1146 656,1583 437,438 1010,656 1583,656zm16594 -15722c-377,-609 -827,-1182 -1353,-1708 -335,-335 -708,-651 -1114,-947 -202,-146 -407,-284 -614,-412 -4,-24 -8,-48 -11,-71 73,-104 156,-203 249,-296 437,-438 1010,-656 1583,-656 573,0 1146,218 1583,656 438,437 656,1010 656,1583 0,573 -218,1146 -656,1583 -101,101 -209,191 -323,268z"/>
</g>
<g>
<path class="fil2" d="M150008 99091c-213,849 -516,1661 -899,2423 -482,963 -1088,1840 -1793,2607 -373,405 -775,781 -1202,1124 -320,258 -657,497 -1008,716 14,80 25,160 35,239 25,213 38,428 38,643 0,730 -147,1429 -412,2069 -276,666 -678,1264 -1175,1761 -980,980 -2334,1586 -3830,1586 -730,0 -1429,-146 -2069,-411 -666,-276 -1263,-678 -1760,-1175 -352,-352 -658,-757 -906,-1203 -156,-281 -288,-576 -393,-884 -124,22 -250,42 -376,58 -309,39 -610,59 -903,59 -1335,0 -2599,-366 -3744,-1030 -1171,-680 -2215,-1673 -3077,-2903 -801,-1143 -1446,-2498 -1884,-3992 -421,-1437 -653,-3002 -653,-4634 0,-1632 232,-3197 653,-4634 438,-1494 1083,-2849 1884,-3992 862,-1230 1906,-2223 3077,-2903 1145,-664 2409,-1030 3744,-1030 293,0 584,18 873,53 107,14 214,30 322,48 100,-355 235,-696 402,-1018 260,-499 591,-951 981,-1341 497,-497 1094,-899 1760,-1175 640,-265 1339,-411 2069,-411 731,0 1430,146 2070,411 666,276 1263,678 1760,1175 497,497 899,1095 1175,1761 265,640 412,1339 412,2069 0,262 -20,524 -58,785 -17,120 -38,238 -63,355 358,221 699,461 1023,719 439,350 852,735 1235,1151 573,623 1044,1253 1441,1931 397,675 715,1392 984,2191 291,776 722,1433 1244,1926 512,484 1110,809 1746,929 294,56 488,339 433,633 -19,104 -67,195 -134,268 -487,529 -965,886 -1429,1099 -166,77 -330,134 -492,175 31,42 63,85 95,127 224,292 480,581 776,876 213,211 214,555 3,767 -111,111 -259,165 -404,159 -457,4 -855,-24 -1204,-81 -128,-21 -250,-47 -367,-76zm-1867 1939c425,-848 744,-1773 936,-2751l1 0c8,-41 21,-82 39,-121 124,-272 446,-392 718,-268 136,63 289,115 462,156 -237,-316 -443,-637 -625,-973l1 -1c-57,-107 -79,-234 -54,-362 59,-294 344,-484 637,-425 274,55 572,22 894,-126 137,-63 278,-146 424,-251 -481,-217 -929,-522 -1332,-902 -640,-605 -1165,-1402 -1515,-2336l-14 -37c-246,-730 -534,-1380 -890,-1987 -355,-605 -782,-1174 -1306,-1744 -345,-375 -716,-722 -1111,-1036 -385,-307 -787,-581 -1202,-818 -242,-111 -371,-386 -293,-648 60,-200 106,-404 136,-611 29,-202 44,-413 44,-632 0,-590 -116,-1149 -326,-1657 -218,-526 -540,-1002 -941,-1404 -402,-401 -878,-723 -1404,-941 -508,-211 -1068,-327 -1658,-327 -589,0 -1149,116 -1657,327 -526,218 -1002,540 -1403,941 -316,315 -581,676 -785,1069 -201,387 -345,808 -421,1253l-1 0 -8 38c-71,291 -365,469 -656,397 -237,-59 -483,-104 -735,-136 -243,-30 -490,-45 -741,-45 -1140,0 -2220,314 -3200,882 -1036,601 -1963,1485 -2733,2584 -733,1046 -1325,2294 -1731,3678 -391,1334 -607,2796 -607,4328 0,1532 216,2994 607,4328 406,1384 998,2632 1731,3678 770,1099 1697,1983 2733,2584 980,568 2060,882 3200,882 269,0 525,-16 767,-47 245,-31 490,-78 733,-140l40 -10c292,-67 583,115 649,407 92,397 239,772 430,1118 195,350 440,673 728,960 401,401 877,723 1403,941 508,211 1068,327 1657,327 1196,0 2278,-485 3062,-1268 401,-401 723,-878 941,-1404 210,-508 326,-1067 326,-1657 0,-178 -10,-350 -29,-516 -22,-179 -52,-347 -90,-505 -54,-228 44,-474 257,-597 418,-240 821,-516 1205,-825 384,-308 746,-647 1083,-1014 641,-697 1190,-1490 1624,-2356z"/>
<path class="fil2" d="M144355 99965c0,2454 -1990,4444 -4445,4444 -1026,0 -1971,-348 -2723,-932 -1060,1279 -2398,2049 -3832,2049 -1618,0 -3115,-981 -4227,-2568 -1207,-1723 -1954,-4130 -1954,-6814 0,-2684 747,-5091 1954,-6814 1112,-1587 2609,-2568 4227,-2568 1431,0 2767,767 3826,2042 753,-587 1700,-937 2729,-937 2455,0 4445,1989 4445,4444 0,1629 -877,3053 -2184,3827 1307,774 2184,2198 2184,3827zm-9146 -4862c0,170 -70,324 -181,436l-1 0c-112,112 -266,181 -436,181 -170,0 -324,-69 -436,-181l0 0c-112,-112 -181,-266 -181,-436 0,-170 69,-324 181,-436l0 0c112,-112 266,-181 436,-181 170,0 324,69 436,181l1 0c111,112 181,266 181,436zm6603 -2792c0,409 -213,779 -557,1047 -344,269 -819,434 -1345,434 -525,0 -1000,-165 -1344,-434 -344,-268 -557,-638 -557,-1047 0,-409 213,-779 557,-1047 344,-269 819,-434 1344,-434 526,0 1001,165 1345,434 344,268 557,638 557,1047zm0 7654c0,409 -213,779 -557,1048 -344,268 -819,433 -1345,433 -525,0 -1000,-165 -1344,-433 -344,-269 -557,-639 -557,-1048 0,-409 213,-779 557,-1047 344,-269 819,-434 1344,-434 526,0 1001,165 1345,434 344,268 557,638 557,1047zm-11032 -3335c217,450 29,990 -421,1206 -449,217 -989,29 -1205,-420 -96,-198 -168,-396 -214,-592 -50,-207 -74,-415 -74,-624 0,-209 24,-417 74,-624 46,-196 118,-394 214,-592 216,-449 756,-637 1205,-420 450,216 638,756 421,1206 -34,70 -61,145 -79,224 -17,68 -25,137 -25,206 0,69 8,138 25,206 18,79 45,154 79,224zm4429 489c0,170 -70,324 -181,436 -112,112 -266,181 -437,181 -170,0 -324,-69 -436,-181l0 0c-112,-112 -181,-266 -181,-436 0,-171 69,-325 181,-437 112,-111 266,-181 436,-181 170,0 324,70 436,181l1 1c111,112 181,266 181,436zm6137 11307c405,-405 656,-965 656,-1583 0,-49 -2,-97 -5,-145 -716,174 -1461,266 -2227,266 -473,0 -961,-41 -1458,-119 -246,-38 -488,-86 -725,-142 -20,15 -41,30 -62,45 -1,31 -2,63 -2,95 0,618 251,1178 656,1583 405,405 965,656 1583,656 619,0 1179,-251 1584,-656zm615 -22844c27,-138 41,-280 41,-425 0,-618 -251,-1178 -656,-1583 -405,-405 -965,-656 -1584,-656 -618,0 -1178,251 -1583,656 -405,405 -656,965 -656,1583 0,140 13,276 38,409l26 19c237,-56 479,-104 725,-142 497,-78 985,-119 1458,-119 753,0 1486,89 2191,258z"/>
</g>
<g>
<path class="fil2" d="M41992 92909c213,-849 516,-1661 899,-2423 482,-963 1088,-1840 1793,-2607 555,-604 1174,-1142 1844,-1602 548,-376 1134,-700 1752,-966 -2,-58 -3,-109 -3,-154 0,-730 146,-1429 411,-2069 276,-666 678,-1264 1175,-1761 498,-497 1095,-899 1761,-1175 640,-265 1339,-411 2069,-411 730,0 1430,146 2070,411 666,276 1263,678 1760,1175 324,324 608,693 846,1099 162,276 300,568 411,872 1285,24 2503,388 3609,1029 1171,680 2215,1673 3077,2903 801,1143 1446,2498 1884,3992 421,1437 654,3002 654,4634 0,1632 -233,3197 -654,4634 -438,1494 -1083,2849 -1884,3992 -862,1230 -1906,2223 -3077,2903 -1078,625 -2262,987 -3512,1027 -107,356 -251,697 -427,1019 -252,461 -565,880 -927,1242 -497,497 -1094,899 -1760,1175 -640,265 -1340,411 -2070,411 -730,0 -1429,-146 -2069,-411 -666,-276 -1263,-678 -1761,-1175 -497,-497 -899,-1094 -1175,-1761 -265,-640 -411,-1339 -411,-2069 0,-142 6,-287 18,-434 -615,-264 -1200,-587 -1751,-963 -676,-462 -1300,-1004 -1860,-1613 -572,-622 -1043,-1252 -1441,-1930 -393,-671 -710,-1383 -978,-2174l-1 0c-292,-785 -724,-1448 -1249,-1944 -512,-484 -1110,-809 -1746,-929 -294,-56 -488,-339 -433,-633 19,-104 67,-195 134,-268 487,-529 965,-886 1429,-1099 166,-77 330,-135 492,-175 -31,-43 -63,-85 -95,-127 -224,-292 -480,-581 -776,-876 -213,-211 -214,-555 -2,-767 110,-111 258,-164 403,-159 457,-4 855,24 1204,81 128,21 250,47 367,76zm1867 -1939c-425,848 -744,1773 -936,2751l-1 0c-8,41 -21,82 -39,121 -124,272 -446,392 -718,268 -136,-63 -289,-115 -462,-156 237,315 443,636 624,973l-1 0c58,107 80,234 54,363 -58,293 -344,483 -637,425 -273,-56 -571,-22 -893,126 -137,63 -278,146 -424,251 481,217 930,522 1333,903 646,611 1175,1416 1524,2356l-1 1 5 16c246,729 535,1380 891,1987 355,605 781,1174 1305,1743 505,549 1066,1037 1673,1452 598,409 1241,747 1918,1004 236,89 385,334 344,593 -16,104 -30,219 -40,346 -9,112 -14,228 -14,350 0,590 117,1149 327,1657 218,526 540,1002 941,1404 402,401 878,723 1404,941 508,211 1068,327 1657,327 590,0 1150,-116 1658,-327 526,-218 1002,-540 1403,-941 296,-296 547,-629 745,-991 194,-356 340,-745 428,-1157l1 1c53,-251 279,-437 545,-430l85 3c69,0 -59,-2 87,-2 1140,0 2221,-314 3200,-882 1036,-601 1963,-1485 2733,-2584 733,-1046 1325,-2294 1731,-3678 391,-1334 607,-2796 607,-4328 0,-1532 -216,-2994 -607,-4328 -406,-1384 -998,-2632 -1731,-3678 -770,-1099 -1697,-1983 -2733,-2584 -979,-568 -2060,-882 -3200,-882 -106,0 -89,-1 -118,-1l-106 3c-251,16 -487,-145 -556,-396 -101,-361 -246,-702 -431,-1016 -185,-317 -414,-612 -680,-878 -401,-401 -877,-723 -1403,-941 -508,-211 -1068,-327 -1658,-327 -589,0 -1149,116 -1657,327 -526,218 -1002,540 -1404,941 -401,401 -723,878 -941,1404 -210,508 -327,1067 -327,1657 0,95 2,170 5,227 4,75 9,150 17,225l-1 0c25,237 -111,471 -345,560 -667,257 -1304,595 -1901,1005 -600,412 -1156,895 -1656,1440 -641,697 -1190,1490 -1624,2356z"/>
<path class="fil2" d="M47645 92035c0,-2454 1990,-4444 4445,-4444 1026,0 1971,348 2723,932 1060,-1279 2398,-2049 3832,-2049 1618,0 3115,981 4227,2568 1207,1723 1954,4130 1954,6814 0,2684 -747,5091 -1954,6814 -1112,1587 -2609,2568 -4227,2568 -1431,0 -2767,-767 -3826,-2042 -753,587 -1700,937 -2729,937 -2455,0 -4445,-1989 -4445,-4444 0,-1629 877,-3053 2185,-3827 -1308,-774 -2185,-2198 -2185,-3827zm3154 0c0,-525 138,-1000 362,-1344 223,-345 532,-557 873,-557 340,0 649,212 873,557 223,344 361,819 361,1344 0,525 -138,1000 -361,1344 -224,345 -533,557 -873,557 -341,0 -650,-212 -873,-557 -224,-344 -362,-819 -362,-1344zm8174 -205c141,-478 643,-752 1121,-611 479,140 752,642 612,1121 -157,533 -276,1090 -356,1661 -79,564 -120,1152 -120,1753 0,665 49,1310 143,1921 96,617 240,1223 431,1806 154,475 -106,985 -580,1139 -475,154 -985,-106 -1139,-580 -216,-659 -382,-1361 -494,-2089 -113,-733 -171,-1470 -171,-2197 0,-665 47,-1336 140,-2001 93,-659 231,-1303 413,-1923zm-4807 3051c0,-170 69,-324 181,-436 111,-112 266,-181 436,-181 170,0 324,69 436,181l1 0c111,112 180,266 180,436 0,171 -69,325 -180,437 -112,112 -266,181 -437,181 -170,0 -324,-69 -436,-181l0 -1c-112,-112 -181,-266 -181,-436zm0 2016c0,-170 69,-324 181,-436l0 0c112,-112 266,-181 436,-181 170,0 324,69 436,181l1 0c111,112 180,266 180,436 0,170 -69,324 -180,436l-1 0c-112,112 -266,181 -436,181 -170,0 -324,-69 -436,-181l0 0c-112,-112 -181,-266 -181,-436zm-3367 2792c0,-525 138,-1000 362,-1344 223,-345 532,-557 873,-557 340,0 649,212 873,557 223,344 361,819 361,1344 0,525 -138,1000 -361,1345 -224,344 -533,556 -873,556 -341,0 -650,-212 -873,-556 -224,-345 -362,-820 -362,-1345zm1311 -16115c-386,385 -631,911 -654,1494 255,-21 513,-32 774,-32 474,0 961,41 1458,119 246,38 488,86 725,143 446,-330 917,-609 1410,-833 -110,-340 -300,-644 -546,-891 -405,-405 -965,-656 -1584,-656 -618,0 -1178,251 -1583,656zm-647 23071c-6,65 -9,131 -9,198 0,618 251,1178 656,1583 405,405 965,656 1583,656 619,0 1179,-251 1584,-656 307,-307 526,-704 613,-1149 -518,-229 -1011,-518 -1477,-862 -237,56 -479,104 -725,142 -497,78 -984,119 -1458,119 -258,0 -514,-11 -767,-31z"/>
</g>
<g>
<path class="fil2" d="M99091 41992c849,213 1661,516 2423,899 963,482 1840,1088 2607,1793 405,373 781,775 1124,1202 258,320 497,657 716,1008 80,-14 160,-25 239,-34 213,-26 428,-39 643,-39 730,0 1429,147 2069,412 666,276 1264,678 1761,1175 497,497 899,1094 1175,1760 265,640 411,1339 411,2070 0,730 -146,1429 -411,2069 -276,666 -678,1263 -1175,1760 -352,352 -757,658 -1203,906 -281,156 -576,288 -884,393 22,124 42,250 58,376 39,309 59,610 59,903 0,1335 -366,2599 -1030,3744 -680,1171 -1673,2215 -2903,3077 -1143,801 -2498,1446 -3992,1884 -1437,421 -3002,654 -4634,654 -1632,0 -3197,-233 -4634,-654 -1494,-438 -2849,-1083 -3992,-1884 -1230,-862 -2223,-1906 -2903,-3077 -664,-1145 -1030,-2409 -1030,-3744 0,-293 18,-584 54,-873 13,-107 29,-214 47,-321 -355,-101 -696,-236 -1018,-403 -499,-259 -951,-591 -1341,-981 -497,-497 -899,-1094 -1175,-1760 -265,-640 -411,-1339 -411,-2069 0,-731 146,-1430 411,-2070 276,-666 678,-1263 1175,-1760 497,-497 1094,-899 1761,-1175 640,-265 1339,-412 2069,-412 262,0 524,20 785,58 120,17 238,38 355,63 221,-358 461,-699 719,-1023 350,-439 735,-852 1151,-1235 623,-573 1253,-1044 1931,-1441 675,-396 1392,-715 2191,-984 776,-291 1433,-722 1927,-1244 483,-512 808,-1110 929,-1746 55,-294 338,-488 632,-433 104,19 196,67 268,134 530,487 886,965 1099,1429 77,167 134,331 175,492 43,-31 85,-62 127,-95 292,-224 581,-480 876,-776 211,-213 555,-214 767,-2 111,110 165,258 159,403 4,457 -24,855 -81,1204 -21,128 -47,250 -76,367zm1939 1867c-848,-425 -1773,-744 -2751,-936l0 -1c-41,-8 -82,-21 -121,-39 -272,-124 -392,-446 -268,-718 63,-136 115,-289 156,-462 -316,237 -637,443 -973,625l-1 -1c-107,57 -234,79 -363,54 -293,-59 -483,-344 -424,-637 55,-274 22,-572 -126,-894 -63,-137 -146,-278 -251,-424 -217,481 -522,929 -902,1332 -605,640 -1402,1165 -2336,1515l-37 14c-730,246 -1380,534 -1987,890 -605,355 -1174,782 -1744,1306 -375,345 -722,716 -1036,1111 -307,385 -581,787 -818,1202 -111,242 -386,371 -648,293 -200,-60 -404,-106 -611,-136 -202,-29 -413,-44 -632,-44 -590,0 -1149,116 -1657,326 -526,218 -1002,540 -1404,942 -401,401 -723,877 -941,1403 -211,508 -327,1068 -327,1658 0,589 116,1149 327,1657 218,526 540,1002 941,1404 315,315 676,580 1069,784 387,201 808,345 1253,421l0 1 38 8c291,71 469,365 397,656 -59,237 -104,483 -136,735 -30,243 -45,490 -45,741 0,1140 314,2220 882,3200 601,1036 1485,1963 2584,2733 1046,733 2294,1325 3678,1731 1334,391 2796,607 4328,607 1532,0 2994,-216 4328,-607 1384,-406 2632,-998 3678,-1731 1099,-770 1983,-1697 2584,-2733 568,-980 882,-2060 882,-3200 0,-269 -16,-525 -47,-767 -31,-245 -78,-490 -140,-733l-11 -39c-66,-293 116,-584 408,-650 397,-92 772,-239 1118,-430 350,-195 673,-440 960,-727 401,-402 723,-878 941,-1404 211,-508 327,-1068 327,-1657 0,-590 -116,-1150 -327,-1658 -218,-526 -540,-1002 -941,-1403 -401,-402 -878,-724 -1404,-942 -508,-210 -1067,-326 -1657,-326 -178,0 -350,10 -516,29 -179,22 -347,52 -505,90 -228,55 -474,-44 -597,-257 -240,-418 -516,-821 -825,-1205 -308,-384 -647,-746 -1014,-1083 -697,-641 -1490,-1190 -2356,-1624z"/>
<path class="fil2" d="M99965 50188c525,0 1000,213 1344,557 345,344 557,820 557,1345 0,525 -212,1000 -557,1344 -344,344 -819,557 -1344,557 -525,0 -1000,-213 -1344,-557 -345,-344 -557,-819 -557,-1344 0,-525 212,-1001 557,-1345 344,-344 819,-557 1344,-557zm0 -2543c2455,0 4444,1990 4444,4445 0,1026 -348,1971 -932,2723 871,722 1506,1573 1822,2495 -1117,689 -2354,1245 -3669,1655 -1726,538 -3585,821 -5486,821 -1750,0 -3468,-241 -5082,-701 -1468,-419 -2844,-1016 -4074,-1774 316,-920 948,-1769 1816,-2490 -587,-753 -937,-1700 -937,-2729 0,-2455 1989,-4445 4444,-4445 1629,0 3053,877 3827,2184 774,-1307 2198,-2184 3827,-2184zm5508 11649c-223,1367 -1143,2616 -2515,3578 -1723,1207 -4130,1954 -6814,1954 -2684,0 -5091,-747 -6814,-1954 -1373,-962 -2292,-2212 -2515,-3579 1170,639 2432,1153 3752,1529 1776,507 3663,773 5577,773 2077,0 4120,-313 6023,-907 1161,-361 2271,-829 3306,-1394zm-8354 -5044c170,0 324,69 436,181 112,111 181,266 181,436 0,170 -69,324 -181,436l0 1c-112,111 -266,180 -436,180 -171,0 -325,-69 -437,-180 -111,-112 -181,-266 -181,-437 0,-170 70,-324 181,-436l1 0c112,-112 266,-181 436,-181zm-2016 0c170,0 324,69 436,181l0 0c112,112 181,266 181,436 0,170 -69,324 -181,436l0 1c-112,111 -266,180 -436,180 -170,0 -324,-69 -436,-180l0 -1c-112,-112 -181,-266 -181,-436 0,-170 69,-324 181,-436l0 0c112,-112 266,-181 436,-181zm-2792 -4062c525,0 1000,213 1344,557 345,344 557,820 557,1345 0,525 -212,1000 -557,1344 -344,344 -819,557 -1344,557 -525,0 -1000,-213 -1345,-557 -344,-344 -556,-819 -556,-1344 0,-525 212,-1001 556,-1345 345,-344 820,-557 1345,-557zm-6729 -149c-138,-27 -280,-41 -425,-41 -618,0 -1178,251 -1583,656 -405,405 -656,965 -656,1584 0,618 251,1178 656,1583 405,405 965,656 1583,656 140,0 276,-13 409,-38l19 -26c-56,-237 -104,-479 -142,-725 -78,-497 -119,-985 -119,-1458 0,-753 89,-1486 258,-2191zm22844 615c-405,-405 -965,-656 -1583,-656 -49,0 -97,2 -145,5 174,716 266,1461 266,2227 0,473 -41,961 -119,1458 -38,246 -86,488 -142,725 15,21 30,41 45,62 31,1 63,2 95,2 618,0 1178,-251 1583,-656 405,-405 656,-965 656,-1583 0,-619 -251,-1179 -656,-1584z"/>
</g>
<g>
<path class="fil2" d="M136084 59673c456,747 822,1532 1097,2340 347,1019 548,2066 600,3106 27,545 14,1090 -40,1631 -40,406 -104,809 -191,1206 69,48 136,97 201,148 172,132 336,275 491,428 520,512 916,1107 1186,1745 282,664 425,1369 431,2072 6,703 -127,1410 -397,2079 -260,642 -646,1243 -1158,1764 -512,520 -1107,916 -1745,1186 -664,281 -1370,425 -2072,431 -500,4 -1003,-63 -1496,-199 -310,-86 -614,-200 -907,-342 -73,108 -149,214 -228,319l-11 14c-187,246 -384,474 -590,683 -936,952 -2084,1596 -3361,1946 -1305,358 -2745,406 -4226,157 -1378,-230 -2795,-721 -4167,-1457 -1320,-707 -2599,-1640 -3762,-2784 -1163,-1144 -2116,-2408 -2844,-3716 -758,-1361 -1271,-2770 -1524,-4144 -273,-1477 -248,-2917 89,-4228 330,-1282 955,-2440 1891,-3392 201,-204 422,-401 663,-591l-2 -1c89,-70 179,-138 272,-204 -184,-321 -332,-657 -445,-1002 -175,-536 -265,-1090 -269,-1642 -6,-703 127,-1411 397,-2079 260,-642 646,-1243 1158,-1764 512,-520 1107,-916 1745,-1186 664,-281 1369,-425 2072,-431 703,-5 1411,127 2079,397 643,260 1244,646 1764,1159 190,186 365,387 524,598 75,98 145,198 212,299 401,-97 808,-170 1216,-219 553,-66 1112,-90 1673,-71 864,30 1656,142 2419,336 752,192 1473,465 2203,819l0 -1c765,343 1541,500 2262,473 704,-25 1355,-224 1887,-592 246,-171 584,-111 755,135 60,87 92,185 96,283 37,718 -44,1309 -218,1790 -62,172 -136,329 -220,473 52,8 104,15 157,21 365,46 750,65 1169,61 299,-3 544,237 548,537 1,157 -64,299 -170,399 -318,328 -616,593 -903,801 -104,77 -208,146 -311,209zm73 2690c-307,-898 -742,-1773 -1305,-2596l1 -1c-23,-34 -43,-72 -59,-113 -107,-279 33,-592 313,-699 140,-54 284,-126 435,-221 -391,-52 -764,-130 -1131,-237l0 -1c-117,-34 -223,-107 -296,-216 -168,-247 -104,-584 144,-752 231,-156 416,-392 537,-725 51,-142 91,-301 118,-479 -492,191 -1025,297 -1579,317 -889,33 -1833,-155 -2748,-566l0 -1 -15 -8c-667,-324 -1326,-574 -2014,-749 -684,-175 -1400,-276 -2185,-302 -505,-17 -1008,4 -1504,64 -483,58 -957,151 -1419,280 -248,91 -532,-11 -663,-250 -102,-186 -216,-364 -343,-532 -125,-165 -266,-326 -422,-479 -420,-414 -900,-724 -1410,-930 -528,-214 -1093,-318 -1661,-314 -567,5 -1131,119 -1655,341 -507,214 -982,532 -1396,952 -413,420 -723,901 -929,1410 -214,528 -318,1093 -314,1661 4,447 75,890 213,1312 134,411 330,804 589,1166 12,16 24,33 34,50 156,256 76,590 -180,746 -215,131 -424,275 -624,433l-1 -1c-188,148 -375,316 -562,506 -799,812 -1333,1803 -1616,2900 -298,1159 -318,2440 -75,3760 232,1256 706,2553 1408,3813 676,1215 1567,2394 2659,3469 1092,1074 2286,1946 3511,2603 1271,682 2576,1135 3835,1346 1324,222 2604,181 3759,-136 1092,-300 2074,-850 2873,-1662 187,-190 355,-383 502,-577l9 -12c156,-205 299,-423 430,-651l12 -20c157,-255 491,-334 746,-177 349,214 720,374 1101,480 387,108 791,160 1198,156 567,-4 1131,-118 1655,-340 507,-214 982,-532 1396,-952 413,-421 723,-901 929,-1410 214,-528 318,-1094 314,-1661 -5,-568 -118,-1132 -340,-1656 -215,-506 -532,-981 -953,-1395 -128,-126 -260,-241 -394,-345 -136,-105 -273,-199 -408,-281 -215,-115 -332,-366 -268,-613 120,-467 205,-944 253,-1426 48,-484 60,-975 35,-1469 -47,-946 -228,-1893 -540,-2810z"/>
<path class="fil2" d="M132742 64315c1749,1722 1772,4536 50,6285 -719,732 -1630,1161 -2574,1287 168,1653 -222,3147 -1227,4169 -1135,1153 -2885,1532 -4795,1212 -2075,-348 -4315,-1505 -6228,-3387 -1913,-1882 -3105,-4103 -3486,-6172 -351,-1906 -1,-3661 1134,-4814 1004,-1020 2488,-1434 4139,-1295 110,-949 525,-1869 1246,-2603 1722,-1749 4536,-1772 6285,-50 1161,1142 1562,2766 1196,4241 1469,-389 3099,-15 4260,1127zm-1784 1813c375,368 564,853 568,1340 4,486 -178,974 -546,1349 -368,374 -853,563 -1340,567 -487,4 -975,-178 -1349,-546 -374,-368 -564,-853 -568,-1340 -3,-486 178,-975 546,-1349 369,-374 854,-564 1340,-567 487,-4 975,177 1349,546zm-8166 2850c569,560 1076,1139 1507,1708 452,597 820,1185 1086,1730 287,588 461,1144 504,1629 55,626 -97,1156 -482,1548 -385,391 -913,551 -1540,506 -486,-35 -1044,-200 -1637,-478 -549,-257 -1143,-615 -1747,-1057 -576,-422 -1163,-920 -1731,-1479 -569,-560 -1076,-1139 -1507,-1708 -452,-597 -820,-1185 -1086,-1729 -287,-589 -461,-1144 -504,-1630 -55,-625 97,-1156 482,-1547 385,-392 913,-552 1540,-507 486,35 1044,200 1637,478 549,257 1143,615 1747,1057 576,422 1163,920 1731,1479zm65 2800c-374,-494 -822,-1005 -1335,-1509 -512,-504 -1030,-945 -1530,-1311 -512,-375 -1003,-673 -1445,-880 -398,-186 -738,-294 -996,-313 -89,-6 -114,-35 -124,-25 -9,10 19,35 27,124 23,257 136,596 329,990 214,439 520,925 903,1431 374,494 823,1005 1335,1509 513,504 1031,945 1530,1311 513,375 1004,673 1446,880 398,186 738,294 995,313 90,6 115,35 124,25 10,-10 -18,-35 -26,-124 -23,-257 -137,-595 -329,-990 -215,-439 -520,-925 -904,-1431zm2635 -4153c121,119 183,277 184,435 1,158 -58,316 -177,438 -120,121 -277,182 -435,184l-1 0c-158,1 -316,-58 -437,-177 -122,-120 -183,-277 -184,-435 -2,-158 57,-317 177,-438 119,-121 276,-183 434,-184l1 0c158,-1 317,58 438,177zm-1437 -1414c121,119 182,277 184,435l0 0c1,159 -58,317 -177,438 -119,121 -277,183 -435,184l0 0c-158,1 -317,-58 -438,-177 -121,-119 -182,-277 -184,-435l0 0c-1,-158 58,-317 177,-438 119,-121 277,-182 435,-184l0 0c159,-1 317,58 438,177zm1448 -5452c374,368 564,853 567,1340 4,487 -177,975 -546,1349 -368,374 -853,564 -1340,568 -486,4 -974,-178 -1348,-546 -375,-369 -564,-854 -568,-1340 -4,-487 178,-975 546,-1349 368,-375 853,-564 1340,-568 486,-4 975,178 1349,546zm11179 11615c-4,-572 -228,-1144 -669,-1577 -36,-36 -73,-71 -112,-103 -380,641 -842,1245 -1386,1798 -332,337 -703,656 -1107,956 -200,148 -404,287 -611,417l-5 40c26,28 53,56 80,83 441,434 1016,648 1589,644 573,-5 1144,-228 1578,-669 434,-441 648,-1016 643,-1589zm-15847 -16456c-81,-117 -173,-228 -279,-332 -440,-434 -1015,-648 -1588,-643 -573,5 -1144,228 -1578,669 -434,441 -648,1015 -643,1588 4,573 228,1144 668,1578 105,103 216,193 333,271 126,-207 261,-412 405,-613 293,-409 606,-785 938,-1122 535,-544 1120,-1008 1744,-1396z"/>
</g>
<g>
<path class="fil2" d="M55625 132004c-450,-751 -809,-1540 -1078,-2349 -339,-1022 -532,-2071 -575,-3111 -17,-413 -11,-829 19,-1245 20,-281 50,-559 92,-834 -133,-79 -264,-164 -390,-256 -239,-172 -463,-361 -669,-567 -516,-516 -907,-1114 -1172,-1754 -276,-666 -414,-1373 -414,-2076 0,-703 138,-1409 414,-2076 265,-640 655,-1238 1172,-1754 516,-516 1114,-907 1754,-1172 666,-276 1373,-414 2076,-414 541,0 1086,82 1612,246 320,99 633,230 935,391 114,-206 238,-407 373,-602 248,-360 524,-694 829,-1000 944,-944 2097,-1578 3377,-1918 1308,-348 2748,-384 4227,-124 1376,242 2789,744 4156,1491 1314,718 2585,1661 3739,2815 1153,1153 2096,2425 2814,3739 747,1366 1249,2779 1491,4155 260,1479 224,2919 -123,4228 -340,1279 -975,2432 -1919,3376 -298,299 -626,570 -980,816 -181,125 -365,241 -554,349 197,327 356,673 478,1030 197,573 295,1168 295,1758 0,703 -138,1410 -414,2076 -265,640 -656,1238 -1172,1754 -516,517 -1114,907 -1754,1173 -667,276 -1373,414 -2076,413 -703,0 -1410,-138 -2076,-413 -640,-266 -1238,-656 -1754,-1173 -240,-240 -455,-501 -646,-780 -110,-161 -210,-326 -300,-495 -285,45 -572,79 -861,101 -432,33 -866,41 -1298,23 -845,-36 -1624,-148 -2384,-346 -758,-198 -1491,-480 -2246,-854 -754,-343 -1523,-503 -2242,-483 -704,20 -1356,213 -1891,578 -247,169 -584,106 -754,-142 -59,-87 -90,-185 -94,-283 -30,-719 56,-1309 233,-1789 64,-171 139,-328 225,-471 -52,-8 -105,-15 -157,-22 -366,-49 -751,-71 -1169,-71 -299,1 -543,-241 -544,-541 0,-157 66,-299 173,-398 321,-325 621,-587 909,-793 105,-76 210,-144 313,-206zm-51 -2692c299,901 728,1780 1284,2607l-1 1c23,35 43,73 58,114 104,280 -38,592 -318,696 -141,53 -286,124 -438,217 391,56 764,137 1131,247l-1 1c117,35 222,109 295,218 166,249 98,585 -150,751 -233,154 -420,389 -544,721 -52,141 -93,300 -122,477 493,-187 1027,-288 1580,-304 881,-25 1815,167 2723,580l36 16c690,343 1354,599 2035,776 679,177 1383,278 2156,310 393,17 784,10 1169,-19 381,-29 759,-81 1133,-155 249,-57 511,68 618,311 107,246 237,483 390,706 147,217 320,426 519,624 417,417 895,731 1403,941 526,218 1090,327 1658,327 568,0 1132,-109 1658,-327 508,-210 986,-524 1403,-941 417,-417 731,-895 941,-1402 218,-527 327,-1091 327,-1659 0,-480 -77,-956 -232,-1407 -150,-439 -376,-861 -677,-1247 -24,-33 -46,-68 -64,-107 -126,-272 -8,-595 264,-721 341,-157 661,-338 958,-544 289,-201 567,-432 830,-696 806,-806 1349,-1792 1639,-2887 308,-1157 338,-2437 106,-3759 -222,-1258 -685,-2559 -1377,-3825 -667,-1219 -1548,-2406 -2631,-3489 -1084,-1084 -2270,-1965 -3490,-2632 -1266,-692 -2566,-1155 -3825,-1376 -1321,-233 -2602,-202 -3759,105 -1095,291 -2081,833 -2887,1639 -267,267 -502,550 -706,847 -211,306 -394,633 -551,977l-1 0c-13,30 -29,58 -48,86 -171,245 -509,306 -754,135 -362,-250 -756,-439 -1167,-567 -417,-130 -853,-195 -1291,-195 -568,0 -1132,109 -1659,327 -507,211 -985,524 -1402,941 -417,417 -731,895 -941,1403 -218,526 -327,1091 -327,1658 0,568 109,1132 327,1658 210,508 524,986 941,1403 173,173 351,325 533,456 185,134 378,250 576,350 225,100 361,345 313,597 -69,366 -117,733 -143,1101 -27,368 -32,743 -16,1121 40,947 213,1895 518,2814z"/>
<g>
<path class="fil2" d="M70265 136206l52 -27c18,-9 36,-19 54,-29 21,-10 41,-22 62,-33l-168 89zm321 -174c22,-12 44,-25 67,-38l44 -25c22,-13 43,-26 65,-39l42 -25c23,-14 46,-28 69,-42l35 -22c25,-15 50,-31 75,-47l30 -19c27,-17 54,-35 81,-52l24 -16c27,-18 55,-36 82,-55l25 -16c27,-19 54,-37 81,-56l17 -12c29,-20 58,-41 87,-61l17 -12c29,-21 57,-42 86,-63l18 -14c30,-21 59,-43 89,-65l12 -10c29,-22 59,-45 88,-68l13 -10c30,-23 60,-46 89,-70l8 -6c30,-24 60,-49 91,-74l11 -9c30,-25 59,-50 89,-75l10 -8c30,-26 60,-51 90,-77l7 -7c30,-26 60,-52 89,-79l5 -4c30,-27 61,-55 92,-83l4 -4c30,-28 59,-55 88,-83l11 -9c28,-28 57,-55 86,-83l6 -7c30,-29 60,-58 90,-88 335,-335 651,-708 947,-1114l9 -13c75,59 147,122 216,191 438,437 656,1010 656,1583 0,573 -218,1146 -656,1584 -437,437 -1010,656 -1583,656 -573,0 -1146,-219 -1583,-656 -153,-153 -280,-323 -379,-504 13,-6 26,-13 39,-20l321 -174zm-11582 -8644c-1735,-1735 -1735,-4549 0,-6285 726,-726 1641,-1148 2586,-1266 -155,-1654 246,-3145 1260,-4159 1144,-1144 2897,-1509 4805,-1173 2072,364 4302,1539 6200,3436 1898,1898 3072,4129 3437,6201 335,1908 -29,3660 -1174,4804 -1011,1012 -2499,1414 -4149,1262 -117,948 -540,1865 -1267,2592 -1736,1736 -4550,1736 -6285,0 -1152,-1152 -1539,-2779 -1162,-4250 -1471,377 -3098,-10 -4251,-1162zm5226 -9050c-468,170 -985,-72 -1155,-540 -170,-468 72,-985 540,-1155 1390,-503 2980,-479 4543,2 1518,468 3019,1367 4283,2631 1169,1170 2032,2548 2525,3960 505,1446 623,2932 290,4276 -120,484 -610,780 -1095,660 -485,-120 -780,-611 -660,-1095 247,-998 150,-2127 -241,-3246 -403,-1156 -1120,-2295 -2099,-3274 -1057,-1057 -2296,-1804 -3538,-2187 -1197,-368 -2386,-397 -3393,-32zm-3427 7252c-372,-371 -557,-858 -557,-1344 0,-487 185,-974 557,-1345 371,-371 857,-557 1344,-557 487,0 973,186 1345,557 371,371 556,858 556,1345 0,486 -185,973 -556,1344 -372,371 -858,557 -1345,557 -487,0 -973,-186 -1344,-557zm5412 5412c-371,-371 -557,-857 -557,-1344 0,-487 185,-973 557,-1345 371,-371 858,-556 1344,-556 487,0 974,185 1345,556 371,372 557,858 557,1345 0,487 -186,973 -557,1344 -372,372 -858,557 -1345,557 -486,0 -973,-185 -1344,-557zm897 -4846c-120,-120 -180,-278 -180,-436l0 -1c0,-158 60,-316 180,-436 121,-120 278,-180 437,-180l0 0c158,0 316,60 436,180 121,120 181,278 181,436l0 1c0,158 -60,316 -181,436 -120,120 -278,180 -436,180l0 0c-159,0 -316,-60 -437,-180zm-1425 -1425c-120,-121 -181,-279 -181,-437 0,-158 61,-316 181,-436 121,-120 278,-181 436,-181l1 0c158,0 316,61 436,181 121,120 181,278 181,436 0,158 -60,316 -181,437 -120,120 -278,180 -436,180l-1 0c-158,0 -316,-60 -436,-180zm-11072 -4919c0,573 218,1146 655,1583 86,86 177,163 272,232 442,-880 1027,-1701 1755,-2429 335,-335 708,-651 1115,-947l27 -20 -2 -2c-437,-437 -1010,-656 -1583,-656 -573,0 -1146,219 -1584,656 -437,437 -655,1010 -655,1583z"/>
</g>
</g>
<g>
<path class="fil2" d="M59996 55625c751,-450 1540,-809 2349,-1078 1022,-339 2071,-532 3112,-575 439,-19 879,-11 1317,24 304,24 606,60 905,109 74,-119 153,-237 238,-352 162,-221 342,-432 540,-630 516,-517 1114,-907 1754,-1172 666,-276 1373,-414 2076,-414 703,0 1409,138 2076,414 640,265 1238,655 1754,1172 516,516 907,1114 1172,1754 276,666 414,1373 414,2076 0,535 -79,1070 -237,1587 -97,317 -224,627 -381,927 187,108 369,224 546,348 334,236 648,498 938,788 944,944 1578,2097 1918,3377 348,1308 384,2748 124,4227 -242,1376 -744,2789 -1491,4156 -718,1313 -1661,2585 -2815,3739 -1153,1153 -2425,2096 -3739,2814 -1366,747 -2779,1249 -4155,1491 -1479,260 -2919,224 -4228,-123 -1279,-340 -2432,-975 -3376,-1919 -283,-283 -541,-590 -773,-917 -114,-162 -222,-328 -324,-500 -327,194 -670,351 -1023,470 -564,190 -1151,285 -1734,285 -703,0 -1410,-138 -2076,-414 -640,-265 -1238,-656 -1754,-1172 -517,-516 -907,-1114 -1173,-1754 -276,-667 -413,-1373 -413,-2076 0,-703 138,-1410 414,-2076 265,-640 655,-1238 1172,-1754 227,-227 477,-434 744,-620 149,-103 301,-198 456,-284 -54,-309 -94,-620 -120,-931 -37,-454 -47,-911 -28,-1369 55,-1306 530,-2694 969,-3980 378,-1106 728,-2131 715,-2850 -7,-367 -60,-719 -159,-1046 -96,-319 -236,-617 -420,-887 -169,-247 -106,-584 142,-754 87,-59 185,-90 283,-94 719,-30 1309,55 1789,233 171,64 328,139 471,224 8,-52 16,-104 23,-157 48,-365 70,-750 70,-1168 -1,-299 241,-543 541,-544 157,0 299,66 398,173 325,321 587,621 793,909 76,105 145,210 206,313zm2692 -51c-901,299 -1780,727 -2607,1284l-1 -1c-35,23 -73,43 -114,58 -280,104 -592,-38 -696,-318 -53,-141 -124,-286 -217,-438 -55,391 -137,763 -246,1130l-2 -1c-34,117 -109,222 -218,295 -248,166 -585,99 -751,-150 -154,-232 -388,-420 -721,-543 -141,-52 -300,-93 -478,-122 36,96 70,194 100,293 129,427 198,878 206,1341 17,905 -364,2019 -775,3222 -413,1210 -860,2517 -908,3674 -18,414 -9,826 25,1234 34,409 93,812 178,1207 51,243 -70,498 -305,605 -233,106 -458,233 -672,382 -203,141 -402,307 -594,500 -417,417 -731,895 -941,1403 -218,526 -327,1090 -327,1658 0,568 109,1132 327,1658 210,508 524,986 941,1403 417,417 895,731 1402,941 527,218 1091,327 1659,327 471,0 940,-75 1386,-226 437,-147 856,-366 1236,-656l1 0c28,-21 58,-40 91,-56 268,-131 592,-19 723,249 150,308 325,606 527,890 194,273 413,533 659,779 806,806 1792,1348 2887,1639 1157,308 2437,338 3759,106 1258,-222 2559,-685 3825,-1377 1220,-667 2406,-1548 3489,-2631 1084,-1084 1965,-2270 2632,-3490 692,-1266 1155,-2567 1376,-3825 233,-1321 203,-2602 -105,-3759 -291,-1095 -833,-2081 -1639,-2887 -250,-250 -516,-473 -797,-670 -285,-201 -588,-378 -905,-529 -26,-13 -52,-27 -77,-44 -248,-168 -312,-506 -144,-754 243,-359 426,-748 550,-1153 126,-412 189,-841 189,-1269 0,-568 -109,-1132 -327,-1659 -210,-507 -524,-985 -941,-1402 -417,-417 -895,-731 -1403,-941 -526,-218 -1091,-327 -1658,-327 -568,0 -1132,109 -1658,327 -508,210 -986,524 -1403,941 -161,161 -306,330 -435,506 -132,179 -248,367 -349,562l0 -1c-109,210 -347,331 -590,281 -384,-78 -772,-132 -1162,-163 -392,-31 -789,-38 -1188,-21 -947,40 -1895,213 -2814,518z"/>
<path class="fil2" d="M64612 59004c1735,-1735 4549,-1735 6285,0 726,726 1148,1640 1266,2586 1654,-155 3145,246 4159,1260 1144,1144 1509,2897 1173,4805 -364,2072 -1539,4302 -3436,6200 -1898,1898 -4129,3072 -6201,3436 -1908,336 -3660,-28 -4804,-1173 -1012,-1011 -1414,-2499 -1262,-4149 -947,-117 -1865,-540 -2592,-1267 -1736,-1736 -1736,-4550 0,-6285 1152,-1152 2779,-1539 4250,-1162 -377,-1472 10,-3099 1162,-4251zm1798 1798c371,-371 858,-556 1344,-556 487,0 974,185 1345,556 371,372 557,858 557,1345 0,487 -186,973 -557,1344 -371,372 -858,557 -1345,557 -486,0 -973,-185 -1344,-557 -371,-371 -557,-857 -557,-1344 0,-487 186,-973 557,-1345zm7000 3207c-3,-147 30,-298 104,-438 32,-62 71,-119 116,-170 204,-272 553,-416 908,-342 222,46 408,170 535,338 26,18 52,36 78,56 145,105 270,211 376,316 1038,1038 1248,2647 748,4409 -450,1586 -1489,3328 -3012,4850 -1522,1523 -3264,2562 -4850,3012 -1762,500 -3371,290 -4409,-748 -96,-96 -191,-206 -285,-331 -86,-113 -165,-235 -239,-365 -228,-403 -113,-906 252,-1173 111,-105 251,-183 411,-221 867,-203 1826,-630 2800,-1234 994,-615 1994,-1411 2922,-2338 960,-961 1775,-1992 2395,-3011 548,-901 944,-1792 1150,-2610zm-7297 10429c504,109 1125,59 1804,-133 1302,-369 2760,-1251 4066,-2557 1306,-1306 2187,-2764 2557,-4065 192,-679 242,-1300 133,-1805 -237,554 -530,1118 -873,1682 -700,1150 -1605,2299 -2655,3350 -1022,1022 -2133,1904 -3246,2594 -597,369 -1196,683 -1786,934zm-269 -7326c120,-120 278,-180 436,-180l1 0c158,0 316,60 436,180 120,121 180,278 180,437l0 0c0,158 -60,316 -180,436 -120,120 -278,181 -436,181l-1 0c-158,0 -316,-61 -436,-181 -120,-120 -180,-278 -180,-436l0 0c0,-159 60,-316 180,-437zm1425 -1425c121,-120 279,-181 437,-181 158,0 316,61 436,181 120,120 181,278 181,436l0 1c0,158 -61,316 -181,436 -120,121 -278,181 -436,181 -158,0 -316,-60 -437,-181 -120,-120 -180,-278 -180,-436l0 -1c0,-158 60,-316 180,-436zm-6271 528c371,-372 857,-557 1344,-557 487,0 973,185 1345,557 371,371 557,858 557,1344 0,487 -186,973 -557,1345 -372,371 -858,557 -1345,557 -487,0 -973,-186 -1344,-557 -372,-372 -557,-858 -557,-1345 0,-486 185,-973 557,-1344zm11289 -11502c-573,0 -1146,219 -1583,656 -14,14 -27,27 -40,41l-1 2 -19 20 -1 0c-19,21 -38,42 -56,63l-1 1 -17 20 -2 3 -16 20 -2 1c-11,14 -23,29 -34,43l-1 1 -15 20 -1 2c833,434 1610,997 2304,1691 335,335 651,708 947,1115 35,47 69,95 102,143l19 -19c437,-437 656,-1010 656,-1583 0,-573 -219,-1146 -656,-1584 -437,-437 -1010,-656 -1583,-656zm-16452 15633l-16 9 -10 6 -10 6 -11 7 -15 9 -9 6 -18 11 -4 3 -18 12 -7 4 -14 10 -10 7 -14 9 -8 5 -17 12 -7 5 -17 13 -3 2 -18 14 -6 4 -17 13 -6 4 -18 15 -1 0 -18 15 -7 6 -17 14 -3 2 -20 17 0 0c-14,13 -28,25 -42,37l-2 2 -19 18 -2 1 -18 17 -3 3 -19 18 -2 2 -20 20c-437,437 -656,1010 -656,1583 0,573 219,1146 656,1583 438,437 1011,656 1584,656 573,0 1146,-219 1583,-656 13,-13 26,-26 38,-39l4 -4 16 -17 4 -4 17 -19 1 -1c6,-6 12,-13 18,-20l1 -1 18 -21 1 -1 16 -19 4 -5 12 -14 7 -9 13 -17 2 -2 14 -18 6 -7 11 -15 2 -2c-42,-29 -84,-59 -126,-89 -406,-296 -779,-612 -1114,-947 -680,-680 -1235,-1440 -1665,-2253l-1 0z"/>
</g>
<g>
<path class="fil2" d="M92909 150008c-849,-213 -1661,-516 -2423,-899 -963,-482 -1840,-1088 -2607,-1793 -405,-373 -781,-775 -1124,-1202 -257,-320 -497,-657 -716,-1008 -80,14 -160,25 -239,34 -213,26 -428,39 -643,39 -730,0 -1429,-147 -2069,-412 -666,-276 -1264,-678 -1761,-1175 -980,-980 -1586,-2334 -1586,-3830 0,-730 146,-1429 411,-2069 276,-666 678,-1263 1175,-1760 352,-352 757,-658 1203,-906 281,-156 576,-288 884,-393 -22,-124 -42,-250 -58,-377 -39,-308 -59,-609 -59,-902 0,-1335 366,-2599 1030,-3744 680,-1171 1673,-2215 2903,-3077 1143,-801 2498,-1446 3992,-1884 1437,-421 3003,-654 4634,-654 1632,0 3197,233 4634,654 1494,438 2849,1083 3992,1884 1230,862 2223,1906 2903,3077 664,1145 1031,2409 1031,3744 0,293 -19,584 -54,872 -14,108 -29,215 -48,322 355,101 696,236 1018,403 499,259 951,591 1341,981 497,497 899,1094 1175,1760 265,640 411,1339 411,2069 0,731 -146,1430 -411,2070 -276,666 -678,1263 -1175,1760 -497,497 -1094,899 -1761,1175 -640,265 -1339,412 -2069,412 -262,0 -524,-20 -785,-58 -120,-17 -238,-38 -354,-63 -222,358 -462,699 -720,1023 -350,439 -735,852 -1151,1235 -636,585 -1280,1061 -1960,1457 -671,391 -1376,702 -2144,962l0 1c-785,292 -1449,725 -1944,1249 -484,512 -809,1110 -929,1746 -56,294 -339,488 -633,433 -104,-19 -195,-67 -268,-134 -529,-487 -886,-965 -1099,-1429 -77,-166 -134,-330 -175,-492 -43,31 -85,63 -127,95 -292,224 -581,480 -876,776 -211,213 -555,214 -767,2 -111,-110 -164,-258 -159,-403 -4,-457 24,-855 81,-1204 21,-128 47,-250 76,-367zm-1939 -1867c848,425 1773,744 2751,936l0 1c41,8 82,21 121,39 272,124 392,446 268,718 -63,136 -114,289 -156,462 315,-237 636,-443 973,-624l0 1c107,-58 234,-80 363,-54 293,58 483,344 425,637 -55,273 -22,571 126,893 63,137 146,278 251,424 217,-481 522,-930 903,-1333 611,-646 1416,-1175 2356,-1524l1 1 16 -5c703,-237 1348,-521 1962,-878 609,-356 1190,-786 1768,-1318 376,-345 722,-716 1036,-1111 307,-385 581,-787 818,-1202 111,-242 386,-371 648,-293 200,60 404,106 611,136 202,29 413,44 632,44 590,0 1149,-116 1657,-326 526,-218 1003,-540 1404,-942 401,-401 723,-877 941,-1403 211,-508 327,-1068 327,-1658 0,-589 -116,-1149 -327,-1657 -218,-526 -540,-1002 -941,-1404 -315,-315 -675,-580 -1069,-784 -387,-201 -808,-345 -1253,-421l0 -1 -38 -8c-291,-71 -469,-365 -397,-656 59,-237 105,-483 136,-735 30,-243 45,-491 45,-741 0,-1140 -314,-2220 -882,-3200 -601,-1036 -1485,-1963 -2584,-2733 -1046,-733 -2293,-1325 -3678,-1731 -1334,-391 -2796,-607 -4328,-607 -1532,0 -2994,216 -4328,607 -1384,406 -2632,998 -3678,1731 -1099,770 -1983,1697 -2584,2733 -568,980 -882,2060 -882,3200 0,269 16,525 47,767 31,245 78,490 140,733l11 39c66,293 -116,584 -408,650 -397,92 -772,239 -1118,430 -350,195 -673,440 -960,727 -401,402 -723,878 -941,1404 -211,508 -327,1068 -327,1657 0,1196 485,2278 1268,3061 402,402 878,724 1404,942 508,210 1067,326 1657,326 178,0 350,-10 516,-29 179,-22 347,-52 505,-90 228,-55 474,44 597,257 240,418 516,821 825,1205 308,384 647,746 1014,1083 697,641 1490,1190 2356,1624z"/>
<path class="fil2" d="M92035 144355c-2454,0 -4444,-1990 -4444,-4445 0,-1026 348,-1971 932,-2723 -1279,-1060 -2049,-2398 -2049,-3832 0,-1618 981,-3115 2568,-4227 1723,-1207 4130,-1954 6814,-1954 2684,0 5091,747 6814,1954 1587,1112 2568,2609 2568,4227 0,1431 -767,2767 -2042,3826 587,753 937,1700 937,2729 0,2455 -1989,4445 -4444,4445 -1629,0 -3053,-877 -3827,-2184 -774,1307 -2198,2184 -3827,2184zm3821 -10517c-374,0 -736,-76 -1070,-214 -349,-145 -660,-353 -914,-608 -255,-255 -463,-565 -608,-914 -138,-334 -215,-696 -215,-1070 0,-375 77,-736 215,-1070 145,-350 353,-660 608,-915 254,-255 565,-463 914,-607 334,-139 696,-215 1070,-215 375,0 736,76 1070,215 350,144 660,352 915,607 255,255 462,565 607,915 138,334 215,695 215,1070 0,374 -77,736 -215,1070 -145,349 -352,659 -607,914 -255,255 -565,463 -915,608 -334,138 -695,214 -1070,214zm-975 3912c-170,0 -324,-69 -436,-181 -112,-111 -181,-266 -181,-436 0,-170 69,-324 181,-436l0 -1c112,-111 266,-180 436,-180 171,0 325,69 437,180 112,112 181,266 181,437 0,170 -69,324 -181,436l-1 0c-112,112 -266,181 -436,181zm2016 0c-170,0 -324,-69 -436,-181l0 0c-112,-112 -181,-266 -181,-436 0,-170 69,-324 181,-436l0 -1c112,-111 266,-180 436,-180 170,0 324,69 436,180l0 1c112,112 181,266 181,436 0,170 -69,324 -181,436l0 0c-112,112 -266,181 -436,181zm-4862 4062c-525,0 -1000,-213 -1344,-557 -345,-344 -557,-820 -557,-1345 0,-525 212,-1000 557,-1344 344,-344 819,-557 1344,-557 525,0 1000,213 1345,557 344,344 556,819 556,1344 0,525 -212,1001 -556,1345 -345,344 -820,557 -1345,557zm7654 0c-525,0 -1000,-213 -1344,-557 -344,-344 -557,-820 -557,-1345 0,-525 213,-1000 557,-1344 344,-344 819,-557 1344,-557 525,0 1000,213 1345,557 344,344 556,819 556,1344 0,525 -212,1001 -556,1345 -345,344 -820,557 -1345,557zm-4217 -9857c114,47 243,73 384,73 141,0 270,-26 384,-73 116,-48 225,-123 320,-219 96,-96 171,-204 219,-320 47,-114 73,-244 73,-384 0,-141 -26,-270 -73,-384 -48,-116 -123,-225 -219,-321 -95,-95 -204,-170 -320,-218 -114,-47 -243,-73 -384,-73 -141,0 -270,26 -384,73 -116,48 -225,123 -320,218 -96,96 -171,205 -219,321 -47,114 -73,243 -73,384 0,140 26,270 73,384 48,116 123,224 219,320 95,96 204,170 320,219zm-11898 9391c405,405 965,656 1583,656 49,0 97,-2 146,-5 -175,-716 -267,-1461 -267,-2227 0,-473 41,-961 119,-1458 38,-246 86,-488 143,-725 -16,-21 -31,-41 -46,-62 -31,-1 -63,-2 -95,-2 -618,0 -1178,251 -1583,656 -405,405 -656,965 -656,1583 0,619 251,1179 656,1584zm22844 615c138,27 280,41 425,41 618,0 1178,-251 1583,-656 405,-405 656,-965 656,-1584 0,-618 -251,-1178 -656,-1583 -405,-405 -965,-656 -1583,-656 -140,0 -276,13 -409,38l-19 26c56,237 104,479 142,725 78,497 119,985 119,1458 0,753 -89,1486 -258,2191z"/>
</g>
</g>
<g>
<circle class="fil0" cx="96123" cy="95877" r="6029"/>
<g>
<path class="fil3" d="M72166 101293l0 -52c166,-1067 209,-2321 1052,-3563l0 0c56,-73 114,-145 175,-215 870,-995 2102,-1493 3693,-1493 1574,0 2799,493 3678,1479 846,938 1271,2204 1271,3797 0,1540 -406,2785 -1214,3735 -863,1007 -2048,1512 -3562,1512 -2133,0 -3619,-796 -4463,-2389 -420,-794 -630,-1732 -630,-2811zm2118 -69c0,998 216,1806 645,2425 495,721 1223,1081 2180,1081 965,0 1690,-363 2181,-1088 417,-619 626,-1432 626,-2439 0,-1019 -206,-1827 -619,-2425 -481,-696 -1209,-1045 -2188,-1045 -981,0 -1713,351 -2199,1053 -417,602 -626,1415 -626,2438zm9014 8141l1593 0 0 -3628c135,263 310,457 528,583 218,126 491,187 820,187 353,0 643,-71 872,-215 230,-143 410,-363 543,-662 133,-298 223,-677 275,-1135 50,-457 76,-1002 76,-1630 0,-621 -29,-1155 -83,-1603 -57,-450 -154,-820 -294,-1111 -137,-292 -325,-507 -557,-645 -232,-140 -524,-208 -877,-208 -334,0 -618,75 -853,227 -235,152 -415,375 -545,666l0 -709 -1498 0 0 9883zm1567 -6738c0,-355 7,-661 23,-917 17,-253 52,-464 107,-628 57,-166 137,-284 246,-362 109,-76 256,-114 441,-114 168,0 299,45 396,132 97,88 171,223 220,411 48,185 79,421 93,708 14,287 21,626 21,1022 0,393 -5,732 -14,1021 -10,287 -38,524 -85,711 -50,188 -124,327 -221,420 -97,92 -232,140 -410,140 -194,0 -346,-50 -453,-150 -109,-99 -191,-253 -246,-462 -57,-208 -90,-471 -102,-792 -12,-319 -16,-699 -16,-1140zm7335 1349c0,467 -59,808 -178,1026 -118,216 -322,325 -614,325 -298,0 -502,-140 -616,-419 -114,-278 -171,-726 -171,-1339 0,-79 0,-152 0,-223 0,-74 5,-150 15,-223l3116 0 0 -514c0,-283 -4,-546 -14,-792 -7,-244 -28,-472 -61,-683 -34,-210 -81,-403 -145,-576 -66,-175 -154,-331 -265,-476 -200,-263 -448,-460 -749,-590 -301,-131 -666,-194 -1098,-194 -855,0 -1481,241 -1879,727 -119,145 -211,306 -280,486 -69,180 -118,382 -154,602 -33,218 -54,460 -64,721 -9,260 -14,545 -14,850 0,361 2,695 9,1003 7,308 31,592 69,853 40,261 100,500 180,716 81,213 192,412 334,593 195,229 434,398 723,502 287,104 640,156 1060,156 789,0 1372,-182 1744,-545 372,-362 559,-934 559,-1716 0,-40 0,-83 0,-125 0,-41 -4,-90 -14,-145l-1493 0zm-1579 -1934c0,-80 -2,-144 -7,-194 -4,-50 -7,-86 -7,-109 0,-436 57,-756 169,-958 109,-201 315,-303 616,-303 154,0 280,24 379,73 100,50 178,126 232,225 55,102 95,233 119,392 23,161 35,350 35,571l0 303 -1536 0zm4321 4280l1593 0 0 -4365c0,-451 52,-782 154,-998 102,-216 292,-325 569,-325 260,0 434,88 524,261 87,175 132,448 132,818l0 4609 1593 0 0 -5372c0,-546 -140,-958 -419,-1235 -280,-278 -671,-417 -1174,-417 -315,0 -592,75 -836,225 -244,149 -446,367 -607,654l0 -695 -1529 0 0 6840zm5961 0l1706 0 0 -4010 2890 0 0 -1450 -2890 0 0 -2147 3063 0 0 -1494 -4769 0 0 9101zm8219 -2346c0,467 -59,808 -177,1026 -119,216 -323,325 -614,325 -299,0 -503,-140 -616,-419 -114,-278 -171,-726 -171,-1339 0,-79 0,-152 0,-223 0,-74 5,-150 14,-223l3117 0 0 -514c0,-283 -5,-546 -14,-792 -7,-244 -29,-472 -62,-683 -33,-210 -80,-403 -144,-576 -67,-175 -155,-331 -266,-476 -199,-263 -448,-460 -749,-590 -301,-131 -666,-194 -1097,-194 -856,0 -1482,241 -1880,727 -118,145 -211,306 -279,486 -69,180 -119,382 -155,602 -33,218 -54,460 -63,721 -10,260 -15,545 -15,850 0,361 3,695 10,1003 7,308 31,592 68,853 41,261 100,500 181,716 80,213 192,412 334,593 194,229 434,398 723,502 287,104 640,156 1059,156 789,0 1372,-182 1745,-545 372,-362 559,-934 559,-1716 0,-40 0,-83 0,-125 0,-41 -5,-90 -14,-145l-1494 0zm-1578 -1934c0,-80 -2,-144 -7,-194 -5,-50 -7,-86 -7,-109 0,-436 57,-756 168,-958 109,-201 315,-303 616,-303 154,0 280,24 380,73 99,50 177,126 232,225 54,102 95,233 118,392 24,161 36,350 36,571l0 303 -1536 0zm4079 2005l0 270c0,754 180,1306 538,1659 358,354 915,531 1671,531 735,0 1292,-168 1666,-502 375,-337 562,-804 562,-1406 0,-315 -52,-583 -157,-808 -104,-225 -248,-429 -433,-614 -185,-184 -406,-362 -657,-530 -253,-169 -528,-356 -829,-560 -140,-97 -263,-185 -373,-263 -108,-78 -199,-156 -270,-232 -71,-76 -125,-157 -163,-240 -38,-82 -55,-175 -55,-277 0,-175 57,-320 173,-431 116,-112 275,-166 479,-166 273,0 472,76 592,230 124,151 185,391 185,720l0 145 1394 0 0 -147c0,-1420 -692,-2128 -2074,-2128 -723,0 -1270,161 -1642,481 -372,322 -560,784 -560,1384 0,284 41,531 121,744 83,213 199,408 351,590 154,180 344,353 571,524 225,168 486,348 778,543 156,106 301,201 429,284 130,85 244,166 339,247 94,83 165,166 218,253 49,88 75,190 75,306 0,209 -63,372 -192,493 -125,121 -303,180 -530,180 -287,0 -486,-83 -600,-249 -114,-166 -171,-443 -171,-829l0 -202 -1436 0zm8535 1157l182 1095c-339,73 -652,109 -941,109 -926,0 -1472,-304 -1635,-910 -74,-278 -111,-726 -111,-1347l0 -4242 -911 0 0 -967 911 0 0 -1825 1237 -749 0 2574 1265 0 0 967 -1265 0 0 4299c0,365 31,609 90,728 99,194 305,292 623,292 149,0 334,-8 555,-24z"/>
<path class="fil3" d="M115025 79602l-6347 7296c1504,1478 2638,3131 3400,4697l-4669 2698c0,0 -1892,-4442 -5454,-7120 410,942 632,1984 632,3074 0,4281 -3492,7778 -7769,7778 -4503,0 -8070,-3863 -7756,-8323l3972 479c-536,1975 963,4016 3078,4016 1744,0 3191,-1430 3191,-3191 0,-4687 -5328,-5834 -9133,-4221 -2368,1007 -4273,2486 -6880,4495 -2665,-2494 -5437,-4892 -8214,-7328l2733 -3105 7042 6880c531,-432 1141,-885 1809,-1343l-4491 -6029 2603 -1801 4064 6487c1233,-675 2602,-1303 4102,-1787l-3418 -10716 5175 -1248 2141 11088c819,-92 1643,-140 2472,-136l1910 -9020 3753 872 -2677 8428c2817,1768 3578,2549 5578,4955l7714 -9236 1439 1361z"/>
</g>
<path class="fil4" d="M85575 112548l58 2168 2419 -141 35 773 -2618 2483 24 1972 5083 -59 -12 -2171 -2418 176 2219 -2008 -270 -2700 -517 -493 -4003 0zm10061 -82l-3182 140 -1221 364 177 6833 4097 -59 1068 -152 153 -6211 -1092 -915zm-1021 5189l-1362 23 -47 -3087 1503 -118 -94 3182zm3017 -5107l59 2168 2418 -141 35 773 -2618 2483 24 1972 5083 -59 -12 -2171 -2418 176 2219 -2008 -270 -2700 -517 -493 -4003 0zm5189 1054l223 1994 1397 -669 -70 4947 2406 -106 -35 -7220 -2207 47 -1714 1007z"/>
<polygon class="fil3" points="76666,109003 115580,109003 115580,109727 76666,109727 "/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 50 KiB

BIN
img/banner-back-2022.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 KiB

BIN
img/banner-back-2022.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
img/banner-back-2023.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
img/banner-back-2024.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

BIN
img/banner-bg-2014.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
img/banner-bg-2015.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
img/banner-bg-2016.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
img/banner-bg-2017.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
img/banner-bg-2018.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
img/banner-bg-2019.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
img/banner-bg-2020.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
img/banner-bg-2021.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

79
img/banner-bg-2021.svg Normal file
View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Creator: CorelDRAW X7 -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1920px" height="1000px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
viewBox="0 0 192000 100000"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
<![CDATA[
.str0 {stroke:#FFE16B;stroke-width:600.01;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:600.009567 1800.028701}
.fil0 {fill:none}
.fil4 {fill:#9EE3CC}
.fil1 {fill:whitesmoke}
.fil5 {fill:white}
.fil2 {fill:gray;fill-rule:nonzero}
.fil3 {fill:#FFE16B;fill-rule:nonzero}
]]>
</style>
</defs>
<g id="Layer_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer"/>
<g id="_1659027276032">
<rect class="fil0" width="192000" height="100000"/>
<g>
<rect class="fil1" x="38849" y="28254" width="113800" height="49193"/>
<polygon class="fil2" points="41089,29137 41222,24905 43881,24861 43779,22348 38400,22759 38444,31400 44219,31694 44219,28961 "/>
<path id="1" class="fil2" d="M51802 22465l-6319 103 -220 8715 2586 294 4336 -179 308 -1663 -691 -7270zm-3997 6599l74 -4086 1631 89 191 3923 -1896 74z"/>
<path id="2" class="fil2" d="M56784 22333l44 1220 -2836 44 -793 1381 147 4306 1219 1220 2293 -74 29 1426 2778 -191 -15 -1235 2778 -220 793 -1337 -117 -4203 -941 -1132 -2557 -59 0 -1263 -2822 117zm-1190 3659l1396 -44 0 2043 -1308 29 -88 -2028zm5305 15l30 1896 -1294 0 0 -1925 1264 29z"/>
<polygon id="3" class="fil2" points="68659,31724 71598,31636 71524,26492 71524,22465 68614,22495 68629,23656 67674,25258 66895,26536 66822,22612 64132,22612 64147,31415 66880,31562 66866,30313 67938,28491 68644,27462 "/>
<path id="4" class="fil2" d="M76521 28843l558 103 -132 2837 3013 -162 -265 -9141 -4188 -15 -2219 265 -221 4923 985 500 -1808 2733 2660 1029 1617 -3072zm793 -2145l-1499 29 -14 -1925 1543 -118 -30 2014z"/>
<polygon id="5" class="fil2" points="83766,32106 84912,32547 88689,22348 87484,21936 "/>
<polygon id="6" class="fil2" points="38281,36500 38143,43476 40314,43487 40337,39803 40984,41154 42231,41062 42809,39768 42959,43522 45119,43372 44853,36338 42970,36269 41561,39018 40129,36269 "/>
<path id="7" class="fil2" d="M51321 38995l-1675 -2738 -2033 81 -1443 2992 -301 4134 1987 35 58 -1236 1651 -139 116 1433 2079 -93 -439 -4469zm-3327 1536l104 -1040 601 -1305 624 1328 80 936 -1409 81z"/>
<path id="8" class="fil2" d="M56633 35299l578 -878 -1386 -35 -104 382 -162 173 -404 11 -139 -231 -104 -346 -1374 46 728 1063 335 300 1432 58 600 -543zm-600 8258l2310 -70 -58 -4042 0 -3164 -2287 23 12 912 -751 1259 -612 1005 -58 -3084 -2113 0 11 6918 2148 116 -11 -982 843 -1432 554 -809 12 3350z"/>
<polygon id="9" class="fil2" points="59636,36500 59498,43476 61669,43487 61692,39803 62339,41154 63586,41062 64163,39768 64314,43522 66473,43372 66208,36338 64325,36269 62916,39018 61484,36269 "/>
<polygon id="10" class="fil2" points="70816,40762 70804,41697 67617,41512 67443,43545 72017,43672 73103,42355 72987,36223 70816,36165 70816,38948 69545,38821 69476,36246 67293,36292 67397,40762 "/>
<polygon id="11" class="fil2" points="77618,43557 79928,43487 79871,39445 79871,36154 77584,36246 77595,38937 76232,39041 76175,36396 74061,36396 74073,43314 76221,43314 76209,40866 77607,40808 "/>
<path id="12" class="fil2" d="M86234 38995l-1674 -2738 -2033 81 -1444 2992 -300 4134 1986 35 58 -1236 1652 -139 115 1433 2079 -93 -439 -4469zm-3326 1536l104 -1040 601 -1305 623 1328 81 936 -1409 81z"/>
<path id="13" class="fil2" d="M92840 39976l-115 -2760 -959 -970 -4342 115 34 7161 2276 12 -81 -2357 2564 -161 623 -1040zm-3245 -1721l104 -127 1097 24 35 1351 -1224 81 -12 -1329z"/>
<polygon id="14" class="fil2" points="97160,43557 99470,43487 99412,39445 99412,36154 97125,36246 97137,38937 95774,39041 95716,36396 93603,36396 93614,43314 95762,43314 95751,40866 97148,40808 "/>
<polygon id="15" class="fil2" points="104170,43557 106480,43487 106422,39445 106422,36281 104136,36304 104147,37216 103396,38475 102784,39480 102727,36396 100613,36396 100625,43314 102773,43430 102761,42448 103604,41016 104159,40207 "/>
<polygon id="16" class="fil2" points="107531,36373 107624,43487 109922,43406 109841,40685 111111,41537 111238,43534 113664,43395 113179,40375 111758,39751 113144,38898 113329,36465 110984,36315 110927,38323 109749,39176 109702,36338 "/>
<path id="17" class="fil2" d="M119658 38995l-1675 -2738 -2032 81 -1444 2992 -300 4134 1986 35 58 -1236 1651 -139 116 1433 2079 -93 -439 -4469zm-3326 1536l104 -1040 600 -1305 624 1328 81 936 -1409 81z"/>
<path class="fil2" d="M39385 52302l541 0 0 -5193 -452 0c-13,328 -111,569 -294,725 -183,156 -460,234 -831,234l-62 0 0 436 1098 0 0 3798z"/>
<path id="1" class="fil2" d="M43254 52302l551 0 0 -1314 484 0 0 -508 -484 0 0 -3371 -500 0 -1922 3371 0 508 1871 0 0 1314zm-1394 -1822l1461 -2635 -67 2635 -1394 0z"/>
<polygon id="2" class="fil2" points="46599,50673 48260,50673 48260,50068 46599,50068 "/>
<path id="3" class="fil2" d="M51903 52302l540 0 0 -5193 -451 0c-14,328 -112,569 -295,725 -182,156 -459,234 -830,234l-62 0 0 436 1098 0 0 3798z"/>
<path id="4" class="fil2" d="M54007 50938c0,481 112,845 338,1095 226,249 557,374 994,374 219,0 416,-40 591,-121 175,-82 322,-200 445,-357 121,-156 213,-349 278,-576 63,-228 95,-486 95,-777 0,-266 -30,-502 -94,-711 -61,-208 -149,-383 -262,-525 -114,-143 -250,-250 -410,-323 -160,-74 -338,-110 -535,-110 -203,0 -375,35 -517,106 -144,71 -239,159 -286,264l185 -1556 1721 0 0 -508 -2174 0 -283 2635 491 43c50,-149 138,-266 261,-350 123,-84 280,-126 468,-126 564,0 847,409 847,1225 0,414 -72,728 -215,940 -144,213 -351,319 -620,319 -247,0 -439,-79 -575,-237 -136,-157 -203,-383 -203,-677l0 -47 -540 0z"/>
<path id="5" class="fil2" d="M61734 52312l0 -410c-15,5 -31,8 -47,8 -14,0 -26,0 -39,0 -82,0 -140,-22 -174,-66 -33,-43 -51,-113 -51,-210l0 -2257c0,-364 -84,-629 -255,-794 -171,-165 -438,-249 -803,-249 -392,0 -680,90 -860,272 -181,180 -275,466 -283,857l508 0 0 -63c0,-212 47,-368 141,-466 95,-98 239,-148 434,-148 193,0 339,35 434,105 96,68 144,185 144,348l0 362c0,65 -11,119 -31,164 -22,43 -56,80 -105,114 -48,32 -110,62 -188,90 -77,27 -172,60 -285,101 -196,61 -366,126 -509,191 -144,63 -264,141 -358,231 -94,91 -164,203 -211,334 -47,133 -71,299 -71,499 0,340 78,605 234,793 154,187 371,281 649,281 214,0 399,-51 555,-155 155,-102 272,-255 351,-457 9,179 59,316 146,412 88,95 209,144 363,144 47,0 96,-3 145,-10 51,-7 107,-15 166,-21zm-851 -2090l0 764c0,147 -18,279 -54,395 -35,117 -85,216 -149,296 -65,80 -141,141 -231,183 -89,42 -188,63 -299,63 -156,0 -275,-52 -358,-157 -85,-105 -127,-255 -127,-449 0,-129 12,-235 38,-320 24,-83 62,-153 111,-210 51,-56 115,-103 190,-142 76,-38 165,-75 269,-112 133,-47 251,-92 353,-134 104,-42 188,-101 257,-177z"/>
<path id="6" class="fil2" d="M62293 50809c0,275 32,519 97,728 64,210 158,382 285,515 112,127 251,217 416,272 166,55 355,83 567,83 228,0 429,-35 603,-106 172,-71 317,-174 434,-309 117,-136 204,-301 262,-498 58,-197 86,-420 86,-669 0,-374 -86,-673 -260,-901 -173,-225 -428,-364 -764,-415 275,-55 489,-188 638,-399 149,-211 225,-484 225,-816 0,-118 -22,-247 -64,-386 -41,-139 -111,-268 -208,-387 -97,-117 -224,-216 -383,-294 -159,-79 -355,-118 -589,-118 -191,0 -369,32 -533,98 -164,66 -305,161 -426,286 -121,124 -215,277 -284,458 -69,180 -102,387 -102,619l0 2239zm540 33l0 -2252c0,-319 69,-567 206,-742 136,-176 320,-264 552,-264 144,0 264,23 356,69 95,46 168,108 224,187 55,78 94,170 115,275 20,106 31,221 31,344 0,159 -19,293 -58,400 -37,107 -94,193 -169,259 -74,65 -167,112 -277,141 -110,28 -238,43 -382,43l-371 0 0 476 430 0c347,0 595,91 742,274 148,183 222,448 222,792 0,348 -63,610 -189,789 -127,177 -328,266 -608,266 -550,0 -824,-352 -824,-1057z"/>
<path id="7" class="fil2" d="M68017 51123l-540 0c0,276 -59,474 -176,595 -118,120 -292,181 -522,181 -211,0 -375,-55 -490,-164 -117,-110 -175,-262 -175,-456 0,-114 16,-211 47,-291 32,-80 79,-148 143,-207 63,-59 139,-112 231,-158 93,-45 199,-91 320,-138 207,-81 380,-163 521,-245 140,-82 253,-170 339,-266 85,-95 146,-201 183,-317 36,-117 55,-250 55,-398 0,-154 -28,-286 -85,-394 -56,-109 -125,-199 -207,-273 -180,-172 -441,-258 -782,-258 -405,0 -704,93 -899,277 -195,184 -293,468 -293,852l516 0c0,-255 51,-434 153,-537 102,-104 253,-156 452,-156 201,0 353,54 454,160 101,106 151,257 151,454 0,45 -4,92 -14,141 -9,50 -33,102 -71,156 -39,54 -100,108 -179,163 -81,55 -192,110 -333,165 -234,90 -429,176 -586,258 -159,84 -285,172 -383,266 -97,94 -167,201 -209,318 -43,117 -64,254 -64,411 0,388 99,676 298,864 199,187 502,281 910,281 188,0 358,-25 510,-77 151,-52 282,-131 389,-237 109,-108 193,-241 250,-400 58,-160 86,-349 86,-570z"/>
<path id="8" class="fil2" d="M68457 53527c148,44 269,66 363,66 162,0 302,-23 419,-68 117,-44 218,-113 301,-204 85,-91 157,-208 221,-349 63,-142 122,-311 177,-507l1186 -4018 -556 0 -846 3107 -823 -3107 -587 0 1134 3886c-43,140 -83,258 -125,359 -40,99 -85,180 -133,243 -48,63 -105,109 -168,139 -63,28 -137,43 -224,43 -58,0 -113,-4 -167,-14 -54,-9 -112,-27 -172,-53l0 477z"/>
<path id="9" class="fil2" d="M73237 50947c-11,326 -69,570 -177,736 -107,165 -260,248 -461,248 -137,0 -252,-31 -345,-93 -93,-61 -168,-155 -223,-283 -55,-128 -96,-290 -121,-488 -24,-198 -36,-430 -36,-698 0,-266 12,-496 37,-690 24,-195 66,-357 123,-484 56,-128 131,-222 225,-284 94,-62 211,-93 351,-93 187,0 332,70 440,209 106,139 162,346 170,622l535 0 0 -79c0,-189 -27,-359 -82,-511 -55,-153 -133,-282 -234,-389 -102,-106 -224,-186 -368,-243 -145,-56 -306,-85 -485,-85 -441,0 -768,166 -981,498 -214,332 -320,832 -320,1501 0,698 102,1217 306,1557 206,340 525,509 957,509 391,0 694,-125 908,-374 213,-248 321,-611 321,-1086l-540 0z"/>
<path id="10" class="fil2" d="M74552 52302l541 0 0 -2708c0,-113 19,-215 56,-309 39,-93 93,-174 163,-240 68,-67 152,-119 250,-155 97,-37 203,-56 318,-56 210,0 357,65 437,193 82,129 122,326 122,591l0 2684 541 0 0 -2684c0,-113 20,-218 59,-313 39,-96 94,-179 165,-249 72,-68 155,-123 253,-162 97,-39 204,-60 323,-60 112,0 204,17 275,50 71,32 126,82 167,149 41,68 68,151 83,252 15,100 22,220 22,356l0 2661 540 0 0 -3003c0,-309 -81,-543 -242,-702 -161,-159 -401,-238 -719,-238 -223,0 -419,45 -587,138 -170,91 -312,230 -428,417 -52,-182 -146,-319 -282,-414 -135,-94 -312,-141 -530,-141 -466,0 -805,185 -1015,557l0 -469 -512 0 0 3855z"/>
<path class="fil2" d="M39071 57038c0,-149 8,-278 25,-386 18,-108 45,-196 84,-265 37,-67 88,-117 153,-149 64,-31 145,-47 239,-47 90,0 164,13 222,39 58,27 103,67 137,122 35,55 59,125 71,213 14,86 20,189 20,310 0,136 -13,251 -38,344 -27,93 -68,168 -123,226 -56,58 -125,98 -208,122 -82,23 -182,35 -297,35l-100 0 0 670 162 0c145,0 262,13 352,41 91,27 161,74 211,140 50,66 84,153 102,264 19,111 28,247 28,411 0,162 -8,302 -24,419 -15,117 -43,213 -82,288 -39,75 -93,130 -160,165 -67,36 -150,54 -250,54 -99,0 -183,-20 -250,-59 -67,-39 -121,-101 -161,-186 -42,-83 -70,-191 -88,-322 -17,-131 -25,-289 -25,-472l0 -1977zm-903 -147l0 2268c0,551 113,959 340,1227 227,267 582,402 1064,402 506,0 881,-137 1125,-410 243,-273 366,-690 366,-1252 0,-174 -19,-337 -58,-487 -39,-150 -98,-281 -177,-396 -78,-114 -179,-205 -301,-275 -123,-70 -267,-110 -432,-124 121,-16 234,-51 337,-105 104,-53 194,-123 272,-209 78,-88 137,-190 181,-308 43,-118 65,-249 65,-394 0,-430 -117,-759 -351,-988 -232,-228 -562,-343 -986,-343 -466,0 -822,121 -1072,362 -248,242 -373,586 -373,1032z"/>
<polygon id="1" class="fil2" points="41391,60691 42407,60691 42852,59652 43305,60691 44297,60691 43313,58706 44270,56812 43297,56812 42876,57781 42458,56812 41434,56812 42415,58706 "/>
<path id="2" class="fil2" d="M45850 56707c-274,0 -498,39 -673,118 -175,78 -313,201 -413,366 -100,165 -170,378 -209,636 -39,258 -59,567 -59,926 0,363 20,672 59,929 39,258 109,469 209,634 100,165 238,286 413,364 175,77 399,116 673,116 275,0 500,-39 677,-116 176,-78 314,-199 416,-364 102,-165 172,-376 211,-634 39,-257 59,-566 59,-929 0,-359 -20,-668 -59,-926 -39,-258 -109,-471 -211,-636 -102,-165 -240,-288 -416,-366 -177,-79 -402,-118 -677,-118zm-5 694c108,0 191,22 250,70 59,45 104,115 135,211 29,95 48,215 55,360 6,145 9,317 9,517l0 385c0,213 -3,395 -9,544 -7,148 -25,270 -54,366 -28,95 -74,164 -135,207 -60,44 -143,65 -251,65 -111,0 -196,-24 -255,-71 -59,-47 -102,-123 -132,-227 -30,-105 -46,-241 -51,-407 -5,-168 -8,-371 -8,-608l0 -356c0,-183 3,-339 9,-470 7,-132 26,-242 55,-330 31,-86 76,-150 135,-193 59,-42 141,-63 247,-63z"/>
<path id="3" class="fil2" d="M49096 57449c100,0 181,20 242,61 62,41 109,104 143,189 32,86 54,194 64,325 11,131 17,289 17,472 0,266 -3,492 -10,680 -7,187 -25,340 -55,459 -31,118 -77,204 -138,258 -62,53 -150,80 -263,80 -94,0 -169,-21 -224,-63 -55,-42 -97,-109 -125,-203 -27,-93 -44,-212 -52,-357 -8,-147 -13,-323 -13,-530 0,-242 3,-449 10,-621 7,-172 24,-313 51,-425 28,-111 70,-193 125,-246 55,-52 132,-79 228,-79zm1337 2934l0 -3571 -849 0 0 402c-70,-166 -172,-292 -303,-378 -132,-86 -293,-129 -482,-129 -198,0 -362,35 -494,105 -131,68 -235,181 -313,336 -80,155 -135,356 -166,602 -31,247 -47,547 -47,902 0,360 15,669 43,929 30,261 81,474 158,642 75,168 180,292 314,373 133,79 304,119 514,119 331,0 575,-144 729,-433l0 347c0,125 -6,235 -18,328 -14,93 -38,169 -72,229 -33,59 -80,102 -139,131 -58,29 -135,43 -229,43 -99,0 -179,-21 -237,-63 -56,-43 -88,-102 -94,-179l-891 0c6,284 109,502 309,652 201,152 494,227 881,227 287,0 531,-40 728,-119 198,-81 346,-194 445,-342 97,-143 157,-310 179,-500 23,-188 34,-405 34,-653z"/>
<path id="4" class="fil2" d="M54536 59167l0 80c0,155 -5,287 -17,397 -13,112 -34,203 -64,274 -29,73 -71,125 -123,159 -53,33 -120,49 -201,49 -146,0 -248,-56 -303,-170 -55,-113 -82,-297 -82,-554l0 -1344c0,-225 28,-390 86,-497 58,-107 158,-160 299,-160 142,0 242,53 302,161 59,107 88,273 88,499l0 90 862 0 0 -137c0,-449 -102,-779 -308,-990 -204,-211 -519,-317 -945,-317 -262,0 -480,39 -650,118 -171,78 -304,202 -402,369 -97,166 -164,377 -202,634 -39,258 -58,566 -58,925 0,360 19,668 58,925 38,258 105,469 202,634 98,165 231,288 402,366 170,79 388,118 650,118 433,0 750,-116 952,-347 200,-230 301,-586 301,-1066l0 -216 -847 0z"/>
<path id="5" class="fil2" d="M56973 57038c0,-149 8,-278 25,-386 18,-108 45,-196 84,-265 37,-67 88,-117 153,-149 65,-31 145,-47 239,-47 90,0 164,13 222,39 58,27 104,67 137,122 35,55 59,125 71,213 14,86 21,189 21,310 0,136 -14,251 -39,344 -27,93 -68,168 -123,226 -56,58 -125,98 -208,122 -82,23 -182,35 -297,35l-100 0 0 670 162 0c145,0 262,13 352,41 91,27 161,74 211,140 50,66 85,153 102,264 19,111 28,247 28,411 0,162 -8,302 -24,419 -15,117 -43,213 -82,288 -39,75 -93,130 -160,165 -67,36 -150,54 -250,54 -99,0 -183,-20 -250,-59 -67,-39 -121,-101 -161,-186 -42,-83 -70,-191 -88,-322 -17,-131 -25,-289 -25,-472l0 -1977zm-903 -147l0 2268c0,551 113,959 340,1227 227,267 582,402 1064,402 506,0 881,-137 1125,-410 244,-273 366,-690 366,-1252 0,-174 -19,-337 -58,-487 -39,-150 -98,-281 -177,-396 -78,-114 -179,-205 -301,-275 -123,-70 -267,-110 -432,-124 121,-16 234,-51 337,-105 104,-53 194,-123 272,-209 78,-88 137,-190 181,-308 43,-118 65,-249 65,-394 0,-430 -117,-759 -351,-988 -232,-228 -562,-343 -986,-343 -466,0 -822,121 -1072,362 -248,242 -373,586 -373,1032z"/>
<path id="6" class="fil2" d="M60828 56707c-274,0 -499,39 -674,118 -174,78 -313,201 -412,366 -101,165 -171,378 -210,636 -39,258 -59,567 -59,926 0,363 20,672 59,929 39,258 109,469 210,634 99,165 238,286 412,364 175,77 400,116 674,116 274,0 500,-39 676,-116 176,-78 314,-199 417,-364 102,-165 172,-376 211,-634 39,-257 59,-566 59,-929 0,-359 -20,-668 -59,-926 -39,-258 -109,-471 -211,-636 -103,-165 -241,-288 -417,-366 -176,-79 -402,-118 -676,-118zm-6 694c108,0 191,22 250,70 60,45 104,115 135,211 29,95 48,215 55,360 7,145 9,317 9,517l0 385c0,213 -2,395 -9,544 -7,148 -24,270 -54,366 -28,95 -74,164 -134,207 -61,44 -144,65 -252,65 -111,0 -196,-24 -255,-71 -59,-47 -102,-123 -132,-227 -29,-105 -45,-241 -51,-407 -5,-168 -8,-371 -8,-608l0 -356c0,-183 3,-339 10,-470 6,-132 25,-242 55,-330 31,-86 75,-150 134,-193 59,-42 141,-63 247,-63z"/>
<path id="7" class="fil2" d="M63258 57820c0,-251 16,-464 47,-636 32,-172 85,-316 160,-430 75,-115 175,-210 300,-282 123,-71 281,-136 470,-191 243,-73 445,-132 602,-175 157,-43 296,-76 413,-101l0 -782c-47,23 -105,46 -175,70 -70,23 -136,43 -200,59 -65,18 -120,31 -164,42 -44,9 -67,15 -67,15 -268,82 -502,150 -703,207 -201,56 -374,119 -519,191 -147,71 -266,157 -362,258 -94,100 -169,238 -224,410 -55,170 -94,387 -117,645 -23,258 -34,579 -34,962l0 1020c0,300 24,555 72,768 47,213 123,388 229,527 107,137 246,238 420,302 173,65 384,97 634,97 256,0 469,-35 643,-105 173,-69 313,-175 419,-319 106,-142 183,-323 230,-543 47,-219 71,-478 71,-776l0 -131c0,-304 -15,-567 -46,-787 -29,-221 -88,-402 -174,-548 -86,-143 -209,-250 -365,-318 -156,-69 -361,-102 -615,-102 -100,0 -198,13 -293,41 -97,27 -186,69 -270,124 -84,55 -159,124 -225,204 -66,82 -118,176 -157,284zm1242 1122c0,214 -3,395 -10,545 -6,149 -25,271 -55,367 -29,94 -75,164 -135,207 -62,44 -148,65 -257,65 -105,0 -187,-20 -247,-61 -61,-41 -107,-105 -138,-194 -30,-89 -49,-203 -57,-345 -8,-141 -12,-312 -12,-512l0 -139c0,-169 4,-317 12,-445 8,-126 27,-232 56,-316 30,-84 75,-147 136,-190 62,-42 145,-64 250,-64 101,0 181,18 242,54 60,35 106,91 138,168 32,77 54,175 63,296 10,119 14,265 14,433l0 131z"/>
<path id="8" class="fil2" d="M67332 56707c-274,0 -499,39 -674,118 -174,78 -313,201 -412,366 -101,165 -171,378 -210,636 -39,258 -59,567 -59,926 0,363 20,672 59,929 39,258 109,469 210,634 99,165 238,286 412,364 175,77 400,116 674,116 274,0 500,-39 676,-116 176,-78 314,-199 417,-364 102,-165 172,-376 211,-634 39,-257 59,-566 59,-929 0,-359 -20,-668 -59,-926 -39,-258 -109,-471 -211,-636 -103,-165 -241,-288 -417,-366 -176,-79 -402,-118 -676,-118zm-6 694c108,0 191,22 250,70 60,45 104,115 135,211 29,95 48,215 55,360 7,145 9,317 9,517l0 385c0,213 -2,395 -9,544 -7,148 -24,270 -54,366 -28,95 -74,164 -134,207 -61,44 -144,65 -252,65 -111,0 -196,-24 -255,-71 -59,-47 -102,-123 -132,-227 -29,-105 -45,-241 -51,-407 -5,-168 -8,-371 -8,-608l0 -356c0,-183 3,-339 10,-470 6,-132 25,-242 55,-330 31,-86 75,-150 134,-193 59,-42 141,-63 247,-63z"/>
<path id="9" class="fil2" d="M70578 57449c99,0 180,20 242,61 62,41 109,104 142,189 33,86 54,194 65,325 11,131 16,289 16,472 0,266 -3,492 -10,680 -6,187 -25,340 -55,459 -31,118 -76,204 -138,258 -62,53 -149,80 -262,80 -94,0 -170,-21 -225,-63 -55,-42 -96,-109 -125,-203 -27,-93 -44,-212 -52,-357 -8,-147 -12,-323 -12,-530 0,-242 3,-449 9,-621 7,-172 24,-313 51,-425 29,-111 70,-193 125,-246 55,-52 132,-79 229,-79zm1336 2934l0 -3571 -848 0 0 402c-70,-166 -172,-292 -304,-378 -132,-86 -293,-129 -481,-129 -199,0 -363,35 -495,105 -130,68 -235,181 -313,336 -79,155 -134,356 -165,602 -31,247 -47,547 -47,902 0,360 14,669 43,929 29,261 80,474 157,642 75,168 180,292 314,373 133,79 304,119 514,119 332,0 575,-144 730,-433l0 347c0,125 -7,235 -19,328 -14,93 -38,169 -71,229 -34,59 -81,102 -140,131 -58,29 -135,43 -229,43 -99,0 -178,-21 -236,-63 -57,-43 -89,-102 -94,-179l-891 0c5,284 108,502 309,652 200,152 493,227 880,227 288,0 531,-40 729,-119 197,-81 345,-194 444,-342 97,-143 158,-310 179,-500 23,-188 34,-405 34,-653z"/>
<path id="10" class="fil2" d="M74267 59360c0,265 -33,459 -100,582 -68,123 -183,184 -349,184 -169,0 -284,-79 -349,-237 -65,-158 -97,-412 -97,-760 0,-44 0,-86 0,-126 0,-42 3,-85 8,-127l1768 0 0 -291c0,-160 -3,-309 -8,-449 -4,-139 -16,-268 -35,-387 -19,-120 -46,-229 -82,-327 -38,-99 -88,-188 -151,-270 -113,-149 -254,-261 -425,-335 -170,-74 -377,-110 -622,-110 -485,0 -840,137 -1066,413 -67,82 -119,173 -158,275 -39,102 -68,217 -88,342 -19,123 -31,260 -36,408 -5,148 -8,309 -8,483 0,204 1,394 5,568 4,175 18,336 39,484 23,148 57,284 102,406 46,121 109,234 190,336 110,131 246,226 410,285 163,59 363,89 601,89 447,0 778,-104 989,-309 211,-206 317,-530 317,-973 0,-23 0,-47 0,-72 0,-23 -2,-51 -8,-82l-847 0zm-895 -1096c0,-46 -1,-82 -4,-111 -3,-28 -4,-48 -4,-61 0,-248 32,-429 96,-544 61,-114 178,-172 349,-172 87,0 159,14 215,42 57,28 101,71 132,128 31,58 54,132 67,222 13,91 20,199 20,324l0 172 -871 0z"/>
<polygon id="11" class="fil2" points="76718,58989 77508,58989 77508,60691 78411,60691 78411,56812 77508,56812 77508,58264 76718,58264 76718,56812 75814,56812 75814,60691 76718,60691 "/>
<polygon class="fil3" points="13797,77787 19508,77633 19137,71262 21173,71169 27714,78066 32910,78004 32755,64613 27034,64643 27498,71014 22209,65169 15096,65881 13797,67241 "/>
<path id="1" class="fil3" d="M13581 51283l371 8381 959 3217 17999 -464 -155 -10793 -402 -2815 -16360 -402 -2412 2876zm13669 2691l62 3587 -8134 124 -309 -3958 8381 247z"/>
<polygon id="2" class="fil3" points="13797,46026 19508,45871 19137,39500 21173,39408 27714,46304 32910,46242 32755,32851 27034,32882 27498,39253 22209,33408 15096,34119 13797,35480 "/>
<polygon id="3" class="fil3" points="16575,32356 21828,31769 20065,28089 33095,28274 32817,21934 13797,22027 13921,27841 "/>
<polyline class="fil0 str0" points="97450,27963 152649,27963 152649,77447 38849,77447 "/>
<g>
<path class="fil4" d="M148322 63626c-3440,-674 -6522,-2263 -8931,-4479 -1281,-1178 -2372,-2532 -3228,-4020 -612,148 -1252,226 -1910,226 -2237,0 -4263,-907 -5729,-2373 -1467,-1467 -2374,-3492 -2374,-5730 0,-2237 907,-4263 2374,-5729 1052,-1053 2393,-1817 3893,-2165 -232,-897 -353,-1820 -353,-2761 0,-4195 2351,-7941 6152,-10605 3574,-2505 8466,-4054 13829,-4054 5364,0 10256,1549 13830,4054 3801,2664 6152,6410 6152,10605 0,909 -113,1801 -330,2669 1684,290 3191,1099 4349,2257 1466,1466 2373,3492 2373,5729 0,2238 -907,4263 -2373,5730 -1467,1466 -3492,2373 -5730,2373 -808,0 -1588,-118 -2325,-338 -865,1532 -1978,2925 -3291,4132 -1983,1824 -3987,2986 -6531,3843 -2870,1066 -4881,3199 -5348,5660 -1647,-1515 -2140,-2900 -1893,-4125 -1105,596 -2101,1362 -3144,2407 -14,-1440 167,-2495 538,-3306zm-2631 -12968c-873,0 -1663,-354 -2236,-926 -572,-572 -926,-1363 -926,-2236 0,-873 354,-1663 926,-2236 573,-572 1363,-926 2236,-926 873,0 1664,354 2236,926 572,573 926,1363 926,2236 0,873 -354,1664 -926,2236 -572,572 -1363,926 -2236,926zm0 4229c-4082,0 -7390,-3309 -7390,-7391 0,-1706 578,-3278 1550,-4529 -1448,-1200 -2504,-2615 -3030,-4148 1857,-1146 3914,-2071 6102,-2753 2869,-894 5962,-1365 9122,-1365 2910,0 5768,400 8451,1166 2441,697 4730,1689 6775,2950 -525,1530 -1577,2942 -3019,4140 976,1253 1558,2828 1558,4539 0,4082 -3309,7391 -7390,7391 -2710,0 -5078,-1458 -6365,-3632 -1286,2174 -3655,3632 -6364,3632zm-9160 -19371c372,-2273 1901,-4351 4182,-5950 2866,-2008 6869,-3250 11332,-3250 4463,0 8467,1242 11332,3250 2283,1599 3812,3678 4183,5952 -1946,-1064 -4045,-1918 -6240,-2544 -2954,-843 -6091,-1284 -9275,-1284 -3454,0 -6850,520 -10016,1507 -1931,601 -3776,1378 -5498,2319zm13894 8388c-284,0 -540,-115 -726,-301 -186,-186 -301,-442 -301,-726 0,-283 115,-539 301,-725l1 0c185,-186 442,-301 725,-301 283,0 540,115 725,301 186,185 301,442 301,725 0,283 -115,539 -301,725l0 1c-187,186 -443,301 -725,301zm3351 0c-282,0 -538,-115 -725,-301l0 -1c-186,-186 -301,-442 -301,-725 0,-282 115,-539 301,-725l0 0c187,-186 443,-301 725,-301 283,0 539,115 725,301l1 0c186,186 301,443 301,725 0,283 -115,539 -301,725l-1 1c-186,186 -442,301 -725,301zm4644 6754c-873,0 -1664,-354 -2236,-926 -572,-572 -926,-1363 -926,-2236 0,-873 354,-1663 926,-2236 572,-572 1363,-926 2236,-926 873,0 1663,354 2235,926 573,573 927,1363 927,2236 0,873 -354,1664 -927,2236 -572,572 -1362,926 -2235,926zm11216 -7069l-32 43c94,395 173,797 237,1207 130,826 197,1636 197,2424l0 59 0 59 -1 58 0 59 -1 58 -2 59 -1 58 -2 58 -1 59 -2 58 -3 58 -2 58 -3 58c-2,39 -4,77 -6,116l-3 58 -4 58c-7,115 -15,231 -25,346 -4,38 -7,76 -10,115 -8,76 -15,152 -23,229l-7 57 -6 57c-28,247 -63,493 -102,736 -28,169 -58,337 -91,504l-11 56 -12 55 -11 56 -12 55 -12 56c-12,55 -24,110 -37,166l-12 55 -13 55 -13 55c229,44 465,67 706,67 1029,0 1960,-417 2633,-1091 674,-673 1091,-1604 1091,-2633 0,-1028 -417,-1959 -1091,-2633 -673,-674 -1604,-1090 -2633,-1090 -232,0 -459,21 -680,62zm-35141 7377l-13 -56 -13 -56 -14 -56 -12 -56 -13 -56 -13 -56 -12 -56 -12 -57 -12 -56 -11 -57 -12 -56c-7,-38 -15,-76 -22,-113l-11 -57 -11 -57 -10 -57 -10 -57 -10 -57 -10 -57c-7,-38 -13,-76 -19,-114l-9 -58 -9 -57c-6,-38 -12,-76 -18,-115l-8 -57 -8 -58 -8 -57c-5,-39 -10,-77 -15,-116 -8,-58 -15,-116 -22,-173l-6 -58c-7,-59 -13,-117 -19,-175l-6 -58c-6,-58 -11,-117 -16,-175l-5 -59c-3,-39 -6,-78 -9,-117 -3,-39 -6,-78 -9,-117 -2,-39 -5,-78 -7,-118l-4 -58c-4,-79 -8,-158 -11,-236l-2 -59c-2,-40 -3,-79 -4,-119l-2 -59c-1,-40 -2,-79 -3,-119l-1 -59 -1 -60 0 -59 0 -60 -1 -60c0,-788 68,-1598 198,-2424 64,-410 143,-812 237,-1207 -25,-34 -50,-68 -75,-102 -53,-2 -105,-3 -159,-3 -1028,0 -1959,416 -2633,1090 -673,674 -1090,1605 -1090,2633 0,1029 417,1960 1090,2633 674,674 1605,1091 2633,1091 82,0 162,-3 242,-8z"/>
<path class="fil5" d="M136531 35516c372,-2273 1901,-4351 4182,-5950 2866,-2008 6869,-3250 11332,-3250 4463,0 8467,1242 11332,3250 2283,1599 3812,3678 4183,5952 -1946,-1064 -4045,-1918 -6240,-2544 -2954,-843 -6091,-1284 -9275,-1284 -3454,0 -6850,520 -10016,1507 -1931,601 -3776,1378 -5498,2319zm33105 8073l-32 43c94,395 173,797 237,1207 130,826 197,1636 197,2424l0 59 0 59 -1 58 0 59 -1 58 -2 59 -1 58 -2 58 -1 59 -2 58 -3 58 -2 58 -3 58c-2,39 -4,77 -6,116l-3 58 -4 58c-7,115 -15,231 -25,346 -3,38 -7,76 -10,115 -8,76 -15,152 -23,229l-7 57 -6 57c-28,247 -63,493 -102,736 -28,169 -58,337 -91,504l-11 56 -12 55 -11 56 -12 55 -12 56c-12,55 -24,110 -37,166l-12 55 -13 55 -13 55c229,44 465,67 706,67 1029,0 1960,-417 2633,-1091 674,-673 1091,-1604 1091,-2633 0,-1028 -417,-1959 -1091,-2633 -673,-674 -1604,-1090 -2633,-1090 -232,0 -459,21 -680,62zm-35141 7377l-13 -56 -13 -56 -14 -56 -12 -56 -13 -56 -13 -56 -12 -56 -12 -57 -12 -56 -11 -57 -12 -56c-7,-38 -15,-76 -22,-114l-11 -56 -11 -57 -10 -57 -10 -57 -10 -57 -10 -57c-7,-38 -13,-76 -19,-114l-9 -58 -9 -57c-6,-38 -12,-76 -18,-115l-8 -57 -8 -58 -8 -57c-5,-39 -10,-77 -15,-116 -8,-58 -15,-116 -22,-173l-6 -58c-7,-59 -13,-117 -19,-175l-6 -58c-6,-58 -11,-117 -16,-175l-5 -59c-3,-39 -6,-78 -9,-117 -3,-39 -6,-78 -9,-117 -2,-39 -5,-78 -7,-117l-4 -59c-4,-79 -8,-158 -11,-236l-2 -59c-2,-40 -3,-79 -4,-119l-2 -59c-1,-40 -2,-79 -3,-119l-1 -59 -1 -60 0 -59 -1 -60 0 -60c0,-788 68,-1598 198,-2424 64,-410 143,-812 237,-1207 -25,-34 -50,-68 -75,-102 -53,-2 -105,-3 -159,-3 -1028,0 -1959,416 -2633,1090 -673,674 -1090,1605 -1090,2633 0,1029 417,1960 1090,2633 674,674 1605,1091 2633,1091 82,0 162,-3 242,-8zm11196 3921c-4082,0 -7390,-3309 -7390,-7391 0,-1706 578,-3278 1550,-4529 -1448,-1200 -2504,-2615 -3030,-4148 1857,-1146 3914,-2071 6102,-2753 2869,-894 5962,-1365 9122,-1365 2910,0 5768,400 8451,1166 2441,697 4730,1689 6775,2950 -525,1530 -1577,2942 -3019,4140 976,1253 1558,2828 1558,4539 0,4082 -3309,7391 -7390,7391 -2710,0 -5078,-1458 -6365,-3632 -1286,2174 -3655,3632 -6364,3632zm0 -4229c-873,0 -1663,-354 -2236,-926 -572,-572 -926,-1363 -926,-2236 0,-873 354,-1663 926,-2236 573,-572 1363,-926 2236,-926 873,0 1664,354 2236,926 572,573 926,1363 926,2236 0,873 -354,1664 -926,2236 -572,572 -1363,926 -2236,926zm12729 0c-873,0 -1664,-354 -2236,-926 -572,-572 -926,-1363 -926,-2236 0,-873 354,-1663 926,-2236 572,-572 1363,-926 2236,-926 873,0 1663,354 2235,926 573,573 927,1363 927,2236 0,873 -354,1664 -927,2236 -572,572 -1362,926 -2235,926zm-4644 -6754c-282,0 -538,-115 -725,-301l0 -1c-186,-186 -301,-442 -301,-725 0,-282 115,-539 301,-725l0 0c187,-186 443,-301 725,-301 283,0 539,115 725,301l1 0c186,186 301,443 301,725 0,283 -115,539 -301,725l-1 1c-186,186 -442,301 -725,301zm-3351 0c-284,0 -540,-115 -726,-301 -186,-186 -301,-442 -301,-726 0,-283 115,-539 301,-725l1 0c185,-186 442,-301 725,-301 283,0 540,115 725,301 186,185 301,442 301,725 0,283 -115,539 -301,725l0 1c-187,186 -443,301 -725,301z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

BIN
img/banner-bg-2022.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
img/banner-bg-2023.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 108 KiB

BIN
img/banner-en-2014.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
img/banner-en-2015.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
img/banner-en-2016.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
img/banner-en-2017.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
img/banner-en-2018.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
img/banner-en-2019.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
img/banner-en-2020.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
img/banner-en-2021.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
img/banner-en-2022.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

BIN
img/bg_BG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

BIN
img/en_US.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

BIN
img/fb_preview_2020.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

BIN
img/fb_preview_2021.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
img/fb_preview_2022.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
img/fb_preview_2023.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
img/logo-2014.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
img/logo-2015.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
img/logo-2016.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
img/logo-2017.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
img/logo-2018.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
img/logo-2019.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
img/logo-2020.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

BIN
img/logo-2021.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
img/logo-2022.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
img/logo-2023.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
img/logo-2024.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
img/logo-pre-2017.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 108 KiB

BIN
img/maps/halls.psd Normal file

Binary file not shown.

BIN
img/navbg-2017.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
img/navbg-2019.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
img/navbg-2020.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
img/navbg-2021.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -3,7 +3,6 @@
<div class="col-left"> <div class="col-left">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'entry' ); ?> <?php get_template_part( 'entry' ); ?>
<?php comments_template(); ?>
<?php endwhile; endif; ?> <?php endwhile; endif; ?>
<?php get_template_part( 'nav', 'below' ); ?> <?php get_template_part( 'nav', 'below' ); ?>
</div> </div>

71
page-schedule.php Normal file
View File

@ -0,0 +1,71 @@
<?php
/* Template Name: Schedule */
get_header();
wp_nav_menu( array( 'theme_location' => 'footer-schedule', 'container_class' => 'content subnav cf' ) );
require("schedule-config.php");
?>
<section class="content grid">
<?php
function should_show_sidebar() {
global $year, $pagename;
if ($year === '2021') {
return true;
}
if (preg_match('/^full/', $pagename)) {
return false;
}
if ($year === '2024' && preg_match('/^workshop/', $pagename)) {
return false;
}
return true;
}
// full schedule is not limited in only one column
if (should_show_sidebar()) {
echo '<div class="col-left">';
}
?>
<h1><?php pll_e('Програма') ?></h1>
<?php
if (!empty($content)) {
echo '<p><a href="https://cfp.openfest.org/api/conferences/'.$sched_config['conferenceId'].'/events.ics?locale='.$lang.'">iCalendar</a></p>';
echo $content['schedule'];
?>
<div class="separator"></div>
<table cellpadding="0" cellspacing="0" style="text-align: center;" class="schedule">
<tbody>
<?php
echo $content['legend'], PHP_EOL;
?>
</tbody>
</table>
<div class="separator"></div>
<?php
echo $content['fulltalks'];
echo $content['gspk'];
echo $content['fspk'];
} else {
echo "TBA";
}
?>
<?php
if (should_show_sidebar()) {
echo "</div>";
get_sidebar();
};
?>
</section>
<?php echo do_shortcode( '[transport]' ); ?>
<?php get_footer(); ?>

View File

@ -1,38 +1,30 @@
<?php <?php
get_header(); ?> /* Template Name: Speakers */
<div class="separator"></div> get_header();
<section class="content grid"> wp_nav_menu( array( 'theme_location' => 'footer-schedule', 'container_class' => 'content subnav cf' ) );
<div class="col-left">
<h1 class="big">Лектори</h1>
<?php
$speakers_args = array( 'post_type' => 'speakers' );
$speakers = new WP_Query( $speakers_args );
if ( $speakers->have_posts() ) : require("schedule-config.php");
while ( $speakers->have_posts() ) : $speakers->the_post();
?> ?>
<div class="speaker"> <section class="content grid">
<?php <div class="col-left">
if ( has_post_thumbnail() ) { <h1><?php pll_e('Лектори') ?></h1>
the_post_thumbnail();
} else { <?php
?> if (!empty($content)) {
<img src="img/speakers.jpg"> echo $content['gspk'];
<?php ?>
} <div class="separator"></div>
?> <?php
<h3><?php the_title(); ?></h3> echo $content['fspk'];
<?php } else {
the_content(); pll_e('TBA');
?> }
</div> ?>
<?php </div>
endwhile; <?php get_sidebar(); ?>
wp_reset_postdata();
endif;
?>
</div>
<?php # get_sidebar(); ?>
</section> </section>
<?php echo do_shortcode( '[transport]' ); ?>
<?php get_footer(); ?> <?php get_footer(); ?>

View File

@ -16,7 +16,7 @@ get_header(); ?>
<div class="separator"></div> <div class="separator"></div>
<section class="content grid sponsors-item"> <section class="content grid sponsors-item">
<?php <?php
$sponsors_args = array( 'post_type' => 'sponsors', 'orderby' => 'rand' ); $sponsors_args = array( 'post_type' => 'sponsors', 'orderby' => 'rand', 'nopaging' => 'true' );
$sponsors = new WP_Query( $sponsors_args ); $sponsors = new WP_Query( $sponsors_args );
$sponsor_count = 0; $sponsor_count = 0;
@ -24,20 +24,28 @@ get_header(); ?>
while ( $sponsors->have_posts() ) : $sponsors->the_post(); while ( $sponsors->have_posts() ) : $sponsors->the_post();
?> ?>
<div class="col2 tac"> <div class="col2 tac">
<?php <?php
$custom = get_post_custom();
if (!empty ($custom['url'])) {
echo '<a href="'.$custom['url'][0].'" target=_blank alt="'.get_the_title().'">';
}
if ( has_post_thumbnail() ) { if ( has_post_thumbnail() ) {
the_post_thumbnail(); the_post_thumbnail();
} else { } else {
the_title(); the_title();
} }
if (!empty ($custom['url'])) {
echo '</a>';
}
the_excerpt(); the_excerpt();
?> ?>
</div> </div>
<?php <?php
$sponsor_count++; $sponsor_count++;
if ($sponsor_count % 2 == 0) { if ($sponsor_count % 2 === 0) {
?> ?>
</section> </section>
<section class="content grid sponsors-item"> <section class="content grid sponsors-item">

View File

@ -1,14 +1,17 @@
<?php <?php
get_header(); get_header();
if ( $pagename == 'about' || /* Some special pages (the ones describing the event, team, etc. need a special submenu */
$pagename == 'ideas-and-recommendations' || if ( preg_match('/^(about|ideas-and-recommendations|feedback|team|history|volunteers|code-of-conduct)/', $pagename) ) {
$pagename == 'team' ||
$pagename == 'history' ) {
wp_nav_menu( array( 'theme_location' => 'subnav-menu', 'container_class' => 'content subnav cf' ) ); wp_nav_menu( array( 'theme_location' => 'subnav-menu', 'container_class' => 'content subnav cf' ) );
echo '<div class="separator"></div>';
} }
if ( preg_match('/^(schedule|programa|speakers|halls|workshop)/', $pagename) ) {
wp_nav_menu( array( 'theme_location' => 'footer-schedule', 'container_class' => 'content subnav cf' ) );
}
echo '<div class="separator"></div>';
if (openfest_home_page()) { if (openfest_home_page()) {
$coldiv1=''; $coldiv1='';
$coldiv2=''; $coldiv2='';
@ -28,7 +31,7 @@ if (openfest_home_page()) {
endwhile; endwhile;
endif; endif;
?> ?>
<?php echo $coldiv1; ?> <?php echo $coldiv2; ?>
<?php if (!openfest_home_page()) get_sidebar(); ?> <?php if (!openfest_home_page()) get_sidebar(); ?>
</section> </section>

View File

22
schedule-config.php Normal file
View File

@ -0,0 +1,22 @@
<?php
$requirePath = __DIR__ . DIRECTORY_SEPARATOR . 'schedule' . DIRECTORY_SEPARATOR;
require $requirePath . 'class.SmartCurl.php';
require $requirePath . 'config.php';
require $requirePath . 'load.php';
require $requirePath . 'parse.php';
$year = get_blog_slug();
$sched_config = getSchedConfig($year);
$sched_config['lang'] = of_get_lang();
$data = loadData($sched_config);
if ( preg_match('/^workshop/', $pagename) ) {
$sched_config['filterEventType'] = "workshop";
} else if (!preg_match('/^full/', $pagename)) {
$sched_config['filterEventType'] = "lecture";
}
$content = parseData($sched_config, $data);

2
schedule/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
cache
cache.json

View File

@ -0,0 +1,135 @@
<?php
class SmartCurl {
protected static $etags = [];
protected $ch = null;
protected $cache_dir = __DIR__ . DIRECTORY_SEPARATOR . 'cache';
protected $cache_index;
protected $url_root = null;
public function __construct($url_root = null, $cache_dir = null) {
if (!is_null($cache_dir)) {
$this->cache_dir = __DIR__ . DIRECTORY_SEPARATOR . $cache_dir;
}
if (!file_exists($this->cache_dir)) {
mkdir($this->cache_dir, 0777, true);
}
$this->cache_index = $this->cache_dir . '.json';
$cache = file_exists($this->cache_index) ? file_get_contents($this->cache_index) : false;
if ($cache !== false) {
$cache = json_decode($cache, true);
}
if ($cache !== false) {
static::importEtags($cache);
}
if (!is_null($url_root)) {
$this->url_root = $url_root;
}
$ch = curl_init();
if ($ch === false) {
throw new Exception('curl init failed');
}
$this->ch = $ch;
if (curl_setopt_array($ch, [
CURLOPT_FAILONERROR => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
//CURLINFO_HEADER_OUT => true,
]) === false) {
throw new Exception('curl setopt failed');
}
}
public function __destruct() {
curl_close($this->ch);
file_put_contents($this->cache_index, json_encode(static::exportEtags()));
}
public static function importEtags(array $etags) {
static::$etags = array_merge(static::$etags, $etags);
}
public static function exportEtags() {
return static::$etags;
}
public function getUrl($filename) {
if (is_null($this->url_root)) {
$url = $filename;
}
else {
$url = $this->url_root . $filename;
}
if (curl_setopt($this->ch, CURLOPT_URL, $url) === false) {
throw new Exception('set url failed: ' . $url);
}
$cache_file = $this->cache_dir . DIRECTORY_SEPARATOR . str_replace('/', '@', $filename);
$etag = array_key_exists($url, static::$etags) && file_exists($cache_file) ? static::$etags[$url] : null;
if (curl_setopt($this->ch, CURLOPT_HTTPHEADER, [
'If-None-Match:' . (is_null($etag) ? '' : ' ' . $etag),
]) === false) {
throw new Exception('set etag failed: ' . $url);
}
$response = curl_exec($this->ch);
if ($response === false) {
if (file_exists($cache_file)) {
return file_get_contents($cache_file);
}
else {
return false;
}
}
//var_dump(curl_getinfo($this->ch, CURLINFO_HEADER_OUT));
//var_dump($response);
$header_size = curl_getinfo($this->ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$headers = array_filter(explode("\r\n", $header));
foreach ($headers as $header_line) {
if (stripos($header_line, 'etag:') === 0) {
static::$etags[$url] = trim(substr($header_line, strlen('etag:')));
}
}
$http_code = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
if ($http_code === 304 && !is_null($this->url_root)) {
// use cache
if (file_exists($cache_file)) {
return file_get_contents($cache_file);
}
else {
return false;
}
}
if (strlen($response) === $header_size) {
return false;
}
$body = substr($response, $header_size);
if ($http_code === 200) {
file_put_contents($cache_file, $body);
}
return $body;
}
}

101
schedule/config.php Normal file
View File

@ -0,0 +1,101 @@
<?php
function getSchedConfig($year = 2017) {
$globalConfig = [
'lang' => 'bg',
'cfp_url' => 'https://cfp.openfest.org',
'cut_len' => 70,
'hidden_speakers' => [4],
'hidden_language_tracks' => [],
];
$config = [
2014 => [
'conferenceId' => 1,
'eventTypes' => [
'lecture' => 1,
'workshop' => 2,
],
],
2015 => [
'conferenceId' => 2,
'eventTypes' => [
'lecture' => 3,
'workshop' => 4,
],
'hidden_language_tracks' => [16],
],
2016 => [
'conferenceId' => 3,
'eventTypes' => [
'lecture' => 5,
'workshop' => 6,
],
'hidden_language_tracks' => [25],
],
2017 => [
'conferenceId' => 4,
'eventTypes' => [
'lecture' => 7,
'workshop' => 8,
],
'hidden_language_tracks' => [34],
],
2018 => [
'conferenceId' => 5,
'eventTypes' => [
'lecture' => 10,
'workshop' => 9,
],
'hidden_language_tracks' => [42],
],
2019 => [
'conferenceId' => 6,
'eventTypes' => [
'lecture' => 12,
'workshop' => 11,
],
'hidden_language_tracks' => [50],
],
2020 => [
'conferenceId' => 7,
'eventTypes' => [
'lecture' => 14,
],
'hidden_language_tracks' => [59],
],
2021 => [
'conferenceId' => 8,
'eventTypes' => [
'lecture' => 16,
'workshop' => 15,
],
'hidden_language_tracks' => [66],
],
2022 => [
'conferenceId' => 9,
'eventTypes' => [
'lecture' => 18,
'workshop' => 17,
],
'hidden_language_tracks' => [73],
],
2023 => [
'conferenceId' => 10,
'eventTypes' => [
'lecture' => 20,
'workshop' => 19,
],
'hidden_language_tracks' => [78],
],
2024 => [
'conferenceId' => 11,
'eventTypes' => [
'lecture' => 24,
'workshop' => 23,
],
'hidden_language_tracks' => [83],
],
];
return array_merge($globalConfig, $config[$year]);
}

39
schedule/index.php Normal file
View File

@ -0,0 +1,39 @@
<?php
error_reporting(~0);
ini_set('display_errors', 1);
$requirePath = __DIR__ . DIRECTORY_SEPARATOR;
require $requirePath . 'class.SmartCurl.php';
require $requirePath . 'config.php';
require $requirePath . 'load.php';
require $requirePath . 'parse.php';
$sched_config = getSchedConfig(date('Y'));
$data = loadData($sched_config);
$sched_config['filterEventType'] = array_key_exists('event_type', $_GET) ? $_GET['event_type'] : null;
$content = parseData($sched_config, $data);
?>
<html>
<head>
<title>Test schedule</title>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="http://www.openfest.org/2014/wp-content/themes/initfest/style.css" />
</head>
<body>
<?php
echo $content['schedule'];
?>
<div class="separator"></div>
<table border="1">
<tbody>
<?php
echo $content['legend'], PHP_EOL;
?>
</tbody>
</table>
<?php
echo $content['fulltalks'];
echo $content['gspk'];
echo $content['fspk'];
?>
</body>
</html>

51
schedule/interlude.php Normal file
View File

@ -0,0 +1,51 @@
<?php
$requirePath = __DIR__ . DIRECTORY_SEPARATOR;
require $requirePath . 'class.SmartCurl.php';
require $requirePath . 'config.php';
require $requirePath . 'load.php';
require $requirePath . 'parse.php';
$sched_config = getSchedConfig();
$data = loadData($sched_config);
$sched_config['filterEventType'] = 'lecture';
$content = parseData($sched_config, $data);
header('Content-Type:application/json; charset=utf-8');
header('Cache-Control:max-age=0, private, must-revalidate');
header('Access-Control-Allow-Origin: *');
$events = array_map(function($hallData) use ($data) {
return array_map(function($event) use ($data) {
unset($event['hall_id']);
if (!array_key_exists($event['event_id'], $data['events'])) {
unset($event['event_id']);
return $event;
}
$eventData = &$data['events'][$event['event_id']];
$event['title'] = $eventData['title'];
$event['speakers'] = array_map(function($speaker_id) use ($data) {
if (!array_key_exists($speaker_id, $data['speakers'])) {
return [];
}
$speakerData = &$data['speakers'][$speaker_id];
return [
'name' => $speakerData['first_name'] . ' ' . $speakerData['last_name'],
'description' => $speakerData['biography'],
];
}, array_filter($eventData['participant_user_ids'], function($speaker_id) {
return !in_array($speaker_id, [4]);
}));
unset($event['event_id']);
return $event;
}, $hallData);
}, $content['slots']);
echo json_encode($events);

65
schedule/load.php Normal file
View File

@ -0,0 +1,65 @@
<?php
function compareKeys($a, $b, $key) {
$valA = &$a[$key];
$valB = &$b[$key];
return ($valA < $valB) ? -1 : (($valA > $valB) ? 1 : 0);
}
function loadData($config) {
$filenames = [
'events' => 'events.json',
'speakers' => 'speakers.json',
'tracks' => 'tracks.json',
'event_types' => 'event_types.json',
'halls' => 'halls.json',
'slots' => 'slots.json',
];
$data = [];
$curl = new SmartCurl($config['cfp_url'] . '/api/conferences/');
foreach ($filenames as $name => $filename) {
$json = $curl->getUrl($config['conferenceId'] . '/' . $filename);
if ($json === false) {
#echo 'get failed: ', $filename, PHP_EOL;
return false;
exit;
}
$decoded = json_decode($json, true);
if ($decoded === false) {
echo 'decode failed: ', $filename, PHP_EOL;
exit;
}
$add = true;
switch ($name) {
case 'halls':
$decoded = array_map(function($el) {
return $el['name'];
}, $decoded);
break;
case 'slots':
$decoded = array_map(function($el) {
foreach (['starts_at', 'ends_at'] as $key) {
$el[$key] = strtotime($el[$key]);
}
return $el;
}, $decoded);
break;
}
$data[$name] = $decoded;
}
uasort($data['slots'], function($a, $b) {
return compareKeys($a, $b, 'starts_at') ?: compareKeys($a, $b, 'hall_id');
});
return $data;
}

435
schedule/parse.php Normal file
View File

@ -0,0 +1,435 @@
<?php
$strftimeDeprecated = version_compare(PHP_VERSION, '8.1.0', '>=');
if ($strftimeDeprecated) {
require 'php-8.1-strftime.php';
}
$strftime = function (...$args) {
global $strftimeDeprecated;
return $strftimeDeprecated ? PHP81_BC\strftime(...$args) : \strftime(...$args);
};
function parseData($config, $data) {
global $strftime;
$languages = array(
'en' => array(
'name' => 'English',
'locale' => 'en_US.UTF8'
),
'bg' => array(
'name' => 'Български',
'locale' => 'bg_BG.UTF8'
)
);
if ($data === false) return false;
$halls = $data['halls'];
ksort($halls);
// We need to set these so we actually parse properly the dates. WP fucks up both.
date_default_timezone_set('Europe/Sofia');
setlocale(LC_TIME, $languages[$config['lang']]['locale']);
// Filter out invalid slots
$data['slots'] = array_filter($data['slots'], function($slot) {
return isset($slot['starts_at'], $slot['ends_at'], $slot['hall_id'], $slot['event_id']);
});
// Collect the slots for each hall, sort them in order of starting
$slots = [];
$timestamps = [];
$filtered_type_id =
array_key_exists('filterEventType', $config) &&
array_key_exists($config['filterEventType'], $config['eventTypes']) ?
$config['eventTypes'][$config['filterEventType']] :
null;
foreach ($halls as $hall_id => $hall) {
$slots[$hall_id] = [];
foreach ($data['slots'] as $slot_id => $slot) {
if ($slot['hall_id'] !== $hall_id) {
continue;
}
$eid = $slot['event_id'];
$etype = $data['events'][$eid]['event_type_id'];
if ($etype !== $filtered_type_id && !is_null($filtered_type_id)) {
continue;
}
if (!in_array($slot['starts_at'], $timestamps)) {
$timestamps[] = $slot['starts_at'];
}
if (!in_array($slot['ends_at'], $timestamps)) {
$timestamps[] = $slot['ends_at'];
}
$slots[$hall_id][$slot['starts_at']] = $slot;
}
ksort($slots[$hall_id]);
if (empty($slots[$hall_id])) unset($slots[$hall_id]);
}
sort($timestamps);
// Find all microslots (the smallest time unit)
$microslots = [];
$lastTs = 0;
$first = true;
foreach ($timestamps as $ts) {
if ($first) {
$lastTs = $ts;
$first = false;
continue;
}
if (date('d.m', $lastTs) !== date('d.m', $ts)) {
$lastTs = $ts;
continue;
}
$microslots[] = [$lastTs, $ts];
$lastTs = $ts;
}
// Fill in the event ID for each time slot in each hall
$events = [];
foreach ($halls as $hall_id => $hall) {
$hall_data = [];
foreach ($microslots as $timestamps) {
$found = false;
foreach ($data['slots'] as $slot_id => $slot) {
if (
$slot['hall_id'] === $hall_id &&
$slot['starts_at'] <= $timestamps[0] &&
$slot['ends_at'] >= $timestamps[1] &&
array_key_exists($slot['event_id'], $data['events'])
) {
if (!is_null($filtered_type_id)) {
if ($data['events'][$slot['event_id']]['event_type_id'] !== $filtered_type_id) {
continue;
}
}
$found = true;
$hall_data[] = [
'event_id' => $slot['event_id'],
'hall_id' => $slot['hall_id'],
'edge' => $slot['starts_at'] === $timestamps[0] || $slot['ends_at'] === $timestamps[1],
];
break;
}
}
if (!$found) {
$hall_data[] = null;
}
}
$events[$hall_id] = $hall_data;
}
// Remove halls with no events after filtering
foreach ($events as $i => $event) {
$hasEvents = false;
foreach ($event as $event_info) {
if (!is_null($event_info)) {
$hasEvents = true;
break;
}
}
if (!$hasEvents) {
unset($events[$i]);
}
}
// Transpose the matrix
// rows->halls, cols->timeslots ===> rows->timeslots, cols->halls
$events = array_map(null, ...$events);
// Filter empty slots
foreach($events as $i => $event) {
$hall_count = count($event);
$hasEvents = false;
for ($j = 0; $j < $hall_count; ++$j) {
if (!is_null($event[$j]) && $event[$j]['edge']) {
$hasEvents = true;
continue 2;
}
}
if (!$hasEvents) {
unset($events[$i]);
}
}
// Merge events longer than one slot
$prevEventId = [];
$prevEventSlot = [];
$prevSlotIndex = 0;
$first = true;
foreach ($events as $slot_index => &$events_data) {
if ($first) {
$prevEventId = array_map(function($event_info) {
return is_null($event_info) ? null : $event_info['event_id'];
}, $events_data);
$prevEventSlot = array_fill(0, count($events_data), null);
$prevSlotIndex = $slot_index;
$first = false;
continue;
}
foreach ($events_data as $hall_index => &$event_info) {
if (is_null($event_info)) {
$prevEventId[$hall_index] = null;
$prevEventSlot[$hall_index] = null;
continue;
}
if ($event_info['event_id'] !== $prevEventId[$hall_index]) {
$prevEventId[$hall_index] = $event_info['event_id'];
$prevEventSlot[$hall_index] = null;
continue;
}
// We have a long event
if (is_null($prevEventSlot[$hall_index])) {
$prevEventSlot[$hall_index] = $prevSlotIndex;
}
$masterSlotIndex = $prevEventSlot[$hall_index];
// check if the events spans on the next day
if (date('d.m', $microslots[$slot_index][0]) !== date('d.m', $microslots[$masterSlotIndex][1])) {
// not sure why this is needed, but it fixes things
$prevEventSlot[$hall_index] = null;
continue;
}
$master_slot = &$events[$masterSlotIndex][$hall_index];
if (!array_key_exists('rowspan', $master_slot)) {
$master_slot['rowspan'] = 2;
}
else {
++$master_slot['rowspan'];
}
unset($master_slot);
$event_info = false;
}
unset($event_info);
$prevSlotIndex = $slot_index;
}
unset($events_data);
// Build the HTML
$schedule_body = '';
$lastTs = 0;
$fulltalks = '';
$hall_ids = [];
$now = time();
$known_events = array();
foreach ($events as $slot_index => $events_data) {
$columns = [];
if (date('d.m', $microslots[$slot_index][0]) !== date('d.m', $lastTs)) {
$schedule_body .= '<tr><th colspan="' . (count($events_data) + 1) . '">' . $strftime('%d %B - %A', $microslots[$slot_index][0]) . '</th></tr>';
}
$lastTs = $microslots[$slot_index][0];
$lastEventId = 0;
$colspan = 1;
foreach ($events_data as $event_info) {
if ($event_info === false) {
continue;
}
if (is_null($event_info) || is_null($event_info['event_id'])) {
$columns[] = '<td>&nbsp;</td>';
continue;
}
if (!in_array($event_info['hall_id'], $hall_ids)) {
$hall_ids[] = $event_info['hall_id'];
}
$eid = &$event_info['event_id'];
$event = &$data['events'][$eid];
# var_dump($microslots[$slot_index]);
$title = mb_substr($event['title'], 0, $config['cut_len']) . (mb_strlen($event['title']) > $config['cut_len'] ? '...' : '');
$speakers = '';
if (count($event['participant_user_ids']) > 0) {
$spk = [];
foreach ($event['participant_user_ids'] as $uid) {
if (in_array($uid, $config['hidden_speakers']) || empty($data['speakers'][$uid])) {
continue;
}
$speaker = $data['speakers'][$uid];
$name = $speaker['first_name'] . ' ' . $speaker['last_name'];
$organisation = empty($speaker['organisation']) ? '' :
('<br>/&#8288;' . $speaker['organisation'] . '&#8288;/');
$spk[] = '<a class="vt-p" href="#' . $name . '">' . $name . '</a>' . $organisation;
}
$speakers = implode (', ', $spk);
}
if ($microslots[$slot_index][0] < $now) {
// talk has already started. Provide feedback links
$fullfb = '<p align=right><strong><a href="https://cfp.openfest.org/events/' . $eid . '/feedback/new">'.pll__('Submit feedback').'</a></strong></p>';
$progfb = '<p><i><a href="https://cfp.openfest.org/events/' . $eid . '/feedback/new">'.pll__('Submit feedback').'</a></i></p>';
} else {
$fullfb = "";
$progfb = "";
}
$content = '<a href="#lecture-' . $eid . '">' . htmlspecialchars($title) . '</a><br>' . $speakers;
if (!isset($known_events[$eid])) {
//if (!in_array($data['events'][$event_info['event_id']]['track_id'], $config['hidden_language_tracks']) && !isset($known_events[$eid])) {
$fulltalks .= '<section id="lecture-' . $eid . '">';
// We don't want '()' when we don't have a speaker name
$fulltalk_spkr = strlen($speakers) > 0 ? (' (' . $speakers . ')') : '';
$fulltalks .= '<p><strong>' . htmlentities($event['title']) . ' ' . $fulltalk_spkr . '</strong></p>';
$fulltalks .= '<p>' . htmlentities($event['abstract']) . '</p>';
$fulltalks .= $fullfb;
$fulltalks .= '<div class="separator"></div></section>';
$known_events[$eid] = $eid;
}
if ($eid === $lastEventId) {
array_pop($columns);
++$colspan;
}
else {
$colspan = 1;
}
$rowspan = array_key_exists('rowspan', $event_info) ? (' rowspan="' . $event_info['rowspan'] . '"') : '';
// CSS
$cssClasses = [];
if (!in_array($event['track_id'], $config['hidden_language_tracks'])) {
$cssClasses[] = 'schedule-' . $event['language'];
}
$cssClass = $data['tracks'][$event['track_id']]['css_class'];
if (strlen($cssClass) > 0) {
$cssClasses[] = $cssClass;
}
$cssClasses = count($cssClasses) > 0 ? (' class="' . implode(' ', $cssClasses) . '"') : '';
// Render cell
$columns[] = '<td' . ($colspan > 1 ? ' colspan="' . $colspan . '"' : $rowspan) . $cssClasses . '>' . $content . $progfb . '</td>';
$lastEventId = $eid;
unset($eid, $event);
}
$schedule_body .= '<tr><td>';
$schedule_body .= date('H:i', $microslots[$slot_index][0]) . ' - ' . date('H:i', $microslots[$slot_index][1]);
$schedule_body .= '</td>';
$schedule_body .= implode('', $columns);
$schedule_body .= '</tr>';
}
$schedule = '<table cellpadding="0" cellspacing="0" style="text-align: center;" class="schedule"><thead><tr><th></th>';
foreach ($halls as $hall_id => $hall) {
if (!in_array($hall_id, $hall_ids)) {
continue;
}
$schedule .= '<th>' . $hall[$config['lang']] . '</th>';
}
$schedule .= '</tr></thead><tbody>';
$schedule .= $schedule_body;
$schedule .= '</tbody></table>';
// Create the legend
$legend = '';
foreach($data['tracks'] as $track_id => $track) {
if ( in_array($track_id, $config['hidden_language_tracks'])) {
continue;
}
$legend .= '<tr><td class="' . $track['css_class'] . '">' . $track['name'][$config['lang']] . '</td></tr>';
}
foreach ($languages as $code => $lang) {
$legend .= '<tr><td class="schedule-' . $code . '">' . $lang['name'] . '</td></tr>';
}
// Speaker list
$gspk = '<div class="grid members">';
$fspk = '';
$types = [
'twitter' => [
'class' => 'twitter',
'url' => 'https://twitter.com/',
],
'github' => [
'class' => 'github',
'url' => 'https://github.com/',
],
'email' => [
'class' => 'envelope',
'url' => 'mailto:',
],
];
foreach ($data['speakers'] as $speaker) {
$name = $speaker['first_name'] . ' ' . $speaker['last_name'];
$gspk .= '<div class="member col4">';
$gspk .= '<a href="#' . $name . '">';
$gspk .= '<img width="100" height="100" src="' . $speaker['picture'] . '" class="attachment-100x100 wp-post-image" alt="' . $name . '" />';
$gspk .= '</a> </div>';
$fspk .= '<div class="speaker" id="' . $name . '">';
$fspk .= '<img width="100" height="100" src="' . $speaker['picture'] . '" class="attachment-100x100 wp-post-image" alt="' . $name . '" />';
$fspk .= '<h3>' . $name . '</h3>';
$fspk .= '<div class="icons">';
foreach ($types as $type => $param) {
if (!empty($speaker[$type])) {
$fspk .= '<a href="' . $param['url'] . $speaker[$type] . '"><i class="fa fa-' . $param['class'] . '"></i></a>';
}
}
$fspk .= '</div>';
$fspk .= '<p>' . htmlentities($speaker['biography']) . '</p>';
$fspk .= '</div><div class="separator"></div>';
}
$gspk .= '</div>';
return compact('slots', 'schedule', 'fulltalks', 'gspk', 'fspk', 'legend');
}

View File

@ -0,0 +1,217 @@
<?php
namespace PHP81_BC;
use DateTime;
use DateTimeZone;
use DateTimeInterface;
use Exception;
use IntlDateFormatter;
use IntlGregorianCalendar;
use InvalidArgumentException;
/**
* Locale-formatted strftime using IntlDateFormatter (PHP 8.1 compatible)
* This provides a cross-platform alternative to strftime() for when it will be removed from PHP.
* Note that output can be slightly different between libc sprintf and this function as it is using ICU.
*
* Usage:
* use function \PHP81_BC\strftime;
* echo strftime('%A %e %B %Y %X', new \DateTime('2021-09-28 00:00:00'), 'fr_FR');
*
* Original use:
* \setlocale(LC_TIME, 'fr_FR.UTF-8');
* echo \strftime('%A %e %B %Y %X', strtotime('2021-09-28 00:00:00'));
*
* @param string $format Date format
* @param integer|string|DateTime $timestamp Timestamp
* @return string
* @author BohwaZ <https://bohwaz.net/>
*/
function strftime (string $format, $timestamp = null, ?string $locale = null) : string {
if (!($timestamp instanceof DateTimeInterface)) {
$timestamp = is_int($timestamp) ? '@' . $timestamp : (string) $timestamp;
try {
$timestamp = new DateTime($timestamp);
} catch (Exception $e) {
throw new InvalidArgumentException('$timestamp argument is neither a valid UNIX timestamp, a valid date-time string or a DateTime object.', 0, $e);
}
}
$timestamp->setTimezone(new DateTimeZone(date_default_timezone_get()));
if (empty($locale)) {
// get current locale
$locale = setlocale(LC_TIME, '0');
}
// remove trailing part not supported by ext-intl locale
$locale = preg_replace('/[^\w-].*$/', '', $locale);
$intl_formats = [
'%a' => 'EEE', // An abbreviated textual representation of the day Sun through Sat
'%A' => 'EEEE', // A full textual representation of the day Sunday through Saturday
'%b' => 'MMM', // Abbreviated month name, based on the locale Jan through Dec
'%B' => 'MMMM', // Full month name, based on the locale January through December
'%h' => 'MMM', // Abbreviated month name, based on the locale (an alias of %b) Jan through Dec
];
$intl_formatter = function (DateTimeInterface $timestamp, string $format) use ($intl_formats, $locale) {
$tz = $timestamp->getTimezone();
$date_type = IntlDateFormatter::FULL;
$time_type = IntlDateFormatter::FULL;
$pattern = '';
switch ($format) {
// %c = Preferred date and time stamp based on locale
// Example: Tue Feb 5 00:45:10 2009 for February 5, 2009 at 12:45:10 AM
case '%c':
$date_type = IntlDateFormatter::LONG;
$time_type = IntlDateFormatter::SHORT;
break;
// %x = Preferred date representation based on locale, without the time
// Example: 02/05/09 for February 5, 2009
case '%x':
$date_type = IntlDateFormatter::SHORT;
$time_type = IntlDateFormatter::NONE;
break;
// Localized time format
case '%X':
$date_type = IntlDateFormatter::NONE;
$time_type = IntlDateFormatter::MEDIUM;
break;
default:
$pattern = $intl_formats[$format];
}
// In October 1582, the Gregorian calendar replaced the Julian in much of Europe, and
// the 4th October was followed by the 15th October.
// ICU (including IntlDateFormattter) interprets and formats dates based on this cutover.
// Posix (including strftime) and timelib (including DateTimeImmutable) instead use
// a "proleptic Gregorian calendar" - they pretend the Gregorian calendar has existed forever.
// This leads to the same instants in time, as expressed in Unix time, having different representations
// in formatted strings.
// To adjust for this, a custom calendar can be supplied with a cutover date arbitrarily far in the past.
$calendar = IntlGregorianCalendar::createInstance();
$calendar->setGregorianChange(PHP_INT_MIN);
return (new IntlDateFormatter($locale, $date_type, $time_type, $tz, $calendar, $pattern))->format($timestamp);
};
// Same order as https://www.php.net/manual/en/function.strftime.php
$translation_table = [
// Day
'%a' => $intl_formatter,
'%A' => $intl_formatter,
'%d' => 'd',
'%e' => function ($timestamp) {
return sprintf('% 2u', $timestamp->format('j'));
},
'%j' => function ($timestamp) {
// Day number in year, 001 to 366
return sprintf('%03d', $timestamp->format('z')+1);
},
'%u' => 'N',
'%w' => 'w',
// Week
'%U' => function ($timestamp) {
// Number of weeks between date and first Sunday of year
$day = new DateTime(sprintf('%d-01 Sunday', $timestamp->format('Y')));
return sprintf('%02u', 1 + ($timestamp->format('z') - $day->format('z')) / 7);
},
'%V' => 'W',
'%W' => function ($timestamp) {
// Number of weeks between date and first Monday of year
$day = new DateTime(sprintf('%d-01 Monday', $timestamp->format('Y')));
return sprintf('%02u', 1 + ($timestamp->format('z') - $day->format('z')) / 7);
},
// Month
'%b' => $intl_formatter,
'%B' => $intl_formatter,
'%h' => $intl_formatter,
'%m' => 'm',
// Year
'%C' => function ($timestamp) {
// Century (-1): 19 for 20th century
return floor($timestamp->format('Y') / 100);
},
'%g' => function ($timestamp) {
return substr($timestamp->format('o'), -2);
},
'%G' => 'o',
'%y' => 'y',
'%Y' => 'Y',
// Time
'%H' => 'H',
'%k' => function ($timestamp) {
return sprintf('% 2u', $timestamp->format('G'));
},
'%I' => 'h',
'%l' => function ($timestamp) {
return sprintf('% 2u', $timestamp->format('g'));
},
'%M' => 'i',
'%p' => 'A', // AM PM (this is reversed on purpose!)
'%P' => 'a', // am pm
'%r' => 'h:i:s A', // %I:%M:%S %p
'%R' => 'H:i', // %H:%M
'%S' => 's',
'%T' => 'H:i:s', // %H:%M:%S
'%X' => $intl_formatter, // Preferred time representation based on locale, without the date
// Timezone
'%z' => 'O',
'%Z' => 'T',
// Time and Date Stamps
'%c' => $intl_formatter,
'%D' => 'm/d/Y',
'%F' => 'Y-m-d',
'%s' => 'U',
'%x' => $intl_formatter,
];
$out = preg_replace_callback('/(?<!%)%([_#-]?)([a-zA-Z])/', function ($match) use ($translation_table, $timestamp) {
$prefix = $match[1];
$char = $match[2];
$pattern = '%'.$char;
if ($pattern === '%n') {
return "\n";
} elseif ($pattern === '%t') {
return "\t";
}
if (!isset($translation_table[$pattern])) {
throw new InvalidArgumentException(sprintf('Format "%s" is unknown in time format', $pattern));
}
$replace = $translation_table[$pattern];
if (is_string($replace)) {
$result = $timestamp->format($replace);
} else {
$result = $replace($timestamp, $pattern);
}
switch ($prefix) {
case '_':
// replace leading zeros with spaces but keep last char if also zero
return preg_replace('/\G0(?=.)/', ' ', $result);
case '#':
case '-':
// remove leading zeros but keep last char if also zero
return preg_replace('/^0+(?=.)/', '', $result);
}
return $result;
}, $format);
$out = str_replace('%%', '%', $out);
return $out;
}

View File

@ -1,8 +1,10 @@
<div class="col-right"> <div class="col-right sponsors-frontpage">
<h3><?php pll_e('1-ви и 2-ри ноември 2014 г.');?> <br /> <?php pll_e('Интерпред, София, България');?></h3> <h3><?php pll_e('EVENT_TIME');?> <br /> <?php pll_e('VENUE_LOCATION');?></h3>
<div class="separator"></div> <div class="separator"></div>
<?php echo do_shortcode( '[sponsors]' ); ?> <?php echo do_shortcode( '[sponsors]' ); ?>
<div class="separator"></div> <div class="separator"></div>
<?php echo do_shortcode( '[partners]' ); ?>
<div class="separator"></div>
<?php echo do_shortcode( '[transport]' ); ?> <?php echo do_shortcode( '[transport]' ); ?>
</div> </div>