diff --git a/404.cn.html b/404.cn.html deleted file mode 100644 index c748d6c2..00000000 --- a/404.cn.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default -lang: cn ---- - -
-

404

-
- 喔~~~ -
- 知识的荒原~~~ -
-
- 回到主页 -
\ No newline at end of file diff --git a/404.html b/404.html deleted file mode 100644 index 35ee8045..00000000 --- a/404.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -lang: en ---- - -
-

404 ERROR

- Caution: Due to changing URL, some posts haven't crawled by Google yet, PLEASE go to the homepage to find out more - I'm SORRY.
- It's not in the inventory.
- Don't be angry.
- It may be renamed with glory.
- Or died in the binary.
-
- Back to Home -
diff --git a/Gemfile b/Gemfile deleted file mode 100644 index fb057680..00000000 --- a/Gemfile +++ /dev/null @@ -1,13 +0,0 @@ -source 'https://rubygems.org' -ruby '2.2.5' -gem 'bundler','1.14.3' -gem 'execjs','2.6.0' -gem 'json', '1.8.3' -gem 'kramdown', '1.5.0' -gem 'yajl-ruby', '1.2.1' -gem 'pygments.rb','0.6.3' -gem 'redcarpet', '3.3.2' -gem 'github-pages', '39', group: :jekyll_plugins -gem 'jekyll-multiple-languages', '1.0.11' -gem 'jekyll-sitemap', '0.8.1' -gem 'rouge' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index ae02fecf..00000000 --- a/Gemfile.lock +++ /dev/null @@ -1,165 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - RedCloth (4.2.9) - activesupport (5.2.0) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - addressable (2.4.0) - blankslate (2.1.2.4) - classifier-reborn (2.2.0) - fast-stemmer (~> 1.0) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.12.2) - colorator (0.1) - concurrent-ruby (1.0.5) - ethon (0.11.0) - ffi (>= 1.3.0) - execjs (2.6.0) - faraday (0.15.0) - multipart-post (>= 1.2, < 3) - fast-stemmer (1.0.2) - ffi (1.9.23) - gemoji (2.1.0) - github-pages (39) - RedCloth (= 4.2.9) - github-pages-health-check (~> 0.2) - jekyll (= 2.4.0) - jekyll-coffeescript (= 1.0.1) - jekyll-feed (= 0.3.1) - jekyll-mentions (= 0.2.1) - jekyll-redirect-from (= 0.8.0) - jekyll-sass-converter (= 1.3.0) - jekyll-sitemap (= 0.8.1) - jemoji (= 0.5.0) - kramdown (= 1.5.0) - liquid (= 2.6.2) - maruku (= 0.7.0) - mercenary (~> 0.3) - pygments.rb (= 0.6.3) - rdiscount (= 2.1.7) - redcarpet (= 3.3.2) - terminal-table (~> 1.4) - github-pages-health-check (0.6.1) - addressable (~> 2.3) - net-dns (~> 0.8) - public_suffix (~> 1.4) - typhoeus (~> 0.7) - html-pipeline (1.9.0) - activesupport (>= 2) - nokogiri (~> 1.4) - i18n (1.0.1) - concurrent-ruby (~> 1.0) - jekyll (2.4.0) - classifier-reborn (~> 2.0) - colorator (~> 0.1) - jekyll-coffeescript (~> 1.0) - jekyll-gist (~> 1.0) - jekyll-paginate (~> 1.0) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 2.6.1) - mercenary (~> 0.3.3) - pygments.rb (~> 0.6.0) - redcarpet (~> 3.1) - safe_yaml (~> 1.0) - toml (~> 0.1.0) - jekyll-coffeescript (1.0.1) - coffee-script (~> 2.2) - jekyll-feed (0.3.1) - jekyll-gist (1.5.0) - octokit (~> 4.2) - jekyll-mentions (0.2.1) - html-pipeline (~> 1.9.0) - jekyll (~> 2.0) - jekyll-multiple-languages (1.0.11) - jekyll-paginate (1.1.0) - jekyll-redirect-from (0.8.0) - jekyll (>= 2.0) - jekyll-sass-converter (1.3.0) - sass (~> 3.2) - jekyll-sitemap (0.8.1) - jekyll-watch (1.5.1) - listen (~> 3.0) - jemoji (0.5.0) - gemoji (~> 2.0) - html-pipeline (~> 1.9) - jekyll (>= 2.0) - json (1.8.3) - kramdown (1.5.0) - liquid (2.6.2) - listen (3.1.5) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) - maruku (0.7.0) - mercenary (0.3.6) - mini_portile2 (2.3.0) - minitest (5.11.3) - multipart-post (2.0.0) - net-dns (0.8.0) - nokogiri (1.8.2) - mini_portile2 (~> 2.3.0) - octokit (4.9.0) - sawyer (~> 0.8.0, >= 0.5.3) - parslet (1.5.0) - blankslate (~> 2.0) - posix-spawn (0.3.13) - public_suffix (1.5.3) - pygments.rb (0.6.3) - posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.2.0) - rb-fsevent (0.10.3) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) - rdiscount (2.1.7) - redcarpet (3.3.2) - rouge (3.1.1) - ruby_dep (1.5.0) - safe_yaml (1.0.4) - sass (3.5.6) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) - toml (0.1.2) - parslet (~> 1.5.0) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.5) - thread_safe (~> 0.1) - unicode-display_width (1.3.2) - yajl-ruby (1.2.1) - -PLATFORMS - ruby - -DEPENDENCIES - bundler (= 1.14.3) - execjs (= 2.6.0) - github-pages (= 39) - jekyll-multiple-languages (= 1.0.11) - jekyll-sitemap (= 0.8.1) - json (= 1.8.3) - kramdown (= 1.5.0) - pygments.rb (= 0.6.3) - redcarpet (= 3.3.2) - rouge - yajl-ruby (= 1.2.1) - -RUBY VERSION - ruby 2.2.5p319 - -BUNDLED WITH - 1.14.3 diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 5df5828d..00000000 --- a/_config.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Site settings -title: PwzXxm -email: cepheidfov@gmail.com -description: Learning and sharing computer science ideas. Enjoy what you are passionated about. -baseurl: "" # the subpath of your site, e.g. /blog -url: "https://www.pwzxxm.com" # the base hostname & protocol for your site -github_username: PwzXxm -exclude: ["README.md"] -gems: -- jekyll-multiple-languages -- jekyll-sitemap -- jekyll-paginate -- jekyll-redirect-from - -# multi-lang -languages: ['en', 'cn'] -# If not config, the first of languages will be the default -language_default: 'en' -fill_default_content: true -sass: - style: compressed - -# pagination -paginate: 10 - -# Build settings -markdown: redcarpet-pygments -# markdown: redcarpet -redcarpet: - extensions: ["tables", "no_intra_emphasis", "autolink", "fenced_code_blocks", "with_toc_data"] -highlighter: pygments -permalink: /:year/:title/ diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index e3ce6808..00000000 --- a/_includes/footer.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - diff --git a/_includes/google_adsense.html b/_includes/google_adsense.html deleted file mode 100644 index c13d77b3..00000000 --- a/_includes/google_adsense.html +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/_includes/google_analytics.html b/_includes/google_analytics.html deleted file mode 100644 index c6a547c9..00000000 --- a/_includes/google_analytics.html +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/_includes/head.html b/_includes/head.html deleted file mode 100644 index 52af6957..00000000 --- a/_includes/head.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - {% if page.title %}{{ page.title }} | PwzXxm {% else %} PwzXxm - Computer Programming Blog{% endif %} - - - - {% include google_analytics.html %} - - - - - - - - - - - - - {% if page.is_default_language %} - - {% else %} - - {% endif %} - - - - - - - diff --git a/_includes/header.html b/_includes/header.html deleted file mode 100644 index a32d4739..00000000 --- a/_includes/header.html +++ /dev/null @@ -1,111 +0,0 @@ - - - diff --git a/_includes/icon-email.html b/_includes/icon-email.html deleted file mode 100644 index 024540b6..00000000 --- a/_includes/icon-email.html +++ /dev/null @@ -1,6 +0,0 @@ - - - {% include icon-email.svg %} - - Email - diff --git a/_includes/icon-email.svg b/_includes/icon-email.svg deleted file mode 100644 index 5d6f828e..00000000 --- a/_includes/icon-email.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/_includes/icon-github.html b/_includes/icon-github.html deleted file mode 100644 index e813b415..00000000 --- a/_includes/icon-github.html +++ /dev/null @@ -1,8 +0,0 @@ - - - {% include icon-github.svg %} - - - Github - - diff --git a/_includes/icon-github.svg b/_includes/icon-github.svg deleted file mode 100644 index 4422c4f5..00000000 --- a/_includes/icon-github.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/_includes/icon-rss.html b/_includes/icon-rss.html deleted file mode 100644 index 9dd18a83..00000000 --- a/_includes/icon-rss.html +++ /dev/null @@ -1,6 +0,0 @@ - - - {% include icon-rss.svg %} - - RSS - diff --git a/_includes/icon-rss.svg b/_includes/icon-rss.svg deleted file mode 100644 index 76344e89..00000000 --- a/_includes/icon-rss.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - diff --git a/_includes/image.html b/_includes/image.html deleted file mode 100644 index b0a89638..00000000 --- a/_includes/image.html +++ /dev/null @@ -1 +0,0 @@ -{{ include.image.alt }} \ No newline at end of file diff --git a/_includes/pagination.html b/_includes/pagination.html deleted file mode 100644 index e51d9976..00000000 --- a/_includes/pagination.html +++ /dev/null @@ -1,109 +0,0 @@ -{% assign limit = 7 %} -{% if site.paginate_limit %} - {% assign limit = site.paginate_limit %} -{% endif %} -{% assign limitmin = limit | minus: 2 %} -{% assign offset = limitmin | divided_by: 2 %} -{% assign limitprev = paginator.page | minus: offset %} -{% assign limitnext = paginator.page | plus: offset %} -{% assign totalpages = paginator.total_pages %} - -{% if limitprev <= 1 %} - {% assign limitprevfix = limitprev | minus: 1 %} - {% assign limitprev = 0 %} - {% assign limitnext = limitnext | minus: limitprevfix | plus: 1 %} -{% endif %} - -{% if limitnext >= totalpages %} - {% assign limitnextfix = totalpages | minus: limitnext | minus: 1 %} - {% assign limitnext = totalpages %} - {% assign limitprev = limitprev | plus: limitnextfix %} -{% endif %} - -{% assign dots_prev = limitprev | minus: 1 %} -{% assign dots_next = totalpages | minus: 1 %} -{% assign max_next = totalpages | minus: offset | minus: 1 %} - -{% if totalpages > limit %} - {% for count in (2..paginator.total_pages) %} - {% if count == dots_prev %} - {% assign indicator_first = ' pages-indicator--active' %} - {% endif %} - {% if count == dots_next and paginator.page < max_next %} - {% assign indicator_last = ' pages-indicator--active' %} - {% endif %} - {% if forloop.first %} - {% assign relative_first = paginator.page | minus: forloop.index | divided_by: 1 %} - {% endif %} - {% if forloop.last %} - {% assign relative_last = paginator.page | minus: forloop.index | replace: '-', '' | divided_by: 1 | plus: 1 %} - {% endif %} - {% endfor %} -{% endif %} - -{% if page.is_default_language %} -{% assign url_pre = '/' | replace: '//', '/' %} -{% else %} -{% assign url_pre = page.language | prepend: '/' | replace: '//', '/' %} -{% endif %} - -{% if totalpages != 1 %} - - - -{% endif %} diff --git a/_includes/sidebar-home.html b/_includes/sidebar-home.html deleted file mode 100644 index 12ec5142..00000000 --- a/_includes/sidebar-home.html +++ /dev/null @@ -1,25 +0,0 @@ - diff --git a/_includes/sidebar.html b/_includes/sidebar.html deleted file mode 100644 index f81e0928..00000000 --- a/_includes/sidebar.html +++ /dev/null @@ -1,54 +0,0 @@ - diff --git a/_layouts/about.html b/_layouts/about.html deleted file mode 100644 index b1becca2..00000000 --- a/_layouts/about.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default ---- - -
- - - -
- - {{ content }} - -
- -
diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index d5cfd7b0..00000000 --- a/_layouts/default.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - {% include head.html %} - - - {% include header.html %} -
-
- {{ content }} -
-
- {% include footer.html %} - - - diff --git a/_layouts/page.html b/_layouts/page.html deleted file mode 100644 index ce233ad7..00000000 --- a/_layouts/page.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- -
- -
-

{{ page.title }}

-
- -
- {{ content }} -
- -
diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index de989a6e..00000000 --- a/_layouts/post.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: default -comments: true ---- - -
- -
-

{{ page.title }}

- -
- -
- {{ content }} -
- -
- - - - - - - - - -

- -
- - \ No newline at end of file diff --git a/_plugins/redcarpet_pygments.rb b/_plugins/redcarpet_pygments.rb deleted file mode 100644 index 40fe2a5d..00000000 --- a/_plugins/redcarpet_pygments.rb +++ /dev/null @@ -1,89 +0,0 @@ -# Jekyll v1 made internal markdown converters. -# Here we change the module, allowing our custom parser to be used. -module Jekyll - module Converters - class Markdown < Converter - safe true - - highlighter_prefix "\n" - highlighter_suffix "\n" - - def setup - return if @setup - @parser = case @config['markdown'] - when 'redcarpet' - RedcarpetParser.new @config - when 'kramdown' - KramdownParser.new @config - when 'rdiscount' - RDiscountParser.new @config - when 'maruku' - MarukuParser.new @config - when 'redcarpet-pygments' # Hi! I'm a custom parser - RedcarpetPygmentsParser.new @config - else - STDERR.puts "Invalid Markdown processor: #{@config['markdown']}" - STDERR.puts " Valid options are [ maruku | rdiscount | kramdown | redcarpet-pygments ]" - raise FatalException.new("Invalid Markdown process: #{@config['markdown']}") - end - @setup = true - end - - def matches(ext) - rgx = '(' + @config['markdown_ext'].gsub(',','|') +')' - ext =~ Regexp.new(rgx, Regexp::IGNORECASE) - end - - def output_ext(ext) - ".html" - end - - def convert(content) - setup - @parser.convert(content) - end - end - end -end - -# Jekyll Parser as required in v1. -# Providing support for line numbering. -module Jekyll - module Converters - class Markdown - class RedcarpetPygmentsParser - def initialize(config) - require 'redcarpet' - require 'pygments' - - @config = config - @redcarpet_extensions = {} - @config['redcarpet']['extensions'].each { |e| @redcarpet_extensions[e.to_sym] = true } - - @renderer ||= Class.new(Redcarpet::Render::HTML) do - def block_code(code, lang) - lang = lang && lang.split.first || "text" - colorized = Pygments.highlight(code, :lexer => lang, :options => {:lineanchors => "line"}) # Add lineanchors for line numbers - colorized.sub(/
/, "
").sub(/<\/pre>/, "
") - end - - def codespan(code) - "#{code}" # Inline code custom class - end - end - rescue LoadError - STDERR.puts 'You are missing a library required for Markdown. Please run:' - STDERR.puts ' $ [sudo] gem install redcarpet' - raise FatalException.new("Missing dependency: redcarpet") - end - - def convert(content) - @redcarpet_extensions[:fenced_code_blocks] = !@redcarpet_extensions[:no_fenced_code_blocks] - @renderer.send :include, Redcarpet::Render::SmartyPants if @redcarpet_extensions[:smart] - markdown = Redcarpet::Markdown.new(@renderer.new(@redcarpet_extensions), @redcarpet_extensions) - markdown.render(content) - end - end - end - end -end diff --git a/_posts/2015/2015-12-12-the-story-about-the-blog.cn.md b/_posts/2015/2015-12-12-the-story-about-the-blog.cn.md deleted file mode 100644 index 26e8e3cc..00000000 --- a/_posts/2015/2015-12-12-the-story-about-the-blog.cn.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: post -title: "这个博客那些事" -date: 2015-12-12 -tags: [blog] -lang: cn -redirect_from: "/cn/the-story-about-the-blog/" ---- - -[PwzXxm](http://www.pwzxxm.com/cn/index.html)是我的第一个网站,也是第一个博客。一开始只知道一点点基本的HTML,后来一边学CSS,JavaScript,用[Jekyll](https://jekyllrb.com/)东拼西凑,花了7天时间,在2015年12月10日终于把它基本上都写完了。写完的时候真是感觉能内裤外穿一垛冲天。 - -关于建站的详细过程[点我]({{ site.baseurl }}/cn/2015/building-blog-jekyll/)。 - -原来我是在看算法,刷题做ACM和看C++的,后来看着看着卡住了,想了几天也没什么头绪。我一直想着想做个网站写点东西,就先留着坑,跑来开了这个新坑。在写的过程中,好多朋友给了设计上的建议,谢谢他们~(鞠躬) - -开这个博客,一个是想**自己理理思路**,想算法啊什么的如果能说得新手明白,那自己也应该理解得差不多了;还有就是**希望别人看了这个博客能有所收获吧**。因为很久以前看KMP(一个字符串匹配算法)的时候,刚开始真的是云里雾里,智商不够。后来看了好多别人写的文章,突然有一瞬间看着看着就觉得自己好像会了。谢谢那些无私写作发到博客里的大牛们,如果大牛们看见有哪写的不对的也希望能及时联系我,避免误人子弟。联系方式在每页的页脚都有显示。 - -大家一起加油!!! - -
- -![blog_story](/img/post/blog_story.jpg) diff --git a/_posts/2015/2015-12-12-the-story-about-the-blog.md b/_posts/2015/2015-12-12-the-story-about-the-blog.md deleted file mode 100644 index a1258b09..00000000 --- a/_posts/2015/2015-12-12-the-story-about-the-blog.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: post -title: "The Story About the Blog" -date: 2015-12-12 -lang : en -tags: [blog] -images: - - url: /img/post/blog_story.jpg -redirect_from: "/the-story-about-the-blog/" ---- - -[PwzXxm](http://www.pwzxxm.com) is my first blog and also my first website I have ever built. I knew only a little bit of HTML before I started this project. I learned CSS and JavaScript while I'm building the site. I also read a lot of source code and blog posts about how other people build their own site using [Jekyll](http://jekyllrb.com/). It took me seven days. Finally, on the 10th of December, 2015, the site went alive. - -Details about building the site, [click me]({{ site.baseurl }}/2015/building-blog-jekyll/). - -I was learning algorithms, c++ and practice ACM-ICPC but I stuck at graph theory and I did not have any progress on one particular problem for like three or four days. I always want to build a website and start writing some stuff. So I put other things aside and started to build this blog, and my friends give a lot of suggestions on the design of the website. Thank you. - -There are two reasons why I really want to start this blog. One is that **blogging helps me clear my thoughts.** For instance, if you can teach an algorithm to a man which is new to him and he can understand the algorithm very well as your explanation is clear, you should also already have a deep understanding on this algorithm. So another reason is that **I'm hoping someone can learn something from my blog.** There a story: one day, I was trying to learn KMP (a string search algorithm), I barely understand it. I read a lot of posts from other people's blog, watched youtube videos and tried to do it on a paper. Suddenly, I knew the concept behind it. Thanks for the guys sharing their ideas and thinkings. - -If anyone find any mistake on my blog, please feel free to contact me or leave a comment below the post. Contact details are shown on the footer on every pages of the blog. - -Let's learn together and sharing ideas! - -
- -![blog_story](/img/post/blog_story.jpg) diff --git a/_posts/2015/2015-12-15-building-blog-jekyll.cn.md b/_posts/2015/2015-12-15-building-blog-jekyll.cn.md deleted file mode 100644 index fbf80165..00000000 --- a/_posts/2015/2015-12-15-building-blog-jekyll.cn.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -layout: post -title: "使用Jekyll+Github Pages搭建博客" -date: 2015-12-15 -lang: cn -tags: [blog] -redirect_from: "/cn/building-blog-jekyll/" ---- - -## 为什么选择 Jekyll 和 Github Pages -[Jekyll](http://jekyll.bootcss.com/)是一个静态网页生成器,使用YAML头信息可以很方便地使用各种布局,内置markdown,新的文章只需加入文件夹即可。[Github Pages](https://pages.github.com/)可以提供免费空间,免费无限流量来给网页当虚拟主机。他们俩配合起来相当默契,而且网上也有很多资料。但是有一点美中不足的是Github Pages是在安全模式下运行的,也就是说它并不支持Jekyll的插件。然而我们可以在本地带着插件生成好网站再放到Github上。虽然听起来不太方便,但是有脚本让我们一步实现。这点我们后面详细说。 - -## 准备 -1. 了解[YAML front matter](http://jekyllrb.com/docs/frontmatter/)可以让包含头文件的文件自动: - - 拥有部分或全部布局及定义的重复标签 - - 变量 ([Liquid](http://liquidmarkup.org/)) -2. 如果完全不了解HTML, CSS和JavaScript, 请查看[W3School](http://www.w3schools.com/),至少了解基本用法。 -3. 了解`git`命令,如果不请查看[Git tutorial](http://rogerdudler.github.io/git-guide/)或者其他资料。希望能至少使用命令行一次了解流程,这对以后会有所帮助。 - -## 创建仓库 -详细步骤在[这里](https://pages.github.com/)。 - -**如果是个人/机构网站,请使用`master`分支,如果是项目网站,请使用`gh-pages`分支** - -## 安装和初始化 -步骤在[Github help pages](https://help.github.com/articles/using-jekyll-with-pages/)有详细解释。 - -完成安装后,初始化Jekyll在当前文件夹使用基本主题,运行 - -``` -Jekyll new . -git init -``` - -如果出现类似`directory is not empty`之类的错误,先把文件夹下的内容移动到该文件夹外的临时文件夹内,运行命令后再放回原来的文件即可。 - -## 本地运行Jekyll和测试网站 -如果您是`bundler`使用者,请运行`bundle exec jekyll server`或者`bundle exec jekyll serve`.
如果不是,请运行`jekyll server`或者`jekyll serve`。 - -让命令运行(不要用ctrl+c终止命令),打开网页浏览器,在地址栏输入`http://localhost:4000`,就能看见网站啦。 - -## 配置 -### \_config.yml文件 -`_config.yml`文件包含了网站设定,[官网](http://jekyll.bootcss.com/docs/configuration/)上有详细阐述。下面介绍基本用法: - -变量 | 用法 ----|--- -title | 网站名,默认下将是网站在搜索引擎出现的名字 -email | 在contac-list中显示的邮箱地址, 默认下出现在页脚 -description | 网站描述,默认下将出现在页脚 -baseurl | 网站的子路径, 例如设置成`/blog`,完整url将会变成`www.pwzxxm./com/blog` -url | 主机名和使用协议,完整url, 例如`http://www.pwzxxm.com` -github\_username
twitter\_username | 用于链接Github和Twitter, 默认下出现在页脚 -markdown | 使用的markdown引擎, e.g. `kramdown` `redcarpet` -highlighter | 语法高亮引擎, e.g. `pygments` `rouge` -permalink | 设置为`pretty`url将变成这样`site_url/time/title`
可以自定义例如`/:title/` [查看详情](http://jekyllrb.com/docs/permalinks/) -pagination | 每页显示多少篇文章 - -### 使用自定义域名 -官网提供了两个基本版的页数标示,[点这里](http://jekyll.bootcss.com/docs/pagination/)。 然而网上有适配移动端的[Timble](http://www.timble.net/blog/2015/05/07/better-pagination-for-jekyll.html),非常赞。 - -### 多语言支持 -请查看[Jekyll Multi Language Plugin](http://jekyll-langs.liaohuqiu.net/)。 - -### 如使用插件,在本地生成网站 -简单的说就是另外创建一个“僵尸”仓库,先生成网站,再把`_site`文件夹下的文件放到原根目录然后禁止Github再次生成网站。 - -1. 在“僵尸”文件夹下执行`bundle exec jekyll serve build` or `jekyll build`。 -2. 复制当前文件夹下所有文件到原仓库(****.github.io), 除了`README.md`。 -3. 剪切原仓库的`_site`文件夹下所有文件到原仓库根目录。 -4. `touch .nojekyll`禁止Github生成网站。 -5. 提交所有到Github。 - -这是bash脚本: - -```bash -#!/bin/bash - -comment="$1" -push_commit="git commit -a -m '$comment'" - -# commit and push changes -eval 'cd ~/git/local' # modify PATH here -eval 'bundle exec jekyll build' -eval 'git add .' -eval $push_commit -eval 'git push --all origin' - -# copy remove in pwzxxm.github.io -eval 'cd ~/git/PwzXxm.github.io' # modify PATH here -eval 'cp ./README.md ~/git/' # modify where you want to temporally put the README.md -eval 'rm -rf ./*' -eval 'cp -r ~/git/local/* ./' # modify PATH here -eval 'cp -r _site/* ./' -eval 'rm -rf _site/*' -eval 'cp ~/git/README.md ./' # put the file back -eval 'touch .nojekyll' - -# commit and push changes -eval 'git add .' -eval $push_commit -eval 'git push --all origin' -echo "Done" -``` - -要使用它,复制上面代码到以`.sh`结尾的bash脚本文件中,修改路径,给权限,运行即可。 - -## 本站代码 -如果想使用本站布局或想知道背后的代码,请访问 - -- [Pwzxxm.github.io](https://github.com/PwzXxm/PwzXxm.github.io) -- [local site](https://github.com/PwzXxm/local-site). - -您可以使用关于本站的任何代码,但禁止转载本站内容。如有需要,请联系我。 diff --git a/_posts/2015/2015-12-15-building-blog-jekyll.md b/_posts/2015/2015-12-15-building-blog-jekyll.md deleted file mode 100644 index 964cfd46..00000000 --- a/_posts/2015/2015-12-15-building-blog-jekyll.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: post -title: "Using Jekyll + Github Pages to build a blog" -date: 2015-12-15 -lang: en -tags: [blog] -redirect_from: "/building-blog-jekyll/" ---- - -## Why Jekyll and Github Pages -[Jekyll](https://jekyllrb.com/) is an static site generator, it is simple to use with YAML front matter. It is quite convenient to blog with markdown and Jekyll supports it build-in. [Github Pages](https://pages.github.com/) provide the space to host the website for free. Both of them are well-documented, and works well with each other. One thing that makes they works well but not perfect is that although Github Pages can generate the website using Jekyll but as it generates in safe mode, it does not support Jekyll plugin. However, the good news is we can generate the site locally and then push it to Github. It sounds like not convenient but we can write a bash script to do so automatically in one step. We will talk about it later. - - -## Preparations -1. Know [YAML front matter](http://jekyllrb.com/docs/frontmatter/) is something you can put at the front of a script and it can automatically - - have part of the layout and tags you defined before - - define variables ([Liquid](http://liquidmarkup.org/)) -2. If you don't know HMTL, CSS or JavaScript, you would better check out [W3School](http://www.w3schools.com/) and at least know the basic of them. -3. Be able to using `git` commands, if not please check [Git tutorial](http://rogerdudler.github.io/git-guide/) or search on Google. You could use a desktop version instead of command lines, but I think it's better to try comment line once because it may help you to have a better understanding of how it works. - -## Set up repository -Following the steps on [Github Pages](https://pages.github.com/) to initiate the repository. **Caution: If you are building user/organisation pages, please use `master` branch, if you are building project pages, please use `gh-pages` instead.** - -## Install and Initiate -Steps are shown [here](https://help.github.com/articles/using-jekyll-with-pages/). - -After installation, to initiate a basic theme Jekyll website at current folder, simply run - -``` -Jekyll new . -git init -``` - -If you have a error says the directory is not empty, just move all files to other directory and move them back after initiation. - -## Running Jekyll and Test Websites Locally -If you use `bundler`, you need to use `bundle exec jekyll server` or `bundle exec jekyll serve`.
For those who don't, please use `jekyll server` or `jekyll serve`. - -Leave command window as it is running and then open your browser and navigate to `http://localhost:4000` and you can see your site locally. - -## Configuring -### \_config.yml file -`_config.yml` contains settings for the website, check out details at the official website [here](http://jekyllrb.com/docs/configuration/). - -Variables | Usage ----|--- -title | The title of the website, by default it will shown at the website and the search result in a search engine -email | It is used in the contact list if you choose to use it -description | By default it is used in the meta tag in the head and shown in the footer -baseurl | the subpath of your site, e.g. `/blog` will have `www.pwzxxm./com/blog` -url | the base hostname and protocol for the site, e.g. `http://www.pwzxxm.com` -github\_username
twitter\_username | shown in the contact list in the footer if you wish -markdown | which markdown engine you want to use, e.g. `kramdown` `redcarpet` -highlighter | which syntax highlighter you want to use, e.g. `pygments` `rouge` -permalink | set to `pretty` will have url like `site_url/time/title`
you can set your own like `/:title/` [See details](http://jekyllrb.com/docs/permalinks/) -pagination | the number of posts you want to display on each page - -### Host your website using custom domain -- you need to buy a domain from a domain registrar, like [Godaddy](https://godaddy.com). -- add a `CNAME` file which contains your custom domain name in the root of your repository. -- If your custom domain is a subdomain (like `www.pwzxxm.com` or `blog.pwzxxm.com`), then you need to add a `CNAME` record in your domain provider or DNS server provider if you are using custom DNS service. -- If your domain is an apex domain (only have one dot in your custom domain), you need to set up `A`, `ALIAS` or `ANAME` records. Add `192.30.252.153` and `192.30.252.154` to your records. -- [Find more details](https://help.github.com/articles/setting-up-a-custom-domain-with-github-pages/) - -### Pagination -There are two basic scripts can do pagination on [Jekyll official documentation](http://jekyllrb.com/docs/pagination/). -However, I found this pagination from [Timble](http://www.timble.net/blog/2015/05/07/better-pagination-for-jekyll.html) which is awesome. - -### Multi-language site -Check out [Jekyll Multi Language Plugin](http://jekyll-langs.liaohuqiu.net/). - -### Build the site locally if you use plugins -The problem is Github build Jekyll websites in safe mode so the plugin won't work. However, we can create a 'dummy' repository to generate the site first and then move the content in `_site` folder to the original repository. - -1. generate the site locally using `bundle exec jekyll serve build` or `jekyll build` in the 'dummy' repository. -2. copy all files to the actual repository excludes `README.md.` -3. cut the files under `_site` folders to the root path of the repository. -4. `touch .nojekyll` to disable github to generate the site -5. commit all changes. - -Here is a bash script: - -```bash -#!/bin/bash - -comment="$1" -push_commit="git commit -a -m '$comment'" - -# commit and push changes -eval 'cd ~/git/local' # modify PATH here -eval 'bundle exec jekyll build' -eval 'git add .' -eval $push_commit -eval 'git push --all origin' - -# copy remove in pwzxxm.github.io -eval 'cd ~/git/PwzXxm.github.io' # modify PATH here -eval 'cp ./README.md ~/git/' # modify where you want to temporally put the README.md -eval 'rm -rf ./*' -eval 'cp -r ~/git/local/* ./' # modify PATH here -eval 'cp -r _site/* ./' -eval 'rm -rf _site/*' -eval 'cp ~/git/README.md ./' # put the file back -eval 'touch .nojekyll' - -# commit and push changes -eval 'git add .' -eval $push_commit -eval 'git push --all origin' -echo "Done" -``` - -To use it, simply copy it to a `yourchoice.sh` file, change the paths in the file and give it permission to run, and run it. - -## This Site -If you like the style or you want to know the codes behind it, just check out: - -- [Pwzxxm.github.io](https://github.com/PwzXxm/PwzXxm.github.io) -- [local site](https://github.com/PwzXxm/local-site). - -You can grap and use any code from my site as you wish. However, the content of this site is copyright, if you want to use any posts please contact me. diff --git a/_posts/2015/2015-12-25-stack-queue-link-list.cn.md b/_posts/2015/2015-12-25-stack-queue-link-list.cn.md deleted file mode 100644 index 1a2d38f5..00000000 --- a/_posts/2015/2015-12-25-stack-queue-link-list.cn.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -layout: post -title: "栈,队列和链表" -date: 2015-12-25 -tag: Data-Structure -lang: cn -images: - - url: /img/post/link_in.gif -redirect_from: "/cn/stack-queue-link-list/" ---- - -栈,队列和链表是最基础的数据结构,它们出现在很多生活场景中,比如说堆起来的集装箱,排队坐过山车,人体蜈蚣(如果不知道就别去搜了,啦啦啦) - -
-
-**目录** - -- [栈](#stack) - - [简介](#stack-intro) - - [数组实现](#stack-array-implementation) - - [链表实现](#stack-linked-list-implementation) - - [C++ STL - stack](#stack-c++-stl-stack) -- [队列](#queue) - - [简介](#q-intro) - - [链表实现](#q-linked-list-implementation) - - [C++ STL - queue](#q-c++-stl-queue) - - [优先队列](#q-priority-queue) -- [链表](#linked-list) - - [简介](#ll-intro) - - [C++ struct 实现](#ll-c++-struct-implementation) -
-
- ------ - -## 栈 -### 简介 -栈就像堆起来的集装箱,或者是一堆书,每次加入新的元素只能在旧的之上,每次移出元素只能拿出最新加入的,所以有“**后进先出**”的原则(后进去的元素先出来)。 - -常见操作有: - -进栈 | 出栈 -:---:|:---: -![stack_push](/img/post/stack_push.gif) | ![stack_pop](/img/post/stack_pop.gif) - -### 数组实现 -一般我们用数组的第一个元素`array[0]`作为栈底,创建一个变量`max_index`来存储栈的最顶部元素在数组中的下标,也就是数组最后一个栈中元素的下标。 - -进栈:`max_index += 1`,然后在该下标插入进栈的元素 - -出栈:初始化在`max_index`下标的元素,`max_index -= 1` - -### 链表实现 -单向链表,用`head`记录栈头,每个元素都有`next`指向下一个元素,栈顶的`next`指向`NULL`,`size`纪录链表大小(栈的大小)。 - -进栈:让在栈顶(链表尾部)元素的`next`指向新的元素,新元素的`next`为`null`,`size += 1` - -出栈:初始化栈顶(链表尾部)元素,移动到上一个元素,设置`next`为`null`, `size -= 1` - -### C++ STL - stack -```cpp -#include -#include -using namespace std; - -int main(void) { - /* 创建一个栈,名为stk,元素类型为int */ - stack stk; - - /* 使一个元素进栈 */ - stk.push(1); // 1 - stk.push(2); // 1 2 - - /* - * cout << stk.push(3) << endl; - * 错误!! stk.push(3) 返回void类型 - */ - - /* top() 返回栈最顶部的元素,且不改变栈 */ - cout << stk.top() << endl; // print out 2 - - stk.push(1); - - /* 返回栈的大小,有多少元素 */ - cout << stk.size() << endl; // print out 3 - - /* 使栈顶部的元素出栈,返回void类型 */ - stk.pop(); - stk.pop(); - - cout << stk.top() << endl; // print out 1 - - /* 查看栈是否为空,如果为空,返回真(1) */ - cout << stk.empty() << endl; - - return 0; -} -``` - -
- ------ - -## 队列 -### 简介 -队列就像排队一样,在队尾加入新的元素,在队首出队。所以队列有着“**先进先出**”的原则。 - -常见操作有: - -入队 | 出队 -:---:|:---: -![queue_enqueue](/img/post/queue_enqueue.gif) | ![queue_dequeue](/img/post/queue_dequeue.gif) - -### 链表实现 -使用单向链表,用`head`记录队列头,每个元素都有`next`指向下一个元素,队尾元素的`next`指向`NULL`,`size`纪录队列的长度。 - -入队:在队尾(链表尾部)插入元素,即旧队尾的`next`指向新元素,新元素的`next`指向`null`,`size += 1` - -出队:通过`next`移动到第二个元素,`head`指向第二个元素,初始化原队首(链表头部),`size -= 1` - -### C++ STL - queue -基本用法和栈相同, - -**需要特别注意的一点是队列分别使用`front`和`back`来返回队首和队尾元素。** - -```cpp -#include -#include -using namespace std; - -int main() { - queue q; - q.push(1); // q: 1 - q.push(2); // q: 1 2 - - cout << q.front() << endl; // 1 - cout << q.back() << endl; // 2 - - q.push(3); // q: 1 2 3 - cout << q.size() << endl; // 3 - q.pop(); // q: 2 3 - cout << q.front() << endl; // 2 - cout << q.back() << endl; // 3 - cout << q.empty() << endl; // 0 - - return 0; -} -``` - -### 优先队列 -优先队列类似于队列,只不过每个元素都有一个优先级,出队的元素不一定是最先入队的元素,而是当前队列中优先级最高的元素。就像有人有VIP卡的可以走专属通道,有人可以插队一样,对每个元素来说并不公平,叹气。 - -在C++ STL中,如果把`int`作为优先队列的类型, 默认情况下如果是整数的优先队列,那整数越小,则优先级越低。如果想整数越大,优先级越低,可以用`greater`, 完整声明`std::priority_queue, std::greater q_name`。如有其它需求,可自定义`cmp`函数来完成优先级的比较。 - -**另外需特别注意的是,优先队列取队首元素不再是用队列的`front()`,而是用`top()`。** - -
- ------ - -## 链表 -### 简介 -链表像一个个回形针串起来的链子。链表有多种结构:单向链表,双向链表,循环链表等等。主要介绍单向链表,其他类型脑补脑补ok的。 - -常见操作有: - -- 添加节点 -- 销毁节点 -- 下一节点 - -![link_in](/img/post/link_in.gif) - -### C++ struct 实现 - -``` cpp -#include - -struct Node { - int value; - Node *next; -}; - -int main() { - Node *root; - Node *cur; - - /* 初始化链表 */ - root = new Node; - root->value = 1; - root->next = NULL; - cur = root; - - /* 在链表尾部加入节点 */ - cur = cur->next; - cur = new Node; - cur->value = 2; - cur->next = NULL; // linked list: 1 2 - - /* 在节点中间 */ - Node *second = new Node; - second->value = 3; - second->next = cur; - root->next = second; // linked list: 1 3 2 - - /* 知道数据,寻找节点 */ - cur = root; - while (cur->value != 3) { - cur = cur->next; - } - std::cout << cur->value << std::endl; // 3 - - /* 遍历到链表尾部 */ - while (cur->next != NULL) { - cur = cur->next; - } - std::cout << cur->value << std::endl; // 2 - - /* 删除节点 */ - Node *last; - cur = root; - if (cur == NULL) - ; // empty list - if (cur->value == 1) { // if we want to delete the first node - root = cur->next; - delete cur; - } else { - while (cur->value != 1 && cur->next != NULL) { - last = cur; - cur = cur->next; - } - - if (cur->value == 1) { - last->next = cur->next; - delete cur; - } - } -} -``` diff --git a/_posts/2015/2015-12-25-stack-queue-link-list.md b/_posts/2015/2015-12-25-stack-queue-link-list.md deleted file mode 100644 index 9ea49446..00000000 --- a/_posts/2015/2015-12-25-stack-queue-link-list.md +++ /dev/null @@ -1,237 +0,0 @@ ---- -layout: post -title: "Stack, Queue and Linked Lists" -date: 2015-12-25 -tag: Data-Structure -lang: en -images: - - url: /img/post/link_in.gif -redirect_from: "/stack-queue-link-list/" ---- - -Stack, queue and Linked lists are basic data structures. They appear in our daily life. For example, stacks of intermodal containers at the port, waiting in line(queue) to ride a roller coaster and the film The Human Centipede,if you know it. - -
-
-**Contents** - -- [Stack](#stack) - - [Intro](#stack-intro) - - [Array Implementation](#stack-array-implementation) - - [Linked List Implementation](#stack-linked-list-implementation) - - [C++ STL - stack](#stack-c++-stl-stack) -- [Queue](#queue) - - [Intro](#q-intro) - - [Linked List Implementation](#q-linked-list-implementation) - - [C++ STL - queue](#q-c++-stl-queue) - - [Priority Queue](#q-priority-queue) -- [Linked List](#linked-list) - - [Intro](#ll-intro) - - [C++ Struct Implementation](#ll-c++-struct-implementation) -
-
- ------ - -##Stack -###Intro -Stack is like a stack of intermodal containers, or a stack of book. Every time you want to put a new item, you put above the original stack, not between or below. Every time you want to remove a item, you need to start from the top, remove the item which is latest added. Hence, there is a principle called "**LIFO**", Last In, First Out. - -Common operations: - -push | pop -:---:|:---: -![stack_push](/img/post/stack_push.gif) | ![stack_pop](/img/post/stack_pop.gif) - -### Array Implementation -Usually we use the first item in the array `array[0]` as the bottom of the stack, create index `max-index` to store the index of the top item, in other words, the index of the last item in the stack. - -Push: `max_index += 1`, and at the index of max_index add the item - -Pop: delete the item at the index `max_index`, `max_index -= 1` - -### Linked List Implementation -Using singly linked list, use `head` to store the bottom of the stack, each item has `next` pointing at the next item. The top item's `next` points to `NULL`, `size` stores the size of the stack (the length of the linked list). - -push: change the `next` variable of the top item in stack(last item in list) to the new item, let `next` of the new item points to `NULL`, `size += 1` - -pop: delete the top item in stack (last item in list), `size -= 1`, set `next` of the new last item to `NULL` - -### C++ STL - stack -``` cpp -#include -#include -using namespace std; - -int main(void) { - /* create a stack named stk and its elements are int type */ - stack stk; - - /* push an element to the stack */ - stk.push(1); // 1 - stk.push(2); // 1 2 - - /* - * cout << stk.push(3) << endl; - * error!! stk.push(3) returns void - */ - - /* top() returns the top element in the stack and it does NOT change the stack */ - cout << stk.top() << endl; // print out 2 - - stk.push(1); - - /* gives the size of the stack - how many elements are there */ - cout << stk.size() << endl; // print out 3 - - /* pop the top element from the stack, return void as well */ - stk.pop(); - stk.pop(); - - cout << stk.top() << endl; // print out 1 - - /* check if the stack is empty, if it is empty, returns true(1) */ - cout << stk.empty() << endl; - - return 0; -} -``` - -
- ------ - -##Queue -### Intro -Queue is like the queue in our life, wait in line to check out. Each new item add to the end of a queue, and the item at the front goes out first. Hence, Queue has the principle of "**FIFO**" (First In, First Out). - -Common operations: - -enqueue | dequeue -:---:|:---: -![queue_enqueue](/img/post/queue_enqueue.gif) | ![queue_dequeue](/img/post/queue_dequeue.gif) - -###Linked List Implementation -Using singly linked list, use `head` to track the head of a queue, each item has a variable `next` pointing to the next item, `next` of the last item in the queue points to `NULL`, `size` tracks the length of the queue. - -Enqueue: append the new item at the end of the queue/list, `next` of the old last item points to the new item just appended, `size += 1` - -Dequeue: Using `next` to navigate to the second item, `head` points to the second item, delete the first item, `size -= 1` - -### C++ STL - queue -Almost the same as `stack`! - -**Caution: `queue` uses `front` and `back` to get the first and last item respectively.** - -```cpp -#include -#include -using namespace std; - -int main() { - queue q; - q.push(1); // q: 1 - q.push(2); // q: 1 2 - - cout << q.front() << endl; // 1 - cout << q.back() << endl; // 2 - - q.push(3); // q: 1 2 3 - cout << q.size() << endl; // 3 - q.pop(); // q: 2 3 - cout << q.front() << endl; // 2 - cout << q.back() << endl; // 3 - cout << q.empty() << endl; // 0 - - return 0; -} -``` - -### Priority Queue -Priority Queue is similar as queue, however each item has a priority. The first item to be dequeued maybe not the most front of the queue, it is now which the item has the highest priority. It's like someone who have VIP cards, or someone is a queue-jumper, not fair for these items waiting, right? sigh. - -In C++ STL, if you use `int` as items in a priority queue, it is default that the smaller the integer is, the less priority it has. If you want the opposite, which is larger integer, less priority, you could use `great`, fully declaration`std::priority_queue, std::greater q_name`. If you want other custom compare methods, you might need to custom `cmp` function to complete priority comparison. - -**Caution: Priority Queue uses `front()` to get the first item, NOT `top()`** - -
- ------ - -##Linked List -### Intro -Linked list is like linked paper clips, have you tired before? Linked list have several structures: singly linked list, doubly linked list, multiply linked list and others. We only show singly linked list here as others can be implemented with the understanding of singly linked list. - -Common operations: - -- add nodes -- delete nodes -- next node - -![link_in](/img/post/link_in.gif) - -### C++ Struct Implementation -``` cpp -#include - -struct Node { - int value; - Node *next; -}; - -int main() { - Node *root; - Node *cur; - - /* Initialize the linked list */ - root = new Node; - root->value = 1; - root->next = NULL; - cur = root; - - /* add Node at the end of the list */ - cur = cur->next; - cur = new Node; - cur->value = 2; - cur->next = NULL; // linked list: 1 2 - - /* add Node between two Nodes */ - Node *second = new Node; - second->value = 3; - second->next = cur; - root->next = second; // linked list: 1 3 2 - - /* known value, find Node */ - cur = root; - while (cur->value != 3) { - cur = cur->next; - } - std::cout << cur->value << std::endl; // 3 - - /* traverse to the last Node */ - while (cur->next != NULL) { - cur = cur->next; - } - std::cout << cur->value << std::endl; // 2 - - /* delete Node */ - Node *last; - cur = root; - if (cur == NULL) - ; // empty list - if (cur->value == 1) { // if we want to delete the first node - root = cur->next; - delete cur; - } else { - while (cur->value != 1 && cur->next != NULL) { - last = cur; - cur = cur->next; - } - - if (cur->value == 1) { - last->next = cur->next; - delete cur; - } - } -} -``` diff --git a/_posts/2015/2015-12-26-binary-tree.cn.md b/_posts/2015/2015-12-26-binary-tree.cn.md deleted file mode 100644 index 4604b48c..00000000 --- a/_posts/2015/2015-12-26-binary-tree.cn.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: post -title: 二叉树 -date: '2016-1-15' -tag: Data-Structure -lang: cn -images: - - url: /img/post/full_binary_tree.gif -redirect_from: "/cn/binary-tree/" ---- - -二叉树之所以叫二叉树,是因为它每一个节点都至多有两个叉,又形似一棵树。树有根,有枝,有叶,只不过一般我们在计算机中所说的树都是根在上,叶在下的。 - -
-
-**目录** - -- [关于树的名词](#terminologies) - - [叶节点](#leaf-node) - - [内节点](#inner-node) - - [深度和高度](#height-and-depth) -- [树的类型](#types) - - [满二叉树](#full-binary-tree) - - [完全二叉树](#complete-binary-tree) -- [实现](#implementation) - - [数组](#array) - - [Struct 或者 Class](#struct-or-class) -- [树的遍历](#tree-traversal) - - [深度优先遍历(DFS)](#depth-first-search) - - [广度优先遍历(BFS)](#breadth-first-search) -
-
- ------ - -##关于树的名词 - -### 叶节点 -没有任何子节点的节点。 - -### 内节点 -在根节点和叶节点中间的节点。 - -### 高度和深度 -**树**的高度和深度指的都是该树有多少层,一般从0开始数。 - -但是,**节点**的高度和深度所指的就不同了。节点的高度是指该节点到**叶节点**的最长距离,节点的深度是指该节点到**根节点**的最长距离。 - -![depth_height](/img/post/depth_height.gif) - -
- ------ - -## 二叉树类型 - -### 满二叉树 -每个节点都有0或2个字子节点的树。 - -![full_bt](/img/post/full_binary_tree.gif) -![full_b_1](/img/post/full_binary_tree_1.gif) - -### 完全二叉树 -一棵深度为\\(h\\)的树,除了第\\(h\\)层外,其他各层节点都为最大树,第\\(h\\)层的所有节点都连续地集中在左边。 - -总节点\\(k\\) | 树高\\(h\\) ---- | --- -\\(2^h \le k \lt 2^{h+1} - 1\\) | \\(h = \lfloor\log_2k\rfloor\\) - -![complete_bt](/img/post/complete_binary_tree.gif) -![complete_bt_1](/img/post/complete_binary_tree_1.gif) - -
- ------ - -## 实现 - -### 数组 -树可以用数组来存储,一般是广度优先的顺序。数组可以很好地储存完全二叉树,因为完全二叉树不会浪费数组的空间。一般来说,根节点一般储存在\\(i = 0\\), 它的子节点存在\\(i = 1\\)和\\(i = 2\\),分别代表左节点和右节点。**一个节点在\\(i\\), 它的左右节点分别在\\(2i + 1\\)和\\(2i+2\\)**。但是,数组会浪费很多空间如果树不完全。 - -### Struct 或者 Class -创建节点,与父节点关联。 - -``` cpp -struct node { - int data; - struct node* left; - struct node* right; -} -``` - -
- ------ - -## 树的遍历 - -### 深度优先遍历(DFS) -遍历树按照深度优先的原则,使用递归一般在遍历中是个好主意。 - -#### 先序遍历 -根节点-左节点-右节点 - -1. 从根节点开始 -1. 如果左子树有元素,遍历左子树,不然遍历右子树。 - -#### 中序遍历 -左-根-右 - -#### 后序遍历 -左-右-根 - -#### 确定唯一的树 -给定两种遍历顺序,只有两种方法能确定唯一的树。 - -##### 先序遍历和中序遍历 -先序遍历的第一个元素必定是树的根节点,在中序遍历中找到该节点,就能把树分为两个子树,左子树和右子树。根据左右子树的长度在先序遍历中找到对应的序列,便找到了左右子树的根节点。不断递归直到遍历树。 - -##### 中序遍历和后序遍历 -和上面说的类似,只是后序遍历的根节点在序列的最后。 - -#### 小技巧 -还有另外一种办法来记住遍历的顺序 - -1. 画一条连续的线(一笔画),从根节点开始,往左画,包围整棵树,贴着节点,在根节点结束。 -1. 类别: - - 先序:在每个节点的**左边**画一个点 - - 中序:在每个节点的**下面**画一个点 - - 后序:在每个节点的**右边**画一个点 -1. 从根节点开始,沿着画线的顺序,碰到点的顺序就是遍历的顺序。 - -先序遍历|中序遍历|后序遍历 ----|---|--- -![preorder_line](/img/post/Sorted_binary_tree_preorder.svg)|![inorder_line](/img/post/Sorted_binary_tree_inorder.svg)|![postorder_line](/img/post/Sorted_binary_tree_postorder.svg) - -### 广度优先遍历(BFS) -从根节点开始,以遍历完每一层为优先原则。 - -![bfs](/img/post/Sorted_binary_tree_breadth-first_traversal.svg) diff --git a/_posts/2015/2015-12-26-binary-tree.md b/_posts/2015/2015-12-26-binary-tree.md deleted file mode 100644 index acdac58d..00000000 --- a/_posts/2015/2015-12-26-binary-tree.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: post -title: Binary Tree -date: '2016-1-15' -tag: Data-Structure -lang: en -images: - - url: /img/post/full_binary_tree.gif -redirect_from: "/binary-tree/" ---- - -Binary tree is called so because of its shape. It's like a tree, it have leaves and a root. In computer science, the "tree" is usually upside down, the root at the top and leaves grow below it. It is binary so it every node only can have 0, 1 or 2 leaves. - -
-
-**Contents** - -- [Terminologies](#terminologies) - - [Leaf Node](#leaf-node) - - [Inner Node](#inner-node) - - [Height and Depth](#height-and-depth) -- [Types](#types) - - [Full Binary Tree](#full-binary-tree) - - [Complete Binary Tree](#complete-binary-tree) -- [Implementation](#implementation) - - [Array](#array) - - [Struct or Class](#struct-or-class) -- [Tree Traversal](#tree-traversal) - - [Depth First Search (DFS)](#depth-first-search) - - [Breadth First Search (BFS)](#breadth-first-search) -
-
- ------ - -## Terminologies - -### Leaf Node -The node do NOT have any child nodes. - -### Inner Node -The Node between the leaf node and the root. - -### Height and Depth -Height and Depth of the **tree** are basically the same thing which indicates how many levels the tree have, usually starts at 0. - -However, the height and depth of the **node** is different. The **height** and **depth** of a node is the distance on longest path to the leaf node and root respectively. - -![depth_height](/img/post/depth_height.gif) - -
- ------ - -## Types - -### Full Binary Tree -Every node in the tree has either 0 or 2 children. - -![full_bt](/img/post/full_binary_tree.gif) -![full_b_1](/img/post/full_binary_tree_1.gif) - -### Complete Binary Tree -Every level except possibly the last level, has maximum number of nodes. All nodes in the last level are all at the left of the tree continuously. - -Total number of nodes \\(k\\) | Height of tree \\(h\\) ---- | --- -\\(2^h \le k \lt 2^{h+1} - 1\\) | \\(h = \lfloor\log_2k\rfloor\\) - -![complete_bt](/img/post/complete_binary_tree.gif) -![complete_bt_1](/img/post/complete_binary_tree_1.gif) - -
- ------ - -## Implementation - -### Array -Array can be used to store a tree, usually in breadth-first order. It is quite good at store a complete binary tree as it will not waste spaces. The root is store at the index \\(i = 0\\), and its children are stored in \\(i = 1\\) and \\(i = 2\\). It has property that **A node at \\(i\\), its children at \\(2i + 1\\) (left) and \\(2i + 2\\) (right)**. However, it wastes a lot of spaces when storing other trees other than complete binary trees. - -### Struct or Class -Creating nodes and connect them to their parents. - -``` cpp -struct node { - int data; - struct node* left; - struct node* right; -} -``` - -
- ------ - -## Tree Traversal - -### Depth First Search (DFS) -Search the tree in the priority of depth. Using recursive calls for tree traversal is usually a good idea. - -#### Pre-order -Root-Left-Right - -1. Starts from the root -1. If left subtree has element in it, go to left. If not, go right. - -#### In-order -Left-Root-Right - -#### Post-order -Left-Right-Root - -#### Determine a unique tree -There are only two ways to determine a unique tree given two types of traverse order. - -##### Pre-order and In-order -The first element of a pre-order must be the root of the tree. Then find the same element in the In-order, we can divide the tree into two subtrees, left and right. Using the length of the left and right subtrees to find the sequences in pre-order respectively, then we can find the root element for left and right subtrees. Recursive repeat this process. - -##### In-order and Post-order -Similar as above, except the root element is the last element in post-order traversal. - -#### Tips -Rather than remembering the sequence, there is another way to remembering the order. - -1. Draw a continuous line, starts and ends at the root of the tree, starts from left, around the tree -1. Try following: - - Pre-order: draw a dot at the **left** of each node - - In-order: draw a dot at the **bottom** of each node - - Post-order: draw a dot at the **right** of each node -1. Follow the line we drew, the sequence of touching dots is the sequence of traversal. - -Pre-order|In-order|Post-order ----|---|--- -![preorder_line](/img/post/Sorted_binary_tree_preorder.svg)|![inorder_line](/img/post/Sorted_binary_tree_inorder.svg)|![postorder_line](/img/post/Sorted_binary_tree_postorder.svg) - -### Breadth First Search (BFS) -Traverse from the root to bottom, go thought each level first. - -![bfs](/img/post/Sorted_binary_tree_breadth-first_traversal.svg) diff --git a/_posts/2016/2016-03-14-poj-3050.cn.md b/_posts/2016/2016-03-14-poj-3050.cn.md deleted file mode 100644 index f35bc164..00000000 --- a/_posts/2016/2016-03-14-poj-3050.cn.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: "post" -title: "POJ 3050 Hopscotch" -date: "2016-03-14 22:22" -lang: cn -tags: [POJ, Search] -redirect_from: "/cn/poj-3050/" ---- - -给一个5*5的数组,在里面填了整数。可选任意点作为起点,走动5次,只能往上下左右走,得到6个数字。 - -求有多少个不同的数字组合。 - -链接:http://poj.org/problem?id=3050 - -
-
-
-
-
- -###题解 -用set来去重,因为只有6步和5*5的数组,dfs各个起点,加入set。 - -一开始用了`to_string()`结果CE,用了`stringstream`TLE。这次终于知道`sstream`多慢了。。。简直龟速。。。 - - -```cpp -#include -#include -#include -using namespace std; - -set ans; -int m[5][5]; -const int dx[] = { 1, -1, 0, 0 }; -const int dy[] = { 0, 0, 1, -1 }; -string s; - -void dfs(int x, int y, int n) { - if (n == 0) { - ans.insert(s); - return; - } - for (int i = 0; i < 4; i++) { - int tx = x+dx[i]; - int ty = y+dy[i]; - if (tx >= 0 && tx < 5 && ty >= 0 && ty < 5) { - string str = s; - s += m[tx][ty]; - dfs(tx, ty, n-1); - s = str; - } - } - return ; -} - -int main(void) { - for (int i = 0; i < 5; i++) { - for (int j = 0; j < 5; j++) - cin >> m[i][j]; - } - - for (int i = 0; i < 5; i++) { - for (int j = 0; j < 5; j++) { - s = ""; - dfs(i, j, 6); - } - } - - cout << ans.size() << endl; - return 0; -} -``` diff --git a/_posts/2016/2016-03-14-poj-3050.md b/_posts/2016/2016-03-14-poj-3050.md deleted file mode 100644 index ab2e2e57..00000000 --- a/_posts/2016/2016-03-14-poj-3050.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: "post" -title: "POJ 3050 Hopscotch" -date: "2016-03-14 22:22" -lang: en -tags: [POJ, Search] -redirect_from: "/poj-3050/" ---- - -There is a 5 * 5 array filled with integers. You can only go up, down, left and right. You can start on any point in the array and can only move 5 times. Therefore, you will get 6 integers. - -Find the number of distinct integers you can constructed. - -Link: http://poj.org/problem?id=3050 - -
-
-
-
-
- -###Solution -I use a set to avoid same sequences. Since there are only 6 steps and the array is only 5*5, dfs each point, add into the set. - -I used `to_string()` at first but got compile error on POJ, then I use `stringstream` but got TLE. DO NOT USE `sstream`, it's just too slow! Slower than molasses! - -Finally, I got AC. - - -```cpp -#include -#include -#include -using namespace std; - -set ans; -int m[5][5]; -const int dx[] = { 1, -1, 0, 0 }; -const int dy[] = { 0, 0, 1, -1 }; -string s; - -void dfs(int x, int y, int n) { - if (n == 0) { - ans.insert(s); - return; - } - for (int i = 0; i < 4; i++) { - int tx = x+dx[i]; - int ty = y+dy[i]; - if (tx >= 0 && tx < 5 && ty >= 0 && ty < 5) { - string str = s; - s += m[tx][ty]; - dfs(tx, ty, n-1); - s = str; - } - } - return ; -} - -int main(void) { - for (int i = 0; i < 5; i++) { - for (int j = 0; j < 5; j++) - cin >> m[i][j]; - } - - for (int i = 0; i < 5; i++) { - for (int j = 0; j < 5; j++) { - s = ""; - dfs(i, j, 6); - } - } - - cout << ans.size() << endl; - return 0; -} -``` diff --git a/_posts/2016/2016-03-14-poj-3187.cn.md b/_posts/2016/2016-03-14-poj-3187.cn.md deleted file mode 100644 index afb7d5e7..00000000 --- a/_posts/2016/2016-03-14-poj-3187.cn.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: "post" -title: "POJ 3187 Backward Digits Sums" -date: "2016-03-14" -lang: cn -tags: [POJ, brute force] -redirect_from: "/cn/poj-3187/" ---- - -有特定顺序1到\\(N\\)个数字(\\(1\le N \le 10\\)),将相邻的两个数字相加得到下一行,直到只剩下一个数字。类似于杨辉三角形。 -$$ 1, 2, 3 $$ -$$ 3, 5 $$ -$$ 8 $$ - -给定\\(N\\)和最后的和sum,求字典序最小的一组整数。 - -链接:http://poj.org/problem?id=3187 - -###助攻: -- 注意题目是问1到\\(N\\)个整数,不是从1到10内找出所有排列。 -- STL中`next_permutation()`的结果默认是升序排列的。 - -
-
-
-
-
- -###题解: -用`next_permutation()`生成所有可能的排列,模拟计算三角形。因为排列本来就按字典序排列,找到的第一个解就是题目的解。 - - -```cpp -#include -#include -using namespace std; - -int n, sum, ans[11], s[11]; - -void solve() { - for (int i = 1; i <= n; i++) ans[i-1] = i; - if (n == 1 && ans[0] == sum) { - cout << sum << endl; - return; - } - do { - for (int i = 0; i < n-1; i++) - s[i] = ans[i]+ans[i+1]; - for (int i = n-2; i >= 0; i--) { - for (int j = 0; j < i; j++) - s[j] = s[j]+s[j+1]; - } - if (s[0] == sum) { - for (int i = 0; i < n; i++) cout << ans[i] << " "; - cout << endl; - return; - } - } while (next_permutation(ans, ans+n)); -} - -int main(void) { - cin >> n >> sum; - solve(); - return 0; -} -``` diff --git a/_posts/2016/2016-03-14-poj-3187.md b/_posts/2016/2016-03-14-poj-3187.md deleted file mode 100644 index 2b684e79..00000000 --- a/_posts/2016/2016-03-14-poj-3187.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: "post" -title: "POJ 3187 Backward Digits Sums" -date: "2016-03-14" -lang: en -tags: [POJ, brute force] -redirect_from: "/poj-3187/" ---- - -There are 1 to \\(N\\) digits (\\(1\le N \le 10\\)) in certain order. Add adjacent numbers together to get the next line, until the there is only one number left.(Just like Pascal's triangle) -For example, there are 3 integers: -$$ 1, 2, 3 $$ -$$ 3, 5 $$ -$$ 8 $$ - -So, given \\(N\\) and the final sum, find the lexicographically least ordering of integers. - -Link: http://poj.org/problem?id=3187 - -###Notes: -- Be aware of that the question is asking 1 to \\(N\\) digits, so we don't have to test all possible permutations from 1 to 10. - -- The results of `next_permutation()` in STL are in ascending order in default. - -
-
-
-
-
- -###Solution: -Use `next_permutation()` to check all possibilities and stimulate the triangle additions. Since the permutation is already in lexicographical order, when we get the find the first result, it is the final answer. - - -```cpp -#include -#include -using namespace std; - -int n, sum, ans[11], s[11]; - -void solve() { - for (int i = 1; i <= n; i++) ans[i-1] = i; - if (n == 1 && ans[0] == sum) { - cout << sum << endl; - return; - } - do { - for (int i = 0; i < n-1; i++) - s[i] = ans[i]+ans[i+1]; - for (int i = n-2; i >= 0; i--) { - for (int j = 0; j < i; j++) - s[j] = s[j]+s[j+1]; - } - if (s[0] == sum) { - for (int i = 0; i < n; i++) cout << ans[i] << " "; - cout << endl; - return; - } - } while (next_permutation(ans, ans+n)); -} - -int main(void) { - cin >> n >> sum; - solve(); - return 0; -} -``` diff --git a/_posts/2016/2016-03-16-poj-2376.cn.md b/_posts/2016/2016-03-16-poj-2376.cn.md deleted file mode 100644 index dbb11318..00000000 --- a/_posts/2016/2016-03-16-poj-2376.cn.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: "post" -title: "POJ 2376 Cleaning Shifts" -date: "2016-03-16" -lang: cn -tags: [greedy, POJ] -redirect_from: "/cn/poj-2376/" ---- - -\\(N\\) (\\(1 \le N \le 25,000\\))只蛤,每只蛤只能在特定时间段工作。 -\\(T\\) (\\(1 \le T \le 1,000,000\\))个时间段。 -找到最少蛤数能覆盖整个时间段。 - -链接:http://poj.org/problem?id=2376 - - -###助攻 -- 每个时间段都至少要有一只蛤。 -- 每只蛤在结束时间之后结束。比如说有两只蛤工作时间段分别是\\((1, 3)\\)和\\((4, 10)\\)。这样被认为时间段是连续的,在\\(T = 10\\)的时候是可行的。 -- 任何时间段之间不能断。 -- 用`scanf()`作为输入不然超时。 - -
-
-
-
-
- -###题解 -按结束时间排序。对每个区间谈心,找到每只在当前时间段内开始,结束最晚的蛤。因为已经排过序啦,所以只要判断开始时间是不是比当前的时间小,第一个找到的就是了。 - - - -```cpp -#include -#include -#include -using namespace std; -typedef pair P; - - -vector

v; -int N, T, ans = 0; - -struct cmp { - bool operator()(const P &l, const P &r) { - return l.second > r.second; - } -}; -void solve() { - sort(v.begin(), v.end(),cmp()); - int cur = 1; - bool find = true; - while (cur <= T) { - if ((v.size() == 0) || !find || (v[0].second < cur)) { ans = -1; return ; } - for (int i = 0; i < v.size(); i++) { - if (v[i].first <= cur) { - ans++; - cur = v[i].second+1; - printf("%d %d\n\n", v[i].first, v[i].second); - v.erase(v.begin()+i); - find = true; - break; - } - find = false; - } - } - return ; -} - -int main(void) { - scanf("%d %d", &N, &T); - int start, end; - for (int i = 0; i < N; i++) { - scanf("%d %d", &start, &end); - v.push_back(P(start, end)); - } - - solve(); - printf("%d\n", ans); - - return 0; -} -``` diff --git a/_posts/2016/2016-03-16-poj-2376.md b/_posts/2016/2016-03-16-poj-2376.md deleted file mode 100644 index f2b9d762..00000000 --- a/_posts/2016/2016-03-16-poj-2376.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: "post" -title: "POJ 2376 Cleaning Shifts" -date: "2016-03-16" -lang: en -tags: [greedy, POJ] -redirect_from: "/poj-2376/" ---- - -\\(N\\) (\\(1 \le N \le 25,000\\)) cows, each cow only available for a interval of time. -\\(T\\) (\\(1 \le T \le 1,000,000\\)) shifts. -Find minimum number of cows to complete \\(T\\) shifts. - -Link: http://poj.org/problem?id=2376 - - -###Notes -- Each shift must has at least one cow assigned to it. -- A cow finishes after the end time. That is, if there are two cows, start and end at \\((1, 3)\\) and \\((4, 10)\\) respectively. It is considered as an continuous internal and accepted case for \\(T = 10\\). -- There can not have any gap between these cows's working intervals. -- Use `scanf()` for input otherwise it will run out of the time limit. - -
-
-
-
-
- -###Solution -Sort cows by ending time. Using greedy that for each interval, find the cow which has latest end time and before the current end time. As the vector is sorted, the first cow we find is the answer. - - -```cpp -#include -#include -#include -using namespace std; -typedef pair P; - - -vector

v; -int N, T, ans = 0; - -struct cmp { - bool operator()(const P &l, const P &r) { - return l.second > r.second; - } -}; -void solve() { - sort(v.begin(), v.end(),cmp()); - int cur = 1; - bool find = true; - while (cur <= T) { - if ((v.size() == 0) || !find || (v[0].second < cur)) { ans = -1; return ; } - for (int i = 0; i < v.size(); i++) { - if (v[i].first <= cur) { - ans++; - cur = v[i].second+1; - printf("%d %d\n\n", v[i].first, v[i].second); - v.erase(v.begin()+i); - find = true; - break; - } - find = false; - } - } - return ; -} - -int main(void) { - scanf("%d %d", &N, &T); - int start, end; - for (int i = 0; i < N; i++) { - scanf("%d %d", &start, &end); - v.push_back(P(start, end)); - } - - solve(); - printf("%d\n", ans); - - return 0; -} -``` diff --git a/_posts/2016/2016-03-20-uva-443.cn.md b/_posts/2016/2016-03-20-uva-443.cn.md deleted file mode 100644 index 78a61d55..00000000 --- a/_posts/2016/2016-03-20-uva-443.cn.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: "post" -title: "UVa 443 Humble Numbers" -date: "2016-03-20 22:30" -lang: cn -tags: [UVa] -redirect_from: "/cn/uva-443/" ---- - -找到第\\(n\\) \\( (1 \le n \le 5842)\\) 个只有2,3,5或7质因子的数。 - - -链接: https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=384 - -
-
-
-
-
- -###题解 -####解法1 -有点暴力。。。 用STL `set`和`vector`来枚举所有符合条件的数。用`long long`来防止爆int和栈。 - -```cpp -#include -#include -#include -using namespace std; -typedef long long ll; -const int t[] = { 2, 3, 5, 7}; -set s; - -int main(void) { - s.insert(1); - set::iterator i = s.begin(); - while(s.size() < 6600) { - for (int j = 0; j < 4; j++) - s.insert((*i)*t[j]); - i++; - } - vector v(s.begin(), s.end()); - - int n; - string s; - while (cin >> n) { - if (n == 0) break; - if (n % 100 == 11 || n % 100 == 12 || n % 100 == 13) s = "th"; - else if (n % 10 == 1) s = "st"; - else if (n % 10 == 2) s = "nd"; - else if (n % 10 == 3) s = "rd"; - else s = "th"; - cout << "The " << n << s << " humble number is " << v[n-1] << ".\n"; - } - return 0; -} -``` - -
- -####解法2 -我们有: - -| 数组 | 描述 | -|---|---| -| a | 质因子使用的次数,用来生成下一个数 | -| num | 保存4个质因子生成的数, 找到最小的填入`ans`数组中 | -| ans | 打表 | - -
- -每一个humble number \\(a\\),一定存在一个小于\\(a\\)的humble number \\(b\\) 使得\\(\lbrace a = kb, k \in \lbrace 2, 3, 5, 7\rbrace \rbrace\\) - -
- -```cpp -#include -#include -#include -#define maxn 5842+5 -using namespace std; -const int t[] = { 2, 3, 5, 7 }; -int a[4] = {1, 1, 1, 1}, num[4], n, ans[maxn]; -string s; - -int find_min() { - int Min = num[0]; - for (int j = 1; j < 4; j++) { - if (Min > num[j]) { Min = num[j]; } - } - return Min; -} - -int main(void) { - int index = 2; - ans[1] = 1; - while(index < maxn) { - for (int i = 0; i < 4; i++) num[i] = ans[a[i]]*t[i]; - ans[index] = find_min(); - for (int i = 0; i < 4; i++) { - if (ans[index] == num[i]) a[i]++; - } - index++; - } - - while (cin >> n) { - if (n == 0) break; - - if (n % 100 == 11 || n % 100 == 12 || n % 100 == 13) s = "th"; - else if (n % 10 == 1) s = "st"; - else if (n % 10 == 2) s = "nd"; - else if (n % 10 == 3) s = "rd"; - else s = "th"; - cout << "The " << n << s << " humble number is " << ans[n] << ".\n"; - } - return 0; -} -``` diff --git a/_posts/2016/2016-03-20-uva-443.md b/_posts/2016/2016-03-20-uva-443.md deleted file mode 100644 index 7de8f282..00000000 --- a/_posts/2016/2016-03-20-uva-443.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: "post" -title: "UVa 443 Humble Numbers" -date: "2016-03-20 22:30" -lang: en -tags: [UVa] -redirect_from: "/uva-443/" ---- - -Find \\(n\\)th \\( (1 \le n \le 5842)\\) number whose only prime factors are 2, 3, 5 or 7. - - -Link: https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=384 - -
-
-
-
-
- -###Solutions -####Solution 1 -Kind of brute force, using STL `set` and `vector` to list all humble numbers. Using `long long` to avoiding overflow. - -```cpp -#include -#include -#include -using namespace std; -typedef long long ll; -const int t[] = { 2, 3, 5, 7}; -set s; - -int main(void) { - s.insert(1); - set::iterator i = s.begin(); - while(s.size() < 6600) { - for (int j = 0; j < 4; j++) - s.insert((*i)*t[j]); - i++; - } - vector v(s.begin(), s.end()); - - int n; - string s; - while (cin >> n) { - if (n == 0) break; - if (n % 100 == 11 || n % 100 == 12 || n % 100 == 13) s = "th"; - else if (n % 10 == 1) s = "st"; - else if (n % 10 == 2) s = "nd"; - else if (n % 10 == 3) s = "rd"; - else s = "th"; - cout << "The " << n << s << " humble number is " << v[n-1] << ".\n"; - } - return 0; -} -``` - -
- -####Solution2 -We have: - -| Arrary | Description | -|---|---| -| a | numbers of each prime factors which are used to generate humble numbers| -| num | store the 4 humble numbers and find the smallest one to fill into the `ans` array | -| ans | store all previous results | - -
- -For every humble number \\(a\\), there must exist a humble number \\(b, b \lt a\\) so that \\(\lbrace a = kb, k \in \lbrace 2, 3, 5, 7\rbrace \rbrace\\) - -
- -```cpp -#include -#include -#include -#define maxn 5842+5 -using namespace std; -const int t[] = { 2, 3, 5, 7 }; -int a[4] = {1, 1, 1, 1}, num[4], n, ans[maxn]; -string s; - -int find_min() { - int Min = num[0]; - for (int j = 1; j < 4; j++) { - if (Min > num[j]) { Min = num[j]; } - } - return Min; -} - -int main(void) { - int index = 2; - ans[1] = 1; - while(index < maxn) { - for (int i = 0; i < 4; i++) num[i] = ans[a[i]]*t[i]; - ans[index] = find_min(); - for (int i = 0; i < 4; i++) { - if (ans[index] == num[i]) a[i]++; - } - index++; - } - - while (cin >> n) { - if (n == 0) break; - - if (n % 100 == 11 || n % 100 == 12 || n % 100 == 13) s = "th"; - else if (n % 10 == 1) s = "st"; - else if (n % 10 == 2) s = "nd"; - else if (n % 10 == 3) s = "rd"; - else s = "th"; - cout << "The " << n << s << " humble number is " << ans[n] << ".\n"; - } - return 0; -} -``` diff --git a/_posts/2016/2016-03-23-uva-108.cn.md b/_posts/2016/2016-03-23-uva-108.cn.md deleted file mode 100644 index c93617d4..00000000 --- a/_posts/2016/2016-03-23-uva-108.cn.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: "post" -title: "UVa 108 Maximum Sum" -date: "2016-03-24" -lang: cn -tags: [UVa] -redirect_from: "/cn/uva-108/" ---- - -给定一个\\(N \times N (N \le 100)\\)的矩阵,找到最大子矩阵和。 - - -链接: [题目UVa](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=44) - -
-
-
-
-
- -### 题解 -首先想到暴力,复杂度\\(O(N^6)\\),肯定超时。 - - -然后有一种\\(O(N^4)\\)的解法,AC足够了。 - - -但是可以通过把二维矩阵压到一维,复杂度\\(O(N^3)\\)的解。看题解2哟。 - - -#### 题解 1 -用数组`sum`保存自原矩阵左上角到右下角坐标为\\(i, j)\\)该区域内所有数的和。 - -如下图所示,显然有 -$$ -\begin{align} -A &= (A+B+C+D)\\\ &-(B+D)\\\ &-(C+D)\\\ &+D -\end{align} -$$ -所以我们可以得到 `A = sum[k][l] - sum[i-1][l] - sum[j-1][k] + sum[i-1][j-1]`。 - -![max_sum](/img/post/maximum_sum.png) - -有个小技巧, 保存数组从 `index 1` 开始,初始化数组为 `0` 。这样可以省略边界处理。一开始样例都调不出来,找不到原因。后来发现我在 `for` 循环里用了 `<` 而不是 `<=`. - - -```cpp -#include -#include -#define maxn 100+5 -using namespace std; -int v, N, sum[maxn][maxn] = {{0}}; - -void solve() { - int MaxSum = -200; - - for (int i = 1; i <= N; i++) { - for (int j = 1; j <= N; j++) { - for (int k = i; k <= N; k++) { - for (int l = j; l <= N; l++) { - MaxSum = max(MaxSum, sum[k][l]-sum[i-1][l]-sum[k][j-1]+sum[i-1][j-1]); - } - } - } - } - cout << MaxSum << endl; -} - -int main(void) { - while(cin >> N) { - for (int i = 1; i <= N; i++) { - for (int j = 1; j <= N; j++) { - cin >> v; - sum[i][j] = v+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]; - } - } - - solve(); - } - - return 0; -} -``` - -
- -#### Solution 2 -在一维矩阵中,如果我们要找最大连续的区间和,状态转移方程如下: -$$ d[k] = max(d[k-1]+d[k], d[k])$$ -有一个小优化就是根据贪心,我们知道如果当前的和小于0,就没有再使用它的意义了。因为加一个小于零的数肯定会减小和。 - - -当我们知道了如何在一维中寻找最大连续区间的和,在二维中就很容易了。 - - -设 -> i = 开始行数 -
-> j = 结束行数,有i <= j -
-> k = 列数 - -我们可以把在 `i` 和 `j` 之间的所有行,以列的方式相加,储存到一维数组相应的角标下。 - - -这样,这题就变成了一维数组求最大连续区间和了。找到的该和就是原二维数组中的长方形内所有数字的和。 - -![max_sum_2d](/img/post/max_sum_2D.gif) - - -```cpp -#include -#include -#include -#define maxn 100+5 -using namespace std; -int N, m[maxn][maxn], x[maxn]; - -int find_max() { - int cur_sum=x[0], sum=0; - for (int l = 0; l < N; l++) { - sum += x[l]; - cur_sum = max(sum, cur_sum); - if (sum < 0) sum = 0; - } - return cur_sum; -} - -void solve() { - int MaxSum = -200; - for (int i = 0; i < N; i++) { - memset(x, 0, sizeof(x)); - for (int j = i; j < N; j++) { - for (int k = 0; k < N; k++) x[k] += m[j][k]; - MaxSum = max(MaxSum, find_max()); - } - } - cout << MaxSum << endl; -} - -int main(void) { - while(cin >> N) { - for (int i = 0; i < N; i++) - for (int j = 0; j < N; j++) - cin >> m[i][j]; - solve(); - } - - return 0; -} -``` diff --git a/_posts/2016/2016-03-23-uva-108.md b/_posts/2016/2016-03-23-uva-108.md deleted file mode 100644 index 1da11f52..00000000 --- a/_posts/2016/2016-03-23-uva-108.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: "post" -title: "UVa 108 Maximum Sum" -date: "2016-03-24" -lang: en -tags: [UVa] -redirect_from: "/uva-108/" ---- - -Given an array with size \\(N \times N (N \le 100)\\), find the maximum value of its subarray. - - -Link: [Problem on UVa] (https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=44) - -
-
-
-
-
- -### Solutions -First thought is to brute force - find all possible subarrays then the time complexity will be \\(O(N^6)\\). TLE for sure. - - -Then comes up with an algorithm that takes \\(O(N^4)\\), which is enough to AC. - - -However, it can be \\(O(N^3)\\), see solution 2. - - -#### Solution 1 -We build a `sum` array which is the sum of the numbers in rectangle area with the top-left of the array and bottom-right node \\(i, j)\\). - - -Then as we can see at the graph below, it is obvious that -$$ -\begin{align} -A &= (A+B+C+D)\\\ &-(B+D)\\\ &-(C+D)\\\ &+D -\end{align} -$$ -Therefore we have `A = sum[k][l] - sum[i-1][l] - sum[j-1][k] + sum[i-1][j-1]`. Go through every subarray to find the maximum. - -![max_sum](/img/post/maximum_sum.png) - -There is a trick that store the array starts with `index 1` and initialize `0`. So you don't need to do boundary check. Stuck at first, could not figure out why and then found that I used `<` instead of `<=` in the `for` loop. - - -```cpp -#include -#include -#define maxn 100+5 -using namespace std; -int v, N, sum[maxn][maxn] = {{0}}; - -void solve() { - int MaxSum = -200; - - for (int i = 1; i <= N; i++) { - for (int j = 1; j <= N; j++) { - for (int k = i; k <= N; k++) { - for (int l = j; l <= N; l++) { - MaxSum = max(MaxSum, sum[k][l]-sum[i-1][l]-sum[k][j-1]+sum[i-1][j-1]); - } - } - } - } - cout << MaxSum << endl; -} - -int main(void) { - while(cin >> N) { - for (int i = 1; i <= N; i++) { - for (int j = 1; j <= N; j++) { - cin >> v; - sum[i][j] = v+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]; - } - } - - solve(); - } - - return 0; -} -``` - -
- -#### Solution 2 -In one dimension, if we want to find the maximum sum of successive elements, we have equation: -$$ d[k] = max(d[k-1]+d[k], d[k])$$ -There is a small improvement. By using greedy, we know if the sum is less than 0, there is no point to "add" it, we can just discard it. - - -After we know how to compute in one dimension, it is easy to do it in two dimension. - - -Let -> i = the starting line -
-> j = the ending line, where i <= j -
-> k = the number of columns - -We can compress all lines between `i` and `j` into a 1D array. In other words, add each number in the same column together and put it in the 1D array. Hence, we have an array with `i` to `j` lines in it. - -Now, it is just the problem we have already seen. Find the maximum sum of successive elements in the 1D array. That is the sum of the whole rectangle in the original 2D array. - -![max_sum_2d](/img/post/max_sum_2D.gif) - - -```cpp -#include -#include -#include -#define maxn 100+5 -using namespace std; -int N, m[maxn][maxn], x[maxn]; - -int find_max() { - int cur_sum=x[0], sum=0; - for (int l = 0; l < N; l++) { - sum += x[l]; - cur_sum = max(sum, cur_sum); - if (sum < 0) sum = 0; - } - return cur_sum; -} - -void solve() { - int MaxSum = -200; - for (int i = 0; i < N; i++) { - memset(x, 0, sizeof(x)); - for (int j = i; j < N; j++) { - for (int k = 0; k < N; k++) x[k] += m[j][k]; - MaxSum = max(MaxSum, find_max()); - } - } - cout << MaxSum << endl; -} - -int main(void) { - while(cin >> N) { - for (int i = 0; i < N; i++) - for (int j = 0; j < N; j++) - cin >> m[i][j]; - solve(); - } - - return 0; -} -``` diff --git a/_posts/2016/2016-05-14-poj-3268-silver-cow-party.cn.md b/_posts/2016/2016-05-14-poj-3268-silver-cow-party.cn.md deleted file mode 100644 index d41c7b8d..00000000 --- a/_posts/2016/2016-05-14-poj-3268-silver-cow-party.cn.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: "post" -title: "POJ 3268 Silver Cow Party" -date: "2016-05-14" -lang: cn -tags: [POJ, Graph] -redirect_from: "/cn/poj-3268-silver-cow-party/" ---- - -有 \\(N\\) (\\(1 \le N \le 1000\\)) 个农场, 每个农场有1只奶牛去X号农场参加派对。每只奶牛都要走最短路来回。一共有 \\(M\\) (\\(1 \le M \le 100,000\\))单向道路,每条道路的权值为所用的时间。求往返所用的最长时间。 - -链接:[http://poj.org/problem?id=3268] - -
-
-
-
-
- -###题解 -第一反应Floyd,观察`N`数据范围,复杂度 \\(V^3\\),果断弃。 - -从X号农场回到各个农场比较容易,只要跑一次Dijkstra就好了。复杂度 \\(O(\left|E\right|log\left|V\right|\\)),最坏情况\\(O(\left|E\right|+|V|log|V|)\\)。 - -但是如何求各个农场到X的最短距离呢? - -我们可以把每条边反转,跑一次Dijkstra就好啦~ - -所以跑两次Dijkstra就能AC啦。 - -
- -###代码 -```cpp -#include -#include -#include -#include -#include -#include -using namespace std; -const int maxn = 1000+5; -const int INF = 0x3f3f3f3f; -typedef pair P; // first: shortest path, second: vertex num; - -struct edge { - int to, cost; -}; - -vector G1[maxn]; -vector G2[maxn]; - -int n, m, x; -int go[maxn], back[maxn]; - -void dijkstra (int s, int *d, vector *G) { - priority_queue, greater

> q; - q.push(P(0, s)); - - while (!q.empty()) { - P p = q.top(); - q.pop(); - int v = p.second; - - if (d[v] < p.first) continue; - for (int i = 0; i < G[v].size(); i++) { - edge e = G[v][i]; - if (d[e.to] > d[v] + e.cost) { - d[e.to] = d[v] + e.cost; - q.push(P(d[e.to], e.to)); - } - } - } -} - -int main(void) { - while (cin >> n >> m >> x) { - int u; - for (int i = 1; i <= n; i++) { - G1[i].clear(); - G2[i].clear(); - } - - for (int i = 1; i <= m; i++) { - edge a; - cin >> u >> a.to >> a.cost; - G1[u].push_back(a); - } - - fill(back, back+n+1, INF); - back[x] = 0; - dijkstra(x, back, G1); - - for (int i = 1; i <= n; i++) { - edge a; - for (int j = 0; j < G1[i].size(); j++) { - a.to = i; - a.cost = G1[i][j].cost; - G2[G1[i][j].to].push_back(a); - } - } - - fill(go, go+n+1, INF); - go[x] = 0; - dijkstra(x, go, G2); - - int ans = -1; - for (int i = 1; i <= n; i++) { - go[i] += back[i]; - if (ans < go[i]) ans = go[i]; - } - - cout << ans << endl; - } - return 0; -} - -``` diff --git a/_posts/2016/2016-05-14-poj-3268-silver-cow-party.md b/_posts/2016/2016-05-14-poj-3268-silver-cow-party.md deleted file mode 100644 index 30e863f1..00000000 --- a/_posts/2016/2016-05-14-poj-3268-silver-cow-party.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: "post" -title: "POJ 3268 Silver Cow Party" -date: "2016-05-14" -lang: en -tags: [POJ, Graph] -redirect_from: "/poj-3268-silver-cow-party/" ---- - -There are one cow from each \\(N\\) (\\(1 \le N \le 1000\\)) farms want to go to the number X farm to have a party, hurrah! One cow from each farm need to go to the party and go back. There are \\(M\\) (\\(1 \le M \le 100,000\\)) weighted (represents time) one-direction roads connects pairs of roads. Cows are smart though, they want to go via the shortest path. The question is, what is the longest time the cow will take. - -Link: [http://poj.org/problem?id=3268] - -
-
-
-
-
- -###Solution -First thought is Floyd algorithm, but look at the data for vertex `N` is no larger than 1000. We know the complexity of Floyd is \\(V^3\\) which is 1e9 in this case. This will definitely not work. - -It is easy to find out that if you consider each cow goes back to their farm after the party. It becomes that from one source what’s the shortest path to each vertex. Sounds familiar? We can use Dijkstra for this part since the complexity is \\(O(\left|E\right|log\left|V\right|\\)), worst case \\(O(\left|E\right|+|V|log|V|)\\). - -But how can we find the shortest path when each cow goes for the party? - -We can reverse each edge and do Dijkstra from the source X again and it will be our answer for this part. - -
- -###Code -```cpp -#include -#include -#include -#include -#include -#include -using namespace std; -const int maxn = 1000+5; -const int INF = 0x3f3f3f3f; -typedef pair P; // first: shortest path, second: vertex num; - -struct edge { - int to, cost; -}; - -vector G1[maxn]; -vector G2[maxn]; - -int n, m, x; -int go[maxn], back[maxn]; - -void dijkstra (int s, int *d, vector *G) { - priority_queue, greater

> q; - q.push(P(0, s)); - - while (!q.empty()) { - P p = q.top(); - q.pop(); - int v = p.second; - - if (d[v] < p.first) continue; - for (int i = 0; i < G[v].size(); i++) { - edge e = G[v][i]; - if (d[e.to] > d[v] + e.cost) { - d[e.to] = d[v] + e.cost; - q.push(P(d[e.to], e.to)); - } - } - } -} - -int main(void) { - while (cin >> n >> m >> x) { - int u; - for (int i = 1; i <= n; i++) { - G1[i].clear(); - G2[i].clear(); - } - - for (int i = 1; i <= m; i++) { - edge a; - cin >> u >> a.to >> a.cost; - G1[u].push_back(a); - } - - fill(back, back+n+1, INF); - back[x] = 0; - dijkstra(x, back, G1); - - for (int i = 1; i <= n; i++) { - edge a; - for (int j = 0; j < G1[i].size(); j++) { - a.to = i; - a.cost = G1[i][j].cost; - G2[G1[i][j].to].push_back(a); - } - } - - fill(go, go+n+1, INF); - go[x] = 0; - dijkstra(x, go, G2); - - int ans = -1; - for (int i = 1; i <= n; i++) { - go[i] += back[i]; - if (ans < go[i]) ans = go[i]; - } - - cout << ans << endl; - } - return 0; -} - -``` diff --git a/_posts/2016/2016-08-31-usaco-lamps.cn.md b/_posts/2016/2016-08-31-usaco-lamps.cn.md deleted file mode 100644 index dfda2f58..00000000 --- a/_posts/2016/2016-08-31-usaco-lamps.cn.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -layout: post -title: USACO Party Lamps -date: '2016-08-31' -tags: [USACO] -lang: cn -redirect_from: "/cn/usaco-lamps/" ---- - -有 \\(N\\) \\((10 \le N \le 100)\\) 盏亮瞎眼的灯,从 1 到 N 编号。 - -有四种按钮: - -按钮 | 用途 ---- | --- -1 | 反转所有的灯(开变为关,关变为开) -2 | 反转编号为奇数的灯(如 1,3,5) -3 | 反转编号为偶数的灯(如 2,4,6) -4 | 反转编号为 \\(3k+1 \; 当 \; k \ge 0\\) 的灯 (如 1,4,7) - -
- -给出 \\(C\\)(按下按钮的次数, \\(0 \le C \le 10000\\))和一些灯最后的状态,找出所有组不同的灯的状态。 - -开始时所有灯都开着,\\(C = 0\\)。 -
-
-
-
-
- -### 题解 -从题意中,我们可以知道: - -1. 每6个灯是一组,因为按钮作用1,2,3的最小公倍数是6(按钮1改变每个灯,按钮2和3改变每2个灯中的一个,按钮4改变每3个灯中的1个)。 - -2. 如果按下同一个按钮两次,效果和不按该按钮相同。用逻辑符号表示,\\( \sim(\sim p) = p \\)。一个按钮只有开或关两种可能,一共4种按钮。所以,一共有 \\( 2^4 = 16 \\) 种可能。 - -那么, - -- 当 \\(C = 0\\),检查当前状态是否符合条件。 -- 当 \\(C = 1\\),按下每个按钮一次。 -- 当 \\( C \ge 2 \\), 检查所有16种可能。 - -这是个练习 `bitset` 的好机会。原来是想把 `bitset` 放进 `set` 里的,后来发现 `set` 不支持对 `bitset` 进行排序。如果有谁知道怎么让它支持对 `bitset` 进行排序的,麻烦告诉我一下~ - -
- -### 代码 -```cpp -/* -ID: cepheid1 -LANG: C++11 -TASK: lamps -*/ - -#include -#include -#include -#include -#include -#include -#include -using namespace std; -ifstream fin("lamps.in"); -ofstream fout("lamps.out"); - -/* convert bitset to store in map and set to get ordered */ -set st; -mapmp; - -bitset<6> bt; // simulates 6 lamps -bitset<4> light; // simulates 4 buttons -bool on[7], off[7]; - -int N, C, a; - -bool chk_on() { - for (int i = 0; i < 6 ; i++) { - if (on[i] && !(bt[6-i-1])) return false; - } - return true; -} - -bool chk_off() { - for (int i = 0; i < 6 ; i++) { - if (off[i] && (bt[6-i-1])) return false; - } - return true; -} - -void op(int x) { - switch(x) { - case 1: - bt.flip(); - break; - case 2: - for (int i = 1; i < 6; i+=2) bt.flip(i); - break; - case 3: - for (int i = 0; i < 6; i+=2) bt.flip(i); - break; - case 4: - bt.flip(2); - bt.flip(5); - break; - default: - break; - } -} - -int main(void) { - fin >> N >> C; - while (fin >> a && a != -1) { - if (a%6 == 0) on[5] = true; - else on[(a%6-1)] = true; - } - while (fin >> a && a != -1) { - if (a%6 == 0) off[5] = true; - else off[(a%6-1)] = true; - } - fin.close(); - - bt.set(); - - if (C == 0) { - if (chk_on() && chk_off()) { - if (!st.count(bt.to_ulong())) { - mp[(short)bt.to_ulong()] = bt.to_string(); - st.insert((short)bt.to_ulong()); - } - } - } else if (C == 1) { - for (int i = 0; i < 4; i++) { - bt.set(); - op(i); - if (chk_on() && chk_off()) { - if (!st.count(bt.to_ulong())) { - mp[(short)bt.to_ulong()] = bt.to_string(); - st.insert((short)bt.to_ulong()); - } - } - } - } else { - for (int i = 0; i < 16; i++) { - bt.set(); - light = i; - for (int j = 0; j < 4; j++) { - if (light[j]) op(j+1); - } - if (chk_on() && chk_off()) { - if (!st.count(bt.to_ulong())) { - mp[(short)bt.to_ulong()] = bt.to_string(); - st.insert((short)bt.to_ulong()); - } - } - } - } - - if (st.empty()) { - fout << "IMPOSSIBLE\n"; - } else { - int len = 0; - string s; - for (auto i : st) { - len = 0; - s = ""; - while (len <= N) { - s += (mp[i]); - len += (mp[i]).size(); - } - fout << s.substr(0, N) << endl; - } - } - fout.close(); - return 0; -} -``` diff --git a/_posts/2016/2016-08-31-usaco-lamps.md b/_posts/2016/2016-08-31-usaco-lamps.md deleted file mode 100644 index 216d2e86..00000000 --- a/_posts/2016/2016-08-31-usaco-lamps.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -layout: post -title: USACO Party Lamps -date: '2016-08-31' -tags: [USACO] -lang: en -redirect_from: "/usaco-lamps/" ---- - -A set of \\(N\\) \\((10 \le N \le 100)\\) lamps, numbered from 1 to N. - -Four types of button: - -Button type | Usage ---- | --- -1 | flip all lamps (On to Off, Off to On) -2 | flip odd numbered lamps (e.g. 1, 3, 5) -3 | flip even numbered lamps (e.g. 2, 4, 6) -4 | flip \\(3k+1 \; with \; k \ge 0\\) numbered lamps (e.g. 1, 4, 7) - -
- -Given \\(C\\) (number of button presses, \\(0 \le C \le 10000\\)) and final state of some of the lamps, find all possible distinct configuration. - -At the start, all lamps are ON and \\(C = 0\\). -
-
-
-
-
- -###Solution -From the description, we can know that: - -1. Every 6 lamps is a loop, because the least common multiple of 1, 2, 3 (button 1 changes every lamps, button 2 changes one of 2 lamps and button 3 changes one of 3 lamps) is 6. - -2. If you press the same button twice, it has the same affect that if you don't press the button. In logic symbols, \\( \sim(\sim p) = p \\). A button only can be switched on or off, and there are 4 types of buttons. Therefore, there are \\( 2^4 = 16 \\) possibilities. - -Then - -- for \\(C = 0\\), check current state -- for \\(C = 1\\), press each button once -- for \\( C \ge 2 \\), check every 16 possibilities. - -It is a good opportunity to practice `bitset` though. Take care that `bitset` does not have build-in sort supported in `set` :( - -
- -###Code -```cpp -/* -ID: cepheid1 -LANG: C++11 -TASK: lamps -*/ - -#include -#include -#include -#include -#include -#include -#include -using namespace std; -ifstream fin("lamps.in"); -ofstream fout("lamps.out"); - -/* convert bitset to store in map and set to get ordered */ -set st; -mapmp; - -bitset<6> bt; // simulates 6 lamps -bitset<4> light; // simulates 4 buttons -bool on[7], off[7]; - -int N, C, a; - -bool chk_on() { - for (int i = 0; i < 6 ; i++) { - if (on[i] && !(bt[6-i-1])) return false; - } - return true; -} - -bool chk_off() { - for (int i = 0; i < 6 ; i++) { - if (off[i] && (bt[6-i-1])) return false; - } - return true; -} - -void op(int x) { - switch(x) { - case 1: - bt.flip(); - break; - case 2: - for (int i = 1; i < 6; i+=2) bt.flip(i); - break; - case 3: - for (int i = 0; i < 6; i+=2) bt.flip(i); - break; - case 4: - bt.flip(2); - bt.flip(5); - break; - default: - break; - } -} - -int main(void) { - fin >> N >> C; - while (fin >> a && a != -1) { - if (a%6 == 0) on[5] = true; - else on[(a%6-1)] = true; - } - while (fin >> a && a != -1) { - if (a%6 == 0) off[5] = true; - else off[(a%6-1)] = true; - } - fin.close(); - - bt.set(); - - if (C == 0) { - if (chk_on() && chk_off()) { - if (!st.count(bt.to_ulong())) { - mp[(short)bt.to_ulong()] = bt.to_string(); - st.insert((short)bt.to_ulong()); - } - } - } else if (C == 1) { - for (int i = 0; i < 4; i++) { - bt.set(); - op(i); - if (chk_on() && chk_off()) { - if (!st.count(bt.to_ulong())) { - mp[(short)bt.to_ulong()] = bt.to_string(); - st.insert((short)bt.to_ulong()); - } - } - } - } else { - for (int i = 0; i < 16; i++) { - bt.set(); - light = i; - for (int j = 0; j < 4; j++) { - if (light[j]) op(j+1); - } - if (chk_on() && chk_off()) { - if (!st.count(bt.to_ulong())) { - mp[(short)bt.to_ulong()] = bt.to_string(); - st.insert((short)bt.to_ulong()); - } - } - } - } - - if (st.empty()) { - fout << "IMPOSSIBLE\n"; - } else { - int len = 0; - string s; - for (auto i : st) { - len = 0; - s = ""; - while (len <= N) { - s += (mp[i]); - len += (mp[i]).size(); - } - fout << s.substr(0, N) << endl; - } - } - fout.close(); - return 0; -} -``` diff --git a/_posts/2018/2018-03-23-proxy-server-cn-netease-music.cn.md b/_posts/2018/2018-03-23-proxy-server-cn-netease-music.cn.md deleted file mode 100644 index 4ce35313..00000000 --- a/_posts/2018/2018-03-23-proxy-server-cn-netease-music.cn.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: "post" -title: "搭建代理服务器以访问国内网络(网易云音乐)" -date: "2018-03-23 15:39" -lang: cn -tags: Tool -redirect_from: "/cn/proxy-server-cn-netease-music/" ---- - -身在国外,我们有时候需要看看优酷,听听网易云音乐、QQ音乐。看到“仅限中国大陆播放”的时候真的好气啊。公用的代理服务器我又有点强迫症,正好手头上有个阿里云的服务器,就用[Shadowsocks](https://shadowsocks.org/en/index.html)搭建了一个,现在可以开心地听歌啦。 - -### VPS -你需要一个有中国公网IP地址地服务器。国内服务器有很多选择,比如阿里云,腾讯云,美团云之类的。 - -### 安装服务器端 -用`ssh`或者其他工具进入服务器,然后安装**Shadowsocks**。关于安装的步骤,可以看[这里](https://shadowsocks.org/en/download/servers.html)。 我用的是Python的版本。 - -### 配置Shadowsocks -我平常都把配置文件放在`/etc/shadowsocks/ss.json`。请**注意**`server`那一项平常都改填你VPS的公网IP地址。可是如果在阿里云,等下跑的时候会报错`socket.error: [Errno 99] Cannot assign requested address`。原因是因为你的“真实”IP地址并不是公网IP在阿里云内,所以在socket捆绑IP和端口的时候会报错。填`0.0.0.0`来监听所有端口就可以了。 - -```json -{ - "server":"0.0.0.0", - "server_port":8080, - "local_port":1080, - "password":"yourpassword", - "timeout":600, - "method":"chacha20" -} -``` - -### 可选项 -安装`m2crypto`加解密更快一些 - -```bash -pip install m2crypto -``` - -如果你想用`chacha20`来加密,你需要安装`libsodium`这个包。不然的话也可以用`aes-256-cfb`,大多数系统都自带这个方法。 - -```bash -wget https://github.com/jedisct1/libsodium/releases/download/1.0.16/libsodium-1.0.16.tar.gz -tar -xf libsodium-1.0.16.tar.gz && cd libsodium-1.0.16 -./configure && make -j2 && make install -echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf -ldconfig -``` - -### 运行 -当作守护进程运行 - -```bash -ssserver -c /etc/shadowsocks/ss.json -d start -``` - -当然也可以在前端运行,你可以看到所有代理的IP地址经过服务器。 - -```bash -ssserver -c /etc/shadowsocks/ss.json -``` - -### 安装Shadowsocks客户端 -最后一步,在要用的设备上安装相关客户端。你可以在[这里](https://shadowsocks.org/en/download/clients.html)找到。苹果系统上我觉得[Shadowsocks X](https://github.com/yangfeicheung/Shadowsocks-X)的海外模式比较好用。 - - -### 网易云音乐 -请选择*使用IE代理*。 - -### 更多信息 - -这只是最简单的Shadowsocks服务器搭建,更多信息请查看: - -- https://github.com/shadowsocks/shadowsocks/wiki - -- https://shadowsocks.org/en/config/advanced.html - - - -
-
\ No newline at end of file diff --git a/_posts/2018/2018-03-23-proxy-server-cn-netease-music.md b/_posts/2018/2018-03-23-proxy-server-cn-netease-music.md deleted file mode 100644 index 21b808db..00000000 --- a/_posts/2018/2018-03-23-proxy-server-cn-netease-music.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: "post" -title: "Build a Proxy Server to Access Chinese IP Including Netease Music" -date: "2018-03-23 15:39" -lang: en -tags: Tool -redirect_from: "/proxy-server-cn-netease-music/" ---- - -Sometimes we need to access Chinese content, like Youku Video, Netease Music (Cloud Music) and QQ music. It is very annoying to get "Can Only Be Streamed in Mainland China" or similar messages. Being tired of that, fortunately I have got a VPS from Aliyun and I build a proxy server using [Shadowsocks](https://shadowsocks.org/en/index.html) on it and everything works smoothly now. - -### VPS -You need to have a VPS with **Chinese** IP address, there are tons of choices, like Aliyun(Alibaba Cloud) and Tencent Cloud etc. - - -### Install Server -Then `ssh` to your cloud server or any other tools to get into your server and install **Shadowsocks**, you can follow the instruction [here](https://shadowsocks.org/en/download/servers.html). I use the Python version. - - -### Config Shadowsocks -Config Shadowsocks, I usually write my configuration file in `/etc/shadowsocks/ss.json`. Please **NOTE** that the `server` attribute in most of the case should be your VPS' public IP address. However, AFAIK, for Aliyun and AWS, it will not work if you do so (Error message `socket.error: [Errno 99] Cannot assign requested address` will pop up when you try to run it). The reason is the public IP address is not the "actual" IP when it is used to bind IP and port to the VPS machine, it may refer to other VPS in the local network. Therefore, `0.0.0.0` to listen to all the IP addresses should be used. - - -```json -{ - "server":"0.0.0.0", - "server_port":8080, - "local_port":1080, - "password":"yourpassword", - "timeout":600, - "method":"chacha20" -} -``` - -### Optional -Install `m2crypto` to make encryption a little bit faster. - -```bash -pip install m2crypto -``` - -If you want to use `chacha20` as encryption method, `libsodium` must be installed. Otherwise, you could use `aes-256-cfb`. - -```bash -wget https://github.com/jedisct1/libsodium/releases/download/1.0.16/libsodium-1.0.16.tar.gz -tar -xf libsodium-1.0.16.tar.gz && cd libsodium-1.0.16 -./configure && make -j2 && make install -echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf -ldconfig -``` - - -### Run -Run the server as daemon! - -```bash -ssserver -c /etc/shadowsocks/ss.json -d start -``` - -Alternatively, you can run the server at the front for debugging purpose, see all the traffic going through when you connected from the client later. - -```bash -ssserver -c /etc/shadowsocks/ss.json -``` - -### Install Client -Finally, install clients on devices and start using it! You could install clients from [here](https://shadowsocks.org/en/download/clients.html). For macOS, I recommend [Shadowsocks X](https://github.com/yangfeicheung/Shadowsocks-X) with Overseas mode. - -I prefer to use Shadowsocks client with PAC rather than using proxy for the overall system. - -```js -var domains = { - "music.163.com": 1, - "music.126.net": 1, - "*.v.163.com": 1, - "*.music.163.com": 1, - "*.music.126.net": 1, -}; - -var proxy = "__PROXY__"; - -var direct = 'DIRECT;'; - -var hasOwnProperty = Object.hasOwnProperty; - -function FindProxyForURL(url, host) { - var suffix; - var pos = host.lastIndexOf('.'); - pos = host.lastIndexOf('.', pos - 1); - while(1) { - if (pos <= 0) { - if (hasOwnProperty.call(domains, host)) { - return proxy; - } else { - return direct; - } - } - suffix = host.substring(pos + 1); - if (hasOwnProperty.call(domains, suffix)) { - return proxy; - } - pos = host.lastIndexOf('.', pos - 1); - } -} -``` - -### Netease Music -You need to select *Using IE proxy*. - -### More Information - -It's only the basic setup for Shadowsocks. For advanced topics, check - -- https://github.com/shadowsocks/shadowsocks/wiki - -- https://shadowsocks.org/en/config/advanced.html - - - - -
-
\ No newline at end of file diff --git a/_posts/2018/2018-04-23-poj-3279.cn.md b/_posts/2018/2018-04-23-poj-3279.cn.md deleted file mode 100644 index acdd377d..00000000 --- a/_posts/2018/2018-04-23-poj-3279.cn.md +++ /dev/null @@ -1,183 +0,0 @@ ---- -layout: "post" -title: "POJ 3279 Fliptile" -date: "2018-04-23" -lang: cn -tags: [POJ] -redirect_from: "/cn/poj-3279/" ---- - - -遥远的那边有\\(M \times N\\) \\((1 \le M, N \le 15)\\)块瓷砖。每块瓷砖都能被翻转,它的两面分别是白色(0)和黑色(1)。 - -当你翻转一块砖的时候,相邻的四块砖也会被翻转。注意它们的翻转不会带动它们相邻的再继续翻转喔。 - -现在给你一种布局,输出翻转哪些瓷砖,使得所有瓷砖都变成白色,且翻转数目最小。如果有多种翻转方法但翻转数相同,输出字典序1最小的。 - -如果没有解,输出"IMPOSSIBLE"。 - -链接: http://poj.org/problem?id=3279 - -![flip_1](/img/post/fliptile_1.svg) - -*1 字典序:从左往右读,比较每个字符在字典中出现的先后顺序, 比如说:\\((AA \lt AB \lt BA \lt BB \\))。在今天瓷砖的这个情境下,我们从左往右然后从上往下读* - -``` -0 0 0 0 0 0 1 0 0 -0 0 0 < 1 1 1 < 0 0 0 -0 0 0 1 1 1 0 0 0 -``` - -
-
-
-
-
- -:warning:再努力想想 - -
-
-
-
-
- -### 题解 - -暴力的时间复杂度有\\(O(2^{MN})\\),是肯定超时的。为什么是\\(O(2^{MN})\\)?每块瓷砖有两种状态——翻或不翻,一共有\\(M \times N\\)块瓷砖。 - -我们能看到一块瓷砖的颜色只取决于相邻四块瓷砖和自己的翻转状态。 - -> 5 翻转状态 => 颜色 - -
- -如果我们知道了**四**个翻转状态和**一**个颜色,我们能找出最后一个翻转状态吗?显然是可以的。颜色我们肯定希望是白色。但是问题是哪四个呢?肯定不是周围四个,那样和暴力没差。 - -不如试试用靠上的四个?这样我们就能知道底下的瓷砖该不该翻转了。如果我们在一行上进行这个操作,整行的翻转状态都能知道了。 - -> 4 翻转状态 + 颜色 => 1 翻转状态 - -
- -还可以换个方式想,如果我们知道一个瓷砖上,左,右和它自己的翻转状态,我们就能暂时知道它的颜色。如果是黑色,我们就翻转下面的瓷砖,让它变成白色。 - -> 4 翻转状态 => 颜色 => 需要翻转? - -![flip_2](/img/post/fliptile_2.svg) - -
- -最后两个问题,我们怎么开始呢?如何知道全部翻转完成后是否成功呢? - -- 我们可以直接尝试第一行所有的可能性。 -- 在最后我们可以查看最后一行的颜色。如果还有黑色,则失败。 - -我们还需要维护最小翻转数和那时所有的翻转状态。因为我们从最小字典序开始循环,所以第一个有着最少翻动数的解就是最小字典序的解啦!可以完全不用担心这一块。 - -
- -时间复杂度:\\(O(MN2^N)\\) - -
- -### AC 代码 -```cpp -#include -#include -using namespace std; - -const int INF = 0x3f3f3f3f; -const int maxn = 20; - -// 只用查询上,左,右和自己 -// 不过反正下面也一直是0 -const int dx[] = {0,-1,0,0}; -const int dy[] = {0,0,1,-1}; - -int m, n; -int p[maxn][maxn]; // 输入的布局 -int ans[maxn][maxn]; // 最后的答案 -int cur[maxn][maxn]; // 当前的翻转状态 -int mini; -int tmp; // 当前的翻转数 - -/* 查找颜色 */ -int chk(int r, int c) { - int sum = p[r][c]; - for (int i = 0; i < 4; i++) { - int x = r+dx[i]; - int y = c+dy[i]; - if (x >= 0 && x < m && y >=0 && y < n) { - sum += cur[x][y]; - } - } - - // 和sum % 2是一样的 - return sum & 0x1; -} - -void solve() { - // 从第二行开始循环 - for (int i = 1; i < m; i++) { - for (int j = 0; j < n; j++) { - if (chk(i-1, j)) { - cur[i][j] = 1; - tmp++; - } - } - } - - // 检查最后一行颜色 - for (int i = 0; i < n; i++) { - if (chk(m-1, i)) { - return ; - } - } - - // 是不是最小 - if (tmp < mini) { - mini = tmp; - memcpy(ans, cur, sizeof(ans)); - } -} - -int main(void) { - while (cin >> m >> n) { - mini = INF; - - for (int i = 0; i < m; i++) { - for (int j = 0; j < n; j++) { - cin >> p[i][j]; - } - } - - // 遍历第一行的所有可能 - for (int i = 0; i < (1 << n); i++) { - tmp = 0; - memset(cur, 0, sizeof(cur)); - - // 给第一行赋值 - for(int j = 0; j < n; j++) { - int t = i >> j & 0x1; - cur[0][n-1-j] = t; - if (t) tmp++; - } - - solve(); - } - - if (mini == INF) { - cout << "IMPOSSIBLE" << endl; - } else { - for (int j = 0; j < m; j++) { - for (int k = 0; k < n; k++) { - cout << ans[j][k] << (k == n-1 ? "\n" : " "); - } - } - } - } - - return 0; -} -``` \ No newline at end of file diff --git a/_posts/2018/2018-04-23-poj-3279.md b/_posts/2018/2018-04-23-poj-3279.md deleted file mode 100644 index 493e99c5..00000000 --- a/_posts/2018/2018-04-23-poj-3279.md +++ /dev/null @@ -1,188 +0,0 @@ ---- -layout: "post" -title: "POJ 3279 Fliptile" -date: "2018-04-23" -lang: en -tags: [POJ] -redirect_from: "/poj-3279/" ---- - -There are \\(M \times N\\) \\((1 \le M, N \le 15)\\)square tiles. Each tile can be flipped and the color of tile can change between black(1) and white(0). - -When you flip a tile, 4 adjacent tiles will also be flipped. Note that the four adjacent flipped tiles will NOT cause their adjacent tiles to flip. - -Given a configuration, find the minimum number of flips so that all square tiles become white. If having the minimum number is the same, choose the least lexicographical one1. - -If there is no solution, print "IMPOSSIBLE". - -Link: http://poj.org/problem?id=3279 - -![flip_1](/img/post/fliptile_1.svg) - -*1 lexicographical order: When you read from left to right, compare each of character of them, see which one is less in alphabetically order. For example, \\(AA \lt AB \lt BA \lt BB\\). In this case, we read from left to right, up to down* - -``` -0 0 0 0 0 0 1 0 0 -0 0 0 < 1 1 1 < 0 0 0 -0 0 0 1 1 1 0 0 0 -``` - -
-
-
-
-
- -:warning:THINK HARDER - -
-
-
-
-
- -### Solution - -If we try to brute force, with time complexity of \\(O(2^{MN})\\), we would definitely fail. Why \\(O(2^{MN})\\)? Each tile can have two states - flip or not flip, and there are total number \\(M \times N\\) square tiles. - -We can see that a square tile';s color is only determined by the flip states of its adjacent tiles and its own flip state. - -> 5 flip states => color - - -
- -If we know **four** flip states and **one** color, can we find out the last flip state? Sure we can! The color must be white. But which four flip state we can counter? Clearly not the four adjacent tiles around since then there is no difference from brute force. - -How about the upper four? Then we know the flip state of the lower tile. If we do this for the whole line, then we know the flip state of the whole line. - -> 4 flip states + color => 1 flip state - - -
- -Another way to think about this is that if you know the tile's left, upper, right and its own flip state, you can temporarily find out the color of the tile, if the color is black, then the lower tile must be flipped so that the central tile can be white. - -> 4 flip states => color => flip? - - -![flip_2](/img/post/fliptile_2.svg) - -
- -Final two questions, how should we start and check if it success after flips? - -- To start, iterate all possibilities \\(2^N\\) of the first row. -- Check the color of the last row, if there is any black tile, no luck. - -We also need to store and maintain the minimum number of flips and the flip states of the optimal answer. - -Since we loop from the least lexicographical configurations, first minimum solution is the final answer, so don't worry. - -
- -Time complexity: \\(O(MN2^N)\\) - -
- - -### AC Code -```cpp -#include -#include -using namespace std; - -const int INF = 0x3f3f3f3f; -const int maxn = 20; - -// Only check its up, left, right and itself -// No need to check down, 0 anyway -const int dx[] = {0,-1,0,0}; -const int dy[] = {0,0,1,-1}; - -int m, n; -int p[maxn][maxn]; // original -int ans[maxn][maxn]; // final answer of flip state -int cur[maxn][maxn]; // current flip state -int mini; -int tmp; // store the current number of flips - -/* check the color of the tile */ -int chk(int r, int c) { - int sum = p[r][c]; - for (int i = 0; i < 4; i++) { - int x = r+dx[i]; - int y = c+dy[i]; - if (x >= 0 && x < m && y >=0 && y < n) { - sum += cur[x][y]; - } - } - - // same as sum % 2 - return sum & 0x1; -} - -void solve() { - // start from second row - for (int i = 1; i < m; i++) { - for (int j = 0; j < n; j++) { - if (chk(i-1, j)) { - cur[i][j] = 1; - tmp++; - } - } - } - - // check if success - for (int i = 0; i < n; i++) { - if (chk(m-1, i)) { - return ; - } - } - - // check minimum - if (tmp < mini) { - mini = tmp; - memcpy(ans, cur, sizeof(ans)); - } -} - -int main(void) { - while (cin >> m >> n) { - mini = INF; - - for (int i = 0; i < m; i++) { - for (int j = 0; j < n; j++) { - cin >> p[i][j]; - } - } - - // loop all possibilities of first row - for (int i = 0; i < (1 << n); i++) { - tmp = 0; - memset(cur, 0, sizeof(cur)); - - // assign values to first row - for(int j = 0; j < n; j++) { - int t = i >> j & 0x1; - cur[0][n-1-j] = t; - if (t) tmp++; - } - - solve(); - } - - if (mini == INF) { - cout << "IMPOSSIBLE" << endl; - } else { - for (int j = 0; j < m; j++) { - for (int k = 0; k < n; k++) { - cout << ans[j][k] << (k == n-1 ? "\n" : " "); - } - } - } - } - - return 0; -} -``` \ No newline at end of file diff --git a/_posts/2018/2018-05-28-static-linked-list.cn.md b/_posts/2018/2018-05-28-static-linked-list.cn.md deleted file mode 100644 index 348c8b33..00000000 --- a/_posts/2018/2018-05-28-static-linked-list.cn.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -layout: "post" -title: "静态链表(链式前向星)- 表示图的另一种方法" -date: "2018-05-29" -lang: cn -tags: [Graph, Data-Structure] ---- - -静态链表是一种用数组静态储存的数据结构。它通常用来表示图。它还有个非常有趣的名字叫“链式前向星”。你可以通过以下两种方式来了解它: - -- 从[前向星](#前向星)开始. - -- 从[领接表](#领接表)开始. - -但是我还是建议两种都了解一下啦。如果你知道其中一种或两种的吧,点[这里](#链式前向星)跳过。点一下,玩一年。 - -在本文中,让`u`表示边从该节点出发,`v`表示边到达该节点。 - -
-
- -## 前向星 - -前向星也叫做领接数组,边集数组。我们先把所有的边按照出发节点排序,到达节点的顺序不重要。接着分别用两个数组,一个存节点的在边数组的下标,一个存改节点的出度(有多少条边从该节点出发)。 - -### 范例 - -![example](/img/post/static_linked_list_example.svg) - -我们的图包含如下这些边(出,入): - -``` -(1, 2) -(2, 4) -(3, 4) -(1, 3) -(4, 3) -(3, 2) -(1, 4) -``` - -我们首先以出发节点进行排序然后填入数组: - -- `es[]`: 所有的到达节点 - -- `head[]`: 以`u`为起点的第一条边的位置 - -- `len[]`: `u`的出度(从该节点出发的边的数量) - -``` -(1, 2) --| -(1, 3) --| => len[1] = 3 -(1, 4) --| -(2, 4) -(3, 2) => head[3] = 5 -(3, 4) -(4, 3) - ^ - es[] -``` - -| Array | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -| --- | --- | --- | --- | --- | --- | --- | --- | -| **es** | 2 | 3 | 4 | 4 | 2 | 4 | 3 | -| **head** | 1 | 4 | 5 | 7 | | | | -| **len** | 3 | 1 | 2 | 1 | | | | - -下面我们来看如何取得所有从节点`1`出发的所有边。我们可以用`head[1] == 1`来找到第一条边在`es[]`中的位置是`1`。然后从`head[1]`到`head[1]+len[1]`遍历`es[]`,得到`es[1+0] == 2`, `es[1+1] == 3`, `es[1+2] == 4`。这样我们就得到了边(1,2), (1,3), (1,4)。 - -``` cpp -// 找到所有从u出发的边 -for (int i = 0; i < len[u]; i++) { - cout << u << " " << es[head[u]+i] << endl; -} -``` - -因为前向星需要进行一次排序操作,时间复杂度提升到了$ O(E \times log(E)) $, 所以前向星并不是非常常用。然而链式前向星避免了排序,就解决了这个问题。 - -
- ---- - -
- -## 领接表 - -领接表在C++中通常用`vector G[MAXN_V]`来实现。`G[u]`指向一个包含所有从`u`出发的边的vector。 - -### 范例 - -![example](/img/post/static_linked_list_example.svg) - -最后的结果如下图所示,左边的数组表示`G[]`。当我们读入一条从`u`出发的边,就推入`G[u]`的vector. - -![list](/img/post/static_linked_list_list.svg) - -``` cpp -for (int i = 0; i < G[u].size(); i++) { - cout << u << " " << G[u][i] << endl; -} -``` - -
- ---- - -
- -## 链式前向星 - -链式前向星是[前向星](#前向星)的改进版本,也可以说是[领接表](#领接表)的静态版本。它不用像前向星那样进行排序。它是怎么做到的?不停地戳自己!:) - -### 范例 - -我们和上文使用相同的范例。 - -![example](/img/post/static_linked_list_example.svg) - -有如下边(出发,到达): - -``` -(1, 2) -(2, 4) -(3, 4) -(1, 3) -(4, 3) -(3, 2) -(1, 4) - ^ - es[] -``` - -我们开始构造数组: - -- `es[]`: 所有的到达节点`v`,出发节点的信息会在`head[]`中储存。 - -- `head[]`: 以`u`为起点的第一条边的位置。 - -- `next[]`: 下一条以`u`为起点的边在`es[]`中的位置。用`0`来代表已经是最后一条了。 - -可以得到 - -| Array | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -| --- | --- | --- | --- | --- | --- | --- | --- | -| **es** | 2 | 4 | 4 | 3 | 3 | 2 | 4 | -| **head** | 1 | 2 | 3 | 5 | | | | -| **next** | 4 | 0 | 6 | 7 | 0 | 0 | 0 | - -我们需要另一个数组储存每个节点最后一条边的位置来构造`next[]`数组。当然我们也可以反向构造,不断更新`head[]`来储存。 - - -下面我们来看如何得到从节点**1**出发的所有边: - -1. 用`head[1] == 1`来找到第一条边的位置,设`i = head[1]`,`es[i] == 2`输出了(1, 2)这条边,更新 `i = next[i]`,现在`i == 4`。 - -2. `es[i] == 3` 输出边(1, 3),更新`i = next[i]`,现在`i == 7`。 - -3. `es[i] == 4` 输出边(1, 4),更新`i = next[i]`, 现在`i == 0`。 - -4. 因为`i == 0`,结束。 - -``` cpp -for (int i = head[u]; i; i = next[i]) { - cout << u << " " << es[i] << endl; -} -``` - -发现了吗?链式前向星除了第一次使用`head[]`,其他时候都在`es[]`和`next[]`之间左右横跳来得到下一数据。想法和链表很像,不过用的是数组实现的。 - -## 比较 - -前向星$O(E \times log(E))$的复杂度让人望而却步,有时候可能会变得更糟。 - -领接表易于理解,用C++ STL vector也易于实践。vector动态分配空间所以我们不用知道边的数量。但是,有时候可能会浪费空间因为vector在需要的时候会加倍分配空间。 - -链式前向星不改变数组的顺序,它只是建立起了边之间的关系。它比使用STL更快而且在理解之后易于实现。 - -但是,这些数据结构都在寻找一条特定的边的时候不太优秀,在最坏情况下需要遍历到链表结束。 \ No newline at end of file diff --git a/_posts/2018/2018-05-28-static-linked-list.md b/_posts/2018/2018-05-28-static-linked-list.md deleted file mode 100644 index 4190f261..00000000 --- a/_posts/2018/2018-05-28-static-linked-list.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -layout: "post" -title: "Static Linked List - Another Way To Represent Graphs" -date: "2018-05-29" -lang: en -tags: [Graph, Data-Structure] ---- - -Static Linked List is a data structure that stores linked list in static arrays. It is usually used to represent graphs. It is very interesting that its Chinese name literally translated as "Linked Forward Star". You have two choices of paths to understand this. - -- Start from [Forward Star](#forward-star). - -- Start from [Adjacency List](#adjacency-list). - -However, I would recommend to explore both ideas to have a better understanding. If you know some of it or you just don't care, you can jump to [here](#static-linked-list) straight away. - -
-
- -## Forward Star - -Forward Star is also known as Adjacency Array and . We first store edges in an array and then sorted it. Then we have another two arrays stores the index of each vertex, and out-degree (how many edges are coming from the vertex) respectively. - -### Example - -![example](/img/post/static_linked_list_example.svg) - -We have these edges (from, to) in the example graph: - -``` -(1, 2) -(2, 4) -(3, 4) -(1, 3) -(4, 3) -(3, 2) -(1, 4) -``` - -Let `u` be the vertex where the edge is coming from and `v` be the vertex the edge is going to: - -We sort it first base on `u`, the order of `v` does not matter and we fill arrays - -- `es[]`: the second vertex in each pair - `v`. - -- `head[]`: the index of the first occurrence of `u` (first vertex in the pair) - -- `len[]`: how many edges are going out from this vertex - -``` -(1, 2) --| -(1, 3) --| => len[1] = 3 -(1, 4) --| -(2, 4) -(3, 2) => head[3] = 5 -(3, 4) -(4, 3) - ^ - es[] -``` - -| Array | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -| --- | --- | --- | --- | --- | --- | --- | --- | -| **es** | 2 | 3 | 4 | 4 | 2 | 4 | 3 | -| **head** | 1 | 4 | 5 | 7 | | | | -| **len** | 3 | 1 | 2 | 1 | | | | - -Therefore, we can easily get all edges coming from vertex `1` by first identifying that its index in `es[]` is `1` using `head[1] == 1`, and then iterate `es[]` from `head[1]` to `head[1]+len[1]` (exclusive). That is `es[1+0] == 2`, `es[1+1] == 3`, `es[1+2] == 4` which means the edges (1,2), (1,3), (1,4). - -``` cpp -// to find all edges from vertex u -for (int i = 0; i < len[u]; i++) { - cout << u << " " << es[head[u]+i] << endl; -} -``` - -Forward Star is not frequently used because of its sorting operation which takes $ O(E \times log(E)) $ in time complexity. Therefore we have Linked Forward Star to avoid sorting. - -
- ---- - -
- -## Adjacency List - -Adjacency List is usually implemented by `vector G[MAXN_V]`. `G[u]` points to a vector that stores all edges from `u`. - -### Example - -![example](/img/post/static_linked_list_example.svg) - -The result is like the figure shown below, the array at the left represents each `G[]` respectively. Every time we read a edge from `u`, we push it back to the vector `G[u]` points to. - -![list](/img/post/static_linked_list_list.svg) - -``` cpp -for (int i = 0; i < G[u].size(); i++) { - cout << u << " " << G[u][i] << endl; -} -``` - -
- ---- - -
- -## Static Linked List - -Static Linked List is an improved version of [Forward Star](#forward-star) and the static version of [Adjacency List](#adjacency-list). It avoids sorting the edge array. How? Keep linking to itself! - -### Example - -We use the same example as above. - -![example](/img/post/static_linked_list_example.svg) - -With edges (from, to): - -``` -(1, 2) -(2, 4) -(3, 4) -(1, 3) -(4, 3) -(3, 2) -(1, 4) - ^ - es[] -``` - -We construct arrays, let `u` be the vertex where the edge is coming from and `v` be the vertex the edge is going to: - -- `es[]`: stores `v`s, containing the second vertices from each pair. The information about `u` is stored in `head[]`. - -- `head[]`: the index of first occurrence of the `u`, or in other words, the first element of the list. - -- `next[]`: the index of the next edge that coming from the same `u`, use `0` to represent that it is the end of the list. - -During constructing `next[]`, we need another array to keep track of the position of the last element in each list. Or we can update the `head[]` constantly and store in reverse order. - -So we have - -| Array | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -| --- | --- | --- | --- | --- | --- | --- | --- | -| **es** | 2 | 4 | 4 | 3 | 3 | 2 | 4 | -| **head** | 1 | 2 | 3 | 5 | | | | -| **next** | 4 | 0 | 6 | 7 | 0 | 0 | 0 | - - -Let's walking through finding all edges coming from vertex **1**. - -1. use `head[1] == 1` and let `i = head[1]` to find the index of first edge, `es[i] == 2` yields the edge (1, 2), update `i = next[i]`, now `i == 4`. - -2. `es[i] == 3` yields the edge (1, 3), update `i = next[i]`, now `i == 7`. - -3. `es[i] == 4` yields the edge (1, 4), update `i = next[i]`, now `i == 0`. - -4. since `i == 0`, terminate. - -``` cpp -for (int i = head[u]; i; i = next[i]) { - cout << u << " " << es[i] << endl; -} -``` - -It keeps linking back to itself and bounce between `es[]` and `next[]`, except the first time which uses `head[]`. - -## Comparison - -The time complexity of Forward Star is $O(E \times log(E))$, so if you solve problem use this it may become worse. - -Adjacency List is easy to understand and implement using C++ STL vector. It allocates spaces dynamically, so it does not need to know the number of edges. However, please note that since it allocates twice of the memory as needed, it sometimes wastes some of the space. - -Static Linked List does not change the order of the edges. It only build up relationships by using arrays. It is faster than STL. It is easy to implement once you master it. - -However, these data structures are not good at finding particular edges from a given vertex, the worst case is to iterate to the end of the list. diff --git a/_posts/2018/2018-07-04-cldictp.cn.md b/_posts/2018/2018-07-04-cldictp.cn.md deleted file mode 100644 index 80be9e65..00000000 --- a/_posts/2018/2018-07-04-cldictp.cn.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: "post" -title: "CLDictP: 命令行英文词典工具" -date: "2018-07-04" -lang: cn -tags: - [Project] ---- - -CLDictP是一个用Perl,韦氏词典API写的命令行英文词典工具。 - -这是我第一个用Perl写的小项目。每次想用[Quizlet](https://quizlet.com/)做Flashcard(抽认卡?)来记单词的时候,因为想有的地方要加粗之类的,手动很麻烦。而且查单词的时候打开在线词典,太懒了,就想着写一个小工具吧。 - -它使用了如下韦氏词典API: - -- 韦氏学习词典 - -- 韦氏大学词典 - -每个词条包括: - -- 音标 -- 词性 -- 语法 -- 释义 -- 常用用法 -- 例句 - -所有搜索过的单词存在一个集合里,保存在`searched.txt`里。 - -新的搜索结果会使用特定格式被保存在`quizlet.txt`里: - -- 单词和定义之间:`$` -- 卡片与卡片之间:`---` - -## 用法 - -1. 获得API密匙:[DictionaryAPI](https://www.dictionaryapi.com/) -2. 在`api_template.json`中加入获得的密匙,更改文件名为`api.json` -3. 安装依赖模块: - - ``` bash - $ cpan Term::ANSIColor Term::ReadKey LWP::UserAgent LWP::Protocol::https Readonly XML::LibXML JSON::XS Data::Dumper Set::Light - ``` - -4. 运行脚本: - - ``` bash - $ perl dict.pl - ``` - -5. 使用`Ctrl+D`退出 - -## 演示 - -![demo_gif](/img/post/CLDictP_demo.gif) - -## 源码 - -源码在[Github](https://github.com/PwzXxm/CLDictP) \ No newline at end of file diff --git a/_posts/2018/2018-07-04-cldictp.md b/_posts/2018/2018-07-04-cldictp.md deleted file mode 100644 index 0acc3373..00000000 --- a/_posts/2018/2018-07-04-cldictp.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: "post" -title: "CLDictP: A Command-Line Dictionary Tool" -date: "2018-07-04" -lang: en -tags: - [Project] ---- - -A command line dictionary written in Perl using Merriam-Webster APIs. - -This is my first project using Perl. I feel it is tedious to type formatted definitions to [Quizlet](https://quizlet.com/)(A website which can make flashcards for you) and I'm too lazy to open browser and online dictionary pages. Why not combining these two? - -It uses following APIs: - -- Merriam-Webster Learner - -- Merriam-Webster Collegiate - -For each entry, it contains: - -- Pronunciation: IPA(International Phonetic Alphabet) - -- Part of Speech - -- Grammar - -- Definition - -- Common Usage - -- Examples - -All searched words are saved in a set and saved to `searched.txt`. - -It also save searched words and definitions into the file `quizlet.txt` so that they can be imported into [Quizlet](https://quizlet.com/) which makes flashcards. The format is: - -- between term and definition: `$` - -- between cards: `---` - -## Usage - -1. Get API Keys: [DictionaryAPI](https://www.dictionaryapi.com/). - -2. Add API Keys to `api_template.json` and change the file name to `api.json`. - -3. Install dependencies with - - ``` bash - $ cpan Term::ANSIColor Term::ReadKey LWP::UserAgent LWP::Protocol::https Readonly XML::LibXML JSON::XS Data::Dumper Set::Light - ``` - -4. Run the script with - - ``` bash - $ perl dict.pl - ``` - -5. To exit, use Ctrl+D. - -## Demo - -![demo_gif](/img/post/CLDictP_demo.gif) - -## Source Files - -The source files are hosted on [Github](https://github.com/PwzXxm/CLDictP). \ No newline at end of file diff --git a/_posts/2019/2019-09-19-lc-week-1.cn.md b/_posts/2019/2019-09-19-lc-week-1.cn.md deleted file mode 100644 index 22923d71..00000000 --- a/_posts/2019/2019-09-19-lc-week-1.cn.md +++ /dev/null @@ -1,292 +0,0 @@ ---- -layout: "post" -title: "力扣挑战第一周 - 周赛 155 + 其他题目" -date: "2019-09-19" -lang: cn -tags: - [LeetCode] -redirect_from: "/cn/2019/lc-8/" ---- - -这是力扣第一周挑战,包括周赛 155 和其他一些题目。 - -
-

-**Contents** - -- [Weekly Contest 155](#weekly-contest-155) - - [Minimum Absolute Difference](#1200-minimum-absolute-difference) - - [Ugly Number III](#1201-ugly-number-iii) - - [Smallest String With Swaps](#1202-smallest-string-with-swaps) - - [Sort Items by Groups Respecting Dependencies](#1203-sort-items-by-groups-respecting-dependencies) -- [String to Integer(atoi)](#string-to-integer) - -
- -
- -## [Weekly Contest 155](https://leetcode.com/contest/weekly-contest-155) - -### [1200. Minimum Absolute Difference](https://leetcode.com/contest/weekly-contest-155/problems/minimum-absolute-difference/) -暴力。先遍历找到最小绝对差,接着再遍历一遍输出差值是该值的整数对。 - -``` cpp -class Solution { -public: - vector> minimumAbsDifference(vector& arr) { - vector> ans; - if (arr.size() == 1) return ans; - sort(arr.begin(), arr.end()); - - int mini = 0x3f3f3f3f; - for (int i = 1; i < arr.size(); ++i) { - mini = min(mini, abs(arr[i] - arr[i-1])); - } - - for (int i = 1; i < arr.size(); ++i) { - if (abs(arr[i]- arr[i-1]) == mini) { - if (arr[i] < arr[i-1]) { - ans.push_back({arr[i], arr[i-1]}); - } else { - ans.push_back({arr[i-1], arr[i]}); - } - } - } - return ans; - } -}; -``` - -
- -### [1201. Ugly Number III](https://leetcode.com/contest/weekly-contest-155/problems/ugly-number-iii/) -二分 + 容斥。能被`A`或`B`整除的数的个数等于能被`A`整除的数的个数加上能被`B`整除的数的个数,减去能被`A`,`B`同时整除的数的个数。相同的理论也可以用于三个数。 - -这题`n`的范围是 $[1, 2*10^9]$,二分的时间复杂度为 $\log_2(2*10^9)$,所以是可行的。 - -``` cpp -typedef long long LL; -class Solution { - LL gcd(LL x, LL y) { - return (y == 0 ? x : gcd(y, x % y)); - } - - LL lcm(LL x, LL y) { - return x / gcd(x, y) * y; - } -public: - LL nthUglyNumber(LL n, LL a, LL b, LL c) { - LL l = 1, r = 2e9, mid, cnt; - LL lcm_ab = lcm(a, b); - LL lcm_ac = lcm(a, c); - LL lcm_bc = lcm(b, c); - LL lcm_abc = lcm(lcm_ab, c); - while (l < r) { - mid = (l+r)/2; - cnt = mid/a + mid/b + mid/c - mid/lcm_ab - mid/lcm_ac - mid/lcm_bc + mid/lcm_abc; - if (cnt < n) { - l = mid+1; - } else { - r = mid; - } - } - - return l; - } -}; -``` - -
- -### [1202. Smallest String With Swaps](https://leetcode.com/contest/weekly-contest-155/problems/smallest-string-with-swaps/) -并查集。我们可以看出如果在`(1,2)`,`(2,5)`上的元素分别可以被交换,那它们三个元素可以被任意交换,组成任意排列。 - -所以我们可以先把能互相交换的元素用并查集捆绑起来,最后构造答案时优先选用各个组里字典序最小的。 - -``` cpp -class Solution { - const static int MAXN = 1e5+5; - int par[MAXN]; - int rk[MAXN]; - int find(int x) { - return (par[x] == x ? x : par[x] = find(par[x])); - } - - void unite(int x, int y) { - x = find(x); y = find(y); - if (x == y) return ; - if (rk[x] < rk[y]) { - par[x] = y; - } else { - par[y] = x; - if (rk[x] == rk[y]) rk[x]++; - } - } - -public: - string smallestStringWithSwaps(string s, vector>& pairs) { - int n = s.size(); - for (int i = 0; i < n; ++i) { - par[i] = i; - rk[i] = 0; - } - - for (int i = 0; i < pairs.size(); ++i) { - unite(pairs[i][0], pairs[i][1]); - } - - string ans; - - unordered_map m; - for (int i = 0; i < n; ++i) { - m[find(i)].push_back(s[i]); - } - - for (auto &x : m) { - sort(x.second.begin(), x.second.end()); - } - - for (int i = 0; i < n; ++i) { - ans += m[find(i)][0]; - m[find(i)].erase(0, 1); - } - - return ans; - } -}; -``` - -
- -## [1203. Sort Items by Groups Respecting Dependencies](https://leetcode.com/contest/weekly-contest-155/problems/sort-items-by-groups-respecting-dependencies/) - -拓扑排序两次。 - -首先,我们给那些单独成一组的元素进行编号(原先为`-1`)。 - -然后我们对于各个组进行拓扑排序。我们只关心组之间的边,忽略组内的边。 - -最后再循环各个组,对每个组进行一次拓扑排序,输出结果。 - -``` cpp -class Solution { -public: - vector sortItems(int n, int m, vector& group, vector>& beforeItems) { - // independent element belongs to its own group - for (int i = 0; i < group.size(); ++i) { - if (group[i] < 0) group[i] = m++; - } - - vector > group_edge(m), within_group_edge(n); - vector group_deg(m), within_group_deg(n); - - for (int i = 0; i < n; ++i) { - for (const auto& y : beforeItems[i]) { - if (group[i] == group[y]) { - within_group_edge[y].push_back(i); - within_group_deg[i]++; - } else { - group_edge[group[y]].push_back(group[i]); - group_deg[group[i]]++; - } - } - } - - // topo sort groups - vector topo; - queue q; - for (int i = 0; i < m; ++i) { - if (group_deg[i] == 0) q.push(i); - } - - while (!q.empty()) { - int u = q.front(); q.pop(); - for (const auto& v : group_edge[u]) { - group_deg[v]--; - if (group_deg[v] == 0) { - q.push(v); - } - } - topo.push_back(u); - } - - if (topo.size() != m) return {}; - - // topo sort within each group - vector ans; - vector > group_member(m); - - for (int i = 0; i < n; ++i) { - group_member[group[i]].push_back(i); - } - - for (const auto& g : topo) { - queue q2; - vector topo2; - - for (const auto& x : group_member[g]) { - if (within_group_deg[x] == 0) q2.push(x); - } - - while (!q2.empty()) { - int u = q2.front(); q2.pop(); - for (const auto& v : within_group_edge[u]) { - within_group_deg[v]--; - if (within_group_deg[v] == 0) { - q2.push(v); - } - } - topo2.push_back(u); - } - - if (topo2.size() != group_member[g].size()) return {}; - for (const auto& x : topo2) { - ans.push_back(x); - } - } - return ans; - } -}; -``` - -
- ------- - -## [LeetCode 8 - String to Integer (atoi)](https://leetcode.com/problems/string-to-integer-atoi/) - -这题有点奇怪。像`+-123`这样的数据没有在题目解释中说明。 - -需要注意的是检查溢出的条件。注意`int`的最后一位是`7`。 - -### Solution -``` cpp -class Solution { -public: - int myAtoi(string str) { - int sign = 1; - int ans = 0; - int i = 0; - - while (isspace(str[i])) ++i; - if (str[i] == '+' || str[i] == '-') { - sign = (str[i++] == '+' ? 1 : -1); - } - for (; i < str.size(); ++i) { - if (str[i] >= '0' && str[i] <= '9') { - if (ans > INT_MAX/10 || (ans == INT_MAX/10 && str[i] > '7')) { - return (sign==1 ? INT_MAX : INT_MIN); - } - - ans *= 10; - ans += (str[i]-'0'); - } else { - break; - } - } - return sign*ans; - } -}; -``` - -
\ No newline at end of file diff --git a/_posts/2019/2019-09-19-lc-week-1.md b/_posts/2019/2019-09-19-lc-week-1.md deleted file mode 100644 index 42b02b24..00000000 --- a/_posts/2019/2019-09-19-lc-week-1.md +++ /dev/null @@ -1,291 +0,0 @@ ---- -layout: "post" -title: "LeetCode Challenge Week 1 - Weekly Contest 155 and others" -date: "2019-09-19" -lang: en -tags: - [LeetCode] -redirect_from: "/2019/lc-8/" ---- - -This is the first week of LeetCode Challenges. It includes weekly contest 155 and other problems. - -
-
-**Contents** - -- [Weekly Contest 155](#weekly-contest-155) - - [Minimum Absolute Difference](#1200-minimum-absolute-difference) - - [Ugly Number III](#1201-ugly-number-iii) - - [Smallest String With Swaps](#1202-smallest-string-with-swaps) - - [Sort Items by Groups Respecting Dependencies](#1203-sort-items-by-groups-respecting-dependencies) -- [String to Integer(atoi)](#string-to-integer) -
- -
- -## [Weekly Contest 155](https://leetcode.com/contest/weekly-contest-155) - -### [1200. Minimum Absolute Difference](https://leetcode.com/contest/weekly-contest-155/problems/minimum-absolute-difference/) -Brute force. Find the minimum absolute difference and then iterate the list again to output the pairs with minimum absolute difference. - -``` cpp -class Solution { -public: - vector> minimumAbsDifference(vector& arr) { - vector> ans; - if (arr.size() == 1) return ans; - sort(arr.begin(), arr.end()); - - int mini = 0x3f3f3f3f; - for (int i = 1; i < arr.size(); ++i) { - mini = min(mini, abs(arr[i] - arr[i-1])); - } - - for (int i = 1; i < arr.size(); ++i) { - if (abs(arr[i]- arr[i-1]) == mini) { - if (arr[i] < arr[i-1]) { - ans.push_back({arr[i], arr[i-1]}); - } else { - ans.push_back({arr[i-1], arr[i]}); - } - } - } - return ans; - } -}; -``` - -
- -### [1201. Ugly Number III](https://leetcode.com/contest/weekly-contest-155/problems/ugly-number-iii/) -Binary search + inclusion/exclusion principle. The number of integers that is divisible by `A` and `B` is equal to the number of integers divisible by `A` plus the number of integers divisible by `b` and minus the number of integers divisible by both `A` and `B`. The theory can be applied to the case when it is divisible by three numbers. - -Also, the range of `n` is $[1, 2*10^9]$, the time complexity of binary search is $\log_2(2*10^9)$, which is totally feasible. - -``` cpp -typedef long long LL; -class Solution { - LL gcd(LL x, LL y) { - return (y == 0 ? x : gcd(y, x % y)); - } - - LL lcm(LL x, LL y) { - return x / gcd(x, y) * y; - } -public: - LL nthUglyNumber(LL n, LL a, LL b, LL c) { - LL l = 1, r = 2e9, mid, cnt; - LL lcm_ab = lcm(a, b); - LL lcm_ac = lcm(a, c); - LL lcm_bc = lcm(b, c); - LL lcm_abc = lcm(lcm_ab, c); - while (l < r) { - mid = (l+r)/2; - cnt = mid/a + mid/b + mid/c - mid/lcm_ab - mid/lcm_ac - mid/lcm_bc + mid/lcm_abc; - if (cnt < n) { - l = mid+1; - } else { - r = mid; - } - } - - return l; - } -}; -``` - -
- -### [1202. Smallest String With Swaps](https://leetcode.com/contest/weekly-contest-155/problems/smallest-string-with-swaps/) -Union find. We can find that if it is swappable for the letters at index `(1,2)` and `(2,5)`, the letters at `1, 2, 5` can be in arbitrary order. - -Having said that, we can use union find to group them together, then append the character with the smallest lexicographical order in each group. - -``` cpp -class Solution { - const static int MAXN = 1e5+5; - int par[MAXN]; - int rk[MAXN]; - int find(int x) { - return (par[x] == x ? x : par[x] = find(par[x])); - } - - void unite(int x, int y) { - x = find(x); y = find(y); - if (x == y) return ; - if (rk[x] < rk[y]) { - par[x] = y; - } else { - par[y] = x; - if (rk[x] == rk[y]) rk[x]++; - } - } - -public: - string smallestStringWithSwaps(string s, vector>& pairs) { - int n = s.size(); - for (int i = 0; i < n; ++i) { - par[i] = i; - rk[i] = 0; - } - - for (int i = 0; i < pairs.size(); ++i) { - unite(pairs[i][0], pairs[i][1]); - } - - string ans; - - unordered_map m; - for (int i = 0; i < n; ++i) { - m[find(i)].push_back(s[i]); - } - - for (auto &x : m) { - sort(x.second.begin(), x.second.end()); - } - - for (int i = 0; i < n; ++i) { - ans += m[find(i)][0]; - m[find(i)].erase(0, 1); - } - - return ans; - } -}; -``` - -
- -## [1203. Sort Items by Groups Respecting Dependencies](https://leetcode.com/contest/weekly-contest-155/problems/sort-items-by-groups-respecting-dependencies/) - -Topological sort twice. - -Firstly, we give distinct group numbers to items that do not belong to any of the group, instead of using `-1`. - -Then we perform topological sort on the groups only. -We only care about the edges among groups and ignore edges within each group. - -After that, we iterate over each group and perform topological sort within each group. - -``` cpp -class Solution { -public: - vector sortItems(int n, int m, vector& group, vector>& beforeItems) { - // independent element belongs to its own group - for (int i = 0; i < group.size(); ++i) { - if (group[i] < 0) group[i] = m++; - } - - vector > group_edge(m), within_group_edge(n); - vector group_deg(m), within_group_deg(n); - - for (int i = 0; i < n; ++i) { - for (const auto& y : beforeItems[i]) { - if (group[i] == group[y]) { - within_group_edge[y].push_back(i); - within_group_deg[i]++; - } else { - group_edge[group[y]].push_back(group[i]); - group_deg[group[i]]++; - } - } - } - - // topo sort groups - vector topo; - queue q; - for (int i = 0; i < m; ++i) { - if (group_deg[i] == 0) q.push(i); - } - - while (!q.empty()) { - int u = q.front(); q.pop(); - for (const auto& v : group_edge[u]) { - group_deg[v]--; - if (group_deg[v] == 0) { - q.push(v); - } - } - topo.push_back(u); - } - - if (topo.size() != m) return {}; - - // topo sort within each group - vector ans; - vector > group_member(m); - - for (int i = 0; i < n; ++i) { - group_member[group[i]].push_back(i); - } - - for (const auto& g : topo) { - queue q2; - vector topo2; - - for (const auto& x : group_member[g]) { - if (within_group_deg[x] == 0) q2.push(x); - } - - while (!q2.empty()) { - int u = q2.front(); q2.pop(); - for (const auto& v : within_group_edge[u]) { - within_group_deg[v]--; - if (within_group_deg[v] == 0) { - q2.push(v); - } - } - topo2.push_back(u); - } - - if (topo2.size() != group_member[g].size()) return {}; - for (const auto& x : topo2) { - ans.push_back(x); - } - } - return ans; - } -}; -``` - ------- - -## [LeetCode 8 - String to Integer (atoi)](https://leetcode.com/problems/string-to-integer-atoi/) - -This question is a bit odd. -Test cases like `+-123` are not explicitly stated in the description of the problem. - -The tricky part is to check the condition of overflow. Note that the last digits of `INT_MAX` is `7`, don't forget to check. - -### Solution -``` cpp -class Solution { -public: - int myAtoi(string str) { - int sign = 1; - int ans = 0; - int i = 0; - - while (isspace(str[i])) ++i; - if (str[i] == '+' || str[i] == '-') { - sign = (str[i++] == '+' ? 1 : -1); - } - for (; i < str.size(); ++i) { - if (str[i] >= '0' && str[i] <= '9') { - if (ans > INT_MAX/10 || (ans == INT_MAX/10 && str[i] > '7')) { - return (sign==1 ? INT_MAX : INT_MIN); - } - - ans *= 10; - ans += (str[i]-'0'); - } else { - break; - } - } - return sign*ans; - } -}; -``` - -
\ No newline at end of file diff --git a/_posts/2019/2019-10-02-lc-week-2.cn.md b/_posts/2019/2019-10-02-lc-week-2.cn.md deleted file mode 100644 index 5767845d..00000000 --- a/_posts/2019/2019-10-02-lc-week-2.cn.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -layout: "post" -title: "力扣挑战第二周 - 周赛 156 + 其他题目" -date: "2019-10-02" -lang: cn -tags: - [LeetCode] ---- - -力扣挑战第二周。因为有事,所以参加了模拟比赛。 - -
-
-**Contents** - -- [Weekly Contest 156](#weekly-contest-156) - - [1207. Unique Number of Occurrences](#1207-unique-number-of-occurrences) - - [1208. Get Equal Substrings Within Budget](#1208-get-equal-substrings-within-budget) - - [1209. Remove All Adjacent Duplicates in String II](#1209-remove-all-adjacent-duplicates-in-string-ii) - - [1210. Minimum Moves to Reach Target with Rotations](#1210-minimum-moves-to-reach-target-with-rotations) -
-
- -## Weekly Contest 156 - -### [1207. Unique Number of Occurrences](https://leetcode.com/contest/weekly-contest-156/problems/unique-number-of-occurrences/) - -暴力。记下每个数出现的次数,遍历次数看有没有相同的。 - -```cpp -class Solution { -public: - bool uniqueOccurrences(vector& arr) { - unordered_map occ; - unordered_map flag; - - for (int i = 0; i < arr.size(); ++i) { - occ[arr[i]]++; - } - - for (const auto x : occ) { - if (flag.find(x.second) != flag.end()) { - if (flag[x.second]) return false; - } else { - flag[x.second] = true; - } - } - - return true; - } -}; -``` - -### [1208. Get Equal Substrings Within Budget](https://leetcode.com/contest/weekly-contest-156/problems/get-equal-substrings-within-budget/) - -两个指针分别记录当前子字符串的起点和终点。可以这样想:在一开始,我们看更换下一个字符的操作花费是否大于`maxCost`,如果小于或等于,终点指针就向后移一位。重复这个操作直到操作失败。 -然后如果我们想再加入下一个字符,因为我们的`total_cost`已经“满了”,就必须从开头省出一个操作的花费:减去更换开头字符的操作并往右移动一位起点指针。 - -```cpp -class Solution { -public: - int equalSubstring(string s, string t, int maxCost) { - int maxi = -1; - int total_cost = 0; - int l = 0, r = 0; - while (r < t.size()) { - int c = abs(s[r]-t[r]); - while ((total_cost + c) <= maxCost) { - total_cost += c; - r++; - - if (r >= s.size()) break; - c = abs(s[r]-t[r]); - } - - maxi = max(maxi, r-l); - - total_cost -= abs(s[l] - t[l]); - l++; - } - - return maxi; - } -}; -``` - -### [1209. Remove All Adjacent Duplicates in String II](https://leetcode.com/contest/weekly-contest-156/problems/remove-all-adjacent-duplicates-in-string-ii/) - -栈。每次我们碰到一个新的字符,就往栈顶加入这个字符和一个初始为`1`的计数器。如果下一个字符和栈顶的字符相同,就增加计数器的计数。当计数和`k`相同时,把该字符从栈中扔掉。 - -```cpp -class Solution { -public: - string removeDuplicates(string s, int k) { - int s_size = s.size(); - if (s_size <= 1) return s; - - string ans; - stack > stk; - stk.push({s[0], 1}); - - for (int i = 1; i < s_size; i++) { - if (!stk.empty() && stk.top().first == s[i]) { - stk.top().second++; - - if (stk.top().second == k) { - stk.pop(); - } - } else { - stk.push({s[i], 1}); - } - } - - while (!stk.empty()) { - pair p = stk.top(); stk.pop(); - ans += string(p.second, p.first); - } - - reverse(ans.begin(), ans.end()); - - return ans; - } -}; -``` - -### [1210. Minimum Moves to Reach Target with Rotations](https://leetcode.com/contest/weekly-contest-156/problems/minimum-moves-to-reach-target-with-rotations/) - -广度遍历搜索。这题不难只要把实现写对了就行。 - -{% raw %} - -```cpp -class Solution { - typedef pair block_t; - typedef pair block2_t; - typedef pair state_t; // step - - public: - int minimumMoves(vector>& grid) { - int N = grid.size(); - queue q; - q.push({{{0, 0}, {0, 1}}, 0}); - - set visited; - visited.insert({{0, 0}, {0, 1}}); - pair::iterator, bool> rst; - - while (!q.empty()) { - state_t s = q.front(); q.pop(); - block_t a = s.first.first; - block_t b = s.first.second; - int step = s.second; - - - if (a.first == b.first) { - // horizontal - if (a.first == N-1 && a.second == N-2 && b.first == N-1 && b.second == N-1) { - return step; - } - - if (b.second+1 < N && grid[b.first][b.second+1] == 0){ - // right - rst = visited.insert({{b.first, b.second}, {b.first, b.second+1}}); - if (rst.second) { - q.push({{{b.first, b.second}, {b.first, b.second+1}}, step+1}); - } - } - - if (a.first+1 < N && grid[a.first+1][a.second] == 0 && grid[b.first+1][b.second] == 0) { - // down - rst = visited.insert({{a.first+1, a.second}, {b.first+1, b.second}}); - if (rst.second) { - q.push({{{a.first+1, a.second}, {b.first+1, b.second}}, step+1}); - } - - // clockwise - rst = visited.insert({{a.first, a.second}, {a.first+1, a.second}}); - if (rst.second) { - q.push({{{a.first, a.second}, {a.first+1, a.second}}, step+1}); - } - } - } else { - // vertical - if (b.first+1 < N && grid[b.first+1][b.second] == 0){ - // down - rst = visited.insert({{b.first, b.second}, {b.first+1, b.second}}); - if (rst.second) { - q.push({{{b.first, b.second}, {b.first+1, b.second}}, step+1}); - } - } - - if (a.second+1 < N && grid[a.first][a.second+1] == 0 && grid[b.first][b.second+1] == 0) { - // right - rst = visited.insert({{a.first, a.second+1}, {b.first, b.second+1}}); - if (rst.second) { - q.push({{{a.first, a.second+1}, {b.first, b.second+1}}, step+1}); - } - - // anti-clockwise - rst = visited.insert({{a.first, a.second}, {a.first, a.second+1}}); - if (rst.second) { - q.push({{{a.first, a.second}, {a.first, a.second+1}}, step+1}); - } - } - } - } - - return -1; - } -}; -``` -{% endraw %} \ No newline at end of file diff --git a/_posts/2019/2019-10-02-lc-week-2.md b/_posts/2019/2019-10-02-lc-week-2.md deleted file mode 100644 index 869217b5..00000000 --- a/_posts/2019/2019-10-02-lc-week-2.md +++ /dev/null @@ -1,213 +0,0 @@ ---- -layout: "post" -title: "LeetCode Challenge Week 2 - Weekly Contest 156 and others" -date: "2019-10-02" -lang: en -tags: - [LeetCode] ---- - -Second week of LeetCode Challenge. Participated the virtual contest. - -
-
-**Contents** - -- [Weekly Contest 156](#weekly-contest-156) - - [1207. Unique Number of Occurrences](#1207-unique-number-of-occurrences) - - [1208. Get Equal Substrings Within Budget](#1208-get-equal-substrings-within-budget) - - [1209. Remove All Adjacent Duplicates in String II](#1209-remove-all-adjacent-duplicates-in-string-ii) - - [1210. Minimum Moves to Reach Target with Rotations](#1210-minimum-moves-to-reach-target-with-rotations) -
-
- -## Weekly Contest 156 - -### [1207. Unique Number of Occurrences](https://leetcode.com/contest/weekly-contest-156/problems/unique-number-of-occurrences/) - -Brute force. Record total occurrence of each number and iterate over it to see if there is any duplication. - -```cpp -class Solution { -public: - bool uniqueOccurrences(vector& arr) { - unordered_map occ; - unordered_map flag; - - for (int i = 0; i < arr.size(); ++i) { - occ[arr[i]]++; - } - - for (const auto x : occ) { - if (flag.find(x.second) != flag.end()) { - if (flag[x.second]) return false; - } else { - flag[x.second] = true; - } - } - - return true; - } -}; -``` - -### [1208. Get Equal Substrings Within Budget](https://leetcode.com/contest/weekly-contest-156/problems/get-equal-substrings-within-budget/) - -Two pointers. Let's think it in this way: at the starting position, if we can go to the next character in the string and does not exceed the maximum cost, do so and keep doing it until we can't. -Then in order to extend the length of sub-string, we must "release" the cost of changing one character at the beginning of the sub-string, so that the next character has some costs available to use in order to hold the maximum bound. - -```cpp -class Solution { -public: - int equalSubstring(string s, string t, int maxCost) { - int maxi = -1; - int total_cost = 0; - int l = 0, r = 0; - while (r < t.size()) { - int c = abs(s[r]-t[r]); - while ((total_cost + c) <= maxCost) { - total_cost += c; - r++; - - if (r >= s.size()) break; - c = abs(s[r]-t[r]); - } - - maxi = max(maxi, r-l); - - total_cost -= abs(s[l] - t[l]); - l++; - } - - return maxi; - } -}; -``` - -### [1209. Remove All Adjacent Duplicates in String II](https://leetcode.com/contest/weekly-contest-156/problems/remove-all-adjacent-duplicates-in-string-ii/) - -Stack approach. Whenever encounter a new character, push the character with count `1` into the stack. Increment the counter if the next character is the same as the top of the stack. -If the counter reaches `k`, then just remove it from the stack as it's valid adjacent duplicates. - -```cpp -class Solution { -public: - string removeDuplicates(string s, int k) { - int s_size = s.size(); - if (s_size <= 1) return s; - - string ans; - stack > stk; - stk.push({s[0], 1}); - - for (int i = 1; i < s_size; i++) { - if (!stk.empty() && stk.top().first == s[i]) { - stk.top().second++; - - if (stk.top().second == k) { - stk.pop(); - } - } else { - stk.push({s[i], 1}); - } - } - - while (!stk.empty()) { - pair p = stk.top(); stk.pop(); - ans += string(p.second, p.first); - } - - reverse(ans.begin(), ans.end()); - - return ans; - } -}; -``` - -### [1210. Minimum Moves to Reach Target with Rotations](https://leetcode.com/contest/weekly-contest-156/problems/minimum-moves-to-reach-target-with-rotations/) - -BFS. This question is not hard while you got the implementation right. Check all possible moves. - -{% raw %} - -```cpp -class Solution { - typedef pair block_t; - typedef pair block2_t; - typedef pair state_t; // step - - public: - int minimumMoves(vector>& grid) { - int N = grid.size(); - queue q; - q.push({{{0, 0}, {0, 1}}, 0}); - - set visited; - visited.insert({{0, 0}, {0, 1}}); - pair::iterator, bool> rst; - - while (!q.empty()) { - state_t s = q.front(); q.pop(); - block_t a = s.first.first; - block_t b = s.first.second; - int step = s.second; - - - if (a.first == b.first) { - // horizontal - if (a.first == N-1 && a.second == N-2 && b.first == N-1 && b.second == N-1) { - return step; - } - - if (b.second+1 < N && grid[b.first][b.second+1] == 0){ - // right - rst = visited.insert({{b.first, b.second}, {b.first, b.second+1}}); - if (rst.second) { - q.push({{{b.first, b.second}, {b.first, b.second+1}}, step+1}); - } - } - - if (a.first+1 < N && grid[a.first+1][a.second] == 0 && grid[b.first+1][b.second] == 0) { - // down - rst = visited.insert({{a.first+1, a.second}, {b.first+1, b.second}}); - if (rst.second) { - q.push({{{a.first+1, a.second}, {b.first+1, b.second}}, step+1}); - } - - // clockwise - rst = visited.insert({{a.first, a.second}, {a.first+1, a.second}}); - if (rst.second) { - q.push({{{a.first, a.second}, {a.first+1, a.second}}, step+1}); - } - } - } else { - // vertical - if (b.first+1 < N && grid[b.first+1][b.second] == 0){ - // down - rst = visited.insert({{b.first, b.second}, {b.first+1, b.second}}); - if (rst.second) { - q.push({{{b.first, b.second}, {b.first+1, b.second}}, step+1}); - } - } - - if (a.second+1 < N && grid[a.first][a.second+1] == 0 && grid[b.first][b.second+1] == 0) { - // right - rst = visited.insert({{a.first, a.second+1}, {b.first, b.second+1}}); - if (rst.second) { - q.push({{{a.first, a.second+1}, {b.first, b.second+1}}, step+1}); - } - - // anti-clockwise - rst = visited.insert({{a.first, a.second}, {a.first, a.second+1}}); - if (rst.second) { - q.push({{{a.first, a.second}, {a.first, a.second+1}}, step+1}); - } - } - } - } - - return -1; - } -}; -``` -{% endraw %} \ No newline at end of file diff --git a/_sass/_base.scss b/_sass/_base.scss deleted file mode 100644 index 1dc038d1..00000000 --- a/_sass/_base.scss +++ /dev/null @@ -1,189 +0,0 @@ -/** - * Reset some basic elements - */ -body, h1, h2, h3, h4, h5, h6, -p, blockquote, pre, hr, -dl, dd, ol, ul, figure { - margin: 0; - padding: 0; -} - - - -/** - * Basic styling - */ -body { - font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; - color: $text-color; - background-color: $background-color; - -webkit-text-size-adjust: 100%; - -webkit-font-feature-settings: "kern" 1; - -moz-font-feature-settings: "kern" 1; - -o-font-feature-settings: "kern" 1; - font-feature-settings: "kern" 1; - font-kerning: normal; -} - - - -/** - * Set `margin-bottom` to maintain vertical rhythm - */ -h1, h2, h3, h4, h5, h6, -p, blockquote, pre, -ul, ol, dl, figure, -%vertical-rhythm { - margin-bottom: $spacing-unit / 2; -} - - - -/** - * Images - */ -img { - max-width: 100%; - vertical-align: middle; -} - - - -/** - * Figures - */ -figure > img { - display: block; -} - -figcaption { - font-size: $small-font-size; -} - - - -/** - * Lists - */ -ul, ol { - margin-left: $spacing-unit; -} - -li { - > ul, - > ol { - margin-bottom: 0; - } -} - - - -/** - * Headings - */ -h1, h2, h3, h4, h5, h6 { - font-weight: $base-font-weight; -} - - - -/** - * Links - */ -a { - color: $brand-color; - text-decoration: none; - - &:visited { - color: darken($brand-color, 10%); - } - - &:hover { - color: $text-color; - } -} - - - -/** - * Blockquotes - */ -blockquote { - color: $grey-color; - border-left: 4px solid $grey-color-light; - padding-left: $spacing-unit / 2; - - > :last-child { - margin-bottom: 0; - } -} - - - - - - -/** - * Wrapper - */ -.wrapper { - max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2)); - max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); - margin-right: auto; - margin-left: auto; - padding-right: $spacing-unit; - padding-left: $spacing-unit; - @extend %clearfix; - - @include media-query($on-laptop) { - max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); - max-width: calc(#{$content-width} - (#{$spacing-unit})); - padding-right: 20px; - padding-left: 20px; - } -} - -/** - * Clearfix - */ -%clearfix { - - &:after { - content: ""; - display: table; - clear: both; - } -} - - - -/** - * Icons - */ -.icon { - - > svg { - display: inline-block; - width: 16px; - height: 16px; - vertical-align: middle; - - path { - fill: $grey-color; - } - } -} - - -/** - * Selection - */ -::selection { - color: #fff; - background: $theme-color; -} - -::-moz-selection { - color: #fff; - background: $theme-color; -} diff --git a/_sass/_layout.scss b/_sass/_layout.scss deleted file mode 100644 index 0948b31c..00000000 --- a/_sass/_layout.scss +++ /dev/null @@ -1,641 +0,0 @@ -/** -* Site header -*/ -.site-header { - transition: height 0.8s ease; - -webkit-transition: height 0.8s ease; - -moz-transition: height 0.8s ease; - - background: no-repeat center center; - background-image: url("/img/header.jpg"); - background-size: cover; - height: 400px; - width: 100%; - z-index: 20; - - .site-title { - opacity: 1; - color: #4A4A4A; - font-size: 72px; - line-height: 56px; - text-align: center; - padding: 144px 0 144px 0; - font-family: sans-serif; - font-weight: 300; - - .site-subtitle { - opacity: 0.54; - font-size: 16px; - } - } - - - @include media-query($on-palm) { - background-image: none; - background-color: #fff; - height: 54px; - border-bottom: 1px solid $grey-color-light; - position: relative; - .site-title { - padding: 18px 0 0 20px; - font-size: 20px; - line-height: 24px; - text-align: left; - .site-subtitle { - display: none; - } - } - } -} - -.header-icon, .header-icon:visited { - color: #212121; - font-weight: bold; - text-transform: uppercase; - font-size: 13px; - @media only screen and (min-width : 800px) { - &:hover { - text-shadow: 0 2px 5px rgba(0,0,0,0.15); - text-decoration: none; - } - } -} - -.header-fixed { - transition: all 0.5s ease; - -webkit-transition: all 0.5s ease; - -moz-transition: all 0.5s ease; - - z-index: 50; - position:fixed; - width: 100%; - font-size: 24px; - line-height: 48px; - height: 54px; - background-color: rgba(255,255,255,.95); - border-bottom: 1px solid $grey-color-light; - margin-bottom: 20px; - top: -54px; - opacity: 0; - - @include media-query($on-palm) { - display: none; - } -} - -.is-visible { - top: 0px; - opacity: 1; - display: block; -} - -.site-nav { - z-index: 20; - font-size: 14px; - line-height: 30px; - letter-spacing: 1px; - ul { - margin-right: 15px; - list-style-type: none; - overflow: hidden; - float: right; - li { - padding: 13px 20px; - display: inline-block; - } - } - - .menu-icon { - display: none; - } - - @include media-query($on-palm) { - position: absolute; - top: 9px; - right: $spacing-unit / 2; - background-color: $background-color; - border: 1px solid $grey-color-light; - border-radius: 5px; - text-align: left; - ul { - margin: 10px 30px 10px 10px; - li { - a { - color: #434343; - } - display: block; - padding: 0 10px 3px 10px; - } - } - - .menu-icon { - display: block; - float: right; - width: 36px; - height: 26px; - line-height: 0; - padding-top: 10px; - text-align: center; - - > svg { - width: 18px; - height: 15px; - - path { - fill: $grey-color-dark; - } - } - } - - .trigger { - display: none; - } - - .show { - display: block; - } - } - - .page-link { - color: $text-color; - line-height: $base-line-height; - - // Gaps between nav items, but not on the last one - &:not(:last-child) { - margin-right: 20px; - } - } -} - -/** -* Site footer -*/ -.site-footer { - border-top: 1px solid $grey-color-light; - padding: $spacing-unit 0; - background-color: $background-color; -} - -.footer-heading { - font-size: 18px; - margin-bottom: $spacing-unit / 2; -} - -.col1-list, -.col2-list, -.col3-list { - list-style: none; - margin-left: 0; -} - -.footer-col-wrapper { - a { - color: $text-color; - } - font-size: 15px; - margin-left: -$spacing-unit / 2; - @extend %clearfix; -} - -.footer-col { - float: left; - margin-bottom: $spacing-unit / 2; - padding-left: $spacing-unit / 2; -} - -// original percentage: 35 20 45 -.footer-col-1 { - width: -webkit-calc(33% - (#{$spacing-unit} / 2)); - width: calc(33% - (#{$spacing-unit} / 2)); -} - -.footer-col-2 { - width: -webkit-calc(33% - (#{$spacing-unit} / 2)); - width: calc(33% - (#{$spacing-unit} / 2)); -} - -.footer-col-3 { - width: -webkit-calc(33% - (#{$spacing-unit} / 2)); - width: calc(33% - (#{$spacing-unit} / 2)); - color: $grey-color; -} - -@include media-query($on-laptop) { - .footer-col-1, - .footer-col-2 { - width: -webkit-calc(50% - (#{$spacing-unit} / 2)); - width: calc(50% - (#{$spacing-unit} / 2)); - } - - .footer-col-3 { - width: -webkit-calc(100% - (#{$spacing-unit} / 2)); - width: calc(100% - (#{$spacing-unit} / 2)); - } -} - -@include media-query($on-palm) { - .footer-col { - float: none; - width: -webkit-calc(100% - (#{$spacing-unit} / 2)); - width: calc(100% - (#{$spacing-unit} / 2)); - } -} - - - -/** -* Page content -*/ -.page-content { - z-index: 5; - padding: 70px 0; - margin-bottom: $spacing-unit*2; - - @include media-query($on-palm) { - padding-top: 20px; - } -} - -.page-heading { - font-size: 20px; -} - -@media only screen and (min-width : 800px) { - .slide - { - text-decoration:none; - display: inline-block; - } - - .slide:after - { - content: ""; - display: block; - height: 3px; - width: 0; - background: transparent; - transition: width .5s ease, background-color .5s ease; - -webkit-transition: width .5s ease, background-color .5s ease; - -moz-transition: width .5s ease, background-color .5s ease; - margin: auto; - } - - .slide:hover:after - { - width: 100%; - background: #607D8B; - } -} - -.post-list { - color: #000; - margin-left: 20px; - margin-right: 20px; - - @include media-query($on-palm) { - margin: 0 0 0 0; - } - - list-style: none; - - > li { - background-color: #ffffff; - - .post-data { - text-align: justify; - //color: #939393; - color: #757575; - font-weight: normal; - h1, h2, h3, h4, h5 { - font-size: $base-font-size; - } - img { - max-width: 500px; - @include media-query($on-laptop) { - max-width: 100%; - - } - } - } - - - .post-link { - text-decoration: none; - transition: all 0.5s ease; - color: #4a4a4a; - font-weight: bold; - @media only screen and (min-width : 800px) { - &:hover { - color: $theme-color; - } - } - } - - .post-meta { - font-size: $base-font-size*0.9; - margin-bottom: 50px; - //color: #9d9d9d; - color: #9E9E9E; - padding-bottom: 50px; - border-bottom: 1px solid $grey-color-light; - a { - margin-right: 5px; - transition: all 0.5s ease; - color: #9E9E9E; - @media only screen and (min-width : 800px) { - &:hover { - color: $theme-color; - } - } - } - @include media-query($on-palm) { - margin-bottom: 30px; - padding-bottom: 30px; - } - } - } -} - -/** -* Posts -*/ -.post { - padding: $spacing-unit $spacing-unit*1.5 $spacing-unit*1.2 $spacing-unit*1.5; - @media only screen and (max-width:800px) { - padding: 30px 10px 30px 10px; - } - @include media-query($on-palm) { - padding: 0 0 0 0; - } -} -.post-header { - margin-bottom: $spacing-unit; -} - -.post-title { - font-size: 36px; - font-weight: bold; - line-height: 1; - - @include media-query($on-laptop) { - font-size: 32px; - } -} - -.post-content { - text-align: justify; - margin-bottom: $spacing-unit; - - a { - overflow: hidden; - } - - ul { - list-style: disc; - } - - h2, h3, h4, h5 { - margin-top: $spacing-unit; - } - h2 { - font-size: 26px; - font-weight: bold; - - @include media-query($on-laptop) { - font-size: 22px; - } - } - - h3 { - font-size: 22px; - font-weight: bold; - - @include media-query($on-laptop) { - font-size: 18px; - } - } - - h4 { - font-size: 18px; - font-weight: bold; - - @include media-query($on-laptop) { - font-size: 14px; - } - } - - h5 { - font-size: 14px; - font-weight: bold; - - @include media-query($on-laptop) { - font-size: 12.5px; - } - } - - img { - margin: auto; - overflow-x: auto; - display: block; - } - - .emoji { - display: inline; - vertical-align: text-bottom; - } - - .toc { - font-size: $base-font-size*0.9; - ul { - list-style: decimal; - } - } -} - -.about-page { - text-align: center; - img { - display: block; - margin-left: auto; - margin-right: auto; - margin-bottom: $spacing-unit; - } - margin-top: $spacing-unit * 5; - margin-bottom: $spacing-unit * 5; -} - -/** -* sidebar -*/ -.side-bar { - float: right; - width: 240px; - margin-bottom: $spacing-unit*3; - @include media-query($on-palm) { - width: 100%; - float: none; - margin-bottom: 30px; - margin-right: 30px; - } -} - -/** -* Tags -*/ - - -.tags { - color: #878787; - margin-bottom: 20px; - padding-bottom: 20px; - border-bottom: 1px solid $grey-color-light; - h3 { - font-weight: bold; - margin-bottom: 20px; - font-size:16px; - } - ul { - font-size:13px; - text-transform: capitalize; - list-style: none; - margin: 0 0 0 0; - li { - margin: 1px 5px 11px 1px; - display: inline-block; - a { - color: #BDBDBD; - transition: all 0.5s ease; - border: 1px solid #BDBDBD; - -webkit-border-radius: 1000px; - -moz-border-radius: 1000px; - border-radius: 1000px; - padding: 4.5px 11px 4.5px 11px; - @media only screen and (min-width : 800px) { - &:hover { - color: $theme-color; - border: 1px solid $theme-color; - } - } - } - } - } - @include media-query($on-palm) { - padding-top: 10px; - border-bottom: 2px solid $grey-color-light; - h3 { - display: none; - } - } -} - -.hidden { - display: none!important; - visibility: hidden!important; -} - -.blog-list-container { - margin-bottom: 0; - margin-right: 260px; - padding: 30px 0 30px 0; - border-bottom: 1px solid lighten(#bdbdbd, 15%); - ul { - list-style: none; - margin: 0 0 0 0; - li { - margin: 5px 0 5px 0; - .blog-date { - display: inline-block; - font-size: $base-font-size*0.7; - color: $grey-color; - margin-left: 5px; - } - } - } - - @media only screen and (min-width : 800px) { - .slide:after - { - //height: 1px; - height: 0.5px; - } - - .slide:hover:after - { - //background: lighten($text-color, 30%); - background: $theme-color; - } - a { - text-decoration: none; - transition: all 0.5s ease; - @media only screen and (min-width : 800px) { - &:hover { - color: $theme-color; - } - } - } - } - a { - color: $text-color; - } - .single-tag { - color: #607D8B; - font-weight: bold; - text-transform: capitalize; - } - - @include media-query($on-palm) { - margin: 0 0 30px 0; - padding: 0 0 30px 0; - } -} - - -// Table -table -{ - overflow-x: auto; - display: block; - min-width: 300px; - font-size: 14px; - border-collapse:collapse; - margin:20px 0 20px 0; - padding:0; -} - -table tr -{ - border-top:1px solid #ccc; - background-color:#fff; - margin:0; - padding:0; -} - -table tr:nth-child(2n) -{ - background-color:#f8f8f8; -} - -table tr th[align="center"], table tr td[align="center"] { - text-align:center; -} - -table tr th, table tr td -{ - border:1px solid #ccc; - text-align:left; - margin:0; - padding:6px 13px; -} - -// 404 page -.not-found { - text-align: center; - a { - font-size:20px; - } -} - -// separator -hr { - margin: 80px 0 80px 0; -} \ No newline at end of file diff --git a/_sass/_pagination.scss b/_sass/_pagination.scss deleted file mode 100644 index 95c5877b..00000000 --- a/_sass/_pagination.scss +++ /dev/null @@ -1,195 +0,0 @@ -// Breakpoint variables -$pages-breakpoint1: 320px !default; -$pages-breakpoint2: 500px !default; -$pages-breakpoint3: 600px !default; -$pages-breakpoint4: 768px !default; -$pages-breakpoint5: 768px !default; -$pages-breakpoint6: 768px !default; -$pages-breakpoint7: 768px !default; -$pages-breakpoint8: 768px !default; -$pages-breakpoint9: 768px !default; - -// Cosmetics variables -$pages-cosmetics: true !default; -$pages-sr-only: true !default; -$pages-clearfix: true !default; - -// Styling -$pages-margin: 16px 0 !default; -$pages-item-margin: 0 3px !default; -$pages-item-size: 38px !default; -$pages-item-background: #eeeeee !default; -$pages-item-color: #333 !default; -$pages-item-link-color: #1847AD !default; -$pages-item-shadow: inset 0 0 5px rgba(0, 0, 0, .05) !default; -$pages-item-hover: #ddd !default; -$pages-item-active: #607D8B !default; -$pages-item-active-shadow: inset 0 0 5px rgba(0, 0, 0, .3) !default; -$pages-item-active-color: white !default; - -// Mixins -@import "utils/clearfix"; -@import "utils/breakpoint"; - -// Classes -@import "utils/sr-only"; - -// Behavioural -.pagination { - @include pages-clearfix; - - li { - display: none; - - .pagination-item { - display: block; - speak-number: continuous; - } - } - - // Always display the first, current and last page when - // They are available in the markup - .current-page, - .previous, - .next { - display: inline-block; - } - - .previous a:before { - content: "<" // ← - } - - .next a:after { - content: ">" // → - } - - // First breakpoint - @include pages-breakpoint($pages-breakpoint1) { - - // When there are active indicators show them - // Using a double class here to win over future breakpoints - .pages-indicator.pages-indicator--active { - display: inline-block; - } - - // The first and last item in the paginator - .first, - .last { - display: inline-block; - } - - .offset-1 { - display: inline-block; - } - - // Show indicators on smaller screen when other pages are hidden - // This way we'll never have "" - // But we'll have "" - .pages-indicator--offset-2, - .pages-indicator--offset-3, - .pages-indicator--offset-4, - .pages-indicator--offset-5, - .pages-indicator--offset-6, - .pages-indicator--offset-7 { - display: inline-block; - } - } - - @include pages-breakpoint($pages-breakpoint2) { - // Show items next to active item - .offset-1 { - display: inline-block; - } - - // And hide indicator to make room - .pages-indicator--offset-2 { - display: none; - } - } - - @include pages-breakpoint($pages-breakpoint3) { - // Show items 2 spots next to active item - .offset-2 { - display: inline-block; - } - - // And hide indicator to make room - .pages-indicator--offset-3 { - display: none; - } - } - - @include pages-breakpoint($pages-breakpoint4) { - // Show items 3 spots next to active item - .offset-3 { - display: inline-block; - } - - // And hide indicator to make room - .pages-indicator--offset-4 { - display: none; - } - } - - @include pages-breakpoint($pages-breakpoint5) { - // Show items 3 spots next to active item - .offset-4 { - display: inline-block; - } - - // And hide indicator to make room - .pages-indicator--offset-5 { - display: none; - } - } - - @include pages-breakpoint($pages-breakpoint6) { - // Show items 3 spots next to active item - .offset-5 { - display: inline-block; - } - - // And hide indicator to make room - .pages-indicator--offset-6 { - display: none; - } - } - - @include pages-breakpoint($pages-breakpoint7) { - // Show items 3 spots next to active item - .offset-6 { - display: inline-block; - } - - // And hide indicator to make room - .pages-indicator--offset-7 { - display: none; - } - } - - @include pages-breakpoint($pages-breakpoint8) { - // Show items 3 spots next to active item - .offset-7 { - display: inline-block; - } - - // And hide indicator to make room - .pages-indicator--offset-8 { - display: none; - } - } - - @include pages-breakpoint($pages-breakpoint9) { - // Show items 3 spots next to active item - .offset-8 { - display: inline-block; - } - - // And hide indicator to make room - .pages-indicator--offset-9 { - display: none; - } - } -} - -@import "cosmetics/cosmetics"; diff --git a/_sass/_syntax.scss b/_sass/_syntax.scss deleted file mode 100644 index 2e48cae4..00000000 --- a/_sass/_syntax.scss +++ /dev/null @@ -1,120 +0,0 @@ -pre { - counter-reset: line-numbering; - //border: solid 1px #d9d9d9; - border-radius: 0; - background: #F7F7F7; - padding: 0; - line-height: 20px; - margin-top: 30px; - margin-bottom: 50px; - white-space: pre; - overflow-x: auto; - word-break: inherit; - word-wrap: inherit; - padding-right:30px; -} - -pre, -code { - //font-family: "Lucida Console", Monaco, monospace; - font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; - //font-family: "PT Mono", Consolas, Monaco, Menlo, monospace; - font-size: 14px; -} - -code.inline-code { - font-size: 12px; - font-family: Menlo,Monaco,Consolas,"Courier New",monospace; - color: #607D8B; //#d14; - background: #f7f7f7; - border: 1px solid #e1e1e7; - border-radius: 2px; - padding: 2px 4px 2px 4px; - margin: 1px 1px 1px 1px; -} - -pre a::before { - content: counter(line-numbering); - counter-increment: line-numbering; - padding-right: 1em; /* space after numbers */ - width: 25px; - text-align: right; - opacity: 0.7; - display: inline-block; - color: #2d2d2d; - background: #eee; - margin-right: 16px; - padding: 2px 10px; - font-size: 14px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -pre a:first-of-type::before { - padding-top: 10px; -} - -pre a:last-of-type::before { - padding-bottom: 10px; -} - -pre a:only-of-type::before { - padding: 10px; -} - -pre { - overflow-x: auto; - - > code { - border: 0; - padding-right: 0; - padding-left: 0; - } -} - -.highlight pre code * { - white-space: nowrap; // this sets all children inside to nowrap -} - -.highlight pre code { - white-space: pre; // forces to respect
 formatting
-}
-.highlight { color: #657b83 !important; background-color: #fdfdfd !important; }
-.highlight .err { color: #dc322f !important; background-color: #eee8d5 !important; }
-.highlight .cp { color: #93a1a1 !important; }
-.highlight .cs { color: #93a1a1 !important; }
-.highlight .gd { background-color: #fdd !important; }
-.highlight .gd .x { background-color: #faa !important; }
-.highlight .ge { font-style: italic !important; }
-.highlight .gi { background-color: #dfd !important; }
-.highlight .gi .x { background-color: #afa !important; }
-.highlight .go { color: #657b83 !important; }
-.highlight .gu { color: #d33682 !important; }
-.highlight .gs { }
-.highlight .gr, .highlight .gt { color: #d33682 !important; }
-.highlight .gh { color: #93a1a1 !important; }
-.highlight .gp { color: #93a1a1 !important; }
-.highlight .nb { color: #859900 !important; }
-.highlight .ni { color: #d33682 !important; }
-.highlight .nt { color: #268bd2 !important; }
-.highlight .w { color: #93a1a1 !important; }
-.highlight .sr { color: #859900 !important; }
-.highlight .ss { color: #2aa198 !important; }
-.highlight .c, .highlight .cm, .highlight .c1 { color: #93a1a1 !important; }
-.highlight .k, .highlight .kc, .highlight .kd, .highlight .kp, .highlight .kr, .highlight .kt, .highlight .o, .highlight .ow { }
-.highlight .k { color: #859900 !important; }
-.highlight .kt { color: #b58900 !important; }
-.highlight .bp { color: #586e75 !important; }
-.highlight .nn { color: #586e75 !important; }
-.highlight .nc { color: #b58900 !important; }
-.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .mo, .highlight .il { color: #2aa198 !important; }
-.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .se, .highlight .sh, .highlight .si, .highlight .sx, .highlight .s1 { color: #2aa198 !important; }
-.highlight .na, .highlight .nv { color: #2aa198 !important; }
-.highlight .no { color: #b58900 !important; }
-.highlight .vc, .highlight .vg, .highlight .vi { color: #268bd2 !important; }
-.highlight .ne,
-.highlight .nf { color: #dc322f !important; }
diff --git a/_sass/cosmetics/_cosmetics.scss b/_sass/cosmetics/_cosmetics.scss
deleted file mode 100644
index f44e71b1..00000000
--- a/_sass/cosmetics/_cosmetics.scss
+++ /dev/null
@@ -1,45 +0,0 @@
-// Cosmetic
-@if $pages-cosmetics == true {
-  ul.pagination {
-    padding: 0;
-    margin: $pages-margin;
-    text-align: center;
-
-    li {
-      margin: $pages-item-margin;
-      padding: 0;
-      list-style: none;
-
-      &.page {
-        .pagination-item {
-          text-decoration: none; // No underlines on circle links
-          width: $pages-item-size;
-          height: $pages-item-size;
-          border-radius: $pages-item-size;
-          line-height: $pages-item-size;
-          background: $pages-item-background;
-          color: $pages-item-color;
-          box-shadow: $pages-item-shadow;
-
-        }
-
-        a:hover {
-          background: $pages-item-hover;
-        }
-
-        &.current-page {
-          .pagination-item {
-            background: $pages-item-active;
-            box-shadow: $pages-item-active-shadow;
-            color: $pages-item-active-color;
-          }
-        }
-        &.previous, &.next {
-          .pagination-item {
-            font-size: 12px;
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/_sass/utils/_breakpoint.scss b/_sass/utils/_breakpoint.scss
deleted file mode 100644
index 11f18ccb..00000000
--- a/_sass/utils/_breakpoint.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-@mixin pages-breakpoint($breakpoint) {
-  @media (min-width: $breakpoint) {
-    @content;
-  }
-}
diff --git a/_sass/utils/_clearfix.scss b/_sass/utils/_clearfix.scss
deleted file mode 100644
index 9741148b..00000000
--- a/_sass/utils/_clearfix.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-@mixin pages-clearfix {
-  &:before,
-  &:after {
-    content: " ";
-    display: table;
-  }
-
-  &:after {
-    clear: both;
-  }
-}
diff --git a/_sass/utils/_sr-only.scss b/_sass/utils/_sr-only.scss
deleted file mode 100644
index 61a1f326..00000000
--- a/_sass/utils/_sr-only.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-@if $pages-sr-only == true {
-  .sr-only {
-    position: absolute;
-    width: 1px;
-    height: 1px;
-    padding: 0;
-    margin: -1px;
-    overflow: hidden;
-    clip: rect(0, 0, 0, 0);
-    border: 0;
-  }
-}
diff --git a/hugo/archetypes/default.md b/archetypes/default.md
similarity index 100%
rename from hugo/archetypes/default.md
rename to archetypes/default.md
diff --git a/hugo/assets/css/_override.scss b/assets/css/_override.scss
similarity index 100%
rename from hugo/assets/css/_override.scss
rename to assets/css/_override.scss
diff --git a/hugo/assets/images/avatar.png b/assets/images/avatar.png
similarity index 100%
rename from hugo/assets/images/avatar.png
rename to assets/images/avatar.png
diff --git a/hugo/config.toml b/config.toml
similarity index 100%
rename from hugo/config.toml
rename to config.toml
diff --git a/hugo/content/posts/2015/building-blog-jekyll/index.en.md b/content/posts/2015/building-blog-jekyll/index.en.md
similarity index 100%
rename from hugo/content/posts/2015/building-blog-jekyll/index.en.md
rename to content/posts/2015/building-blog-jekyll/index.en.md
diff --git a/hugo/content/posts/2015/building-blog-jekyll/index.zh-cn.md b/content/posts/2015/building-blog-jekyll/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2015/building-blog-jekyll/index.zh-cn.md
rename to content/posts/2015/building-blog-jekyll/index.zh-cn.md
diff --git a/hugo/content/posts/2015/stack-queue-linked-list/index.en.md b/content/posts/2015/stack-queue-linked-list/index.en.md
similarity index 100%
rename from hugo/content/posts/2015/stack-queue-linked-list/index.en.md
rename to content/posts/2015/stack-queue-linked-list/index.en.md
diff --git a/hugo/content/posts/2015/stack-queue-linked-list/index.zh-cn.md b/content/posts/2015/stack-queue-linked-list/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2015/stack-queue-linked-list/index.zh-cn.md
rename to content/posts/2015/stack-queue-linked-list/index.zh-cn.md
diff --git a/hugo/content/posts/2015/stack-queue-linked-list/link_in.gif b/content/posts/2015/stack-queue-linked-list/link_in.gif
similarity index 100%
rename from hugo/content/posts/2015/stack-queue-linked-list/link_in.gif
rename to content/posts/2015/stack-queue-linked-list/link_in.gif
diff --git a/hugo/content/posts/2015/stack-queue-linked-list/queue_dequeue.gif b/content/posts/2015/stack-queue-linked-list/queue_dequeue.gif
similarity index 100%
rename from hugo/content/posts/2015/stack-queue-linked-list/queue_dequeue.gif
rename to content/posts/2015/stack-queue-linked-list/queue_dequeue.gif
diff --git a/hugo/content/posts/2015/stack-queue-linked-list/queue_enqueue.gif b/content/posts/2015/stack-queue-linked-list/queue_enqueue.gif
similarity index 100%
rename from hugo/content/posts/2015/stack-queue-linked-list/queue_enqueue.gif
rename to content/posts/2015/stack-queue-linked-list/queue_enqueue.gif
diff --git a/hugo/content/posts/2015/stack-queue-linked-list/stack_pop.gif b/content/posts/2015/stack-queue-linked-list/stack_pop.gif
similarity index 100%
rename from hugo/content/posts/2015/stack-queue-linked-list/stack_pop.gif
rename to content/posts/2015/stack-queue-linked-list/stack_pop.gif
diff --git a/hugo/content/posts/2015/stack-queue-linked-list/stack_push.gif b/content/posts/2015/stack-queue-linked-list/stack_push.gif
similarity index 100%
rename from hugo/content/posts/2015/stack-queue-linked-list/stack_push.gif
rename to content/posts/2015/stack-queue-linked-list/stack_push.gif
diff --git a/hugo/content/posts/2015/the-story-about-the-blog/blog_story.jpg b/content/posts/2015/the-story-about-the-blog/blog_story.jpg
similarity index 100%
rename from hugo/content/posts/2015/the-story-about-the-blog/blog_story.jpg
rename to content/posts/2015/the-story-about-the-blog/blog_story.jpg
diff --git a/hugo/content/posts/2015/the-story-about-the-blog/index.en.md b/content/posts/2015/the-story-about-the-blog/index.en.md
similarity index 100%
rename from hugo/content/posts/2015/the-story-about-the-blog/index.en.md
rename to content/posts/2015/the-story-about-the-blog/index.en.md
diff --git a/hugo/content/posts/2015/the-story-about-the-blog/index.zh-cn.md b/content/posts/2015/the-story-about-the-blog/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2015/the-story-about-the-blog/index.zh-cn.md
rename to content/posts/2015/the-story-about-the-blog/index.zh-cn.md
diff --git a/hugo/content/posts/2016/binary-tree/Sorted_binary_tree_breadth-first_traversal.svg b/content/posts/2016/binary-tree/Sorted_binary_tree_breadth-first_traversal.svg
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/Sorted_binary_tree_breadth-first_traversal.svg
rename to content/posts/2016/binary-tree/Sorted_binary_tree_breadth-first_traversal.svg
diff --git a/hugo/content/posts/2016/binary-tree/Sorted_binary_tree_inorder.svg b/content/posts/2016/binary-tree/Sorted_binary_tree_inorder.svg
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/Sorted_binary_tree_inorder.svg
rename to content/posts/2016/binary-tree/Sorted_binary_tree_inorder.svg
diff --git a/hugo/content/posts/2016/binary-tree/Sorted_binary_tree_postorder.svg b/content/posts/2016/binary-tree/Sorted_binary_tree_postorder.svg
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/Sorted_binary_tree_postorder.svg
rename to content/posts/2016/binary-tree/Sorted_binary_tree_postorder.svg
diff --git a/hugo/content/posts/2016/binary-tree/Sorted_binary_tree_preorder.svg b/content/posts/2016/binary-tree/Sorted_binary_tree_preorder.svg
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/Sorted_binary_tree_preorder.svg
rename to content/posts/2016/binary-tree/Sorted_binary_tree_preorder.svg
diff --git a/hugo/content/posts/2016/binary-tree/complete_binary_tree.gif b/content/posts/2016/binary-tree/complete_binary_tree.gif
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/complete_binary_tree.gif
rename to content/posts/2016/binary-tree/complete_binary_tree.gif
diff --git a/hugo/content/posts/2016/binary-tree/complete_binary_tree_1.gif b/content/posts/2016/binary-tree/complete_binary_tree_1.gif
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/complete_binary_tree_1.gif
rename to content/posts/2016/binary-tree/complete_binary_tree_1.gif
diff --git a/hugo/content/posts/2016/binary-tree/depth_height.gif b/content/posts/2016/binary-tree/depth_height.gif
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/depth_height.gif
rename to content/posts/2016/binary-tree/depth_height.gif
diff --git a/hugo/content/posts/2016/binary-tree/full_binary_tree.gif b/content/posts/2016/binary-tree/full_binary_tree.gif
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/full_binary_tree.gif
rename to content/posts/2016/binary-tree/full_binary_tree.gif
diff --git a/hugo/content/posts/2016/binary-tree/full_binary_tree_1.gif b/content/posts/2016/binary-tree/full_binary_tree_1.gif
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/full_binary_tree_1.gif
rename to content/posts/2016/binary-tree/full_binary_tree_1.gif
diff --git a/hugo/content/posts/2016/binary-tree/index.en.md b/content/posts/2016/binary-tree/index.en.md
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/index.en.md
rename to content/posts/2016/binary-tree/index.en.md
diff --git a/hugo/content/posts/2016/binary-tree/index.zh-cn.md b/content/posts/2016/binary-tree/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2016/binary-tree/index.zh-cn.md
rename to content/posts/2016/binary-tree/index.zh-cn.md
diff --git a/hugo/content/posts/2016/poj-2376/index.en.md b/content/posts/2016/poj-2376/index.en.md
similarity index 100%
rename from hugo/content/posts/2016/poj-2376/index.en.md
rename to content/posts/2016/poj-2376/index.en.md
diff --git a/hugo/content/posts/2016/poj-2376/index.zh-cn.md b/content/posts/2016/poj-2376/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2016/poj-2376/index.zh-cn.md
rename to content/posts/2016/poj-2376/index.zh-cn.md
diff --git a/hugo/content/posts/2016/poj-3050/index.en.md b/content/posts/2016/poj-3050/index.en.md
similarity index 100%
rename from hugo/content/posts/2016/poj-3050/index.en.md
rename to content/posts/2016/poj-3050/index.en.md
diff --git a/hugo/content/posts/2016/poj-3050/index.zh-cn.md b/content/posts/2016/poj-3050/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2016/poj-3050/index.zh-cn.md
rename to content/posts/2016/poj-3050/index.zh-cn.md
diff --git a/hugo/content/posts/2016/poj-3187/index.en.md b/content/posts/2016/poj-3187/index.en.md
similarity index 100%
rename from hugo/content/posts/2016/poj-3187/index.en.md
rename to content/posts/2016/poj-3187/index.en.md
diff --git a/hugo/content/posts/2016/poj-3187/index.zh-cn.md b/content/posts/2016/poj-3187/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2016/poj-3187/index.zh-cn.md
rename to content/posts/2016/poj-3187/index.zh-cn.md
diff --git a/hugo/content/posts/2016/poj-3268/index.en.md b/content/posts/2016/poj-3268/index.en.md
similarity index 100%
rename from hugo/content/posts/2016/poj-3268/index.en.md
rename to content/posts/2016/poj-3268/index.en.md
diff --git a/hugo/content/posts/2016/poj-3268/index.zh-cn.md b/content/posts/2016/poj-3268/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2016/poj-3268/index.zh-cn.md
rename to content/posts/2016/poj-3268/index.zh-cn.md
diff --git a/hugo/content/posts/2016/usaco-lamps/index.en.md b/content/posts/2016/usaco-lamps/index.en.md
similarity index 100%
rename from hugo/content/posts/2016/usaco-lamps/index.en.md
rename to content/posts/2016/usaco-lamps/index.en.md
diff --git a/hugo/content/posts/2016/usaco-lamps/index.zh-cn.md b/content/posts/2016/usaco-lamps/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2016/usaco-lamps/index.zh-cn.md
rename to content/posts/2016/usaco-lamps/index.zh-cn.md
diff --git a/hugo/content/posts/2016/uva-108/index.en.md b/content/posts/2016/uva-108/index.en.md
similarity index 100%
rename from hugo/content/posts/2016/uva-108/index.en.md
rename to content/posts/2016/uva-108/index.en.md
diff --git a/hugo/content/posts/2016/uva-108/index.zh-cn.md b/content/posts/2016/uva-108/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2016/uva-108/index.zh-cn.md
rename to content/posts/2016/uva-108/index.zh-cn.md
diff --git a/hugo/content/posts/2016/uva-108/max_sum_2D.gif b/content/posts/2016/uva-108/max_sum_2D.gif
similarity index 100%
rename from hugo/content/posts/2016/uva-108/max_sum_2D.gif
rename to content/posts/2016/uva-108/max_sum_2D.gif
diff --git a/hugo/content/posts/2016/uva-108/maximum_sum.png b/content/posts/2016/uva-108/maximum_sum.png
similarity index 100%
rename from hugo/content/posts/2016/uva-108/maximum_sum.png
rename to content/posts/2016/uva-108/maximum_sum.png
diff --git a/hugo/content/posts/2016/uva-443/index.en.md b/content/posts/2016/uva-443/index.en.md
similarity index 100%
rename from hugo/content/posts/2016/uva-443/index.en.md
rename to content/posts/2016/uva-443/index.en.md
diff --git a/hugo/content/posts/2016/uva-443/index.zh-cn.md b/content/posts/2016/uva-443/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2016/uva-443/index.zh-cn.md
rename to content/posts/2016/uva-443/index.zh-cn.md
diff --git a/hugo/content/posts/2018/cldictp/CLDictP_demo.gif b/content/posts/2018/cldictp/CLDictP_demo.gif
similarity index 100%
rename from hugo/content/posts/2018/cldictp/CLDictP_demo.gif
rename to content/posts/2018/cldictp/CLDictP_demo.gif
diff --git a/hugo/content/posts/2018/cldictp/index.en.md b/content/posts/2018/cldictp/index.en.md
similarity index 100%
rename from hugo/content/posts/2018/cldictp/index.en.md
rename to content/posts/2018/cldictp/index.en.md
diff --git a/hugo/content/posts/2018/cldictp/index.zh-cn.md b/content/posts/2018/cldictp/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2018/cldictp/index.zh-cn.md
rename to content/posts/2018/cldictp/index.zh-cn.md
diff --git a/hugo/content/posts/2018/poj-3279/fliptile_1.svg b/content/posts/2018/poj-3279/fliptile_1.svg
similarity index 100%
rename from hugo/content/posts/2018/poj-3279/fliptile_1.svg
rename to content/posts/2018/poj-3279/fliptile_1.svg
diff --git a/hugo/content/posts/2018/poj-3279/fliptile_2.svg b/content/posts/2018/poj-3279/fliptile_2.svg
similarity index 100%
rename from hugo/content/posts/2018/poj-3279/fliptile_2.svg
rename to content/posts/2018/poj-3279/fliptile_2.svg
diff --git a/hugo/content/posts/2018/poj-3279/index.en.md b/content/posts/2018/poj-3279/index.en.md
similarity index 100%
rename from hugo/content/posts/2018/poj-3279/index.en.md
rename to content/posts/2018/poj-3279/index.en.md
diff --git a/hugo/content/posts/2018/poj-3279/index.zh-cn.md b/content/posts/2018/poj-3279/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2018/poj-3279/index.zh-cn.md
rename to content/posts/2018/poj-3279/index.zh-cn.md
diff --git a/hugo/content/posts/2018/proxy-server-cn-netease-music/index.en.md b/content/posts/2018/proxy-server-cn-netease-music/index.en.md
similarity index 100%
rename from hugo/content/posts/2018/proxy-server-cn-netease-music/index.en.md
rename to content/posts/2018/proxy-server-cn-netease-music/index.en.md
diff --git a/hugo/content/posts/2018/proxy-server-cn-netease-music/index.zh-cn.md b/content/posts/2018/proxy-server-cn-netease-music/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2018/proxy-server-cn-netease-music/index.zh-cn.md
rename to content/posts/2018/proxy-server-cn-netease-music/index.zh-cn.md
diff --git a/hugo/content/posts/2018/static-linked-list/index.en copy.md b/content/posts/2018/static-linked-list/index.en copy.md
similarity index 100%
rename from hugo/content/posts/2018/static-linked-list/index.en copy.md
rename to content/posts/2018/static-linked-list/index.en copy.md
diff --git a/hugo/content/posts/2018/static-linked-list/index.en.md b/content/posts/2018/static-linked-list/index.en.md
similarity index 100%
rename from hugo/content/posts/2018/static-linked-list/index.en.md
rename to content/posts/2018/static-linked-list/index.en.md
diff --git a/hugo/content/posts/2018/static-linked-list/index.zh-cn.md b/content/posts/2018/static-linked-list/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2018/static-linked-list/index.zh-cn.md
rename to content/posts/2018/static-linked-list/index.zh-cn.md
diff --git a/hugo/content/posts/2018/static-linked-list/static_linked_list_example.svg b/content/posts/2018/static-linked-list/static_linked_list_example.svg
similarity index 100%
rename from hugo/content/posts/2018/static-linked-list/static_linked_list_example.svg
rename to content/posts/2018/static-linked-list/static_linked_list_example.svg
diff --git a/hugo/content/posts/2018/static-linked-list/static_linked_list_list.svg b/content/posts/2018/static-linked-list/static_linked_list_list.svg
similarity index 100%
rename from hugo/content/posts/2018/static-linked-list/static_linked_list_list.svg
rename to content/posts/2018/static-linked-list/static_linked_list_list.svg
diff --git a/hugo/content/posts/2019/lc-week-1/index.en.md b/content/posts/2019/lc-week-1/index.en.md
similarity index 100%
rename from hugo/content/posts/2019/lc-week-1/index.en.md
rename to content/posts/2019/lc-week-1/index.en.md
diff --git a/hugo/content/posts/2019/lc-week-1/index.zh-cn.md b/content/posts/2019/lc-week-1/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2019/lc-week-1/index.zh-cn.md
rename to content/posts/2019/lc-week-1/index.zh-cn.md
diff --git a/hugo/content/posts/2019/lc-week-2/index.en.md b/content/posts/2019/lc-week-2/index.en.md
similarity index 100%
rename from hugo/content/posts/2019/lc-week-2/index.en.md
rename to content/posts/2019/lc-week-2/index.en.md
diff --git a/hugo/content/posts/2019/lc-week-2/index.zh-cn.md b/content/posts/2019/lc-week-2/index.zh-cn.md
similarity index 100%
rename from hugo/content/posts/2019/lc-week-2/index.zh-cn.md
rename to content/posts/2019/lc-week-2/index.zh-cn.md
diff --git a/hugo/content/tags/Blog/_index.zh-cn.md b/content/tags/Blog/_index.zh-cn.md
similarity index 100%
rename from hugo/content/tags/Blog/_index.zh-cn.md
rename to content/tags/Blog/_index.zh-cn.md
diff --git a/hugo/content/tags/Data-Structure/_index.zh-cn.md b/content/tags/Data-Structure/_index.zh-cn.md
similarity index 100%
rename from hugo/content/tags/Data-Structure/_index.zh-cn.md
rename to content/tags/Data-Structure/_index.zh-cn.md
diff --git a/hugo/content/tags/Graph/_index.zh-cn.md b/content/tags/Graph/_index.zh-cn.md
similarity index 100%
rename from hugo/content/tags/Graph/_index.zh-cn.md
rename to content/tags/Graph/_index.zh-cn.md
diff --git a/hugo/content/tags/Practice/_index.zh-cn.md b/content/tags/Practice/_index.zh-cn.md
similarity index 100%
rename from hugo/content/tags/Practice/_index.zh-cn.md
rename to content/tags/Practice/_index.zh-cn.md
diff --git a/css/main.scss b/css/main.scss
deleted file mode 100644
index 84f15ec6..00000000
--- a/css/main.scss
+++ /dev/null
@@ -1,70 +0,0 @@
----
-# Only the main Sass file needs front matter (the dashes are enough)
----
-@charset "utf-8";
-
-
-
-// Our variables
-$base-font-family: "Lato", "Helvetica Neue", Helvetica, Arial, "Microsoft Jhenghei", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
-$base-font-family:
-        -apple-system,
-        "Lato",
-        "Helvetica Neue",
-        "Arial",
-        "PingFang SC",
-        "Hiragino Sans GB",
-        "STHeiti",
-        "Microsoft YaHei",
-        "Microsoft JhengHei",
-        "WenQuanYi Micro Hei",
-        sans-serif;
-
-$base-font-size:   16px;
-$base-font-weight: 400;
-$small-font-size:  $base-font-size * 0.75;
-$base-line-height: 1.5;
-
-$spacing-unit:     30px;
-
-$text-color:       #555555;
-$background-color: #ffffff;
-$brand-color:      #1E88E5; //#b2b2b2;
-
-$grey-color:       #828282;
-$grey-color-light: lighten($grey-color, 40%);
-$grey-color-dark:  darken($grey-color, 25%);
-$header-bg-color: #fafafa;
-$footer-color:    #37495F;
-$theme-color:     #607D8B;
-
-// Width of the content area
-$content-width:    1000px;
-
-$on-palm:          600px;
-$on-laptop:        800px;
-
-
-
-// Use media queries like this:
-// @include media-query($on-palm) {
-//     .wrapper {
-//         padding-right: $spacing-unit / 2;
-//         padding-left: $spacing-unit / 2;
-//     }
-// }
-@mixin media-query($device) {
-    @media screen and (max-width: $device) {
-        @content;
-    }
-}
-
-
-
-// Import partials from `sass_dir` (defaults to `_sass`)
-@import
-        "base",
-        "layout",
-        "pagination",
-        "syntax"
-;
diff --git a/feed.xml b/feed.xml
deleted file mode 100644
index a6628bd8..00000000
--- a/feed.xml
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: null
----
-
-
-  
-    {{ site.title | xml_escape }}
-    {{ site.description | xml_escape }}
-    {{ site.url }}{{ site.baseurl }}/
-    
-    {{ site.time | date_to_rfc822 }}
-    {{ site.time | date_to_rfc822 }}
-    Jekyll v{{ jekyll.version }}
-    {% for post in site.posts limit:10 %}
-      
-        {{ post.title | xml_escape }}
-        {{ post.content | xml_escape }}
-        {{ post.date | date_to_rfc822 }}
-        {{ post.url | prepend: site.baseurl | prepend: site.url }}
-        {{ post.url | prepend: site.baseurl | prepend: site.url }}
-        {% for tag in post.tags %}
-        {{ tag | xml_escape }}
-        {% endfor %}
-        {% for cat in post.categories %}
-        {{ cat | xml_escape }}
-        {% endfor %}
-      
-    {% endfor %}
-  
-
diff --git a/google119f246be574c84f.html b/google119f246be574c84f.html
deleted file mode 100644
index 43affe04..00000000
--- a/google119f246be574c84f.html
+++ /dev/null
@@ -1 +0,0 @@
-google-site-verification: google119f246be574c84f.html
\ No newline at end of file
diff --git a/hugo/.gitignore b/hugo/.gitignore
deleted file mode 100644
index 7310dcae..00000000
--- a/hugo/.gitignore
+++ /dev/null
@@ -1,97 +0,0 @@
-
-# Created by https://www.toptal.com/developers/gitignore/api/hugo,macos,visualstudiocode,windows,linux
-# Edit at https://www.toptal.com/developers/gitignore?templates=hugo,macos,visualstudiocode,windows,linux
-
-### Hugo ###
-# Generated files by hugo
-/public/
-/resources/_gen/
-hugo_stats.json
-
-# Executable may be added to repository
-hugo.exe
-hugo.darwin
-hugo.linux
-
-### Linux ###
-*~
-
-# temporary files which can be created if a process still has a handle open of a deleted file
-.fuse_hidden*
-
-# KDE directory preferences
-.directory
-
-# Linux trash folder which might appear on any partition or disk
-.Trash-*
-
-# .nfs files are created when an open file is removed but is still being accessed
-.nfs*
-
-### macOS ###
-# General
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-### VisualStudioCode ###
-.vscode/*
-!.vscode/tasks.json
-!.vscode/launch.json
-*.code-workspace
-
-### VisualStudioCode Patch ###
-# Ignore all local history of files
-.history
-.ionide
-
-### Windows ###
-# Windows thumbnail cache files
-Thumbs.db
-Thumbs.db:encryptable
-ehthumbs.db
-ehthumbs_vista.db
-
-# Dump file
-*.stackdump
-
-# Folder config file
-[Dd]esktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
-
-# End of https://www.toptal.com/developers/gitignore/api/hugo,macos,visualstudiocode,windows,linux
\ No newline at end of file
diff --git a/hugo/themes/LoveIt b/hugo/themes/LoveIt
deleted file mode 160000
index f787a4e5..00000000
--- a/hugo/themes/LoveIt
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f787a4e5ad4edf60467658d10c286248dc5027a6
diff --git a/hugo/i18n/en.toml b/i18n/en.toml
similarity index 100%
rename from hugo/i18n/en.toml
rename to i18n/en.toml
diff --git a/hugo/i18n/zh-CN.toml b/i18n/zh-CN.toml
similarity index 100%
rename from hugo/i18n/zh-CN.toml
rename to i18n/zh-CN.toml
diff --git a/img/about-bg.jpg b/img/about-bg.jpg
deleted file mode 100644
index 53686f8f..00000000
Binary files a/img/about-bg.jpg and /dev/null differ
diff --git a/img/about-me-big.png b/img/about-me-big.png
deleted file mode 100644
index 65a4fd66..00000000
Binary files a/img/about-me-big.png and /dev/null differ
diff --git a/img/about-me-small.png b/img/about-me-small.png
deleted file mode 100644
index 0941b921..00000000
Binary files a/img/about-me-small.png and /dev/null differ
diff --git a/img/favicon.png b/img/favicon.png
deleted file mode 100644
index f10b6143..00000000
Binary files a/img/favicon.png and /dev/null differ
diff --git a/img/favicon1.ico b/img/favicon1.ico
deleted file mode 100644
index 9f7a82f2..00000000
Binary files a/img/favicon1.ico and /dev/null differ
diff --git a/img/post/CLDictP_demo.gif b/img/post/CLDictP_demo.gif
deleted file mode 100644
index 6ac2c8ed..00000000
Binary files a/img/post/CLDictP_demo.gif and /dev/null differ
diff --git a/img/post/Sorted_binary_tree_breadth-first_traversal.svg b/img/post/Sorted_binary_tree_breadth-first_traversal.svg
deleted file mode 100644
index 697d7dbb..00000000
--- a/img/post/Sorted_binary_tree_breadth-first_traversal.svg
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
-
-	
-		
-		
-			
-		
-		
-			
-		
-		
-			
-		
-		
-			
-		
-		
-			
-		
-		
-			
-		
-		
-			
-		
-			
-		
-			
-		
-		
-			
-		
-	
-
-
-	sorted_binary_tree
-	
-		C
-		
-		C
-	
-	
-		E
-		
-		E
-	
-	
-		H
-		
-		H
-	
-	
-		A
-		
-		A
-	
-	
-		D
-		
-		D
-	
-	
-		D->C
-		
-		
-	
-	
-		D->E
-		
-		
-	
-	
-		I
-		
-		I
-	
-	
-		I->H
-		
-		
-	
-	
-		B
-		
-		B
-	
-	
-		B->A
-		
-		
-	
-	
-		B->D
-		
-		
-	
-	
-		G
-		
-		G
-	
-	
-		G->I
-		
-		
-	
-	
-		F
-		
-		F
-	
-	
-		F->B
-		
-		
-	
-	
-		F->G
-		
-		
-	
-
-
diff --git a/img/post/Sorted_binary_tree_inorder.svg b/img/post/Sorted_binary_tree_inorder.svg
deleted file mode 100644
index 4f754c9d..00000000
--- a/img/post/Sorted_binary_tree_inorder.svg
+++ /dev/null
@@ -1,730 +0,0 @@
-
-
-
-
-  
-    
-      
-    
-    
-      
-        
-        
-        
-      
-    
-    
-      
-    
-    
-      
-    
-    
-      
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-  
-    
-      
-        image/svg+xml
-        
-        
-      
-    
-  
-  
-    
-      sorted_binary_tree
-      
-        C
-        
-        C
-      
-      
-        E
-        
-        E
-      
-      
-        H
-        
-        H
-      
-      
-        A
-        
-        A
-      
-      
-        D
-        
-        D
-      
-      
-        D->C
-        
-        
-      
-      
-        D->E
-        
-        
-      
-      
-        I
-        
-        I
-      
-      
-        I->H
-        
-        
-      
-      
-        B
-        
-        B
-      
-      
-        B->A
-        
-        
-      
-      
-        B->D
-        
-        
-      
-      
-        G
-        
-        G
-      
-      
-        G->I
-        
-        
-      
-      
-        F
-        
-        F
-      
-      
-        F->B
-        
-        
-      
-      
-        F->G
-        
-        
-      
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-
diff --git a/img/post/Sorted_binary_tree_postorder.svg b/img/post/Sorted_binary_tree_postorder.svg
deleted file mode 100644
index 793e942d..00000000
--- a/img/post/Sorted_binary_tree_postorder.svg
+++ /dev/null
@@ -1,730 +0,0 @@
-
-
-
-
-  
-    
-      
-    
-    
-      
-        
-        
-        
-      
-    
-    
-      
-    
-    
-      
-    
-    
-      
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-  
-    
-      
-        image/svg+xml
-        
-        
-      
-    
-  
-  
-    
-      sorted_binary_tree
-      
-        C
-        
-        C
-      
-      
-        E
-        
-        E
-      
-      
-        H
-        
-        H
-      
-      
-        A
-        
-        A
-      
-      
-        D
-        
-        D
-      
-      
-        D->C
-        
-        
-      
-      
-        D->E
-        
-        
-      
-      
-        I
-        
-        I
-      
-      
-        I->H
-        
-        
-      
-      
-        B
-        
-        B
-      
-      
-        B->A
-        
-        
-      
-      
-        B->D
-        
-        
-      
-      
-        G
-        
-        G
-      
-      
-        G->I
-        
-        
-      
-      
-        F
-        
-        F
-      
-      
-        F->B
-        
-        
-      
-      
-        F->G
-        
-        
-      
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-
diff --git a/img/post/Sorted_binary_tree_preorder.svg b/img/post/Sorted_binary_tree_preorder.svg
deleted file mode 100644
index a078d751..00000000
--- a/img/post/Sorted_binary_tree_preorder.svg
+++ /dev/null
@@ -1,729 +0,0 @@
-
-
-
-  
-    
-      
-    
-    
-      
-        
-        
-        
-      
-    
-    
-      
-    
-    
-      
-    
-    
-      
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-  
-    
-      
-        image/svg+xml
-        
-        
-      
-    
-  
-  
-    
-      sorted_binary_tree
-      
-        C
-        
-        C
-      
-      
-        E
-        
-        E
-      
-      
-        H
-        
-        H
-      
-      
-        A
-        
-        A
-      
-      
-        D
-        
-        D
-      
-      
-        D->C
-        
-        
-      
-      
-        D->E
-        
-        
-      
-      
-        I
-        
-        I
-      
-      
-        I->H
-        
-        
-      
-      
-        B
-        
-        B
-      
-      
-        B->A
-        
-        
-      
-      
-        B->D
-        
-        
-      
-      
-        G
-        
-        G
-      
-      
-        G->I
-        
-        
-      
-      
-        F
-        
-        F
-      
-      
-        F->B
-        
-        
-      
-      
-        F->G
-        
-        
-      
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-
diff --git a/img/post/blog_story.jpg b/img/post/blog_story.jpg
deleted file mode 100644
index 974a9148..00000000
Binary files a/img/post/blog_story.jpg and /dev/null differ
diff --git a/img/post/complete_binary_tree.gif b/img/post/complete_binary_tree.gif
deleted file mode 100644
index 8ecfa01c..00000000
Binary files a/img/post/complete_binary_tree.gif and /dev/null differ
diff --git a/img/post/complete_binary_tree_1.gif b/img/post/complete_binary_tree_1.gif
deleted file mode 100644
index a0ade5d0..00000000
Binary files a/img/post/complete_binary_tree_1.gif and /dev/null differ
diff --git a/img/post/depth_height.gif b/img/post/depth_height.gif
deleted file mode 100644
index d4c51c7e..00000000
Binary files a/img/post/depth_height.gif and /dev/null differ
diff --git a/img/post/fliptile_1.svg b/img/post/fliptile_1.svg
deleted file mode 100644
index 3e064588..00000000
--- a/img/post/fliptile_1.svg
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-    
-    Untitled
-    Created with Sketch.
-    
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-    
-    
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            
-            
-        
-        
-            Flip
-        
-    
-
\ No newline at end of file
diff --git a/img/post/fliptile_2.svg b/img/post/fliptile_2.svg
deleted file mode 100644
index a3613cf9..00000000
--- a/img/post/fliptile_2.svg
+++ /dev/null
@@ -1 +0,0 @@
-i, jcheckotherscurrenti-1, j
\ No newline at end of file
diff --git a/img/post/full_binary_tree.gif b/img/post/full_binary_tree.gif
deleted file mode 100644
index f22d24fa..00000000
Binary files a/img/post/full_binary_tree.gif and /dev/null differ
diff --git a/img/post/full_binary_tree_1.gif b/img/post/full_binary_tree_1.gif
deleted file mode 100644
index 10abac88..00000000
Binary files a/img/post/full_binary_tree_1.gif and /dev/null differ
diff --git a/img/post/link_in.gif b/img/post/link_in.gif
deleted file mode 100644
index 044d0f14..00000000
Binary files a/img/post/link_in.gif and /dev/null differ
diff --git a/img/post/max_sum_2D.gif b/img/post/max_sum_2D.gif
deleted file mode 100644
index 3b7369b0..00000000
Binary files a/img/post/max_sum_2D.gif and /dev/null differ
diff --git a/img/post/maximum_sum.png b/img/post/maximum_sum.png
deleted file mode 100644
index 2e4fba97..00000000
Binary files a/img/post/maximum_sum.png and /dev/null differ
diff --git a/img/post/queue_dequeue.gif b/img/post/queue_dequeue.gif
deleted file mode 100644
index 9d3ab35b..00000000
Binary files a/img/post/queue_dequeue.gif and /dev/null differ
diff --git a/img/post/queue_enqueue.gif b/img/post/queue_enqueue.gif
deleted file mode 100644
index 31752706..00000000
Binary files a/img/post/queue_enqueue.gif and /dev/null differ
diff --git a/img/post/stack_pop.gif b/img/post/stack_pop.gif
deleted file mode 100644
index b6000f3e..00000000
Binary files a/img/post/stack_pop.gif and /dev/null differ
diff --git a/img/post/stack_push.gif b/img/post/stack_push.gif
deleted file mode 100644
index 7f3065b0..00000000
Binary files a/img/post/stack_push.gif and /dev/null differ
diff --git a/img/post/static_linked_list_example.svg b/img/post/static_linked_list_example.svg
deleted file mode 100644
index eaf36540..00000000
--- a/img/post/static_linked_list_example.svg
+++ /dev/null
@@ -1 +0,0 @@
-1243
\ No newline at end of file
diff --git a/img/post/static_linked_list_list.svg b/img/post/static_linked_list_list.svg
deleted file mode 100644
index 66b10b51..00000000
--- a/img/post/static_linked_list_list.svg
+++ /dev/null
@@ -1 +0,0 @@
-12342443342
\ No newline at end of file
diff --git a/img/readmore.gif b/img/readmore.gif
deleted file mode 100644
index 1b484797..00000000
Binary files a/img/readmore.gif and /dev/null differ
diff --git a/img/search.svg b/img/search.svg
deleted file mode 100644
index ccc84b62..00000000
--- a/img/search.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-    
-    
-
\ No newline at end of file
diff --git a/index.cn.html b/index.cn.html
deleted file mode 100644
index 5c44b909..00000000
--- a/index.cn.html
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: default
-lang: cn
----
-
-
- {% assign posts=site.posts | where:"lang", page.lang %} -
    - - {% for post in paginator.posts %} -
  • -

    {{ post.title }}

    -
    - {{ post.excerpt | truncatewords: 50 }} -
    - -
  • - {% endfor %} -
- {% include pagination.html %} -
diff --git a/index.html b/index.html deleted file mode 100644 index d598c399..00000000 --- a/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: default -lang: en ---- - -
- {% assign posts=site.posts | where:"lang", page.lang %} -
    - - {% for post in paginator.posts %} -
  • -

    {{ post.title }}

    -
    - {{ post.excerpt | truncatewords: 100 }} -
    - -
  • - {% endfor %} -
- {% include pagination.html %} -
diff --git a/js/jquery.min.js b/js/jquery.min.js deleted file mode 100644 index 6c60672f..00000000 --- a/js/jquery.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.12.0 | (c) jQuery Foundation | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; -return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.rnamespace||a.rnamespace.test(g.namespace))&&(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("');else if(o){var p="";p=m&&m.youtube?"lg-has-youtube":m&&m.vimeo?"lg-has-vimeo":"lg-has-html5",i.___slide[e].insertAdjacentHTML("beforeend",'
')}else m?(i.___slide[e].insertAdjacentHTML("beforeend",'
'),l.default.trigger(i.el,"hasVideo",{index:e,src:a,html:c})):(g=g?'alt="'+g+'"':"",i.___slide[e].insertAdjacentHTML("beforeend",'
'));if(l.default.trigger(i.el,"onAferAppendSlide",{index:e}),r=i.___slide[e].querySelector(".lg-object"),u&&r.setAttribute("sizes",u),n){r.setAttribute("srcset",n);try{picturefill({elements:[r[0]]})}catch(e){console.error("Make sure you have included Picturefill version 2")}}".lg-sub-html"!==this.s.appendSubHtmlTo&&i.addHtml(e),l.default.addClass(i.___slide[e],"lg-loaded")}l.default.on(i.___slide[e].querySelector(".lg-object"),"load.lg error.lg",function(){var t=0;s&&!l.default.hasClass(document.body,"lg-from-hash")&&(t=s),setTimeout(function(){l.default.addClass(i.___slide[e],"lg-complete"),l.default.trigger(i.el,"onSlideItemLoad",{index:e,delay:s||0})},t)}),m&&m.html5&&!o&&l.default.addClass(i.___slide[e],"lg-complete"),!0===t&&(l.default.hasClass(i.___slide[e],"lg-complete")?i.preload(e):l.default.on(i.___slide[e].querySelector(".lg-object"),"load.lg error.lg",function(){i.preload(e)}))},s.prototype.slide=function(e,t,s){for(var i=0,o=0;oi&&(n=!0,e!==a-1||0!==i||s||(u=!0,n=!1)),u?(l.default.addClass(this.___slide[e],"lg-prev-slide"),l.default.addClass(this.___slide[i],"lg-next-slide")):n&&(l.default.addClass(this.___slide[e],"lg-next-slide"),l.default.addClass(this.___slide[i],"lg-prev-slide")),setTimeout(function(){l.default.removeClass(r.outer.querySelector(".lg-current"),"lg-current"),l.default.addClass(r.___slide[e],"lg-current"),l.default.removeClass(r.outer,"lg-no-trans")},50)}r.lGalleryOn?(setTimeout(function(){r.loadContent(e,!0,0)},this.s.speed+50),setTimeout(function(){r.lgBusy=!1,l.default.trigger(r.el,"onAfterSlide",{prevIndex:i,index:e,fromTouch:t,fromThumb:s})},this.s.speed)):(r.loadContent(e,!0,r.s.backdropDuration),r.lgBusy=!1,l.default.trigger(r.el,"onAfterSlide",{prevIndex:i,index:e,fromTouch:t,fromThumb:s})),r.lGalleryOn=!0,this.s.counter&&document.getElementById("lg-counter-current")&&(document.getElementById("lg-counter-current").innerHTML=e+1)}}},s.prototype.goToNextSlide=function(e){var t=this;t.lgBusy||(t.index+10?(t.index--,l.default.trigger(t.el,"onBeforePrevSlide",{index:t.index,fromTouch:e}),t.slide(t.index,e,!1)):t.s.loop?(t.index=t.items.length-1,l.default.trigger(t.el,"onBeforePrevSlide",{index:t.index,fromTouch:e}),t.slide(t.index,e,!1)):t.s.slideEndAnimatoin&&(l.default.addClass(t.outer,"lg-left-end"),setTimeout(function(){l.default.removeClass(t.outer,"lg-left-end")},400)))},s.prototype.keyPress=function(){var e=this;this.items.length>1&&l.default.on(window,"keyup.lg",function(t){e.items.length>1&&(37===t.keyCode&&(t.preventDefault(),e.goToPrevSlide()),39===t.keyCode&&(t.preventDefault(),e.goToNextSlide()))}),l.default.on(window,"keydown.lg",function(t){!0===e.s.escKey&&27===t.keyCode&&(t.preventDefault(),l.default.hasClass(e.outer,"lg-thumb-open")?l.default.removeClass(e.outer,"lg-thumb-open"):e.destroy())})},s.prototype.arrow=function(){var e=this;l.default.on(this.outer.querySelector(".lg-prev"),"click.lg",function(){e.goToPrevSlide()}),l.default.on(this.outer.querySelector(".lg-next"),"click.lg",function(){e.goToNextSlide()})},s.prototype.arrowDisable=function(e){if(!this.s.loop&&this.s.hideControlOnEnd){var t=this.outer.querySelector(".lg-next"),s=this.outer.querySelector(".lg-prev");e+10?(s.removeAttribute("disabled"),l.default.removeClass(s,"disabled")):(s.setAttribute("disabled","disabled"),l.default.addClass(s,"disabled"))}},s.prototype.setTranslate=function(e,t,s){this.s.useLeft?e.style.left=t:l.default.setVendor(e,"Transform","translate3d("+t+"px, "+s+"px, 0px)")},s.prototype.touchMove=function(e,t){var s=t-e;Math.abs(s)>15&&(l.default.addClass(this.outer,"lg-dragging"),this.setTranslate(this.___slide[this.index],s,0),this.setTranslate(document.querySelector(".lg-prev-slide"),-this.___slide[this.index].clientWidth+s,0),this.setTranslate(document.querySelector(".lg-next-slide"),this.___slide[this.index].clientWidth+s,0))},s.prototype.touchEnd=function(e){var t=this;"lg-slide"!==t.s.mode&&l.default.addClass(t.outer,"lg-slide");for(var s=0;st.s.swipeThreshold?t.goToNextSlide(!0):e>0&&Math.abs(e)>t.s.swipeThreshold?t.goToPrevSlide(!0):Math.abs(e)<5&&l.default.trigger(t.el,"onSlideClick");for(var s=0;s-1&&l.default.addClass(this.___slide[t],"lg-prev-slide"),l.default.addClass(this.___slide[e],"lg-next-slide")},s.prototype.mousewheel=function(){var e=this;l.default.on(e.outer,"mousewheel.lg",function(t){t.deltaY&&(t.deltaY>0?e.goToPrevSlide():e.goToNextSlide(),t.preventDefault())})},s.prototype.closeGallery=function(){var e=this,t=!1;l.default.on(this.outer.querySelector(".lg-close"),"click.lg",function(){e.destroy()}),e.s.closable&&(l.default.on(e.outer,"mousedown.lg",function(e){t=!!(l.default.hasClass(e.target,"lg-outer")||l.default.hasClass(e.target,"lg-item")||l.default.hasClass(e.target,"lg-img-wrap"))}),l.default.on(e.outer,"mouseup.lg",function(s){(l.default.hasClass(s.target,"lg-outer")||l.default.hasClass(s.target,"lg-item")||l.default.hasClass(s.target,"lg-img-wrap")&&t)&&(l.default.hasClass(e.outer,"lg-dragging")||e.destroy())}))},s.prototype.destroy=function(e){var t=this;if(e||l.default.trigger(t.el,"onBeforeClose"),document.body.scrollTop=t.prevScrollTop,document.documentElement.scrollTop=t.prevScrollTop,e){if(!t.s.dynamic)for(var s=0;s + // TinySegmenter is freely distributable under the terms of a new BSD licence. + // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt + + function TinySegmenter() { + var patterns = { + "[一二三四五六七八九十百千万億兆]":"M", + "[一-龠々〆ヵヶ]":"H", + "[ぁ-ん]":"I", + "[ァ-ヴーア-ン゙ー]":"K", + "[a-zA-Za-zA-Z]":"A", + "[0-90-9]":"N" + } + this.chartype_ = []; + for (var i in patterns) { + var regexp = new RegExp(i); + this.chartype_.push([regexp, patterns[i]]); + } + + this.BIAS__ = -332 + this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378}; + this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920}; + this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266}; + this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352}; + this.BP2__ = {"BO":60,"OO":-1762}; + this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965}; + this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146}; + this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699}; + this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973}; + this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682}; + this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669}; + this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990}; + this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832}; + this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649}; + this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393}; + this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841}; + this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68}; + this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591}; + this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685}; + this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156}; + this.TW1__ = {"につい":-4681,"東京都":2026}; + this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216}; + this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287}; + this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865}; + this.UC1__ = {"A":484,"K":93,"M":645,"O":-505}; + this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646}; + this.UC3__ = {"A":-1370,"I":2311}; + this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646}; + this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831}; + this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387}; + this.UP1__ = {"O":-214}; + this.UP2__ = {"B":69,"O":935}; + this.UP3__ = {"B":189}; + this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422}; + this.UQ2__ = {"BH":216,"BI":113,"OK":1759}; + this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212}; + this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135}; + this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568}; + this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278}; + this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637}; + this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343}; + this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496}; + + return this; + } + TinySegmenter.prototype.ctype_ = function(str) { + for (var i in this.chartype_) { + if (str.match(this.chartype_[i][0])) { + return this.chartype_[i][1]; + } + } + return "O"; + } + + TinySegmenter.prototype.ts_ = function(v) { + if (v) { return v; } + return 0; + } + + TinySegmenter.prototype.segment = function(input) { + if (input == null || input == undefined || input == "") { + return []; + } + var result = []; + var seg = ["B3","B2","B1"]; + var ctype = ["O","O","O"]; + var o = input.split(""); + for (i = 0; i < o.length; ++i) { + seg.push(o[i]); + ctype.push(this.ctype_(o[i])) + } + seg.push("E1"); + seg.push("E2"); + seg.push("E3"); + ctype.push("O"); + ctype.push("O"); + ctype.push("O"); + var word = seg[3]; + var p1 = "U"; + var p2 = "U"; + var p3 = "U"; + for (var i = 4; i < seg.length - 3; ++i) { + var score = this.BIAS__; + var w1 = seg[i-3]; + var w2 = seg[i-2]; + var w3 = seg[i-1]; + var w4 = seg[i]; + var w5 = seg[i+1]; + var w6 = seg[i+2]; + var c1 = ctype[i-3]; + var c2 = ctype[i-2]; + var c3 = ctype[i-1]; + var c4 = ctype[i]; + var c5 = ctype[i+1]; + var c6 = ctype[i+2]; + score += this.ts_(this.UP1__[p1]); + score += this.ts_(this.UP2__[p2]); + score += this.ts_(this.UP3__[p3]); + score += this.ts_(this.BP1__[p1 + p2]); + score += this.ts_(this.BP2__[p2 + p3]); + score += this.ts_(this.UW1__[w1]); + score += this.ts_(this.UW2__[w2]); + score += this.ts_(this.UW3__[w3]); + score += this.ts_(this.UW4__[w4]); + score += this.ts_(this.UW5__[w5]); + score += this.ts_(this.UW6__[w6]); + score += this.ts_(this.BW1__[w2 + w3]); + score += this.ts_(this.BW2__[w3 + w4]); + score += this.ts_(this.BW3__[w4 + w5]); + score += this.ts_(this.TW1__[w1 + w2 + w3]); + score += this.ts_(this.TW2__[w2 + w3 + w4]); + score += this.ts_(this.TW3__[w3 + w4 + w5]); + score += this.ts_(this.TW4__[w4 + w5 + w6]); + score += this.ts_(this.UC1__[c1]); + score += this.ts_(this.UC2__[c2]); + score += this.ts_(this.UC3__[c3]); + score += this.ts_(this.UC4__[c4]); + score += this.ts_(this.UC5__[c5]); + score += this.ts_(this.UC6__[c6]); + score += this.ts_(this.BC1__[c2 + c3]); + score += this.ts_(this.BC2__[c3 + c4]); + score += this.ts_(this.BC3__[c4 + c5]); + score += this.ts_(this.TC1__[c1 + c2 + c3]); + score += this.ts_(this.TC2__[c2 + c3 + c4]); + score += this.ts_(this.TC3__[c3 + c4 + c5]); + score += this.ts_(this.TC4__[c4 + c5 + c6]); + // score += this.ts_(this.TC5__[c4 + c5 + c6]); + score += this.ts_(this.UQ1__[p1 + c1]); + score += this.ts_(this.UQ2__[p2 + c2]); + score += this.ts_(this.UQ3__[p3 + c3]); + score += this.ts_(this.BQ1__[p2 + c2 + c3]); + score += this.ts_(this.BQ2__[p2 + c3 + c4]); + score += this.ts_(this.BQ3__[p3 + c2 + c3]); + score += this.ts_(this.BQ4__[p3 + c3 + c4]); + score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]); + score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]); + score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]); + score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]); + var p = "O"; + if (score > 0) { + result.push(word); + word = ""; + p = "B"; + } + p1 = p2; + p2 = p3; + p3 = p; + word += seg[i]; + } + result.push(word); + + return result; + } + + lunr.TinySegmenter = TinySegmenter; + }; + +})); diff --git a/themes/LoveIt/assets/lib/lunr/lunr.ar.js b/themes/LoveIt/assets/lib/lunr/lunr.ar.js new file mode 100644 index 00000000..ee06f9ec --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.ar.js @@ -0,0 +1,381 @@ +/*! + * Lunr languages, `Arabic` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2018, Dalia Al-Shahrabi + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Kazem Taghva, Rania Elkhoury, and Jeffrey Coombs (2005) + * Meryeme Hadni, Abdelmonaime Lachkar, and S. Alaoui Ouatik (2012) + * + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.ar = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.ar.trimmer, + lunr.ar.stopWordFilter, + lunr.ar.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.ar.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.ar.wordCharacters = "\u0621-\u065b\u0671\u0640"; + lunr.ar.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.ar.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.ar.trimmer, 'trimmer-ar'); + + /* lunr stemmer function */ + lunr.ar.stemmer = (function() { + var self = this; + var word = ''; + self.result = false; + self.preRemoved = false; + self.sufRemoved = false; + + //prefix data + self.pre = { + pre1: 'ف ك ب و س ل ن ا ي ت', + pre2: 'ال لل', + pre3: 'بال وال فال تال كال ولل', + pre4: 'فبال كبال وبال وكال' + }; + + //suffix data + self.suf = { + suf1: 'ه ك ت ن ا ي', + suf2: 'نك نه ها وك يا اه ون ين تن تم نا وا ان كم كن ني نن ما هم هن تك ته ات يه', + suf3: 'تين كهم نيه نهم ونه وها يهم ونا ونك وني وهم تكم تنا تها تني تهم كما كها ناه نكم هنا تان يها', + suf4: 'كموه ناها ونني ونهم تكما تموه تكاه كماه ناكم ناهم نيها وننا' + } + + //arabic language patterns and alternative mapping for patterns + self.patterns = JSON.parse('{"pt43":[{"pt":[{"c":"ا","l":1}]},{"pt":[{"c":"ا,ت,ن,ي","l":0}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"و","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ي","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ا","l":2},{"c":"ل","l":3,"m":3}]},{"pt":[{"c":"م","l":0}]}],"pt53":[{"pt":[{"c":"ت","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":3},{"c":"ل","l":3,"m":4},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":3}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ن","l":4}]},{"pt":[{"c":"ت","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"م","l":0},{"c":"و","l":3}]},{"pt":[{"c":"ا","l":1},{"c":"و","l":3}]},{"pt":[{"c":"و","l":1},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"ا","l":2},{"c":"ن","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":1},{"c":"ا","l":3}]},{"pt":[{"c":"ي,ت,ا,ن","l":0},{"c":"ت","l":1}],"mPt":[{"c":"ف","l":0,"m":2},{"c":"ع","l":1,"m":3},{"c":"ا","l":2},{"c":"ل","l":3,"m":4}]},{"pt":[{"c":"ت,ي,ا,ن","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":2},{"c":"ي","l":3}]},{"pt":[{"c":"ا,ي,ت,ن","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ء","l":4}]}],"pt63":[{"pt":[{"c":"ا","l":0},{"c":"ت","l":2},{"c":"ا","l":4}]},{"pt":[{"c":"ا,ت,ن,ي","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"و","l":3}]},{"pt":[{"c":"م","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ي","l":1},{"c":"ي","l":3},{"c":"ا","l":4},{"c":"ء","l":5}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ا","l":4}]}],"pt54":[{"pt":[{"c":"ت","l":0}]},{"pt":[{"c":"ا,ي,ت,ن","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"م","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":2}]}],"pt64":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":1}]}],"pt73":[{"pt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ا","l":5}]}],"pt75":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":5}]}]}'); + + self.execArray = [ + 'cleanWord', + 'removeDiacritics', + 'cleanAlef', + 'removeStopWords', + 'normalizeHamzaAndAlef', + 'removeStartWaw', + 'removePre432', + 'removeEndTaa', + 'wordCheck' + ]; + + self.stem = function() { + var counter = 0; + self.result = false; + self.preRemoved = false; + self.sufRemoved = false; + while (counter < self.execArray.length && self.result != true) { + self.result = self[self.execArray[counter]](); + counter++; + } + } + + self.setCurrent = function(word) { + self.word = word; + } + + self.getCurrent = function() { + return self.word + } + + /*remove elongating character and test that the word does not contain non-arabic characters. + If the word contains special characters, don't stem. */ + self.cleanWord = function() { + var wordCharacters = "\u0621-\u065b\u0671\u0640"; + var testRegex = new RegExp("[^" + wordCharacters + "]"); + self.word = self.word + .replace('\u0640', ''); + if (testRegex.test(word)) { + return true; + } + return false; + } + + self.removeDiacritics = function() { + var diacriticsRegex = new RegExp("[\u064b-\u065b]"); + self.word = self.word.replace(/[\u064b-\u065b]/gi, ''); + return false; + } + + /*Replace all variations of alef (آأإٱى) to a plain alef (ا)*/ + self.cleanAlef = function() { + var alefRegex = new RegExp("[\u0622\u0623\u0625\u0671\u0649]"); + self.word = self.word.replace(alefRegex, "\u0627"); + return false; + } + + /* if the word is a stop word, don't stem*/ + self.removeStopWords = function() { + var stopWords = '، اض امين اه اها اي ا اب اجل اجمع اخ اخذ اصبح اضحى اقبل اقل اكثر الا ام اما امامك امامك امسى اما ان انا انت انتم انتما انتن انت انشا انى او اوشك اولئك اولئكم اولاء اولالك اوه اي ايا اين اينما اي ان اي اف اذ اذا اذا اذما اذن الى اليكم اليكما اليكن اليك اليك الا اما ان انما اي اياك اياكم اياكما اياكن ايانا اياه اياها اياهم اياهما اياهن اياي ايه ان ا ابتدا اثر اجل احد اخرى اخلولق اذا اربعة ارتد استحال اطار اعادة اعلنت اف اكثر اكد الالاء الالى الا الاخيرة الان الاول الاولى التى التي الثاني الثانية الذاتي الذى الذي الذين السابق الف اللائي اللاتي اللتان اللتيا اللتين اللذان اللذين اللواتي الماضي المقبل الوقت الى اليوم اما امام امس ان انبرى انقلب انه انها او اول اي ايار ايام ايضا ب بات باسم بان بخ برس بسبب بس بشكل بضع بطان بعد بعض بك بكم بكما بكن بل بلى بما بماذا بمن بن بنا به بها بي بيد بين بس بله بئس تان تانك تبدل تجاه تحول تلقاء تلك تلكم تلكما تم تينك تين ته تي ثلاثة ثم ثم ثمة ثم جعل جلل جميع جير حار حاشا حاليا حاي حتى حرى حسب حم حوالى حول حيث حيثما حين حي حبذا حتى حذار خلا خلال دون دونك ذا ذات ذاك ذانك ذان ذلك ذلكم ذلكما ذلكن ذو ذوا ذواتا ذواتي ذيت ذينك ذين ذه ذي راح رجع رويدك ريث رب زيارة سبحان سرعان سنة سنوات سوف سوى ساء ساءما شبه شخصا شرع شتان صار صباح صفر صه صه ضد ضمن طاق طالما طفق طق ظل عاد عام عاما عامة عدا عدة عدد عدم عسى عشر عشرة علق على عليك عليه عليها عل عن عند عندما عوض عين عدس عما غدا غير ف فان فلان فو فى في فيم فيما فيه فيها قال قام قبل قد قط قلما قوة كانما كاين كاي كاين كاد كان كانت كذا كذلك كرب كل كلا كلاهما كلتا كلم كليكما كليهما كلما كلا كم كما كي كيت كيف كيفما كان كخ لئن لا لات لاسيما لدن لدى لعمر لقاء لك لكم لكما لكن لكنما لكي لكيلا للامم لم لما لما لن لنا له لها لو لوكالة لولا لوما لي لست لست لستم لستما لستن لست لسن لعل لكن ليت ليس ليسا ليستا ليست ليسوا لسنا ما ماانفك مابرح مادام ماذا مازال مافتئ مايو متى مثل مذ مساء مع معاذ مقابل مكانكم مكانكما مكانكن مكانك مليار مليون مما ممن من منذ منها مه مهما من من نحن نحو نعم نفس نفسه نهاية نخ نعما نعم ها هاؤم هاك هاهنا هب هذا هذه هكذا هل هلم هلا هم هما هن هنا هناك هنالك هو هي هيا هيت هيا هؤلاء هاتان هاتين هاته هاتي هج هذا هذان هذين هذه هذي هيهات و وا واحد واضاف واضافت واكد وان واها واوضح وراءك وفي وقال وقالت وقد وقف وكان وكانت ولا ولم ومن وهو وهي ويكان وي وشكان يكون يمكن يوم ايان'.split(' '); + if (stopWords.indexOf(self.word) >= 0) { + return true; + } + } + + /* changes ؤ ئ to ء and removes alef if at the end of the word*/ + self.normalizeHamzaAndAlef = function() { + self.word = self.word.replace('\u0624', '\u0621'); + self.word = self.word.replace('\u0626', '\u0621'); + self.word = self.word.replace(/([\u0627])\1+/gi, '\u0627'); + return false; + } + + /*remove end taa marboota ة*/ + self.removeEndTaa = function() { + if (self.word.length > 2) { + self.word = self.word.replace(/[\u0627]$/, ''); + self.word = self.word.replace('\u0629', ''); + return false; + } else return true; + } + + /* if the word starts with double waw وو keep only one of them */ + self.removeStartWaw = function() { + if (self.word.length > 3 && self.word[0] == '\u0648' && self.word[1] == '\u0648') { + self.word = self.word.slice(1); + } + return false; + } + + /* remove prefixes of size 4, 3 and 2 characters */ + self.removePre432 = function() { + var word = self.word; + if (self.word.length >= 7) { + var pre4Regex = new RegExp('^(' + self.pre.pre4.split(' ').join('|') + ')') + self.word = self.word.replace(pre4Regex, ''); + } + if (self.word == word && self.word.length >= 6) { + var pre3Regex = new RegExp('^(' + self.pre.pre3.split(' ').join('|') + ')') + self.word = self.word.replace(pre3Regex, ''); + } + if (self.word == word && self.word.length >= 5) { + var pre2Regex = new RegExp('^(' + self.pre.pre2.split(' ').join('|') + ')') + self.word = self.word.replace(pre2Regex, ''); + } + if (word != self.word) self.preRemoved = true; + return false; + } + + /* check the word against word patterns. If the word matches a pattern, map it to the + alternative pattern if available then stop stemming. */ + self.patternCheck = function(pattern) { + var patternMatch = false; + for (var i = 0; i < pattern.length; i++) { + var currentPatternCheck = true; + for (var j = 0; j < pattern[i].pt.length; j++) { + var chars = pattern[i].pt[j].c.split(','); + var charMatch = false; + chars.forEach(function(el) { + if (self.word[pattern[i].pt[j].l] == el) { + charMatch = true; + } + }) + if (!charMatch) { + currentPatternCheck = false; + break; + } + } + if (currentPatternCheck == true) { + if (pattern[i].mPt) { + var newWord = []; + for (var k = 0; k < pattern[i].mPt.length; k++) { + if (pattern[i].mPt[k].m != null) { + newWord[pattern[i].mPt[k].l] = self.word[pattern[i].mPt[k].m] + } else { + newWord[pattern[i].mPt[k].l] = pattern[i].mPt[k].c + } + } + self.word = newWord.join(''); + } + self.result = true; + break; + } + } + } + + /* remove prefixes of size 1 char*/ + self.removePre1 = function() { + var word = self.word; + if (self.preRemoved == false) + if (self.word.length > 3) { + var pre1Regex = new RegExp('^(' + self.pre.pre1.split(' ').join('|') + ')') + self.word = self.word.replace(pre1Regex, ''); + } + if (word != self.word) self.preRemoved = true; + return false; + } + + /*remove suffixes of size 1 char */ + self.removeSuf1 = function() { + var word = self.word; + if (self.sufRemoved == false) + if (self.word.length > 3) { + var suf1Regex = new RegExp('(' + self.suf.suf1.split(' ').join('|') + ')$') + self.word = self.word.replace(suf1Regex, ''); + } + if (word != self.word) self.sufRemoved = true; + return false; + } + + /*remove suffixes of size 4, 3 and 2 chars*/ + self.removeSuf432 = function() { + var word = self.word; + if (self.word.length >= 6) { + var suf4Regex = new RegExp('(' + self.suf.suf4.split(' ').join('|') + ')$') + self.word = self.word.replace(suf4Regex, ''); + } + if (self.word == word && self.word.length >= 5) { + var suf3Regex = new RegExp('(' + self.suf.suf3.split(' ').join('|') + ')$') + self.word = self.word.replace(suf3Regex, ''); + } + if (self.word == word && self.word.length >= 4) { + var suf2Regex = new RegExp('(' + self.suf.suf2.split(' ').join('|') + ')$') + self.word = self.word.replace(suf2Regex, ''); + } + if (word != self.word) self.sufRemoved = true; + return false; + } + + /*check the word length and decide what is the next step accordingly*/ + self.wordCheck = function() { + var word = self.word; + var word7Exec = [self.removeSuf432, self.removeSuf1, self.removePre1] + var counter = 0; + var patternChecked = false; + while (self.word.length >= 7 && !self.result && counter < word7Exec.length) { + if (self.word.length == 7 && !patternChecked) { + self.checkPattern73(); + patternChecked = true; + } else { + word7Exec[counter](); + counter++; + patternChecked = false; + } + } + + var word6Exec = [self.checkPattern63, self.removeSuf432, self.removeSuf1, self.removePre1, self.checkPattern64]; + counter = 0; + while (self.word.length == 6 && !self.result && counter < word6Exec.length) { + word6Exec[counter](); + counter++; + } + + var word5Exec = [self.checkPattern53, self.removeSuf432, self.removeSuf1, self.removePre1, self.checkPattern54]; + counter = 0; + while (self.word.length == 5 && !self.result && counter < word5Exec.length) { + word5Exec[counter](); + counter++; + } + + var word4Exec = [self.checkPattern43, self.removeSuf1, self.removePre1, self.removeSuf432]; + counter = 0; + while (self.word.length == 4 && !self.result && counter < word4Exec.length) { + word4Exec[counter](); + counter++; + } + return true; + } + + self.checkPattern43 = function() { + self.patternCheck(self.patterns.pt43) + } + self.checkPattern53 = function() { + self.patternCheck(self.patterns.pt53) + } + self.checkPattern54 = function() { + self.patternCheck(self.patterns.pt54) + } + self.checkPattern63 = function() { + self.patternCheck(self.patterns.pt63) + } + self.checkPattern64 = function() { + self.patternCheck(self.patterns.pt64) + } + self.checkPattern73 = function() { + self.patternCheck(self.patterns.pt73) + } + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + self.setCurrent(word); + self.stem(); + return self.getCurrent(); + }) + } else { // for lunr version <= 1 + self.setCurrent(token); + self.stem(); + return self.getCurrent(); + } + + } + })(); + + lunr.Pipeline.registerFunction(lunr.ar.stemmer, 'stemmer-ar'); + + lunr.ar.stopWordFilter = lunr.generateStopWordFilter('، اض امين اه اها اي ا اب اجل اجمع اخ اخذ اصبح اضحى اقبل اقل اكثر الا ام اما امامك امامك امسى اما ان انا انت انتم انتما انتن انت انشا انى او اوشك اولئك اولئكم اولاء اولالك اوه اي ايا اين اينما اي ان اي اف اذ اذا اذا اذما اذن الى اليكم اليكما اليكن اليك اليك الا اما ان انما اي اياك اياكم اياكما اياكن ايانا اياه اياها اياهم اياهما اياهن اياي ايه ان ا ابتدا اثر اجل احد اخرى اخلولق اذا اربعة ارتد استحال اطار اعادة اعلنت اف اكثر اكد الالاء الالى الا الاخيرة الان الاول الاولى التى التي الثاني الثانية الذاتي الذى الذي الذين السابق الف اللائي اللاتي اللتان اللتيا اللتين اللذان اللذين اللواتي الماضي المقبل الوقت الى اليوم اما امام امس ان انبرى انقلب انه انها او اول اي ايار ايام ايضا ب بات باسم بان بخ برس بسبب بس بشكل بضع بطان بعد بعض بك بكم بكما بكن بل بلى بما بماذا بمن بن بنا به بها بي بيد بين بس بله بئس تان تانك تبدل تجاه تحول تلقاء تلك تلكم تلكما تم تينك تين ته تي ثلاثة ثم ثم ثمة ثم جعل جلل جميع جير حار حاشا حاليا حاي حتى حرى حسب حم حوالى حول حيث حيثما حين حي حبذا حتى حذار خلا خلال دون دونك ذا ذات ذاك ذانك ذان ذلك ذلكم ذلكما ذلكن ذو ذوا ذواتا ذواتي ذيت ذينك ذين ذه ذي راح رجع رويدك ريث رب زيارة سبحان سرعان سنة سنوات سوف سوى ساء ساءما شبه شخصا شرع شتان صار صباح صفر صه صه ضد ضمن طاق طالما طفق طق ظل عاد عام عاما عامة عدا عدة عدد عدم عسى عشر عشرة علق على عليك عليه عليها عل عن عند عندما عوض عين عدس عما غدا غير ف فان فلان فو فى في فيم فيما فيه فيها قال قام قبل قد قط قلما قوة كانما كاين كاي كاين كاد كان كانت كذا كذلك كرب كل كلا كلاهما كلتا كلم كليكما كليهما كلما كلا كم كما كي كيت كيف كيفما كان كخ لئن لا لات لاسيما لدن لدى لعمر لقاء لك لكم لكما لكن لكنما لكي لكيلا للامم لم لما لما لن لنا له لها لو لوكالة لولا لوما لي لست لست لستم لستما لستن لست لسن لعل لكن ليت ليس ليسا ليستا ليست ليسوا لسنا ما ماانفك مابرح مادام ماذا مازال مافتئ مايو متى مثل مذ مساء مع معاذ مقابل مكانكم مكانكما مكانكن مكانك مليار مليون مما ممن من منذ منها مه مهما من من نحن نحو نعم نفس نفسه نهاية نخ نعما نعم ها هاؤم هاك هاهنا هب هذا هذه هكذا هل هلم هلا هم هما هن هنا هناك هنالك هو هي هيا هيت هيا هؤلاء هاتان هاتين هاته هاتي هج هذا هذان هذين هذه هذي هيهات وا واحد واضاف واضافت واكد وان واها واوضح وراءك وفي وقال وقالت وقد وقف وكان وكانت ولا ولم ومن وهو وهي ويكان وي وشكان يكون يمكن يوم ايان'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.ar.stopWordFilter, 'stopWordFilter-ar'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.da.js b/themes/LoveIt/assets/lib/lunr/lunr.da.js new file mode 100644 index 00000000..3995d0fa --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.da.js @@ -0,0 +1,284 @@ +/*! + * Lunr languages, `Danish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.da = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.da.trimmer, + lunr.da.stopWordFilter, + lunr.da.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.da.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.da.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.da.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.da.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.da.trimmer, 'trimmer-da'); + + /* lunr stemmer function */ + lunr.da.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function DanishStemmer() { + var a_0 = [new Among("hed", -1, 1), new Among("ethed", 0, 1), + new Among("ered", -1, 1), new Among("e", -1, 1), + new Among("erede", 3, 1), new Among("ende", 3, 1), + new Among("erende", 5, 1), new Among("ene", 3, 1), + new Among("erne", 3, 1), new Among("ere", 3, 1), + new Among("en", -1, 1), new Among("heden", 10, 1), + new Among("eren", 10, 1), new Among("er", -1, 1), + new Among("heder", 13, 1), new Among("erer", 13, 1), + new Among("s", -1, 2), new Among("heds", 16, 1), + new Among("es", 16, 1), new Among("endes", 18, 1), + new Among("erendes", 19, 1), new Among("enes", 18, 1), + new Among("ernes", 18, 1), new Among("eres", 18, 1), + new Among("ens", 16, 1), new Among("hedens", 24, 1), + new Among("erens", 24, 1), new Among("ers", 16, 1), + new Among("ets", 16, 1), new Among("erets", 28, 1), + new Among("et", -1, 1), new Among("eret", 30, 1) + ], + a_1 = [ + new Among("gd", -1, -1), new Among("dt", -1, -1), + new Among("gt", -1, -1), new Among("kt", -1, -1) + ], + a_2 = [ + new Among("ig", -1, 1), new Among("lig", 0, 1), + new Among("elig", 1, 1), new Among("els", -1, 1), + new Among("l\u00F8st", -1, 2) + ], + g_v = [17, 65, 16, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 + ], + g_s_ending = [239, 254, 42, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 + ], + I_x, I_p1, S_ch, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + var v_1, c = sbp.cursor + 3; + I_p1 = sbp.limit; + if (0 <= c && c <= sbp.limit) { + I_x = c; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 248)) { + sbp.cursor = v_1; + break; + } + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 248)) { + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_p1 = sbp.cursor; + if (I_p1 < I_x) + I_p1 = I_x; + } + } + + function r_main_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_0, 32); + sbp.limit_backward = v_1; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + if (sbp.in_grouping_b(g_s_ending, 97, 229)) + sbp.slice_del(); + break; + } + } + } + } + + function r_consonant_pair() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + if (sbp.cursor >= I_p1) { + v_2 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_1, 4)) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_2; + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } else + sbp.limit_backward = v_2; + } + } + + function r_other_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_3; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "st")) { + sbp.bra = sbp.cursor; + if (sbp.eq_s_b(2, "ig")) + sbp.slice_del(); + } + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor >= I_p1) { + v_2 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 5); + sbp.limit_backward = v_2; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + r_consonant_pair(); + sbp.cursor = sbp.limit - v_3; + break; + case 2: + sbp.slice_from("l\u00F8s"); + break; + } + } + } + } + + function r_undouble() { + var v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.out_grouping_b(g_v, 97, 248)) { + sbp.bra = sbp.cursor; + S_ch = sbp.slice_to(S_ch); + sbp.limit_backward = v_1; + if (sbp.eq_v_b(S_ch)) + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_main_suffix(); + sbp.cursor = sbp.limit; + r_consonant_pair(); + sbp.cursor = sbp.limit; + r_other_suffix(); + sbp.cursor = sbp.limit; + r_undouble(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.da.stemmer, 'stemmer-da'); + + lunr.da.stopWordFilter = lunr.generateStopWordFilter('ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.da.stopWordFilter, 'stopWordFilter-da'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.de.js b/themes/LoveIt/assets/lib/lunr/lunr.de.js new file mode 100644 index 00000000..88e8205a --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.de.js @@ -0,0 +1,384 @@ +/*! + * Lunr languages, `German` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.de = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.de.trimmer, + lunr.de.stopWordFilter, + lunr.de.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.de.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.de.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.de.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.de.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.de.trimmer, 'trimmer-de'); + + /* lunr stemmer function */ + lunr.de.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function GermanStemmer() { + var a_0 = [new Among("", -1, 6), new Among("U", 0, 2), + new Among("Y", 0, 1), new Among("\u00E4", 0, 3), + new Among("\u00F6", 0, 4), new Among("\u00FC", 0, 5) + ], + a_1 = [ + new Among("e", -1, 2), new Among("em", -1, 1), + new Among("en", -1, 2), new Among("ern", -1, 1), + new Among("er", -1, 1), new Among("s", -1, 3), + new Among("es", 5, 2) + ], + a_2 = [new Among("en", -1, 1), + new Among("er", -1, 1), new Among("st", -1, 2), + new Among("est", 2, 1) + ], + a_3 = [new Among("ig", -1, 1), + new Among("lich", -1, 1) + ], + a_4 = [new Among("end", -1, 1), + new Among("ig", -1, 2), new Among("ung", -1, 1), + new Among("lich", -1, 3), new Among("isch", -1, 2), + new Among("ik", -1, 2), new Among("heit", -1, 3), + new Among("keit", -1, 4) + ], + g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 + ], + g_s_ending = [117, 30, 5], + g_st_ending = [ + 117, 30, 4 + ], + I_x, I_p2, I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(c1, c2, v_1) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 252)) { + sbp.slice_from(c2); + sbp.cursor = v_1; + return true; + } + } + return false; + } + + function r_prelude() { + var v_1 = sbp.cursor, + v_2, v_3, v_4, v_5; + while (true) { + v_2 = sbp.cursor; + sbp.bra = v_2; + if (sbp.eq_s(1, "\u00DF")) { + sbp.ket = sbp.cursor; + sbp.slice_from("ss"); + } else { + if (v_2 >= sbp.limit) + break; + sbp.cursor = v_2 + 1; + } + } + sbp.cursor = v_1; + while (true) { + v_3 = sbp.cursor; + while (true) { + v_4 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 252)) { + v_5 = sbp.cursor; + sbp.bra = v_5; + if (habr1("u", "U", v_4)) + break; + sbp.cursor = v_5; + if (habr1("y", "Y", v_4)) + break; + } + if (v_4 >= sbp.limit) { + sbp.cursor = v_3; + return; + } + sbp.cursor = v_4 + 1; + } + } + } + + function habr2() { + while (!sbp.in_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_mark_regions() { + I_p1 = sbp.limit; + I_p2 = I_p1; + var c = sbp.cursor + 3; + if (0 <= c && c <= sbp.limit) { + I_x = c; + if (!habr2()) { + I_p1 = sbp.cursor; + if (I_p1 < I_x) + I_p1 = I_x; + if (!habr2()) + I_p2 = sbp.cursor; + } + } + } + + function r_postlude() { + var among_var, v_1; + while (true) { + v_1 = sbp.cursor; + sbp.bra = v_1; + among_var = sbp.find_among(a_0, 6); + if (!among_var) + return; + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("y"); + break; + case 2: + case 5: + sbp.slice_from("u"); + break; + case 3: + sbp.slice_from("a"); + break; + case 4: + sbp.slice_from("o"); + break; + case 6: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_standard_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_3, v_4; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_1, 7); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "s")) { + sbp.bra = sbp.cursor; + if (sbp.eq_s_b(3, "nis")) + sbp.slice_del(); + } + break; + case 3: + if (sbp.in_grouping_b(g_s_ending, 98, 116)) + sbp.slice_del(); + break; + } + } + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 4); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + if (sbp.in_grouping_b(g_st_ending, 98, 116)) { + var c = sbp.cursor - 3; + if (sbp.limit_backward <= c && c <= sbp.limit) { + sbp.cursor = c; + sbp.slice_del(); + } + } + break; + } + } + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 8); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + switch (among_var) { + case 1: + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ig")) { + sbp.bra = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_2; + if (r_R2()) + sbp.slice_del(); + } + } + break; + case 2: + v_3 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_3; + sbp.slice_del(); + } + break; + case 3: + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_4 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(2, "er")) { + sbp.cursor = sbp.limit - v_4; + if (!sbp.eq_s_b(2, "en")) + break; + } + sbp.bra = sbp.cursor; + if (r_R1()) + sbp.slice_del(); + break; + case 4: + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2() && among_var == 1) + sbp.slice_del(); + } + break; + } + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_standard_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.de.stemmer, 'stemmer-de'); + + lunr.de.stopWordFilter = lunr.generateStopWordFilter('aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.de.stopWordFilter, 'stopWordFilter-de'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.du.js b/themes/LoveIt/assets/lib/lunr/lunr.du.js new file mode 100644 index 00000000..e32aa6ba --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.du.js @@ -0,0 +1,450 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + console.warn("[Lunr Languages] Please use the \"nl\" instead of the \"du\". The \"nl\" code is the standard code for Dutch language, and \"du\" will be removed in the next major versions."); + + /* register specific locale function */ + lunr.du = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.du.trimmer, + lunr.du.stopWordFilter, + lunr.du.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.du.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.du.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.du.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.du.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.du.trimmer, 'trimmer-du'); + + /* lunr stemmer function */ + lunr.du.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function DutchStemmer() { + var a_0 = [new Among("", -1, 6), new Among("\u00E1", 0, 1), + new Among("\u00E4", 0, 1), new Among("\u00E9", 0, 2), + new Among("\u00EB", 0, 2), new Among("\u00ED", 0, 3), + new Among("\u00EF", 0, 3), new Among("\u00F3", 0, 4), + new Among("\u00F6", 0, 4), new Among("\u00FA", 0, 5), + new Among("\u00FC", 0, 5) + ], + a_1 = [new Among("", -1, 3), + new Among("I", 0, 2), new Among("Y", 0, 1) + ], + a_2 = [ + new Among("dd", -1, -1), new Among("kk", -1, -1), + new Among("tt", -1, -1) + ], + a_3 = [new Among("ene", -1, 2), + new Among("se", -1, 3), new Among("en", -1, 2), + new Among("heden", 2, 1), new Among("s", -1, 3) + ], + a_4 = [ + new Among("end", -1, 1), new Among("ig", -1, 2), + new Among("ing", -1, 1), new Among("lijk", -1, 3), + new Among("baar", -1, 4), new Among("bar", -1, 5) + ], + a_5 = [ + new Among("aa", -1, -1), new Among("ee", -1, -1), + new Among("oo", -1, -1), new Among("uu", -1, -1) + ], + g_v = [17, 65, + 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + g_v_I = [1, 0, 0, + 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + g_v_j = [ + 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + I_p2, I_p1, B_e_found, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_prelude() { + var among_var, v_1 = sbp.cursor, + v_2, v_3; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 11); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("a"); + continue; + case 2: + sbp.slice_from("e"); + continue; + case 3: + sbp.slice_from("i"); + continue; + case 4: + sbp.slice_from("o"); + continue; + case 5: + sbp.slice_from("u"); + continue; + case 6: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + sbp.cursor = v_1; + sbp.bra = v_1; + if (sbp.eq_s(1, "y")) { + sbp.ket = sbp.cursor; + sbp.slice_from("Y"); + } else + sbp.cursor = v_1; + while (true) { + v_2 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 232)) { + v_3 = sbp.cursor; + sbp.bra = v_3; + if (sbp.eq_s(1, "i")) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 232)) { + sbp.slice_from("I"); + sbp.cursor = v_2; + } + } else { + sbp.cursor = v_3; + if (sbp.eq_s(1, "y")) { + sbp.ket = sbp.cursor; + sbp.slice_from("Y"); + sbp.cursor = v_2; + } else if (habr1(v_2)) + break; + } + } else if (habr1(v_2)) + break; + } + } + + function habr1(v_1) { + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return true; + sbp.cursor++; + return false; + } + + function r_mark_regions() { + I_p1 = sbp.limit; + I_p2 = I_p1; + if (!habr2()) { + I_p1 = sbp.cursor; + if (I_p1 < 3) + I_p1 = 3; + if (!habr2()) + I_p2 = sbp.cursor; + } + } + + function habr2() { + while (!sbp.in_grouping(g_v, 97, 232)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 232)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_1, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("y"); + break; + case 2: + sbp.slice_from("i"); + break; + case 3: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_undouble() { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.find_among_b(a_2, 3)) { + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + } + + function r_e_ending() { + var v_1; + B_e_found = false; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "e")) { + sbp.bra = sbp.cursor; + if (r_R1()) { + v_1 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_del(); + B_e_found = true; + r_undouble(); + } + } + } + } + + function r_en_ending() { + var v_1; + if (r_R1()) { + v_1 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(3, "gem")) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_del(); + r_undouble(); + } + } + } + } + + function r_standard_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_3, v_4, v_5, v_6; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 5); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R1()) + sbp.slice_from("heid"); + break; + case 2: + r_en_ending(); + break; + case 3: + if (r_R1() && sbp.out_grouping_b(g_v_j, 97, 232)) + sbp.slice_del(); + break; + } + } + sbp.cursor = sbp.limit - v_1; + r_e_ending(); + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(4, "heid")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "c")) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "en")) { + sbp.bra = sbp.cursor; + r_en_ending(); + } + } + } + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 6); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) { + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ig")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + v_4 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_4; + sbp.slice_del(); + break; + } + } + } + sbp.cursor = sbp.limit - v_3; + r_undouble(); + } + break; + case 2: + if (r_R2()) { + v_5 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_5; + sbp.slice_del(); + } + } + break; + case 3: + if (r_R2()) { + sbp.slice_del(); + r_e_ending(); + } + break; + case 4: + if (r_R2()) + sbp.slice_del(); + break; + case 5: + if (r_R2() && B_e_found) + sbp.slice_del(); + break; + } + } + sbp.cursor = sbp.limit - v_1; + if (sbp.out_grouping_b(g_v_I, 73, 232)) { + v_6 = sbp.limit - sbp.cursor; + if (sbp.find_among_b(a_5, 4) && sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_6; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_standard_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.du.stemmer, 'stemmer-du'); + + lunr.du.stopWordFilter = lunr.generateStopWordFilter(' aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.du.stopWordFilter, 'stopWordFilter-du'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.es.js b/themes/LoveIt/assets/lib/lunr/lunr.es.js new file mode 100644 index 00000000..55188a48 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.es.js @@ -0,0 +1,599 @@ +/*! + * Lunr languages, `Spanish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.es = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.es.trimmer, + lunr.es.stopWordFilter, + lunr.es.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.es.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.es.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.es.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.es.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.es.trimmer, 'trimmer-es'); + + /* lunr stemmer function */ + lunr.es.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function SpanishStemmer() { + var a_0 = [new Among("", -1, 6), new Among("\u00E1", 0, 1), + new Among("\u00E9", 0, 2), new Among("\u00ED", 0, 3), + new Among("\u00F3", 0, 4), new Among("\u00FA", 0, 5) + ], + a_1 = [ + new Among("la", -1, -1), new Among("sela", 0, -1), + new Among("le", -1, -1), new Among("me", -1, -1), + new Among("se", -1, -1), new Among("lo", -1, -1), + new Among("selo", 5, -1), new Among("las", -1, -1), + new Among("selas", 7, -1), new Among("les", -1, -1), + new Among("los", -1, -1), new Among("selos", 10, -1), + new Among("nos", -1, -1) + ], + a_2 = [new Among("ando", -1, 6), + new Among("iendo", -1, 6), new Among("yendo", -1, 7), + new Among("\u00E1ndo", -1, 2), new Among("i\u00E9ndo", -1, 1), + new Among("ar", -1, 6), new Among("er", -1, 6), + new Among("ir", -1, 6), new Among("\u00E1r", -1, 3), + new Among("\u00E9r", -1, 4), new Among("\u00EDr", -1, 5) + ], + a_3 = [ + new Among("ic", -1, -1), new Among("ad", -1, -1), + new Among("os", -1, -1), new Among("iv", -1, 1) + ], + a_4 = [ + new Among("able", -1, 1), new Among("ible", -1, 1), + new Among("ante", -1, 1) + ], + a_5 = [new Among("ic", -1, 1), + new Among("abil", -1, 1), new Among("iv", -1, 1) + ], + a_6 = [ + new Among("ica", -1, 1), new Among("ancia", -1, 2), + new Among("encia", -1, 5), new Among("adora", -1, 2), + new Among("osa", -1, 1), new Among("ista", -1, 1), + new Among("iva", -1, 9), new Among("anza", -1, 1), + new Among("log\u00EDa", -1, 3), new Among("idad", -1, 8), + new Among("able", -1, 1), new Among("ible", -1, 1), + new Among("ante", -1, 2), new Among("mente", -1, 7), + new Among("amente", 13, 6), new Among("aci\u00F3n", -1, 2), + new Among("uci\u00F3n", -1, 4), new Among("ico", -1, 1), + new Among("ismo", -1, 1), new Among("oso", -1, 1), + new Among("amiento", -1, 1), new Among("imiento", -1, 1), + new Among("ivo", -1, 9), new Among("ador", -1, 2), + new Among("icas", -1, 1), new Among("ancias", -1, 2), + new Among("encias", -1, 5), new Among("adoras", -1, 2), + new Among("osas", -1, 1), new Among("istas", -1, 1), + new Among("ivas", -1, 9), new Among("anzas", -1, 1), + new Among("log\u00EDas", -1, 3), new Among("idades", -1, 8), + new Among("ables", -1, 1), new Among("ibles", -1, 1), + new Among("aciones", -1, 2), new Among("uciones", -1, 4), + new Among("adores", -1, 2), new Among("antes", -1, 2), + new Among("icos", -1, 1), new Among("ismos", -1, 1), + new Among("osos", -1, 1), new Among("amientos", -1, 1), + new Among("imientos", -1, 1), new Among("ivos", -1, 9) + ], + a_7 = [ + new Among("ya", -1, 1), new Among("ye", -1, 1), + new Among("yan", -1, 1), new Among("yen", -1, 1), + new Among("yeron", -1, 1), new Among("yendo", -1, 1), + new Among("yo", -1, 1), new Among("yas", -1, 1), + new Among("yes", -1, 1), new Among("yais", -1, 1), + new Among("yamos", -1, 1), new Among("y\u00F3", -1, 1) + ], + a_8 = [ + new Among("aba", -1, 2), new Among("ada", -1, 2), + new Among("ida", -1, 2), new Among("ara", -1, 2), + new Among("iera", -1, 2), new Among("\u00EDa", -1, 2), + new Among("ar\u00EDa", 5, 2), new Among("er\u00EDa", 5, 2), + new Among("ir\u00EDa", 5, 2), new Among("ad", -1, 2), + new Among("ed", -1, 2), new Among("id", -1, 2), + new Among("ase", -1, 2), new Among("iese", -1, 2), + new Among("aste", -1, 2), new Among("iste", -1, 2), + new Among("an", -1, 2), new Among("aban", 16, 2), + new Among("aran", 16, 2), new Among("ieran", 16, 2), + new Among("\u00EDan", 16, 2), new Among("ar\u00EDan", 20, 2), + new Among("er\u00EDan", 20, 2), new Among("ir\u00EDan", 20, 2), + new Among("en", -1, 1), new Among("asen", 24, 2), + new Among("iesen", 24, 2), new Among("aron", -1, 2), + new Among("ieron", -1, 2), new Among("ar\u00E1n", -1, 2), + new Among("er\u00E1n", -1, 2), new Among("ir\u00E1n", -1, 2), + new Among("ado", -1, 2), new Among("ido", -1, 2), + new Among("ando", -1, 2), new Among("iendo", -1, 2), + new Among("ar", -1, 2), new Among("er", -1, 2), + new Among("ir", -1, 2), new Among("as", -1, 2), + new Among("abas", 39, 2), new Among("adas", 39, 2), + new Among("idas", 39, 2), new Among("aras", 39, 2), + new Among("ieras", 39, 2), new Among("\u00EDas", 39, 2), + new Among("ar\u00EDas", 45, 2), new Among("er\u00EDas", 45, 2), + new Among("ir\u00EDas", 45, 2), new Among("es", -1, 1), + new Among("ases", 49, 2), new Among("ieses", 49, 2), + new Among("abais", -1, 2), new Among("arais", -1, 2), + new Among("ierais", -1, 2), new Among("\u00EDais", -1, 2), + new Among("ar\u00EDais", 55, 2), new Among("er\u00EDais", 55, 2), + new Among("ir\u00EDais", 55, 2), new Among("aseis", -1, 2), + new Among("ieseis", -1, 2), new Among("asteis", -1, 2), + new Among("isteis", -1, 2), new Among("\u00E1is", -1, 2), + new Among("\u00E9is", -1, 1), new Among("ar\u00E9is", 64, 2), + new Among("er\u00E9is", 64, 2), new Among("ir\u00E9is", 64, 2), + new Among("ados", -1, 2), new Among("idos", -1, 2), + new Among("amos", -1, 2), new Among("\u00E1bamos", 70, 2), + new Among("\u00E1ramos", 70, 2), new Among("i\u00E9ramos", 70, 2), + new Among("\u00EDamos", 70, 2), new Among("ar\u00EDamos", 74, 2), + new Among("er\u00EDamos", 74, 2), new Among("ir\u00EDamos", 74, 2), + new Among("emos", -1, 1), new Among("aremos", 78, 2), + new Among("eremos", 78, 2), new Among("iremos", 78, 2), + new Among("\u00E1semos", 78, 2), new Among("i\u00E9semos", 78, 2), + new Among("imos", -1, 2), new Among("ar\u00E1s", -1, 2), + new Among("er\u00E1s", -1, 2), new Among("ir\u00E1s", -1, 2), + new Among("\u00EDs", -1, 2), new Among("ar\u00E1", -1, 2), + new Among("er\u00E1", -1, 2), new Among("ir\u00E1", -1, 2), + new Among("ar\u00E9", -1, 2), new Among("er\u00E9", -1, 2), + new Among("ir\u00E9", -1, 2), new Among("i\u00F3", -1, 2) + ], + a_9 = [ + new Among("a", -1, 1), new Among("e", -1, 2), + new Among("o", -1, 1), new Among("os", -1, 1), + new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2), + new Among("\u00ED", -1, 1), new Among("\u00F3", -1, 1) + ], + g_v = [17, + 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 + ], + I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1() { + if (sbp.out_grouping(g_v, 97, 252)) { + while (!sbp.in_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + return true; + } + + function habr2() { + if (sbp.in_grouping(g_v, 97, 252)) { + var v_1 = sbp.cursor; + if (habr1()) { + sbp.cursor = v_1; + if (!sbp.in_grouping(g_v, 97, 252)) + return true; + while (!sbp.out_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + } + return false; + } + return true; + } + + function habr3() { + var v_1 = sbp.cursor, + v_2; + if (habr2()) { + sbp.cursor = v_1; + if (!sbp.out_grouping(g_v, 97, 252)) + return; + v_2 = sbp.cursor; + if (habr1()) { + sbp.cursor = v_2; + if (!sbp.in_grouping(g_v, 97, 252) || sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + } + I_pV = sbp.cursor; + } + + function habr4() { + while (!sbp.in_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + habr3(); + sbp.cursor = v_1; + if (habr4()) { + I_p1 = sbp.cursor; + if (habr4()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 6); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("a"); + continue; + case 2: + sbp.slice_from("e"); + continue; + case 3: + sbp.slice_from("i"); + continue; + case 4: + sbp.slice_from("o"); + continue; + case 5: + sbp.slice_from("u"); + continue; + case 6: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_attached_pronoun() { + var among_var; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_1, 13)) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among_b(a_2, 11); + if (among_var && r_RV()) + switch (among_var) { + case 1: + sbp.bra = sbp.cursor; + sbp.slice_from("iendo"); + break; + case 2: + sbp.bra = sbp.cursor; + sbp.slice_from("ando"); + break; + case 3: + sbp.bra = sbp.cursor; + sbp.slice_from("ar"); + break; + case 4: + sbp.bra = sbp.cursor; + sbp.slice_from("er"); + break; + case 5: + sbp.bra = sbp.cursor; + sbp.slice_from("ir"); + break; + case 6: + sbp.slice_del(); + break; + case 7: + if (sbp.eq_s_b(1, "u")) + sbp.slice_del(); + break; + } + } + } + + function habr5(a, n) { + if (!r_R2()) + return true; + sbp.slice_del(); + sbp.ket = sbp.cursor; + var among_var = sbp.find_among_b(a, n); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1 && r_R2()) + sbp.slice_del(); + } + return false; + } + + function habr6(c1) { + if (!r_R2()) + return true; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, c1)) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + return false; + } + + function r_standard_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 46); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + return false; + sbp.slice_del(); + break; + case 2: + if (habr6("ic")) + return false; + break; + case 3: + if (!r_R2()) + return false; + sbp.slice_from("log"); + break; + case 4: + if (!r_R2()) + return false; + sbp.slice_from("u"); + break; + case 5: + if (!r_R2()) + return false; + sbp.slice_from("ente"); + break; + case 6: + if (!r_R1()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 4); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + if (among_var == 1) { + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + } + } + break; + case 7: + if (habr5(a_4, 3)) + return false; + break; + case 8: + if (habr5(a_5, 3)) + return false; + break; + case 9: + if (habr6("at")) + return false; + break; + } + return true; + } + return false; + } + + function r_y_verb_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 12); + sbp.limit_backward = v_1; + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) { + if (!sbp.eq_s_b(1, "u")) + return false; + sbp.slice_del(); + } + return true; + } + } + return false; + } + + function r_verb_suffix() { + var among_var, v_1, v_2, v_3; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_8, 96); + sbp.limit_backward = v_1; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + v_2 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(1, "u")) { + v_3 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(1, "g")) + sbp.cursor = sbp.limit - v_3; + else + sbp.cursor = sbp.limit - v_2; + } else + sbp.cursor = sbp.limit - v_2; + sbp.bra = sbp.cursor; + case 2: + sbp.slice_del(); + break; + } + } + } + } + + function r_residual_suffix() { + var among_var, v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_9, 8); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_RV()) + sbp.slice_del(); + break; + case 2: + if (r_RV()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "u")) { + sbp.bra = sbp.cursor; + v_1 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(1, "g")) { + sbp.cursor = sbp.limit - v_1; + if (r_RV()) + sbp.slice_del(); + } + } + } + break; + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_attached_pronoun(); + sbp.cursor = sbp.limit; + if (!r_standard_suffix()) { + sbp.cursor = sbp.limit; + if (!r_y_verb_suffix()) { + sbp.cursor = sbp.limit; + r_verb_suffix(); + } + } + sbp.cursor = sbp.limit; + r_residual_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.es.stemmer, 'stemmer-es'); + + lunr.es.stopWordFilter = lunr.generateStopWordFilter('a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.es.stopWordFilter, 'stopWordFilter-es'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.fi.js b/themes/LoveIt/assets/lib/lunr/lunr.fi.js new file mode 100644 index 00000000..7ce95154 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.fi.js @@ -0,0 +1,541 @@ +/*! + * Lunr languages, `Finnish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.fi = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.fi.trimmer, + lunr.fi.stopWordFilter, + lunr.fi.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.fi.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.fi.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.fi.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.fi.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.fi.trimmer, 'trimmer-fi'); + + /* lunr stemmer function */ + lunr.fi.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function FinnishStemmer() { + var a_0 = [new Among("pa", -1, 1), new Among("sti", -1, 2), + new Among("kaan", -1, 1), new Among("han", -1, 1), + new Among("kin", -1, 1), new Among("h\u00E4n", -1, 1), + new Among("k\u00E4\u00E4n", -1, 1), new Among("ko", -1, 1), + new Among("p\u00E4", -1, 1), new Among("k\u00F6", -1, 1) + ], + a_1 = [ + new Among("lla", -1, -1), new Among("na", -1, -1), + new Among("ssa", -1, -1), new Among("ta", -1, -1), + new Among("lta", 3, -1), new Among("sta", 3, -1) + ], + a_2 = [ + new Among("ll\u00E4", -1, -1), new Among("n\u00E4", -1, -1), + new Among("ss\u00E4", -1, -1), new Among("t\u00E4", -1, -1), + new Among("lt\u00E4", 3, -1), new Among("st\u00E4", 3, -1) + ], + a_3 = [ + new Among("lle", -1, -1), new Among("ine", -1, -1) + ], + a_4 = [ + new Among("nsa", -1, 3), new Among("mme", -1, 3), + new Among("nne", -1, 3), new Among("ni", -1, 2), + new Among("si", -1, 1), new Among("an", -1, 4), + new Among("en", -1, 6), new Among("\u00E4n", -1, 5), + new Among("ns\u00E4", -1, 3) + ], + a_5 = [new Among("aa", -1, -1), + new Among("ee", -1, -1), new Among("ii", -1, -1), + new Among("oo", -1, -1), new Among("uu", -1, -1), + new Among("\u00E4\u00E4", -1, -1), + new Among("\u00F6\u00F6", -1, -1) + ], + a_6 = [new Among("a", -1, 8), + new Among("lla", 0, -1), new Among("na", 0, -1), + new Among("ssa", 0, -1), new Among("ta", 0, -1), + new Among("lta", 4, -1), new Among("sta", 4, -1), + new Among("tta", 4, 9), new Among("lle", -1, -1), + new Among("ine", -1, -1), new Among("ksi", -1, -1), + new Among("n", -1, 7), new Among("han", 11, 1), + new Among("den", 11, -1, r_VI), new Among("seen", 11, -1, r_LONG), + new Among("hen", 11, 2), new Among("tten", 11, -1, r_VI), + new Among("hin", 11, 3), new Among("siin", 11, -1, r_VI), + new Among("hon", 11, 4), new Among("h\u00E4n", 11, 5), + new Among("h\u00F6n", 11, 6), new Among("\u00E4", -1, 8), + new Among("ll\u00E4", 22, -1), new Among("n\u00E4", 22, -1), + new Among("ss\u00E4", 22, -1), new Among("t\u00E4", 22, -1), + new Among("lt\u00E4", 26, -1), new Among("st\u00E4", 26, -1), + new Among("tt\u00E4", 26, 9) + ], + a_7 = [new Among("eja", -1, -1), + new Among("mma", -1, 1), new Among("imma", 1, -1), + new Among("mpa", -1, 1), new Among("impa", 3, -1), + new Among("mmi", -1, 1), new Among("immi", 5, -1), + new Among("mpi", -1, 1), new Among("impi", 7, -1), + new Among("ej\u00E4", -1, -1), new Among("mm\u00E4", -1, 1), + new Among("imm\u00E4", 10, -1), new Among("mp\u00E4", -1, 1), + new Among("imp\u00E4", 12, -1) + ], + a_8 = [new Among("i", -1, -1), + new Among("j", -1, -1) + ], + a_9 = [new Among("mma", -1, 1), + new Among("imma", 0, -1) + ], + g_AEI = [17, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8 + ], + g_V1 = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 32 + ], + g_V2 = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8, 0, 32 + ], + g_particle_end = [17, 97, 24, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 + ], + B_ending_removed, S_x, I_p2, I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + I_p1 = sbp.limit; + I_p2 = I_p1; + if (!habr1()) { + I_p1 = sbp.cursor; + if (!habr1()) + I_p2 = sbp.cursor; + } + } + + function habr1() { + var v_1; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_V1, 97, 246)) + break; + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return true; + sbp.cursor++; + } + sbp.cursor = v_1; + while (!sbp.out_grouping(g_V1, 97, 246)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_particle_etc() { + var among_var, v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_0, 10); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + switch (among_var) { + case 1: + if (!sbp.in_grouping_b(g_particle_end, 97, 246)) + return; + break; + case 2: + if (!r_R2()) + return; + break; + } + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + + function r_possessive() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 9); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + switch (among_var) { + case 1: + v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "k")) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + } + break; + case 2: + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(3, "kse")) { + sbp.bra = sbp.cursor; + sbp.slice_from("ksi"); + } + break; + case 3: + sbp.slice_del(); + break; + case 4: + if (sbp.find_among_b(a_1, 6)) + sbp.slice_del(); + break; + case 5: + if (sbp.find_among_b(a_2, 6)) + sbp.slice_del(); + break; + case 6: + if (sbp.find_among_b(a_3, 2)) + sbp.slice_del(); + break; + } + } else + sbp.limit_backward = v_1; + } + } + + function r_LONG() { + return sbp.find_among_b(a_5, 7); + } + + function r_VI() { + return sbp.eq_s_b(1, "i") && sbp.in_grouping_b(g_V2, 97, 246); + } + + function r_case_ending() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 30); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + switch (among_var) { + case 1: + if (!sbp.eq_s_b(1, "a")) + return; + break; + case 2: + case 9: + if (!sbp.eq_s_b(1, "e")) + return; + break; + case 3: + if (!sbp.eq_s_b(1, "i")) + return; + break; + case 4: + if (!sbp.eq_s_b(1, "o")) + return; + break; + case 5: + if (!sbp.eq_s_b(1, "\u00E4")) + return; + break; + case 6: + if (!sbp.eq_s_b(1, "\u00F6")) + return; + break; + case 7: + v_2 = sbp.limit - sbp.cursor; + if (!r_LONG()) { + sbp.cursor = sbp.limit - v_2; + if (!sbp.eq_s_b(2, "ie")) { + sbp.cursor = sbp.limit - v_2; + break; + } + } + sbp.cursor = sbp.limit - v_2; + if (sbp.cursor <= sbp.limit_backward) { + sbp.cursor = sbp.limit - v_2; + break; + } + sbp.cursor--; + sbp.bra = sbp.cursor; + break; + case 8: + if (!sbp.in_grouping_b(g_V1, 97, 246) || + !sbp.out_grouping_b(g_V1, 97, 246)) + return; + break; + } + sbp.slice_del(); + B_ending_removed = true; + } else + sbp.limit_backward = v_1; + } + } + + function r_other_endings() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_p2) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p2; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 14); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + if (among_var == 1) { + v_2 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(2, "po")) + return; + sbp.cursor = sbp.limit - v_2; + } + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + + function r_i_plural() { + var v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_8, 2)) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + + function r_t_plural() { + var among_var, v_1, v_2, v_3, v_4, v_5; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "t")) { + sbp.bra = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_V1, 97, 246)) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + sbp.limit_backward = v_1; + v_3 = sbp.limit - sbp.cursor; + if (sbp.cursor >= I_p2) { + sbp.cursor = I_p2; + v_4 = sbp.limit_backward; + sbp.limit_backward = sbp.cursor; + sbp.cursor = sbp.limit - v_3; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_9, 2); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_4; + if (among_var == 1) { + v_5 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(2, "po")) + return; + sbp.cursor = sbp.limit - v_5; + } + sbp.slice_del(); + return; + } + } + } + } + sbp.limit_backward = v_1; + } + } + + function r_tidy() { + var v_1, v_2, v_3, v_4; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + v_2 = sbp.limit - sbp.cursor; + if (r_LONG()) { + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (sbp.in_grouping_b(g_AEI, 97, 228)) { + sbp.bra = sbp.cursor; + if (sbp.out_grouping_b(g_V1, 97, 246)) + sbp.slice_del(); + } + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "j")) { + sbp.bra = sbp.cursor; + v_3 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "o")) { + sbp.cursor = sbp.limit - v_3; + if (sbp.eq_s_b(1, "u")) + sbp.slice_del(); + } else + sbp.slice_del(); + } + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "o")) { + sbp.bra = sbp.cursor; + if (sbp.eq_s_b(1, "j")) + sbp.slice_del(); + } + sbp.cursor = sbp.limit - v_2; + sbp.limit_backward = v_1; + while (true) { + v_4 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_V1, 97, 246)) { + sbp.cursor = sbp.limit - v_4; + break; + } + sbp.cursor = sbp.limit - v_4; + if (sbp.cursor <= sbp.limit_backward) + return; + sbp.cursor--; + } + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + S_x = sbp.slice_to(); + if (sbp.eq_v_b(S_x)) + sbp.slice_del(); + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + B_ending_removed = false; + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_particle_etc(); + sbp.cursor = sbp.limit; + r_possessive(); + sbp.cursor = sbp.limit; + r_case_ending(); + sbp.cursor = sbp.limit; + r_other_endings(); + sbp.cursor = sbp.limit; + if (B_ending_removed) { + r_i_plural(); + sbp.cursor = sbp.limit; + } else { + sbp.cursor = sbp.limit; + r_t_plural(); + sbp.cursor = sbp.limit; + } + r_tidy(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.fi.stemmer, 'stemmer-fi'); + + lunr.fi.stopWordFilter = lunr.generateStopWordFilter('ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.fi.stopWordFilter, 'stopWordFilter-fi'); + }; +})) \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/lunr/lunr.fr.js b/themes/LoveIt/assets/lib/lunr/lunr.fr.js new file mode 100644 index 00000000..9706ce7e --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.fr.js @@ -0,0 +1,703 @@ +/*! + * Lunr languages, `French` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.fr = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.fr.trimmer, + lunr.fr.stopWordFilter, + lunr.fr.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.fr.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.fr.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.fr.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.fr.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.fr.trimmer, 'trimmer-fr'); + + /* lunr stemmer function */ + lunr.fr.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function FrenchStemmer() { + var a_0 = [new Among("col", -1, -1), new Among("par", -1, -1), + new Among("tap", -1, -1) + ], + a_1 = [new Among("", -1, 4), + new Among("I", 0, 1), new Among("U", 0, 2), new Among("Y", 0, 3) + ], + a_2 = [ + new Among("iqU", -1, 3), new Among("abl", -1, 3), + new Among("I\u00E8r", -1, 4), new Among("i\u00E8r", -1, 4), + new Among("eus", -1, 2), new Among("iv", -1, 1) + ], + a_3 = [ + new Among("ic", -1, 2), new Among("abil", -1, 1), + new Among("iv", -1, 3) + ], + a_4 = [new Among("iqUe", -1, 1), + new Among("atrice", -1, 2), new Among("ance", -1, 1), + new Among("ence", -1, 5), new Among("logie", -1, 3), + new Among("able", -1, 1), new Among("isme", -1, 1), + new Among("euse", -1, 11), new Among("iste", -1, 1), + new Among("ive", -1, 8), new Among("if", -1, 8), + new Among("usion", -1, 4), new Among("ation", -1, 2), + new Among("ution", -1, 4), new Among("ateur", -1, 2), + new Among("iqUes", -1, 1), new Among("atrices", -1, 2), + new Among("ances", -1, 1), new Among("ences", -1, 5), + new Among("logies", -1, 3), new Among("ables", -1, 1), + new Among("ismes", -1, 1), new Among("euses", -1, 11), + new Among("istes", -1, 1), new Among("ives", -1, 8), + new Among("ifs", -1, 8), new Among("usions", -1, 4), + new Among("ations", -1, 2), new Among("utions", -1, 4), + new Among("ateurs", -1, 2), new Among("ments", -1, 15), + new Among("ements", 30, 6), new Among("issements", 31, 12), + new Among("it\u00E9s", -1, 7), new Among("ment", -1, 15), + new Among("ement", 34, 6), new Among("issement", 35, 12), + new Among("amment", 34, 13), new Among("emment", 34, 14), + new Among("aux", -1, 10), new Among("eaux", 39, 9), + new Among("eux", -1, 1), new Among("it\u00E9", -1, 7) + ], + a_5 = [ + new Among("ira", -1, 1), new Among("ie", -1, 1), + new Among("isse", -1, 1), new Among("issante", -1, 1), + new Among("i", -1, 1), new Among("irai", 4, 1), + new Among("ir", -1, 1), new Among("iras", -1, 1), + new Among("ies", -1, 1), new Among("\u00EEmes", -1, 1), + new Among("isses", -1, 1), new Among("issantes", -1, 1), + new Among("\u00EEtes", -1, 1), new Among("is", -1, 1), + new Among("irais", 13, 1), new Among("issais", 13, 1), + new Among("irions", -1, 1), new Among("issions", -1, 1), + new Among("irons", -1, 1), new Among("issons", -1, 1), + new Among("issants", -1, 1), new Among("it", -1, 1), + new Among("irait", 21, 1), new Among("issait", 21, 1), + new Among("issant", -1, 1), new Among("iraIent", -1, 1), + new Among("issaIent", -1, 1), new Among("irent", -1, 1), + new Among("issent", -1, 1), new Among("iront", -1, 1), + new Among("\u00EEt", -1, 1), new Among("iriez", -1, 1), + new Among("issiez", -1, 1), new Among("irez", -1, 1), + new Among("issez", -1, 1) + ], + a_6 = [new Among("a", -1, 3), + new Among("era", 0, 2), new Among("asse", -1, 3), + new Among("ante", -1, 3), new Among("\u00E9e", -1, 2), + new Among("ai", -1, 3), new Among("erai", 5, 2), + new Among("er", -1, 2), new Among("as", -1, 3), + new Among("eras", 8, 2), new Among("\u00E2mes", -1, 3), + new Among("asses", -1, 3), new Among("antes", -1, 3), + new Among("\u00E2tes", -1, 3), new Among("\u00E9es", -1, 2), + new Among("ais", -1, 3), new Among("erais", 15, 2), + new Among("ions", -1, 1), new Among("erions", 17, 2), + new Among("assions", 17, 3), new Among("erons", -1, 2), + new Among("ants", -1, 3), new Among("\u00E9s", -1, 2), + new Among("ait", -1, 3), new Among("erait", 23, 2), + new Among("ant", -1, 3), new Among("aIent", -1, 3), + new Among("eraIent", 26, 2), new Among("\u00E8rent", -1, 2), + new Among("assent", -1, 3), new Among("eront", -1, 2), + new Among("\u00E2t", -1, 3), new Among("ez", -1, 2), + new Among("iez", 32, 2), new Among("eriez", 33, 2), + new Among("assiez", 33, 3), new Among("erez", 32, 2), + new Among("\u00E9", -1, 2) + ], + a_7 = [new Among("e", -1, 3), + new Among("I\u00E8re", 0, 2), new Among("i\u00E8re", 0, 2), + new Among("ion", -1, 1), new Among("Ier", -1, 2), + new Among("ier", -1, 2), new Among("\u00EB", -1, 4) + ], + a_8 = [ + new Among("ell", -1, -1), new Among("eill", -1, -1), + new Among("enn", -1, -1), new Among("onn", -1, -1), + new Among("ett", -1, -1) + ], + g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 + ], + g_keep_with_s = [1, 65, 20, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(c1, c2, v_1) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 251)) { + sbp.slice_from(c2); + sbp.cursor = v_1; + return true; + } + } + return false; + } + + function habr2(c1, c2, v_1) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + sbp.slice_from(c2); + sbp.cursor = v_1; + return true; + } + return false; + } + + function r_prelude() { + var v_1, v_2; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 251)) { + sbp.bra = sbp.cursor; + v_2 = sbp.cursor; + if (habr1("u", "U", v_1)) + continue; + sbp.cursor = v_2; + if (habr1("i", "I", v_1)) + continue; + sbp.cursor = v_2; + if (habr2("y", "Y", v_1)) + continue; + } + sbp.cursor = v_1; + sbp.bra = v_1; + if (!habr1("y", "Y", v_1)) { + sbp.cursor = v_1; + if (sbp.eq_s(1, "q")) { + sbp.bra = sbp.cursor; + if (habr2("u", "U", v_1)) + continue; + } + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return; + sbp.cursor++; + } + } + } + + function habr3() { + while (!sbp.in_grouping(g_v, 97, 251)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 251)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + if (sbp.in_grouping(g_v, 97, 251) && sbp.in_grouping(g_v, 97, 251) && + sbp.cursor < sbp.limit) + sbp.cursor++; + else { + sbp.cursor = v_1; + if (!sbp.find_among(a_0, 3)) { + sbp.cursor = v_1; + do { + if (sbp.cursor >= sbp.limit) { + sbp.cursor = I_pV; + break; + } + sbp.cursor++; + } while (!sbp.in_grouping(g_v, 97, 251)); + } + } + I_pV = sbp.cursor; + sbp.cursor = v_1; + if (!habr3()) { + I_p1 = sbp.cursor; + if (!habr3()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var, v_1; + while (true) { + v_1 = sbp.cursor; + sbp.bra = v_1; + among_var = sbp.find_among(a_1, 4); + if (!among_var) + break; + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("i"); + break; + case 2: + sbp.slice_from("u"); + break; + case 3: + sbp.slice_from("y"); + break; + case 4: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_standard_suffix() { + var among_var, v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 43); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + return false; + sbp.slice_del(); + break; + case 2: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ic")) { + sbp.bra = sbp.cursor; + if (!r_R2()) + sbp.slice_from("iqU"); + else + sbp.slice_del(); + } + break; + case 3: + if (!r_R2()) + return false; + sbp.slice_from("log"); + break; + case 4: + if (!r_R2()) + return false; + sbp.slice_from("u"); + break; + case 5: + if (!r_R2()) + return false; + sbp.slice_from("ent"); + break; + case 6: + if (!r_RV()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 6); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + break; + case 2: + if (r_R2()) + sbp.slice_del(); + else if (r_R1()) + sbp.slice_from("eux"); + break; + case 3: + if (r_R2()) + sbp.slice_del(); + break; + case 4: + if (r_RV()) + sbp.slice_from("i"); + break; + } + } + break; + case 7: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 3); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) + sbp.slice_del(); + else + sbp.slice_from("abl"); + break; + case 2: + if (r_R2()) + sbp.slice_del(); + else + sbp.slice_from("iqU"); + break; + case 3: + if (r_R2()) + sbp.slice_del(); + break; + } + } + break; + case 8: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ic")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + else + sbp.slice_from("iqU"); + break; + } + } + } + break; + case 9: + sbp.slice_from("eau"); + break; + case 10: + if (!r_R1()) + return false; + sbp.slice_from("al"); + break; + case 11: + if (r_R2()) + sbp.slice_del(); + else if (!r_R1()) + return false; + else + sbp.slice_from("eux"); + break; + case 12: + if (!r_R1() || !sbp.out_grouping_b(g_v, 97, 251)) + return false; + sbp.slice_del(); + break; + case 13: + if (r_RV()) + sbp.slice_from("ant"); + return false; + case 14: + if (r_RV()) + sbp.slice_from("ent"); + return false; + case 15: + v_1 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_v, 97, 251) && r_RV()) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_del(); + } + return false; + } + return true; + } + return false; + } + + function r_i_verb_suffix() { + var among_var, v_1; + if (sbp.cursor < I_pV) + return false; + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 35); + if (!among_var) { + sbp.limit_backward = v_1; + return false; + } + sbp.bra = sbp.cursor; + if (among_var == 1) { + if (!sbp.out_grouping_b(g_v, 97, 251)) { + sbp.limit_backward = v_1; + return false; + } + sbp.slice_del(); + } + sbp.limit_backward = v_1; + return true; + } + + function r_verb_suffix() { + var among_var, v_2, v_3; + if (sbp.cursor < I_pV) + return false; + v_2 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 38); + if (!among_var) { + sbp.limit_backward = v_2; + return false; + } + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) { + sbp.limit_backward = v_2; + return false; + } + sbp.slice_del(); + break; + case 2: + sbp.slice_del(); + break; + case 3: + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "e")) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else + sbp.cursor = sbp.limit - v_3; + break; + } + sbp.limit_backward = v_2; + return true; + } + + function r_residual_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_4, v_5; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "s")) { + sbp.bra = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_keep_with_s, 97, 232)) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + } else + sbp.cursor = sbp.limit - v_1; + } else + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor >= I_pV) { + v_4 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 7); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) { + v_5 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "s")) { + sbp.cursor = sbp.limit - v_5; + if (!sbp.eq_s_b(1, "t")) + break; + } + sbp.slice_del(); + } + break; + case 2: + sbp.slice_from("i"); + break; + case 3: + sbp.slice_del(); + break; + case 4: + if (sbp.eq_s_b(2, "gu")) + sbp.slice_del(); + break; + } + } + sbp.limit_backward = v_4; + } + } + + function r_un_double() { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.find_among_b(a_8, 5)) { + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + } + + function r_un_accent() { + var v_1, v_2 = 1; + while (sbp.out_grouping_b(g_v, 97, 251)) + v_2--; + if (v_2 <= 0) { + sbp.ket = sbp.cursor; + v_1 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "\u00E9")) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(1, "\u00E8")) + return; + } + sbp.bra = sbp.cursor; + sbp.slice_from("e"); + } + } + + function habr5() { + if (!r_standard_suffix()) { + sbp.cursor = sbp.limit; + if (!r_i_verb_suffix()) { + sbp.cursor = sbp.limit; + if (!r_verb_suffix()) { + sbp.cursor = sbp.limit; + r_residual_suffix(); + return; + } + } + } + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "Y")) { + sbp.bra = sbp.cursor; + sbp.slice_from("i"); + } else { + sbp.cursor = sbp.limit; + if (sbp.eq_s_b(1, "\u00E7")) { + sbp.bra = sbp.cursor; + sbp.slice_from("c"); + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + habr5(); + sbp.cursor = sbp.limit; + r_un_double(); + sbp.cursor = sbp.limit; + r_un_accent(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.fr.stemmer, 'stemmer-fr'); + + lunr.fr.stopWordFilter = lunr.generateStopWordFilter('ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.fr.stopWordFilter, 'stopWordFilter-fr'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.hu.js b/themes/LoveIt/assets/lib/lunr/lunr.hu.js new file mode 100644 index 00000000..af70a1a3 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.hu.js @@ -0,0 +1,565 @@ +/*! + * Lunr languages, `Hungarian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.hu = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.hu.trimmer, + lunr.hu.stopWordFilter, + lunr.hu.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.hu.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.hu.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.hu.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.hu.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.hu.trimmer, 'trimmer-hu'); + + /* lunr stemmer function */ + lunr.hu.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function HungarianStemmer() { + var a_0 = [new Among("cs", -1, -1), new Among("dzs", -1, -1), + new Among("gy", -1, -1), new Among("ly", -1, -1), + new Among("ny", -1, -1), new Among("sz", -1, -1), + new Among("ty", -1, -1), new Among("zs", -1, -1) + ], + a_1 = [ + new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2) + ], + a_2 = [ + new Among("bb", -1, -1), new Among("cc", -1, -1), + new Among("dd", -1, -1), new Among("ff", -1, -1), + new Among("gg", -1, -1), new Among("jj", -1, -1), + new Among("kk", -1, -1), new Among("ll", -1, -1), + new Among("mm", -1, -1), new Among("nn", -1, -1), + new Among("pp", -1, -1), new Among("rr", -1, -1), + new Among("ccs", -1, -1), new Among("ss", -1, -1), + new Among("zzs", -1, -1), new Among("tt", -1, -1), + new Among("vv", -1, -1), new Among("ggy", -1, -1), + new Among("lly", -1, -1), new Among("nny", -1, -1), + new Among("tty", -1, -1), new Among("ssz", -1, -1), + new Among("zz", -1, -1) + ], + a_3 = [new Among("al", -1, 1), + new Among("el", -1, 2) + ], + a_4 = [new Among("ba", -1, -1), + new Among("ra", -1, -1), new Among("be", -1, -1), + new Among("re", -1, -1), new Among("ig", -1, -1), + new Among("nak", -1, -1), new Among("nek", -1, -1), + new Among("val", -1, -1), new Among("vel", -1, -1), + new Among("ul", -1, -1), new Among("n\u00E1l", -1, -1), + new Among("n\u00E9l", -1, -1), new Among("b\u00F3l", -1, -1), + new Among("r\u00F3l", -1, -1), new Among("t\u00F3l", -1, -1), + new Among("b\u00F5l", -1, -1), new Among("r\u00F5l", -1, -1), + new Among("t\u00F5l", -1, -1), new Among("\u00FCl", -1, -1), + new Among("n", -1, -1), new Among("an", 19, -1), + new Among("ban", 20, -1), new Among("en", 19, -1), + new Among("ben", 22, -1), new Among("k\u00E9ppen", 22, -1), + new Among("on", 19, -1), new Among("\u00F6n", 19, -1), + new Among("k\u00E9pp", -1, -1), new Among("kor", -1, -1), + new Among("t", -1, -1), new Among("at", 29, -1), + new Among("et", 29, -1), new Among("k\u00E9nt", 29, -1), + new Among("ank\u00E9nt", 32, -1), new Among("enk\u00E9nt", 32, -1), + new Among("onk\u00E9nt", 32, -1), new Among("ot", 29, -1), + new Among("\u00E9rt", 29, -1), new Among("\u00F6t", 29, -1), + new Among("hez", -1, -1), new Among("hoz", -1, -1), + new Among("h\u00F6z", -1, -1), new Among("v\u00E1", -1, -1), + new Among("v\u00E9", -1, -1) + ], + a_5 = [new Among("\u00E1n", -1, 2), + new Among("\u00E9n", -1, 1), new Among("\u00E1nk\u00E9nt", -1, 3) + ], + a_6 = [ + new Among("stul", -1, 2), new Among("astul", 0, 1), + new Among("\u00E1stul", 0, 3), new Among("st\u00FCl", -1, 2), + new Among("est\u00FCl", 3, 1), new Among("\u00E9st\u00FCl", 3, 4) + ], + a_7 = [ + new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2) + ], + a_8 = [ + new Among("k", -1, 7), new Among("ak", 0, 4), + new Among("ek", 0, 6), new Among("ok", 0, 5), + new Among("\u00E1k", 0, 1), new Among("\u00E9k", 0, 2), + new Among("\u00F6k", 0, 3) + ], + a_9 = [new Among("\u00E9i", -1, 7), + new Among("\u00E1\u00E9i", 0, 6), new Among("\u00E9\u00E9i", 0, 5), + new Among("\u00E9", -1, 9), new Among("k\u00E9", 3, 4), + new Among("ak\u00E9", 4, 1), new Among("ek\u00E9", 4, 1), + new Among("ok\u00E9", 4, 1), new Among("\u00E1k\u00E9", 4, 3), + new Among("\u00E9k\u00E9", 4, 2), new Among("\u00F6k\u00E9", 4, 1), + new Among("\u00E9\u00E9", 3, 8) + ], + a_10 = [new Among("a", -1, 18), + new Among("ja", 0, 17), new Among("d", -1, 16), + new Among("ad", 2, 13), new Among("ed", 2, 13), + new Among("od", 2, 13), new Among("\u00E1d", 2, 14), + new Among("\u00E9d", 2, 15), new Among("\u00F6d", 2, 13), + new Among("e", -1, 18), new Among("je", 9, 17), + new Among("nk", -1, 4), new Among("unk", 11, 1), + new Among("\u00E1nk", 11, 2), new Among("\u00E9nk", 11, 3), + new Among("\u00FCnk", 11, 1), new Among("uk", -1, 8), + new Among("juk", 16, 7), new Among("\u00E1juk", 17, 5), + new Among("\u00FCk", -1, 8), new Among("j\u00FCk", 19, 7), + new Among("\u00E9j\u00FCk", 20, 6), new Among("m", -1, 12), + new Among("am", 22, 9), new Among("em", 22, 9), + new Among("om", 22, 9), new Among("\u00E1m", 22, 10), + new Among("\u00E9m", 22, 11), new Among("o", -1, 18), + new Among("\u00E1", -1, 19), new Among("\u00E9", -1, 20) + ], + a_11 = [ + new Among("id", -1, 10), new Among("aid", 0, 9), + new Among("jaid", 1, 6), new Among("eid", 0, 9), + new Among("jeid", 3, 6), new Among("\u00E1id", 0, 7), + new Among("\u00E9id", 0, 8), new Among("i", -1, 15), + new Among("ai", 7, 14), new Among("jai", 8, 11), + new Among("ei", 7, 14), new Among("jei", 10, 11), + new Among("\u00E1i", 7, 12), new Among("\u00E9i", 7, 13), + new Among("itek", -1, 24), new Among("eitek", 14, 21), + new Among("jeitek", 15, 20), new Among("\u00E9itek", 14, 23), + new Among("ik", -1, 29), new Among("aik", 18, 26), + new Among("jaik", 19, 25), new Among("eik", 18, 26), + new Among("jeik", 21, 25), new Among("\u00E1ik", 18, 27), + new Among("\u00E9ik", 18, 28), new Among("ink", -1, 20), + new Among("aink", 25, 17), new Among("jaink", 26, 16), + new Among("eink", 25, 17), new Among("jeink", 28, 16), + new Among("\u00E1ink", 25, 18), new Among("\u00E9ink", 25, 19), + new Among("aitok", -1, 21), new Among("jaitok", 32, 20), + new Among("\u00E1itok", -1, 22), new Among("im", -1, 5), + new Among("aim", 35, 4), new Among("jaim", 36, 1), + new Among("eim", 35, 4), new Among("jeim", 38, 1), + new Among("\u00E1im", 35, 2), new Among("\u00E9im", 35, 3) + ], + g_v = [ + 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 + ], + I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + var v_1 = sbp.cursor, + v_2; + I_p1 = sbp.limit; + if (sbp.in_grouping(g_v, 97, 252)) { + while (true) { + v_2 = sbp.cursor; + if (sbp.out_grouping(g_v, 97, 252)) { + sbp.cursor = v_2; + if (!sbp.find_among(a_0, 8)) { + sbp.cursor = v_2; + if (v_2 < sbp.limit) + sbp.cursor++; + } + I_p1 = sbp.cursor; + return; + } + sbp.cursor = v_2; + if (v_2 >= sbp.limit) { + I_p1 = v_2; + return; + } + sbp.cursor++; + } + } + sbp.cursor = v_1; + if (sbp.out_grouping(g_v, 97, 252)) { + while (!sbp.in_grouping(g_v, 97, 252)) { + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_p1 = sbp.cursor; + } + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_v_ending() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_1, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_from("a"); + break; + case 2: + sbp.slice_from("e"); + break; + } + } + } + } + + function r_double() { + var v_1 = sbp.limit - sbp.cursor; + if (!sbp.find_among_b(a_2, 23)) + return false; + sbp.cursor = sbp.limit - v_1; + return true; + } + + function r_undouble() { + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.ket = sbp.cursor; + var c = sbp.cursor - 1; + if (sbp.limit_backward <= c && c <= sbp.limit) { + sbp.cursor = c; + sbp.bra = c; + sbp.slice_del(); + } + } + } + + function r_instrum() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + if (among_var == 1 || among_var == 2) + if (!r_double()) + return; + sbp.slice_del(); + r_undouble(); + } + } + } + + function r_case() { + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_4, 44)) { + sbp.bra = sbp.cursor; + if (r_R1()) { + sbp.slice_del(); + r_v_ending(); + } + } + } + + function r_case_special() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 3); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_from("e"); + break; + case 2: + case 3: + sbp.slice_from("a"); + break; + } + } + } + } + + function r_case_other() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 6); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + case 2: + sbp.slice_del(); + break; + case 3: + sbp.slice_from("a"); + break; + case 4: + sbp.slice_from("e"); + break; + } + } + } + } + + function r_factive() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + if (among_var == 1 || among_var == 2) + if (!r_double()) + return; + sbp.slice_del(); + r_undouble() + } + } + } + + function r_plural() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_8, 7); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_from("a"); + break; + case 2: + sbp.slice_from("e"); + break; + case 3: + case 4: + case 5: + case 6: + case 7: + sbp.slice_del(); + break; + } + } + } + } + + function r_owned() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_9, 12); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + case 4: + case 7: + case 9: + sbp.slice_del(); + break; + case 2: + case 5: + case 8: + sbp.slice_from("e"); + break; + case 3: + case 6: + sbp.slice_from("a"); + break; + } + } + } + } + + function r_sing_owner() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_10, 31); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + case 4: + case 7: + case 8: + case 9: + case 12: + case 13: + case 16: + case 17: + case 18: + sbp.slice_del(); + break; + case 2: + case 5: + case 10: + case 14: + case 19: + sbp.slice_from("a"); + break; + case 3: + case 6: + case 11: + case 15: + case 20: + sbp.slice_from("e"); + break; + } + } + } + } + + function r_plur_owner() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_11, 42); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + case 4: + case 5: + case 6: + case 9: + case 10: + case 11: + case 14: + case 15: + case 16: + case 17: + case 20: + case 21: + case 24: + case 25: + case 26: + case 29: + sbp.slice_del(); + break; + case 2: + case 7: + case 12: + case 18: + case 22: + case 27: + sbp.slice_from("a"); + break; + case 3: + case 8: + case 13: + case 19: + case 23: + case 28: + sbp.slice_from("e"); + break; + } + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_instrum(); + sbp.cursor = sbp.limit; + r_case(); + sbp.cursor = sbp.limit; + r_case_special(); + sbp.cursor = sbp.limit; + r_case_other(); + sbp.cursor = sbp.limit; + r_factive(); + sbp.cursor = sbp.limit; + r_owned(); + sbp.cursor = sbp.limit; + r_sing_owner(); + sbp.cursor = sbp.limit; + r_plur_owner(); + sbp.cursor = sbp.limit; + r_plural(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.hu.stemmer, 'stemmer-hu'); + + lunr.hu.stopWordFilter = lunr.generateStopWordFilter('a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.hu.stopWordFilter, 'stopWordFilter-hu'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.it.js b/themes/LoveIt/assets/lib/lunr/lunr.it.js new file mode 100644 index 00000000..efffda94 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.it.js @@ -0,0 +1,617 @@ +/*! + * Lunr languages, `Italian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.it = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.it.trimmer, + lunr.it.stopWordFilter, + lunr.it.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.it.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.it.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.it.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.it.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.it.trimmer, 'trimmer-it'); + + /* lunr stemmer function */ + lunr.it.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function ItalianStemmer() { + var a_0 = [new Among("", -1, 7), new Among("qu", 0, 6), + new Among("\u00E1", 0, 1), new Among("\u00E9", 0, 2), + new Among("\u00ED", 0, 3), new Among("\u00F3", 0, 4), + new Among("\u00FA", 0, 5) + ], + a_1 = [new Among("", -1, 3), + new Among("I", 0, 1), new Among("U", 0, 2) + ], + a_2 = [ + new Among("la", -1, -1), new Among("cela", 0, -1), + new Among("gliela", 0, -1), new Among("mela", 0, -1), + new Among("tela", 0, -1), new Among("vela", 0, -1), + new Among("le", -1, -1), new Among("cele", 6, -1), + new Among("gliele", 6, -1), new Among("mele", 6, -1), + new Among("tele", 6, -1), new Among("vele", 6, -1), + new Among("ne", -1, -1), new Among("cene", 12, -1), + new Among("gliene", 12, -1), new Among("mene", 12, -1), + new Among("sene", 12, -1), new Among("tene", 12, -1), + new Among("vene", 12, -1), new Among("ci", -1, -1), + new Among("li", -1, -1), new Among("celi", 20, -1), + new Among("glieli", 20, -1), new Among("meli", 20, -1), + new Among("teli", 20, -1), new Among("veli", 20, -1), + new Among("gli", 20, -1), new Among("mi", -1, -1), + new Among("si", -1, -1), new Among("ti", -1, -1), + new Among("vi", -1, -1), new Among("lo", -1, -1), + new Among("celo", 31, -1), new Among("glielo", 31, -1), + new Among("melo", 31, -1), new Among("telo", 31, -1), + new Among("velo", 31, -1) + ], + a_3 = [new Among("ando", -1, 1), + new Among("endo", -1, 1), new Among("ar", -1, 2), + new Among("er", -1, 2), new Among("ir", -1, 2) + ], + a_4 = [ + new Among("ic", -1, -1), new Among("abil", -1, -1), + new Among("os", -1, -1), new Among("iv", -1, 1) + ], + a_5 = [ + new Among("ic", -1, 1), new Among("abil", -1, 1), + new Among("iv", -1, 1) + ], + a_6 = [new Among("ica", -1, 1), + new Among("logia", -1, 3), new Among("osa", -1, 1), + new Among("ista", -1, 1), new Among("iva", -1, 9), + new Among("anza", -1, 1), new Among("enza", -1, 5), + new Among("ice", -1, 1), new Among("atrice", 7, 1), + new Among("iche", -1, 1), new Among("logie", -1, 3), + new Among("abile", -1, 1), new Among("ibile", -1, 1), + new Among("usione", -1, 4), new Among("azione", -1, 2), + new Among("uzione", -1, 4), new Among("atore", -1, 2), + new Among("ose", -1, 1), new Among("ante", -1, 1), + new Among("mente", -1, 1), new Among("amente", 19, 7), + new Among("iste", -1, 1), new Among("ive", -1, 9), + new Among("anze", -1, 1), new Among("enze", -1, 5), + new Among("ici", -1, 1), new Among("atrici", 25, 1), + new Among("ichi", -1, 1), new Among("abili", -1, 1), + new Among("ibili", -1, 1), new Among("ismi", -1, 1), + new Among("usioni", -1, 4), new Among("azioni", -1, 2), + new Among("uzioni", -1, 4), new Among("atori", -1, 2), + new Among("osi", -1, 1), new Among("anti", -1, 1), + new Among("amenti", -1, 6), new Among("imenti", -1, 6), + new Among("isti", -1, 1), new Among("ivi", -1, 9), + new Among("ico", -1, 1), new Among("ismo", -1, 1), + new Among("oso", -1, 1), new Among("amento", -1, 6), + new Among("imento", -1, 6), new Among("ivo", -1, 9), + new Among("it\u00E0", -1, 8), new Among("ist\u00E0", -1, 1), + new Among("ist\u00E8", -1, 1), new Among("ist\u00EC", -1, 1) + ], + a_7 = [ + new Among("isca", -1, 1), new Among("enda", -1, 1), + new Among("ata", -1, 1), new Among("ita", -1, 1), + new Among("uta", -1, 1), new Among("ava", -1, 1), + new Among("eva", -1, 1), new Among("iva", -1, 1), + new Among("erebbe", -1, 1), new Among("irebbe", -1, 1), + new Among("isce", -1, 1), new Among("ende", -1, 1), + new Among("are", -1, 1), new Among("ere", -1, 1), + new Among("ire", -1, 1), new Among("asse", -1, 1), + new Among("ate", -1, 1), new Among("avate", 16, 1), + new Among("evate", 16, 1), new Among("ivate", 16, 1), + new Among("ete", -1, 1), new Among("erete", 20, 1), + new Among("irete", 20, 1), new Among("ite", -1, 1), + new Among("ereste", -1, 1), new Among("ireste", -1, 1), + new Among("ute", -1, 1), new Among("erai", -1, 1), + new Among("irai", -1, 1), new Among("isci", -1, 1), + new Among("endi", -1, 1), new Among("erei", -1, 1), + new Among("irei", -1, 1), new Among("assi", -1, 1), + new Among("ati", -1, 1), new Among("iti", -1, 1), + new Among("eresti", -1, 1), new Among("iresti", -1, 1), + new Among("uti", -1, 1), new Among("avi", -1, 1), + new Among("evi", -1, 1), new Among("ivi", -1, 1), + new Among("isco", -1, 1), new Among("ando", -1, 1), + new Among("endo", -1, 1), new Among("Yamo", -1, 1), + new Among("iamo", -1, 1), new Among("avamo", -1, 1), + new Among("evamo", -1, 1), new Among("ivamo", -1, 1), + new Among("eremo", -1, 1), new Among("iremo", -1, 1), + new Among("assimo", -1, 1), new Among("ammo", -1, 1), + new Among("emmo", -1, 1), new Among("eremmo", 54, 1), + new Among("iremmo", 54, 1), new Among("immo", -1, 1), + new Among("ano", -1, 1), new Among("iscano", 58, 1), + new Among("avano", 58, 1), new Among("evano", 58, 1), + new Among("ivano", 58, 1), new Among("eranno", -1, 1), + new Among("iranno", -1, 1), new Among("ono", -1, 1), + new Among("iscono", 65, 1), new Among("arono", 65, 1), + new Among("erono", 65, 1), new Among("irono", 65, 1), + new Among("erebbero", -1, 1), new Among("irebbero", -1, 1), + new Among("assero", -1, 1), new Among("essero", -1, 1), + new Among("issero", -1, 1), new Among("ato", -1, 1), + new Among("ito", -1, 1), new Among("uto", -1, 1), + new Among("avo", -1, 1), new Among("evo", -1, 1), + new Among("ivo", -1, 1), new Among("ar", -1, 1), + new Among("ir", -1, 1), new Among("er\u00E0", -1, 1), + new Among("ir\u00E0", -1, 1), new Among("er\u00F2", -1, 1), + new Among("ir\u00F2", -1, 1) + ], + g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 + ], + g_AEIO = [17, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 + ], + g_CG = [17], + I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(c1, c2, v_1) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 249)) { + sbp.slice_from(c2); + sbp.cursor = v_1; + return true; + } + } + return false; + } + + function r_prelude() { + var among_var, v_1 = sbp.cursor, + v_2, v_3, v_4; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 7); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("\u00E0"); + continue; + case 2: + sbp.slice_from("\u00E8"); + continue; + case 3: + sbp.slice_from("\u00EC"); + continue; + case 4: + sbp.slice_from("\u00F2"); + continue; + case 5: + sbp.slice_from("\u00F9"); + continue; + case 6: + sbp.slice_from("qU"); + continue; + case 7: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + sbp.cursor = v_1; + while (true) { + v_2 = sbp.cursor; + while (true) { + v_3 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 249)) { + sbp.bra = sbp.cursor; + v_4 = sbp.cursor; + if (habr1("u", "U", v_3)) + break; + sbp.cursor = v_4; + if (habr1("i", "I", v_3)) + break; + } + sbp.cursor = v_3; + if (sbp.cursor >= sbp.limit) { + sbp.cursor = v_2; + return; + } + sbp.cursor++; + } + } + } + + function habr2(v_1) { + sbp.cursor = v_1; + if (!sbp.in_grouping(g_v, 97, 249)) + return false; + while (!sbp.out_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function habr3() { + if (sbp.in_grouping(g_v, 97, 249)) { + var v_1 = sbp.cursor; + if (sbp.out_grouping(g_v, 97, 249)) { + while (!sbp.in_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) + return habr2(v_1); + sbp.cursor++; + } + return true; + } + return habr2(v_1); + } + return false; + } + + function habr4() { + var v_1 = sbp.cursor, + v_2; + if (!habr3()) { + sbp.cursor = v_1; + if (!sbp.out_grouping(g_v, 97, 249)) + return; + v_2 = sbp.cursor; + if (sbp.out_grouping(g_v, 97, 249)) { + while (!sbp.in_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) { + sbp.cursor = v_2; + if (sbp.in_grouping(g_v, 97, 249) && + sbp.cursor < sbp.limit) + sbp.cursor++; + return; + } + sbp.cursor++; + } + I_pV = sbp.cursor; + return; + } + sbp.cursor = v_2; + if (!sbp.in_grouping(g_v, 97, 249) || sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_pV = sbp.cursor; + } + + function habr5() { + while (!sbp.in_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 249)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + habr4(); + sbp.cursor = v_1; + if (habr5()) { + I_p1 = sbp.cursor; + if (habr5()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_1, 3); + if (!among_var) + break; + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("i"); + break; + case 2: + sbp.slice_from("u"); + break; + case 3: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_attached_pronoun() { + var among_var; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_2, 37)) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among_b(a_3, 5); + if (among_var && r_RV()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + sbp.slice_from("e"); + break; + } + } + } + } + + function r_standard_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 51); + if (!among_var) + return false; + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + return false; + sbp.slice_del(); + break; + case 2: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ic")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + break; + case 3: + if (!r_R2()) + return false; + sbp.slice_from("log"); + break; + case 4: + if (!r_R2()) + return false; + sbp.slice_from("u"); + break; + case 5: + if (!r_R2()) + return false; + sbp.slice_from("ente"); + break; + case 6: + if (!r_RV()) + return false; + sbp.slice_del(); + break; + case 7: + if (!r_R1()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 4); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + if (among_var == 1) { + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + } + } + break; + case 8: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 3); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + if (r_R2()) + sbp.slice_del(); + } + break; + case 9: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ic")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + } + break; + } + return true; + } + + function r_verb_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 87); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + sbp.slice_del(); + } + sbp.limit_backward = v_1; + } + } + + function habr6() { + var v_1 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (sbp.in_grouping_b(g_AEIO, 97, 242)) { + sbp.bra = sbp.cursor; + if (r_RV()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "i")) { + sbp.bra = sbp.cursor; + if (r_RV()) { + sbp.slice_del(); + return; + } + } + } + } + sbp.cursor = sbp.limit - v_1; + } + + function r_vowel_suffix() { + habr6(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "h")) { + sbp.bra = sbp.cursor; + if (sbp.in_grouping_b(g_CG, 99, 103)) + if (r_RV()) + sbp.slice_del(); + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_attached_pronoun(); + sbp.cursor = sbp.limit; + if (!r_standard_suffix()) { + sbp.cursor = sbp.limit; + r_verb_suffix(); + } + sbp.cursor = sbp.limit; + r_vowel_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.it.stemmer, 'stemmer-it'); + + lunr.it.stopWordFilter = lunr.generateStopWordFilter('a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.it.stopWordFilter, 'stopWordFilter-it'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.ja.js b/themes/LoveIt/assets/lib/lunr/lunr.ja.js new file mode 100644 index 00000000..d3e4bf5e --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.ja.js @@ -0,0 +1,188 @@ +/*! + * Lunr languages, `Japanese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Chad Liu + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* + Japanese tokenization is trickier, since it does not + take into account spaces. + Since the tokenization function is represented different + internally for each of the Lunr versions, this had to be done + in order to try to try to pick the best way of doing this based + on the Lunr version + */ + var isLunr2 = lunr.version[0] == "2"; + + /* register specific locale function */ + lunr.ja = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.ja.trimmer, + lunr.ja.stopWordFilter, + lunr.ja.stemmer + ); + + // change the tokenizer for japanese one + if (isLunr2) { // for lunr version 2.0.0 + this.tokenizer = lunr.ja.tokenizer; + } else { + if (lunr.tokenizer) { // for lunr version 0.6.0 + lunr.tokenizer = lunr.ja.tokenizer; + } + if (this.tokenizerFn) { // for lunr version 0.7.0 -> 1.0.0 + this.tokenizerFn = lunr.ja.tokenizer; + } + } + }; + var segmenter = new lunr.TinySegmenter(); // インスタンス生成 + + lunr.ja.tokenizer = function(obj) { + var i; + var str; + var len; + var segs; + var tokens; + var char; + var sliceLength; + var sliceStart; + var sliceEnd; + var segStart; + + if (!arguments.length || obj == null || obj == undefined) + return []; + + if (Array.isArray(obj)) { + return obj.map( + function(t) { + return isLunr2 ? new lunr.Token(t.toLowerCase()) : t.toLowerCase(); + } + ); + } + + str = obj.toString().toLowerCase().replace(/^\s+/, ''); + for (i = str.length - 1; i >= 0; i--) { + if (/\S/.test(str.charAt(i))) { + str = str.substring(0, i + 1); + break; + } + } + + tokens = []; + len = str.length; + for (sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { + char = str.charAt(sliceEnd); + sliceLength = sliceEnd - sliceStart; + + if ((char.match(/\s/) || sliceEnd == len)) { + if (sliceLength > 0) { + segs = segmenter.segment(str.slice(sliceStart, sliceEnd)).filter( + function(token) { + return !!token; + } + ); + + segStart = sliceStart; + for (i = 0; i < segs.length; i++) { + if (isLunr2) { + tokens.push( + new lunr.Token( + segs[i], { + position: [segStart, segs[i].length], + index: tokens.length + } + ) + ); + } else { + tokens.push(segs[i]); + } + segStart += segs[i].length; + } + } + + sliceStart = sliceEnd + 1; + } + } + + return tokens; + } + + /* lunr stemmer function */ + lunr.ja.stemmer = (function() { + + /* TODO japanese stemmer */ + return function(word) { + return word; + } + })(); + lunr.Pipeline.registerFunction(lunr.ja.stemmer, 'stemmer-ja'); + + /* lunr trimmer function */ + lunr.ja.wordCharacters = "一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9"; + lunr.ja.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.ja.wordCharacters); + lunr.Pipeline.registerFunction(lunr.ja.trimmer, 'trimmer-ja'); + + /* lunr stop word filter. see http://www.ranks.nl/stopwords/japanese */ + lunr.ja.stopWordFilter = lunr.generateStopWordFilter( + 'これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし'.split(' ')); + lunr.Pipeline.registerFunction(lunr.ja.stopWordFilter, 'stopWordFilter-ja'); + + // alias ja => jp for backward-compatibility. + // jp is the country code, while ja is the language code + // a new lunr.ja.js has been created, but in order to + // keep the backward compatibility, we'll leave the lunr.jp.js + // here for a while, and just make it use the new lunr.ja.js + lunr.jp = lunr.ja; + lunr.Pipeline.registerFunction(lunr.jp.stemmer, 'stemmer-jp'); + lunr.Pipeline.registerFunction(lunr.jp.trimmer, 'trimmer-jp'); + lunr.Pipeline.registerFunction(lunr.jp.stopWordFilter, 'stopWordFilter-jp'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.min.js b/themes/LoveIt/assets/lib/lunr/lunr.min.js new file mode 100644 index 00000000..3f2f2cc6 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.7 + * Copyright (C) 2019 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.7",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/themes/LoveIt/assets/lib/lunr/lunr.nl.js b/themes/LoveIt/assets/lib/lunr/lunr.nl.js new file mode 100644 index 00000000..f6b2345a --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.nl.js @@ -0,0 +1,448 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.nl = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.nl.trimmer, + lunr.nl.stopWordFilter, + lunr.nl.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.nl.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.nl.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.nl.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.nl.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.nl.trimmer, 'trimmer-nl'); + + /* lunr stemmer function */ + lunr.nl.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function DutchStemmer() { + var a_0 = [new Among("", -1, 6), new Among("\u00E1", 0, 1), + new Among("\u00E4", 0, 1), new Among("\u00E9", 0, 2), + new Among("\u00EB", 0, 2), new Among("\u00ED", 0, 3), + new Among("\u00EF", 0, 3), new Among("\u00F3", 0, 4), + new Among("\u00F6", 0, 4), new Among("\u00FA", 0, 5), + new Among("\u00FC", 0, 5) + ], + a_1 = [new Among("", -1, 3), + new Among("I", 0, 2), new Among("Y", 0, 1) + ], + a_2 = [ + new Among("dd", -1, -1), new Among("kk", -1, -1), + new Among("tt", -1, -1) + ], + a_3 = [new Among("ene", -1, 2), + new Among("se", -1, 3), new Among("en", -1, 2), + new Among("heden", 2, 1), new Among("s", -1, 3) + ], + a_4 = [ + new Among("end", -1, 1), new Among("ig", -1, 2), + new Among("ing", -1, 1), new Among("lijk", -1, 3), + new Among("baar", -1, 4), new Among("bar", -1, 5) + ], + a_5 = [ + new Among("aa", -1, -1), new Among("ee", -1, -1), + new Among("oo", -1, -1), new Among("uu", -1, -1) + ], + g_v = [17, 65, + 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + g_v_I = [1, 0, 0, + 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + g_v_j = [ + 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 + ], + I_p2, I_p1, B_e_found, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_prelude() { + var among_var, v_1 = sbp.cursor, + v_2, v_3; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 11); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("a"); + continue; + case 2: + sbp.slice_from("e"); + continue; + case 3: + sbp.slice_from("i"); + continue; + case 4: + sbp.slice_from("o"); + continue; + case 5: + sbp.slice_from("u"); + continue; + case 6: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + sbp.cursor = v_1; + sbp.bra = v_1; + if (sbp.eq_s(1, "y")) { + sbp.ket = sbp.cursor; + sbp.slice_from("Y"); + } else + sbp.cursor = v_1; + while (true) { + v_2 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 232)) { + v_3 = sbp.cursor; + sbp.bra = v_3; + if (sbp.eq_s(1, "i")) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 232)) { + sbp.slice_from("I"); + sbp.cursor = v_2; + } + } else { + sbp.cursor = v_3; + if (sbp.eq_s(1, "y")) { + sbp.ket = sbp.cursor; + sbp.slice_from("Y"); + sbp.cursor = v_2; + } else if (habr1(v_2)) + break; + } + } else if (habr1(v_2)) + break; + } + } + + function habr1(v_1) { + sbp.cursor = v_1; + if (v_1 >= sbp.limit) + return true; + sbp.cursor++; + return false; + } + + function r_mark_regions() { + I_p1 = sbp.limit; + I_p2 = I_p1; + if (!habr2()) { + I_p1 = sbp.cursor; + if (I_p1 < 3) + I_p1 = 3; + if (!habr2()) + I_p2 = sbp.cursor; + } + } + + function habr2() { + while (!sbp.in_grouping(g_v, 97, 232)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 232)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_1, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("y"); + break; + case 2: + sbp.slice_from("i"); + break; + case 3: + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + break; + } + } + } + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_undouble() { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.find_among_b(a_2, 3)) { + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + } + + function r_e_ending() { + var v_1; + B_e_found = false; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "e")) { + sbp.bra = sbp.cursor; + if (r_R1()) { + v_1 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_del(); + B_e_found = true; + r_undouble(); + } + } + } + } + + function r_en_ending() { + var v_1; + if (r_R1()) { + v_1 = sbp.limit - sbp.cursor; + if (sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(3, "gem")) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_del(); + r_undouble(); + } + } + } + } + + function r_standard_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor, + v_2, v_3, v_4, v_5, v_6; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 5); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R1()) + sbp.slice_from("heid"); + break; + case 2: + r_en_ending(); + break; + case 3: + if (r_R1() && sbp.out_grouping_b(g_v_j, 97, 232)) + sbp.slice_del(); + break; + } + } + sbp.cursor = sbp.limit - v_1; + r_e_ending(); + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(4, "heid")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "c")) { + sbp.cursor = sbp.limit - v_2; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "en")) { + sbp.bra = sbp.cursor; + r_en_ending(); + } + } + } + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 6); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_R2()) { + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "ig")) { + sbp.bra = sbp.cursor; + if (r_R2()) { + v_4 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_4; + sbp.slice_del(); + break; + } + } + } + sbp.cursor = sbp.limit - v_3; + r_undouble(); + } + break; + case 2: + if (r_R2()) { + v_5 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "e")) { + sbp.cursor = sbp.limit - v_5; + sbp.slice_del(); + } + } + break; + case 3: + if (r_R2()) { + sbp.slice_del(); + r_e_ending(); + } + break; + case 4: + if (r_R2()) + sbp.slice_del(); + break; + case 5: + if (r_R2() && B_e_found) + sbp.slice_del(); + break; + } + } + sbp.cursor = sbp.limit - v_1; + if (sbp.out_grouping_b(g_v_I, 73, 232)) { + v_6 = sbp.limit - sbp.cursor; + if (sbp.find_among_b(a_5, 4) && sbp.out_grouping_b(g_v, 97, 232)) { + sbp.cursor = sbp.limit - v_6; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_standard_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.nl.stemmer, 'stemmer-nl'); + + lunr.nl.stopWordFilter = lunr.generateStopWordFilter(' aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.nl.stopWordFilter, 'stopWordFilter-nl'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.no.js b/themes/LoveIt/assets/lib/lunr/lunr.no.js new file mode 100644 index 00000000..ac377c0d --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.no.js @@ -0,0 +1,258 @@ +/*! + * Lunr languages, `Norwegian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.no = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.no.trimmer, + lunr.no.stopWordFilter, + lunr.no.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.no.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.no.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.no.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.no.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.no.trimmer, 'trimmer-no'); + + /* lunr stemmer function */ + lunr.no.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function NorwegianStemmer() { + var a_0 = [new Among("a", -1, 1), new Among("e", -1, 1), + new Among("ede", 1, 1), new Among("ande", 1, 1), + new Among("ende", 1, 1), new Among("ane", 1, 1), + new Among("ene", 1, 1), new Among("hetene", 6, 1), + new Among("erte", 1, 3), new Among("en", -1, 1), + new Among("heten", 9, 1), new Among("ar", -1, 1), + new Among("er", -1, 1), new Among("heter", 12, 1), + new Among("s", -1, 2), new Among("as", 14, 1), + new Among("es", 14, 1), new Among("edes", 16, 1), + new Among("endes", 16, 1), new Among("enes", 16, 1), + new Among("hetenes", 19, 1), new Among("ens", 14, 1), + new Among("hetens", 21, 1), new Among("ers", 14, 1), + new Among("ets", 14, 1), new Among("et", -1, 1), + new Among("het", 25, 1), new Among("ert", -1, 3), + new Among("ast", -1, 1) + ], + a_1 = [new Among("dt", -1, -1), + new Among("vt", -1, -1) + ], + a_2 = [new Among("leg", -1, 1), + new Among("eleg", 0, 1), new Among("ig", -1, 1), + new Among("eig", 2, 1), new Among("lig", 2, 1), + new Among("elig", 4, 1), new Among("els", -1, 1), + new Among("lov", -1, 1), new Among("elov", 7, 1), + new Among("slov", 7, 1), new Among("hetslov", 9, 1) + ], + g_v = [17, + 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 + ], + g_s_ending = [ + 119, 125, 149, 1 + ], + I_x, I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + var v_1, c = sbp.cursor + 3; + I_p1 = sbp.limit; + if (0 <= c || c <= sbp.limit) { + I_x = c; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 248)) { + sbp.cursor = v_1; + break; + } + if (v_1 >= sbp.limit) + return; + sbp.cursor = v_1 + 1; + } + while (!sbp.out_grouping(g_v, 97, 248)) { + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_p1 = sbp.cursor; + if (I_p1 < I_x) + I_p1 = I_x; + } + } + + function r_main_suffix() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_0, 29); + sbp.limit_backward = v_1; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + v_2 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_s_ending, 98, 122)) + sbp.slice_del(); + else { + sbp.cursor = sbp.limit - v_2; + if (sbp.eq_s_b(1, "k") && + sbp.out_grouping_b(g_v, 97, 248)) + sbp.slice_del(); + } + break; + case 3: + sbp.slice_from("er"); + break; + } + } + } + } + + function r_consonant_pair() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + if (sbp.cursor >= I_p1) { + v_2 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + if (sbp.find_among_b(a_1, 2)) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_2; + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + } else + sbp.limit_backward = v_2; + } + } + + function r_other_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_p1) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 11); + if (among_var) { + sbp.bra = sbp.cursor; + sbp.limit_backward = v_1; + if (among_var == 1) + sbp.slice_del(); + } else + sbp.limit_backward = v_1; + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_main_suffix(); + sbp.cursor = sbp.limit; + r_consonant_pair(); + sbp.cursor = sbp.limit; + r_other_suffix(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.no.stemmer, 'stemmer-no'); + + lunr.no.stopWordFilter = lunr.generateStopWordFilter('alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.no.stopWordFilter, 'stopWordFilter-no'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.pt.js b/themes/LoveIt/assets/lib/lunr/lunr.pt.js new file mode 100644 index 00000000..f490709c --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.pt.js @@ -0,0 +1,570 @@ +/*! + * Lunr languages, `Portuguese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.pt = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.pt.trimmer, + lunr.pt.stopWordFilter, + lunr.pt.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.pt.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.pt.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.pt.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.pt.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.pt.trimmer, 'trimmer-pt'); + + /* lunr stemmer function */ + lunr.pt.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function PortugueseStemmer() { + var a_0 = [new Among("", -1, 3), new Among("\u00E3", 0, 1), + new Among("\u00F5", 0, 2) + ], + a_1 = [new Among("", -1, 3), + new Among("a~", 0, 1), new Among("o~", 0, 2) + ], + a_2 = [ + new Among("ic", -1, -1), new Among("ad", -1, -1), + new Among("os", -1, -1), new Among("iv", -1, 1) + ], + a_3 = [ + new Among("ante", -1, 1), new Among("avel", -1, 1), + new Among("\u00EDvel", -1, 1) + ], + a_4 = [new Among("ic", -1, 1), + new Among("abil", -1, 1), new Among("iv", -1, 1) + ], + a_5 = [ + new Among("ica", -1, 1), new Among("\u00E2ncia", -1, 1), + new Among("\u00EAncia", -1, 4), new Among("ira", -1, 9), + new Among("adora", -1, 1), new Among("osa", -1, 1), + new Among("ista", -1, 1), new Among("iva", -1, 8), + new Among("eza", -1, 1), new Among("log\u00EDa", -1, 2), + new Among("idade", -1, 7), new Among("ante", -1, 1), + new Among("mente", -1, 6), new Among("amente", 12, 5), + new Among("\u00E1vel", -1, 1), new Among("\u00EDvel", -1, 1), + new Among("uci\u00F3n", -1, 3), new Among("ico", -1, 1), + new Among("ismo", -1, 1), new Among("oso", -1, 1), + new Among("amento", -1, 1), new Among("imento", -1, 1), + new Among("ivo", -1, 8), new Among("a\u00E7a~o", -1, 1), + new Among("ador", -1, 1), new Among("icas", -1, 1), + new Among("\u00EAncias", -1, 4), new Among("iras", -1, 9), + new Among("adoras", -1, 1), new Among("osas", -1, 1), + new Among("istas", -1, 1), new Among("ivas", -1, 8), + new Among("ezas", -1, 1), new Among("log\u00EDas", -1, 2), + new Among("idades", -1, 7), new Among("uciones", -1, 3), + new Among("adores", -1, 1), new Among("antes", -1, 1), + new Among("a\u00E7o~es", -1, 1), new Among("icos", -1, 1), + new Among("ismos", -1, 1), new Among("osos", -1, 1), + new Among("amentos", -1, 1), new Among("imentos", -1, 1), + new Among("ivos", -1, 8) + ], + a_6 = [new Among("ada", -1, 1), + new Among("ida", -1, 1), new Among("ia", -1, 1), + new Among("aria", 2, 1), new Among("eria", 2, 1), + new Among("iria", 2, 1), new Among("ara", -1, 1), + new Among("era", -1, 1), new Among("ira", -1, 1), + new Among("ava", -1, 1), new Among("asse", -1, 1), + new Among("esse", -1, 1), new Among("isse", -1, 1), + new Among("aste", -1, 1), new Among("este", -1, 1), + new Among("iste", -1, 1), new Among("ei", -1, 1), + new Among("arei", 16, 1), new Among("erei", 16, 1), + new Among("irei", 16, 1), new Among("am", -1, 1), + new Among("iam", 20, 1), new Among("ariam", 21, 1), + new Among("eriam", 21, 1), new Among("iriam", 21, 1), + new Among("aram", 20, 1), new Among("eram", 20, 1), + new Among("iram", 20, 1), new Among("avam", 20, 1), + new Among("em", -1, 1), new Among("arem", 29, 1), + new Among("erem", 29, 1), new Among("irem", 29, 1), + new Among("assem", 29, 1), new Among("essem", 29, 1), + new Among("issem", 29, 1), new Among("ado", -1, 1), + new Among("ido", -1, 1), new Among("ando", -1, 1), + new Among("endo", -1, 1), new Among("indo", -1, 1), + new Among("ara~o", -1, 1), new Among("era~o", -1, 1), + new Among("ira~o", -1, 1), new Among("ar", -1, 1), + new Among("er", -1, 1), new Among("ir", -1, 1), + new Among("as", -1, 1), new Among("adas", 47, 1), + new Among("idas", 47, 1), new Among("ias", 47, 1), + new Among("arias", 50, 1), new Among("erias", 50, 1), + new Among("irias", 50, 1), new Among("aras", 47, 1), + new Among("eras", 47, 1), new Among("iras", 47, 1), + new Among("avas", 47, 1), new Among("es", -1, 1), + new Among("ardes", 58, 1), new Among("erdes", 58, 1), + new Among("irdes", 58, 1), new Among("ares", 58, 1), + new Among("eres", 58, 1), new Among("ires", 58, 1), + new Among("asses", 58, 1), new Among("esses", 58, 1), + new Among("isses", 58, 1), new Among("astes", 58, 1), + new Among("estes", 58, 1), new Among("istes", 58, 1), + new Among("is", -1, 1), new Among("ais", 71, 1), + new Among("eis", 71, 1), new Among("areis", 73, 1), + new Among("ereis", 73, 1), new Among("ireis", 73, 1), + new Among("\u00E1reis", 73, 1), new Among("\u00E9reis", 73, 1), + new Among("\u00EDreis", 73, 1), new Among("\u00E1sseis", 73, 1), + new Among("\u00E9sseis", 73, 1), new Among("\u00EDsseis", 73, 1), + new Among("\u00E1veis", 73, 1), new Among("\u00EDeis", 73, 1), + new Among("ar\u00EDeis", 84, 1), new Among("er\u00EDeis", 84, 1), + new Among("ir\u00EDeis", 84, 1), new Among("ados", -1, 1), + new Among("idos", -1, 1), new Among("amos", -1, 1), + new Among("\u00E1ramos", 90, 1), new Among("\u00E9ramos", 90, 1), + new Among("\u00EDramos", 90, 1), new Among("\u00E1vamos", 90, 1), + new Among("\u00EDamos", 90, 1), new Among("ar\u00EDamos", 95, 1), + new Among("er\u00EDamos", 95, 1), new Among("ir\u00EDamos", 95, 1), + new Among("emos", -1, 1), new Among("aremos", 99, 1), + new Among("eremos", 99, 1), new Among("iremos", 99, 1), + new Among("\u00E1ssemos", 99, 1), new Among("\u00EAssemos", 99, 1), + new Among("\u00EDssemos", 99, 1), new Among("imos", -1, 1), + new Among("armos", -1, 1), new Among("ermos", -1, 1), + new Among("irmos", -1, 1), new Among("\u00E1mos", -1, 1), + new Among("ar\u00E1s", -1, 1), new Among("er\u00E1s", -1, 1), + new Among("ir\u00E1s", -1, 1), new Among("eu", -1, 1), + new Among("iu", -1, 1), new Among("ou", -1, 1), + new Among("ar\u00E1", -1, 1), new Among("er\u00E1", -1, 1), + new Among("ir\u00E1", -1, 1) + ], + a_7 = [new Among("a", -1, 1), + new Among("i", -1, 1), new Among("o", -1, 1), + new Among("os", -1, 1), new Among("\u00E1", -1, 1), + new Among("\u00ED", -1, 1), new Among("\u00F3", -1, 1) + ], + a_8 = [ + new Among("e", -1, 1), new Among("\u00E7", -1, 2), + new Among("\u00E9", -1, 1), new Among("\u00EA", -1, 1) + ], + g_v = [17, + 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 + ], + I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_prelude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("a~"); + continue; + case 2: + sbp.slice_from("o~"); + continue; + case 3: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + } + + function habr2() { + if (sbp.out_grouping(g_v, 97, 250)) { + while (!sbp.in_grouping(g_v, 97, 250)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + return true; + } + + function habr3() { + if (sbp.in_grouping(g_v, 97, 250)) { + while (!sbp.out_grouping(g_v, 97, 250)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + } + I_pV = sbp.cursor; + return true; + } + + function habr4() { + var v_1 = sbp.cursor, + v_2, v_3; + if (sbp.in_grouping(g_v, 97, 250)) { + v_2 = sbp.cursor; + if (habr2()) { + sbp.cursor = v_2; + if (habr3()) + return; + } else + I_pV = sbp.cursor; + } + sbp.cursor = v_1; + if (sbp.out_grouping(g_v, 97, 250)) { + v_3 = sbp.cursor; + if (habr2()) { + sbp.cursor = v_3; + if (!sbp.in_grouping(g_v, 97, 250) || sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_pV = sbp.cursor; + } + } + + function habr5() { + while (!sbp.in_grouping(g_v, 97, 250)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 250)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + habr4(); + sbp.cursor = v_1; + if (habr5()) { + I_p1 = sbp.cursor; + if (habr5()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_1, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("\u00E3"); + continue; + case 2: + sbp.slice_from("\u00F5"); + continue; + case 3: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_standard_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 45); + if (!among_var) + return false; + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + return false; + sbp.slice_del(); + break; + case 2: + if (!r_R2()) + return false; + sbp.slice_from("log"); + break; + case 3: + if (!r_R2()) + return false; + sbp.slice_from("u"); + break; + case 4: + if (!r_R2()) + return false; + sbp.slice_from("ente"); + break; + case 5: + if (!r_R1()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 4); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + sbp.slice_del(); + if (among_var == 1) { + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + } + } + } + break; + case 6: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 3); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + if (r_R2()) + sbp.slice_del(); + } + break; + case 7: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 3); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + if (r_R2()) + sbp.slice_del(); + } + break; + case 8: + if (!r_R2()) + return false; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(2, "at")) { + sbp.bra = sbp.cursor; + if (r_R2()) + sbp.slice_del(); + } + break; + case 9: + if (!r_RV() || !sbp.eq_s_b(1, "e")) + return false; + sbp.slice_from("ir"); + break; + } + return true; + } + + function r_verb_suffix() { + var among_var, v_1; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 120); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + sbp.slice_del(); + sbp.limit_backward = v_1; + return true; + } + sbp.limit_backward = v_1; + } + return false; + } + + function r_residual_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 7); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + if (r_RV()) + sbp.slice_del(); + } + } + + function habr6(c1, c2) { + if (sbp.eq_s_b(1, c1)) { + sbp.bra = sbp.cursor; + var v_1 = sbp.limit - sbp.cursor; + if (sbp.eq_s_b(1, c2)) { + sbp.cursor = sbp.limit - v_1; + if (r_RV()) + sbp.slice_del(); + return false; + } + } + return true; + } + + function r_residual_form() { + var among_var, v_1, v_2, v_3; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_8, 4); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + if (r_RV()) { + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_1 = sbp.limit - sbp.cursor; + if (habr6("u", "g")) + habr6("i", "c") + } + break; + case 2: + sbp.slice_from("c"); + break; + } + } + } + + function habr1() { + if (!r_standard_suffix()) { + sbp.cursor = sbp.limit; + if (!r_verb_suffix()) { + sbp.cursor = sbp.limit; + r_residual_suffix(); + return; + } + } + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "i")) { + sbp.bra = sbp.cursor; + if (sbp.eq_s_b(1, "c")) { + sbp.cursor = sbp.limit; + if (r_RV()) + sbp.slice_del(); + } + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + habr1(); + sbp.cursor = sbp.limit; + r_residual_form(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.pt.stemmer, 'stemmer-pt'); + + lunr.pt.stopWordFilter = lunr.generateStopWordFilter('a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.pt.stopWordFilter, 'stopWordFilter-pt'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.ro.js b/themes/LoveIt/assets/lib/lunr/lunr.ro.js new file mode 100644 index 00000000..9659b768 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.ro.js @@ -0,0 +1,558 @@ +/*! + * Lunr languages, `Romanian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +; +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.ro = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.ro.trimmer, + lunr.ro.stopWordFilter, + lunr.ro.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.ro.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.ro.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.ro.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.ro.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.ro.trimmer, 'trimmer-ro'); + + /* lunr stemmer function */ + lunr.ro.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function RomanianStemmer() { + var a_0 = [new Among("", -1, 3), new Among("I", 0, 1), new Among("U", 0, 2)], + a_1 = [ + new Among("ea", -1, 3), new Among("a\u0163ia", -1, 7), + new Among("aua", -1, 2), new Among("iua", -1, 4), + new Among("a\u0163ie", -1, 7), new Among("ele", -1, 3), + new Among("ile", -1, 5), new Among("iile", 6, 4), + new Among("iei", -1, 4), new Among("atei", -1, 6), + new Among("ii", -1, 4), new Among("ului", -1, 1), + new Among("ul", -1, 1), new Among("elor", -1, 3), + new Among("ilor", -1, 4), new Among("iilor", 14, 4) + ], + a_2 = [ + new Among("icala", -1, 4), new Among("iciva", -1, 4), + new Among("ativa", -1, 5), new Among("itiva", -1, 6), + new Among("icale", -1, 4), new Among("a\u0163iune", -1, 5), + new Among("i\u0163iune", -1, 6), new Among("atoare", -1, 5), + new Among("itoare", -1, 6), new Among("\u0103toare", -1, 5), + new Among("icitate", -1, 4), new Among("abilitate", -1, 1), + new Among("ibilitate", -1, 2), new Among("ivitate", -1, 3), + new Among("icive", -1, 4), new Among("ative", -1, 5), + new Among("itive", -1, 6), new Among("icali", -1, 4), + new Among("atori", -1, 5), new Among("icatori", 18, 4), + new Among("itori", -1, 6), new Among("\u0103tori", -1, 5), + new Among("icitati", -1, 4), new Among("abilitati", -1, 1), + new Among("ivitati", -1, 3), new Among("icivi", -1, 4), + new Among("ativi", -1, 5), new Among("itivi", -1, 6), + new Among("icit\u0103i", -1, 4), new Among("abilit\u0103i", -1, 1), + new Among("ivit\u0103i", -1, 3), + new Among("icit\u0103\u0163i", -1, 4), + new Among("abilit\u0103\u0163i", -1, 1), + new Among("ivit\u0103\u0163i", -1, 3), new Among("ical", -1, 4), + new Among("ator", -1, 5), new Among("icator", 35, 4), + new Among("itor", -1, 6), new Among("\u0103tor", -1, 5), + new Among("iciv", -1, 4), new Among("ativ", -1, 5), + new Among("itiv", -1, 6), new Among("ical\u0103", -1, 4), + new Among("iciv\u0103", -1, 4), new Among("ativ\u0103", -1, 5), + new Among("itiv\u0103", -1, 6) + ], + a_3 = [new Among("ica", -1, 1), + new Among("abila", -1, 1), new Among("ibila", -1, 1), + new Among("oasa", -1, 1), new Among("ata", -1, 1), + new Among("ita", -1, 1), new Among("anta", -1, 1), + new Among("ista", -1, 3), new Among("uta", -1, 1), + new Among("iva", -1, 1), new Among("ic", -1, 1), + new Among("ice", -1, 1), new Among("abile", -1, 1), + new Among("ibile", -1, 1), new Among("isme", -1, 3), + new Among("iune", -1, 2), new Among("oase", -1, 1), + new Among("ate", -1, 1), new Among("itate", 17, 1), + new Among("ite", -1, 1), new Among("ante", -1, 1), + new Among("iste", -1, 3), new Among("ute", -1, 1), + new Among("ive", -1, 1), new Among("ici", -1, 1), + new Among("abili", -1, 1), new Among("ibili", -1, 1), + new Among("iuni", -1, 2), new Among("atori", -1, 1), + new Among("osi", -1, 1), new Among("ati", -1, 1), + new Among("itati", 30, 1), new Among("iti", -1, 1), + new Among("anti", -1, 1), new Among("isti", -1, 3), + new Among("uti", -1, 1), new Among("i\u015Fti", -1, 3), + new Among("ivi", -1, 1), new Among("it\u0103i", -1, 1), + new Among("o\u015Fi", -1, 1), new Among("it\u0103\u0163i", -1, 1), + new Among("abil", -1, 1), new Among("ibil", -1, 1), + new Among("ism", -1, 3), new Among("ator", -1, 1), + new Among("os", -1, 1), new Among("at", -1, 1), + new Among("it", -1, 1), new Among("ant", -1, 1), + new Among("ist", -1, 3), new Among("ut", -1, 1), + new Among("iv", -1, 1), new Among("ic\u0103", -1, 1), + new Among("abil\u0103", -1, 1), new Among("ibil\u0103", -1, 1), + new Among("oas\u0103", -1, 1), new Among("at\u0103", -1, 1), + new Among("it\u0103", -1, 1), new Among("ant\u0103", -1, 1), + new Among("ist\u0103", -1, 3), new Among("ut\u0103", -1, 1), + new Among("iv\u0103", -1, 1) + ], + a_4 = [new Among("ea", -1, 1), + new Among("ia", -1, 1), new Among("esc", -1, 1), + new Among("\u0103sc", -1, 1), new Among("ind", -1, 1), + new Among("\u00E2nd", -1, 1), new Among("are", -1, 1), + new Among("ere", -1, 1), new Among("ire", -1, 1), + new Among("\u00E2re", -1, 1), new Among("se", -1, 2), + new Among("ase", 10, 1), new Among("sese", 10, 2), + new Among("ise", 10, 1), new Among("use", 10, 1), + new Among("\u00E2se", 10, 1), new Among("e\u015Fte", -1, 1), + new Among("\u0103\u015Fte", -1, 1), new Among("eze", -1, 1), + new Among("ai", -1, 1), new Among("eai", 19, 1), + new Among("iai", 19, 1), new Among("sei", -1, 2), + new Among("e\u015Fti", -1, 1), new Among("\u0103\u015Fti", -1, 1), + new Among("ui", -1, 1), new Among("ezi", -1, 1), + new Among("\u00E2i", -1, 1), new Among("a\u015Fi", -1, 1), + new Among("se\u015Fi", -1, 2), new Among("ase\u015Fi", 29, 1), + new Among("sese\u015Fi", 29, 2), new Among("ise\u015Fi", 29, 1), + new Among("use\u015Fi", 29, 1), + new Among("\u00E2se\u015Fi", 29, 1), new Among("i\u015Fi", -1, 1), + new Among("u\u015Fi", -1, 1), new Among("\u00E2\u015Fi", -1, 1), + new Among("a\u0163i", -1, 2), new Among("ea\u0163i", 38, 1), + new Among("ia\u0163i", 38, 1), new Among("e\u0163i", -1, 2), + new Among("i\u0163i", -1, 2), new Among("\u00E2\u0163i", -1, 2), + new Among("ar\u0103\u0163i", -1, 1), + new Among("ser\u0103\u0163i", -1, 2), + new Among("aser\u0103\u0163i", 45, 1), + new Among("seser\u0103\u0163i", 45, 2), + new Among("iser\u0103\u0163i", 45, 1), + new Among("user\u0103\u0163i", 45, 1), + new Among("\u00E2ser\u0103\u0163i", 45, 1), + new Among("ir\u0103\u0163i", -1, 1), + new Among("ur\u0103\u0163i", -1, 1), + new Among("\u00E2r\u0103\u0163i", -1, 1), new Among("am", -1, 1), + new Among("eam", 54, 1), new Among("iam", 54, 1), + new Among("em", -1, 2), new Among("asem", 57, 1), + new Among("sesem", 57, 2), new Among("isem", 57, 1), + new Among("usem", 57, 1), new Among("\u00E2sem", 57, 1), + new Among("im", -1, 2), new Among("\u00E2m", -1, 2), + new Among("\u0103m", -1, 2), new Among("ar\u0103m", 65, 1), + new Among("ser\u0103m", 65, 2), new Among("aser\u0103m", 67, 1), + new Among("seser\u0103m", 67, 2), new Among("iser\u0103m", 67, 1), + new Among("user\u0103m", 67, 1), + new Among("\u00E2ser\u0103m", 67, 1), + new Among("ir\u0103m", 65, 1), new Among("ur\u0103m", 65, 1), + new Among("\u00E2r\u0103m", 65, 1), new Among("au", -1, 1), + new Among("eau", 76, 1), new Among("iau", 76, 1), + new Among("indu", -1, 1), new Among("\u00E2ndu", -1, 1), + new Among("ez", -1, 1), new Among("easc\u0103", -1, 1), + new Among("ar\u0103", -1, 1), new Among("ser\u0103", -1, 2), + new Among("aser\u0103", 84, 1), new Among("seser\u0103", 84, 2), + new Among("iser\u0103", 84, 1), new Among("user\u0103", 84, 1), + new Among("\u00E2ser\u0103", 84, 1), new Among("ir\u0103", -1, 1), + new Among("ur\u0103", -1, 1), new Among("\u00E2r\u0103", -1, 1), + new Among("eaz\u0103", -1, 1) + ], + a_5 = [new Among("a", -1, 1), + new Among("e", -1, 1), new Among("ie", 1, 1), + new Among("i", -1, 1), new Among("\u0103", -1, 1) + ], + g_v = [17, 65, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 + ], + B_standard_suffix_removed, I_p2, I_p1, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(c1, c2) { + if (sbp.eq_s(1, c1)) { + sbp.ket = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 259)) + sbp.slice_from(c2); + } + } + + function r_prelude() { + var v_1, v_2; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 259)) { + v_2 = sbp.cursor; + sbp.bra = v_2; + habr1("u", "U"); + sbp.cursor = v_2; + habr1("i", "I"); + } + sbp.cursor = v_1; + if (sbp.cursor >= sbp.limit) { + break; + } + sbp.cursor++; + } + } + + function habr2() { + if (sbp.out_grouping(g_v, 97, 259)) { + while (!sbp.in_grouping(g_v, 97, 259)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + return false; + } + return true; + } + + function habr3() { + if (sbp.in_grouping(g_v, 97, 259)) { + while (!sbp.out_grouping(g_v, 97, 259)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + } + return false; + } + + function habr4() { + var v_1 = sbp.cursor, + v_2, v_3; + if (sbp.in_grouping(g_v, 97, 259)) { + v_2 = sbp.cursor; + if (habr2()) { + sbp.cursor = v_2; + if (!habr3()) { + I_pV = sbp.cursor; + return; + } + } else { + I_pV = sbp.cursor; + return; + } + } + sbp.cursor = v_1; + if (sbp.out_grouping(g_v, 97, 259)) { + v_3 = sbp.cursor; + if (habr2()) { + sbp.cursor = v_3; + if (sbp.in_grouping(g_v, 97, 259) && sbp.cursor < sbp.limit) + sbp.cursor++; + } + I_pV = sbp.cursor; + } + } + + function habr5() { + while (!sbp.in_grouping(g_v, 97, 259)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 259)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + var v_1 = sbp.cursor; + I_pV = sbp.limit; + I_p1 = I_pV; + I_p2 = I_pV; + habr4(); + sbp.cursor = v_1; + if (habr5()) { + I_p1 = sbp.cursor; + if (habr5()) + I_p2 = sbp.cursor; + } + } + + function r_postlude() { + var among_var; + while (true) { + sbp.bra = sbp.cursor; + among_var = sbp.find_among(a_0, 3); + if (among_var) { + sbp.ket = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("i"); + continue; + case 2: + sbp.slice_from("u"); + continue; + case 3: + if (sbp.cursor >= sbp.limit) + break; + sbp.cursor++; + continue; + } + } + break; + } + } + + function r_RV() { + return I_pV <= sbp.cursor; + } + + function r_R1() { + return I_p1 <= sbp.cursor; + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function r_step_0() { + var among_var, v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_1, 16); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + sbp.slice_from("a"); + break; + case 3: + sbp.slice_from("e"); + break; + case 4: + sbp.slice_from("i"); + break; + case 5: + v_1 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(2, "ab")) { + sbp.cursor = sbp.limit - v_1; + sbp.slice_from("i"); + } + break; + case 6: + sbp.slice_from("at"); + break; + case 7: + sbp.slice_from("a\u0163i"); + break; + } + } + } + } + + function r_combo_suffix() { + var among_var, v_1 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 46); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R1()) { + switch (among_var) { + case 1: + sbp.slice_from("abil"); + break; + case 2: + sbp.slice_from("ibil"); + break; + case 3: + sbp.slice_from("iv"); + break; + case 4: + sbp.slice_from("ic"); + break; + case 5: + sbp.slice_from("at"); + break; + case 6: + sbp.slice_from("it"); + break; + } + B_standard_suffix_removed = true; + sbp.cursor = sbp.limit - v_1; + return true; + } + } + return false; + } + + function r_standard_suffix() { + var among_var, v_1; + B_standard_suffix_removed = false; + while (true) { + v_1 = sbp.limit - sbp.cursor; + if (!r_combo_suffix()) { + sbp.cursor = sbp.limit - v_1; + break; + } + } + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_3, 62); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2()) { + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + if (sbp.eq_s_b(1, "\u0163")) { + sbp.bra = sbp.cursor; + sbp.slice_from("t"); + } + break; + case 3: + sbp.slice_from("ist"); + break; + } + B_standard_suffix_removed = true; + } + } + } + + function r_verb_suffix() { + var among_var, v_1, v_2; + if (sbp.cursor >= I_pV) { + v_1 = sbp.limit_backward; + sbp.limit_backward = I_pV; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_4, 94); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + v_2 = sbp.limit - sbp.cursor; + if (!sbp.out_grouping_b(g_v, 97, 259)) { + sbp.cursor = sbp.limit - v_2; + if (!sbp.eq_s_b(1, "u")) + break; + } + case 2: + sbp.slice_del(); + break; + } + } + sbp.limit_backward = v_1; + } + } + + function r_vowel_suffix() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_5, 5); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_RV() && among_var == 1) + sbp.slice_del(); + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_prelude(); + sbp.cursor = v_1; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_step_0(); + sbp.cursor = sbp.limit; + r_standard_suffix(); + sbp.cursor = sbp.limit; + if (!B_standard_suffix_removed) { + sbp.cursor = sbp.limit; + r_verb_suffix(); + sbp.cursor = sbp.limit; + } + r_vowel_suffix(); + sbp.cursor = sbp.limit_backward; + r_postlude(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.ro.stemmer, 'stemmer-ro'); + + lunr.ro.stopWordFilter = lunr.generateStopWordFilter('acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.ro.stopWordFilter, 'stopWordFilter-ro'); + }; +})) \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/lunr/lunr.ru.js b/themes/LoveIt/assets/lib/lunr/lunr.ru.js new file mode 100644 index 00000000..3ab86391 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.ru.js @@ -0,0 +1,391 @@ +/*! + * Lunr languages, `Russian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.ru = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.ru.trimmer, + lunr.ru.stopWordFilter, + lunr.ru.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.ru.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.ru.wordCharacters = "\u0400-\u0484\u0487-\u052F\u1D2B\u1D78\u2DE0-\u2DFF\uA640-\uA69F\uFE2E\uFE2F"; + lunr.ru.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.ru.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.ru.trimmer, 'trimmer-ru'); + + /* lunr stemmer function */ + lunr.ru.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function RussianStemmer() { + var a_0 = [new Among("\u0432", -1, 1), new Among("\u0438\u0432", 0, 2), + new Among("\u044B\u0432", 0, 2), + new Among("\u0432\u0448\u0438", -1, 1), + new Among("\u0438\u0432\u0448\u0438", 3, 2), + new Among("\u044B\u0432\u0448\u0438", 3, 2), + new Among("\u0432\u0448\u0438\u0441\u044C", -1, 1), + new Among("\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2), + new Among("\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2) + ], + a_1 = [ + new Among("\u0435\u0435", -1, 1), new Among("\u0438\u0435", -1, 1), + new Among("\u043E\u0435", -1, 1), new Among("\u044B\u0435", -1, 1), + new Among("\u0438\u043C\u0438", -1, 1), + new Among("\u044B\u043C\u0438", -1, 1), + new Among("\u0435\u0439", -1, 1), new Among("\u0438\u0439", -1, 1), + new Among("\u043E\u0439", -1, 1), new Among("\u044B\u0439", -1, 1), + new Among("\u0435\u043C", -1, 1), new Among("\u0438\u043C", -1, 1), + new Among("\u043E\u043C", -1, 1), new Among("\u044B\u043C", -1, 1), + new Among("\u0435\u0433\u043E", -1, 1), + new Among("\u043E\u0433\u043E", -1, 1), + new Among("\u0435\u043C\u0443", -1, 1), + new Among("\u043E\u043C\u0443", -1, 1), + new Among("\u0438\u0445", -1, 1), new Among("\u044B\u0445", -1, 1), + new Among("\u0435\u044E", -1, 1), new Among("\u043E\u044E", -1, 1), + new Among("\u0443\u044E", -1, 1), new Among("\u044E\u044E", -1, 1), + new Among("\u0430\u044F", -1, 1), new Among("\u044F\u044F", -1, 1) + ], + a_2 = [ + new Among("\u0435\u043C", -1, 1), new Among("\u043D\u043D", -1, 1), + new Among("\u0432\u0448", -1, 1), + new Among("\u0438\u0432\u0448", 2, 2), + new Among("\u044B\u0432\u0448", 2, 2), new Among("\u0449", -1, 1), + new Among("\u044E\u0449", 5, 1), + new Among("\u0443\u044E\u0449", 6, 2) + ], + a_3 = [ + new Among("\u0441\u044C", -1, 1), new Among("\u0441\u044F", -1, 1) + ], + a_4 = [ + new Among("\u043B\u0430", -1, 1), + new Among("\u0438\u043B\u0430", 0, 2), + new Among("\u044B\u043B\u0430", 0, 2), + new Among("\u043D\u0430", -1, 1), + new Among("\u0435\u043D\u0430", 3, 2), + new Among("\u0435\u0442\u0435", -1, 1), + new Among("\u0438\u0442\u0435", -1, 2), + new Among("\u0439\u0442\u0435", -1, 1), + new Among("\u0435\u0439\u0442\u0435", 7, 2), + new Among("\u0443\u0439\u0442\u0435", 7, 2), + new Among("\u043B\u0438", -1, 1), + new Among("\u0438\u043B\u0438", 10, 2), + new Among("\u044B\u043B\u0438", 10, 2), new Among("\u0439", -1, 1), + new Among("\u0435\u0439", 13, 2), new Among("\u0443\u0439", 13, 2), + new Among("\u043B", -1, 1), new Among("\u0438\u043B", 16, 2), + new Among("\u044B\u043B", 16, 2), new Among("\u0435\u043C", -1, 1), + new Among("\u0438\u043C", -1, 2), new Among("\u044B\u043C", -1, 2), + new Among("\u043D", -1, 1), new Among("\u0435\u043D", 22, 2), + new Among("\u043B\u043E", -1, 1), + new Among("\u0438\u043B\u043E", 24, 2), + new Among("\u044B\u043B\u043E", 24, 2), + new Among("\u043D\u043E", -1, 1), + new Among("\u0435\u043D\u043E", 27, 2), + new Among("\u043D\u043D\u043E", 27, 1), + new Among("\u0435\u0442", -1, 1), + new Among("\u0443\u0435\u0442", 30, 2), + new Among("\u0438\u0442", -1, 2), new Among("\u044B\u0442", -1, 2), + new Among("\u044E\u0442", -1, 1), + new Among("\u0443\u044E\u0442", 34, 2), + new Among("\u044F\u0442", -1, 2), new Among("\u043D\u044B", -1, 1), + new Among("\u0435\u043D\u044B", 37, 2), + new Among("\u0442\u044C", -1, 1), + new Among("\u0438\u0442\u044C", 39, 2), + new Among("\u044B\u0442\u044C", 39, 2), + new Among("\u0435\u0448\u044C", -1, 1), + new Among("\u0438\u0448\u044C", -1, 2), new Among("\u044E", -1, 2), + new Among("\u0443\u044E", 44, 2) + ], + a_5 = [ + new Among("\u0430", -1, 1), new Among("\u0435\u0432", -1, 1), + new Among("\u043E\u0432", -1, 1), new Among("\u0435", -1, 1), + new Among("\u0438\u0435", 3, 1), new Among("\u044C\u0435", 3, 1), + new Among("\u0438", -1, 1), new Among("\u0435\u0438", 6, 1), + new Among("\u0438\u0438", 6, 1), + new Among("\u0430\u043C\u0438", 6, 1), + new Among("\u044F\u043C\u0438", 6, 1), + new Among("\u0438\u044F\u043C\u0438", 10, 1), + new Among("\u0439", -1, 1), new Among("\u0435\u0439", 12, 1), + new Among("\u0438\u0435\u0439", 13, 1), + new Among("\u0438\u0439", 12, 1), new Among("\u043E\u0439", 12, 1), + new Among("\u0430\u043C", -1, 1), new Among("\u0435\u043C", -1, 1), + new Among("\u0438\u0435\u043C", 18, 1), + new Among("\u043E\u043C", -1, 1), new Among("\u044F\u043C", -1, 1), + new Among("\u0438\u044F\u043C", 21, 1), new Among("\u043E", -1, 1), + new Among("\u0443", -1, 1), new Among("\u0430\u0445", -1, 1), + new Among("\u044F\u0445", -1, 1), + new Among("\u0438\u044F\u0445", 26, 1), new Among("\u044B", -1, 1), + new Among("\u044C", -1, 1), new Among("\u044E", -1, 1), + new Among("\u0438\u044E", 30, 1), new Among("\u044C\u044E", 30, 1), + new Among("\u044F", -1, 1), new Among("\u0438\u044F", 33, 1), + new Among("\u044C\u044F", 33, 1) + ], + a_6 = [ + new Among("\u043E\u0441\u0442", -1, 1), + new Among("\u043E\u0441\u0442\u044C", -1, 1) + ], + a_7 = [ + new Among("\u0435\u0439\u0448\u0435", -1, 1), + new Among("\u043D", -1, 2), new Among("\u0435\u0439\u0448", -1, 1), + new Among("\u044C", -1, 3) + ], + g_v = [33, 65, 8, 232], + I_p2, I_pV, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr3() { + while (!sbp.in_grouping(g_v, 1072, 1103)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function habr4() { + while (!sbp.out_grouping(g_v, 1072, 1103)) { + if (sbp.cursor >= sbp.limit) + return false; + sbp.cursor++; + } + return true; + } + + function r_mark_regions() { + I_pV = sbp.limit; + I_p2 = I_pV; + if (habr3()) { + I_pV = sbp.cursor; + if (habr4()) + if (habr3()) + if (habr4()) + I_p2 = sbp.cursor; + } + } + + function r_R2() { + return I_p2 <= sbp.cursor; + } + + function habr2(a, n) { + var among_var, v_1; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a, n); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + v_1 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "\u0430")) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(1, "\u044F")) + return false; + } + case 2: + sbp.slice_del(); + break; + } + return true; + } + return false; + } + + function r_perfective_gerund() { + return habr2(a_0, 9); + } + + function habr1(a, n) { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a, n); + if (among_var) { + sbp.bra = sbp.cursor; + if (among_var == 1) + sbp.slice_del(); + return true; + } + return false; + } + + function r_adjective() { + return habr1(a_1, 26); + } + + function r_adjectival() { + var among_var; + if (r_adjective()) { + habr2(a_2, 8); + return true; + } + return false; + } + + function r_reflexive() { + return habr1(a_3, 2); + } + + function r_verb() { + return habr2(a_4, 46); + } + + function r_noun() { + habr1(a_5, 36); + } + + function r_derivational() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_6, 2); + if (among_var) { + sbp.bra = sbp.cursor; + if (r_R2() && among_var == 1) + sbp.slice_del(); + } + } + + function r_tidy_up() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_7, 4); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (!sbp.eq_s_b(1, "\u043D")) + break; + sbp.bra = sbp.cursor; + case 2: + if (!sbp.eq_s_b(1, "\u043D")) + break; + case 3: + sbp.slice_del(); + break; + } + } + } + this.stem = function() { + r_mark_regions(); + sbp.cursor = sbp.limit; + if (sbp.cursor < I_pV) + return false; + sbp.limit_backward = I_pV; + if (!r_perfective_gerund()) { + sbp.cursor = sbp.limit; + if (!r_reflexive()) + sbp.cursor = sbp.limit; + if (!r_adjectival()) { + sbp.cursor = sbp.limit; + if (!r_verb()) { + sbp.cursor = sbp.limit; + r_noun(); + } + } + } + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + if (sbp.eq_s_b(1, "\u0438")) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else + sbp.cursor = sbp.limit; + r_derivational(); + sbp.cursor = sbp.limit; + r_tidy_up(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.ru.stemmer, 'stemmer-ru'); + + lunr.ru.stopWordFilter = lunr.generateStopWordFilter('алло без близко более больше будем будет будете будешь будто буду будут будь бы бывает бывь был была были было быть в важная важное важные важный вам вами вас ваш ваша ваше ваши вверх вдали вдруг ведь везде весь вниз внизу во вокруг вон восемнадцатый восемнадцать восемь восьмой вот впрочем времени время все всегда всего всем всеми всему всех всею всю всюду вся всё второй вы г где говорил говорит год года году да давно даже далеко дальше даром два двадцатый двадцать две двенадцатый двенадцать двух девятнадцатый девятнадцать девятый девять действительно дел день десятый десять для до довольно долго должно другая другие других друго другое другой е его ее ей ему если есть еще ещё ею её ж же жизнь за занят занята занято заняты затем зато зачем здесь значит и из или им именно иметь ими имя иногда их к каждая каждое каждые каждый кажется как какая какой кем когда кого ком кому конечно которая которого которой которые который которых кроме кругом кто куда лет ли лишь лучше люди м мало между меля менее меньше меня миллионов мимо мира мне много многочисленная многочисленное многочисленные многочисленный мной мною мог могут мож может можно можхо мои мой мор мочь моя моё мы на наверху над надо назад наиболее наконец нам нами нас начала наш наша наше наши не него недавно недалеко нее ней нельзя нем немного нему непрерывно нередко несколько нет нею неё ни нибудь ниже низко никогда никуда ними них ничего но ну нужно нх о об оба обычно один одиннадцатый одиннадцать однажды однако одного одной около он она они оно опять особенно от отовсюду отсюда очень первый перед по под пожалуйста позже пока пор пора после посреди потом потому почему почти прекрасно при про просто против процентов пятнадцатый пятнадцать пятый пять раз разве рано раньше рядом с сам сама сами самим самими самих само самого самой самом самому саму свое своего своей свои своих свою сеаой себе себя сегодня седьмой сейчас семнадцатый семнадцать семь сих сказал сказала сказать сколько слишком сначала снова со собой собою совсем спасибо стал суть т та так такая также такие такое такой там твой твоя твоё те тебе тебя тем теми теперь тех то тобой тобою тогда того тоже только том тому тот тою третий три тринадцатый тринадцать ту туда тут ты тысяч у уж уже уметь хорошо хотеть хоть хотя хочешь часто чаще чего человек чем чему через четвертый четыре четырнадцатый четырнадцать что чтоб чтобы чуть шестнадцатый шестнадцать шестой шесть эта эти этим этими этих это этого этой этом этому этот эту я а'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.ru.stopWordFilter, 'stopWordFilter-ru'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.segmentit.js b/themes/LoveIt/assets/lib/lunr/lunr.segmentit.js new file mode 100644 index 00000000..4c9c9ac2 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.segmentit.js @@ -0,0 +1,174 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i[]{}=!@#$%^&*()~`。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<­__-ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼+-×÷﹢﹣±/=≈≡≠∧∨∑∏∪∩∈⊙⌒⊥∥∠∽≌<>≤≥≮≯∧∨√﹙﹚[]﹛﹜∫∮∝∞⊙∏┌┬┐┏┳┓╒╤╕─│├┼┤┣╋┫╞╪╡━┃└┴┘┗┻┛╘╧╛┄┆┅┇╭─╮┏━┓╔╦╗┈┊│╳│┃┃╠╬╣┉┋╰─╯┗━┛╚╩╝╲╱┞┟┠┡┢┦┧┨┩┪╉╊┭┮┯┰┱┲┵┶┷┸╇╈┹┺┽┾┿╀╁╂╃╄╅╆○◇□△▽☆●◆■▲▼★♠♥♦♣☼☺◘♀√☻◙♂×▁▂▃▄▅▆▇█⊙◎۞卍卐╱╲▁▏↖↗↑←↔◤◥╲╱▔▕↙↘↓→↕◣◢∷▒░℡™" +z=z.split("") +var R={},U={} +for(var I in z)if(""!==z[I]){var L=z[I].length +U[R[z[I]]=L]||(U[L]={}),U[L][z[I]]=L}var j=function(){function s(){return r(this,s),u(this,i(s).apply(this,arguments))}return x(s,_),e(s,[{key:"split",value:function(n){for(var x,e=this.segment.POSTAG,c=[],f=0;x=n[f];f++)if(0= min) { + ch -= min; + if (s[ch >> 3] & (0X1 << (ch & 0X7))) { + this.cursor++; + return true; + } + } + } + return false; + }, + in_grouping_b : function(s, min, max) { + if (this.cursor > this.limit_backward) { + var ch = current.charCodeAt(this.cursor - 1); + if (ch <= max && ch >= min) { + ch -= min; + if (s[ch >> 3] & (0X1 << (ch & 0X7))) { + this.cursor--; + return true; + } + } + } + return false; + }, + out_grouping : function(s, min, max) { + if (this.cursor < this.limit) { + var ch = current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if (!(s[ch >> 3] & (0X1 << (ch & 0X7)))) { + this.cursor++; + return true; + } + } + return false; + }, + out_grouping_b : function(s, min, max) { + if (this.cursor > this.limit_backward) { + var ch = current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if (!(s[ch >> 3] & (0X1 << (ch & 0X7)))) { + this.cursor--; + return true; + } + } + return false; + }, + eq_s : function(s_size, s) { + if (this.limit - this.cursor < s_size) + return false; + for (var i = 0; i < s_size; i++) + if (current.charCodeAt(this.cursor + i) != s.charCodeAt(i)) + return false; + this.cursor += s_size; + return true; + }, + eq_s_b : function(s_size, s) { + if (this.cursor - this.limit_backward < s_size) + return false; + for (var i = 0; i < s_size; i++) + if (current.charCodeAt(this.cursor - s_size + i) != s + .charCodeAt(i)) + return false; + this.cursor -= s_size; + return true; + }, + find_among : function(v, v_size) { + var i = 0, j = v_size, c = this.cursor, l = this.limit, common_i = 0, common_j = 0, first_key_inspected = false; + while (true) { + var k = i + ((j - i) >> 1), diff = 0, common = common_i < common_j + ? common_i + : common_j, w = v[k]; + for (var i2 = common; i2 < w.s_size; i2++) { + if (c + common == l) { + diff = -1; + break; + } + diff = current.charCodeAt(c + common) - w.s[i2]; + if (diff) + break; + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0 || j == i || first_key_inspected) + break; + first_key_inspected = true; + } + } + while (true) { + var w = v[i]; + if (common_i >= w.s_size) { + this.cursor = c + w.s_size; + if (!w.method) + return w.result; + var res = w.method(); + this.cursor = c + w.s_size; + if (res) + return w.result; + } + i = w.substring_i; + if (i < 0) + return 0; + } + }, + find_among_b : function(v, v_size) { + var i = 0, j = v_size, c = this.cursor, lb = this.limit_backward, common_i = 0, common_j = 0, first_key_inspected = false; + while (true) { + var k = i + ((j - i) >> 1), diff = 0, common = common_i < common_j + ? common_i + : common_j, w = v[k]; + for (var i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common == lb) { + diff = -1; + break; + } + diff = current.charCodeAt(c - 1 - common) - w.s[i2]; + if (diff) + break; + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0 || j == i || first_key_inspected) + break; + first_key_inspected = true; + } + } + while (true) { + var w = v[i]; + if (common_i >= w.s_size) { + this.cursor = c - w.s_size; + if (!w.method) + return w.result; + var res = w.method(); + this.cursor = c - w.s_size; + if (res) + return w.result; + } + i = w.substring_i; + if (i < 0) + return 0; + } + }, + replace_s : function(c_bra, c_ket, s) { + var adjustment = s.length - (c_ket - c_bra), left = current + .substring(0, c_bra), right = current.substring(c_ket); + current = left + s + right; + this.limit += adjustment; + if (this.cursor >= c_ket) + this.cursor += adjustment; + else if (this.cursor > c_bra) + this.cursor = c_bra; + return adjustment; + }, + slice_check : function() { + if (this.bra < 0 || this.bra > this.ket || this.ket > this.limit + || this.limit > current.length) + throw ("faulty slice operation"); + }, + slice_from : function(s) { + this.slice_check(); + this.replace_s(this.bra, this.ket, s); + }, + slice_del : function() { + this.slice_from(""); + }, + insert : function(c_bra, c_ket, s) { + var adjustment = this.replace_s(c_bra, c_ket, s); + if (c_bra <= this.bra) + this.bra += adjustment; + if (c_bra <= this.ket) + this.ket += adjustment; + }, + slice_to : function() { + this.slice_check(); + return current.substring(this.bra, this.ket); + }, + eq_v_b : function(s) { + return this.eq_s_b(s.length, s); + } + }; + } + }; + + lunr.trimmerSupport = { + generateTrimmer: function(wordCharacters) { + var startRegex = new RegExp("^[^" + wordCharacters + "]+") + var endRegex = new RegExp("[^" + wordCharacters + "]+$") + + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function (s) { + return s + .replace(startRegex, '') + .replace(endRegex, ''); + }) + } else { // for lunr version 1 + return token + .replace(startRegex, '') + .replace(endRegex, ''); + } + }; + } + } + } +})); diff --git a/themes/LoveIt/assets/lib/lunr/lunr.sv.js b/themes/LoveIt/assets/lib/lunr/lunr.sv.js new file mode 100644 index 00000000..6185733a --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.sv.js @@ -0,0 +1,256 @@ +/*! + * Lunr languages, `Swedish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.sv = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.sv.trimmer, + lunr.sv.stopWordFilter, + lunr.sv.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.sv.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.sv.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.sv.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.sv.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.sv.trimmer, 'trimmer-sv'); + + /* lunr stemmer function */ + lunr.sv.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function SwedishStemmer() { + var a_0 = [new Among("a", -1, 1), new Among("arna", 0, 1), + new Among("erna", 0, 1), new Among("heterna", 2, 1), + new Among("orna", 0, 1), new Among("ad", -1, 1), + new Among("e", -1, 1), new Among("ade", 6, 1), + new Among("ande", 6, 1), new Among("arne", 6, 1), + new Among("are", 6, 1), new Among("aste", 6, 1), + new Among("en", -1, 1), new Among("anden", 12, 1), + new Among("aren", 12, 1), new Among("heten", 12, 1), + new Among("ern", -1, 1), new Among("ar", -1, 1), + new Among("er", -1, 1), new Among("heter", 18, 1), + new Among("or", -1, 1), new Among("s", -1, 2), + new Among("as", 21, 1), new Among("arnas", 22, 1), + new Among("ernas", 22, 1), new Among("ornas", 22, 1), + new Among("es", 21, 1), new Among("ades", 26, 1), + new Among("andes", 26, 1), new Among("ens", 21, 1), + new Among("arens", 29, 1), new Among("hetens", 29, 1), + new Among("erns", 21, 1), new Among("at", -1, 1), + new Among("andet", -1, 1), new Among("het", -1, 1), + new Among("ast", -1, 1) + ], + a_1 = [new Among("dd", -1, -1), + new Among("gd", -1, -1), new Among("nn", -1, -1), + new Among("dt", -1, -1), new Among("gt", -1, -1), + new Among("kt", -1, -1), new Among("tt", -1, -1) + ], + a_2 = [ + new Among("ig", -1, 1), new Among("lig", 0, 1), + new Among("els", -1, 1), new Among("fullt", -1, 3), + new Among("l\u00F6st", -1, 2) + ], + g_v = [17, 65, 16, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 + ], + g_s_ending = [119, 127, 149], + I_x, I_p1, sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function r_mark_regions() { + var v_1, c = sbp.cursor + 3; + I_p1 = sbp.limit; + if (0 <= c || c <= sbp.limit) { + I_x = c; + while (true) { + v_1 = sbp.cursor; + if (sbp.in_grouping(g_v, 97, 246)) { + sbp.cursor = v_1; + break; + } + sbp.cursor = v_1; + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + while (!sbp.out_grouping(g_v, 97, 246)) { + if (sbp.cursor >= sbp.limit) + return; + sbp.cursor++; + } + I_p1 = sbp.cursor; + if (I_p1 < I_x) + I_p1 = I_x; + } + } + + function r_main_suffix() { + var among_var, v_2 = sbp.limit_backward; + if (sbp.cursor >= I_p1) { + sbp.limit_backward = I_p1; + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_0, 37); + sbp.limit_backward = v_2; + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + if (sbp.in_grouping_b(g_s_ending, 98, 121)) + sbp.slice_del(); + break; + } + } + } + } + + function r_consonant_pair() { + var v_1 = sbp.limit_backward; + if (sbp.cursor >= I_p1) { + sbp.limit_backward = I_p1; + sbp.cursor = sbp.limit; + if (sbp.find_among_b(a_1, 7)) { + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + if (sbp.cursor > sbp.limit_backward) { + sbp.bra = --sbp.cursor; + sbp.slice_del(); + } + } + sbp.limit_backward = v_1; + } + } + + function r_other_suffix() { + var among_var, v_2; + if (sbp.cursor >= I_p1) { + v_2 = sbp.limit_backward; + sbp.limit_backward = I_p1; + sbp.cursor = sbp.limit; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_2, 5); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_del(); + break; + case 2: + sbp.slice_from("l\u00F6s"); + break; + case 3: + sbp.slice_from("full"); + break; + } + } + sbp.limit_backward = v_2; + } + } + this.stem = function() { + var v_1 = sbp.cursor; + r_mark_regions(); + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_main_suffix(); + sbp.cursor = sbp.limit; + r_consonant_pair(); + sbp.cursor = sbp.limit; + r_other_suffix(); + return true; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.sv.stemmer, 'stemmer-sv'); + + lunr.sv.stopWordFilter = lunr.generateStopWordFilter('alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.sv.stopWordFilter, 'stopWordFilter-sv'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.th.js b/themes/LoveIt/assets/lib/lunr/lunr.th.js new file mode 100644 index 00000000..28a134de --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.th.js @@ -0,0 +1,97 @@ +/*! + * Lunr languages, `Thai` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2017, Keerati Thiwanruk + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* + Thai tokenization is the same to Japanense, which does not take into account spaces. + So, it uses the same logic to assign tokenization function due to different Lunr versions. + */ + var isLunr2 = lunr.version[0] == "2"; + + /* register specific locale function */ + lunr.th = function() { + this.pipeline.reset(); + this.pipeline.add( + /*lunr.th.stopWordFilter,*/ + lunr.th.trimmer + ); + + if (isLunr2) { // for lunr version 2.0.0 + this.tokenizer = lunr.th.tokenizer; + } else { + if (lunr.tokenizer) { // for lunr version 0.6.0 + lunr.tokenizer = lunr.th.tokenizer; + } + if (this.tokenizerFn) { // for lunr version 0.7.0 -> 1.0.0 + this.tokenizerFn = lunr.th.tokenizer; + } + } + }; + + /* lunr trimmer function */ + lunr.th.wordCharacters = "[\u0e00-\u0e7f]"; + lunr.th.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.th.wordCharacters); + lunr.Pipeline.registerFunction(lunr.th.trimmer, 'trimmer-th'); + + var segmenter = lunr.wordcut; + segmenter.init(); + lunr.th.tokenizer = function (obj) { + //console.log(obj); + if (!arguments.length || obj == null || obj == undefined) return [] + if (Array.isArray(obj)) return obj.map(function (t) { return isLunr2 ? new lunr.Token(t) : t }) + + var str = obj.toString().replace(/^\s+/, ''); + return segmenter.cut(str).split('|'); + } + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.tr.js b/themes/LoveIt/assets/lib/lunr/lunr.tr.js new file mode 100644 index 00000000..e04c7428 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.tr.js @@ -0,0 +1,1087 @@ +/*! + * Lunr languages, `Turkish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.tr = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.tr.trimmer, + lunr.tr.stopWordFilter, + lunr.tr.stemmer + ); + + // for lunr version 2 + // this is necessary so that every searched word is also stemmed before + // in lunr <= 1 this is not needed, as it is done using the normal pipeline + if (this.searchPipeline) { + this.searchPipeline.reset(); + this.searchPipeline.add(lunr.tr.stemmer) + } + }; + + /* lunr trimmer function */ + lunr.tr.wordCharacters = "A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A"; + lunr.tr.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.tr.wordCharacters); + + lunr.Pipeline.registerFunction(lunr.tr.trimmer, 'trimmer-tr'); + + /* lunr stemmer function */ + lunr.tr.stemmer = (function() { + /* create the wrapped stemmer object */ + var Among = lunr.stemmerSupport.Among, + SnowballProgram = lunr.stemmerSupport.SnowballProgram, + st = new function TurkishStemmer() { + var a_0 = [new Among("m", -1, -1), new Among("n", -1, -1), + new Among("miz", -1, -1), new Among("niz", -1, -1), + new Among("muz", -1, -1), new Among("nuz", -1, -1), + new Among("m\u00FCz", -1, -1), new Among("n\u00FCz", -1, -1), + new Among("m\u0131z", -1, -1), new Among("n\u0131z", -1, -1) + ], + a_1 = [ + new Among("leri", -1, -1), new Among("lar\u0131", -1, -1) + ], + a_2 = [ + new Among("ni", -1, -1), new Among("nu", -1, -1), + new Among("n\u00FC", -1, -1), new Among("n\u0131", -1, -1) + ], + a_3 = [ + new Among("in", -1, -1), new Among("un", -1, -1), + new Among("\u00FCn", -1, -1), new Among("\u0131n", -1, -1) + ], + a_4 = [ + new Among("a", -1, -1), new Among("e", -1, -1) + ], + a_5 = [ + new Among("na", -1, -1), new Among("ne", -1, -1) + ], + a_6 = [ + new Among("da", -1, -1), new Among("ta", -1, -1), + new Among("de", -1, -1), new Among("te", -1, -1) + ], + a_7 = [ + new Among("nda", -1, -1), new Among("nde", -1, -1) + ], + a_8 = [ + new Among("dan", -1, -1), new Among("tan", -1, -1), + new Among("den", -1, -1), new Among("ten", -1, -1) + ], + a_9 = [ + new Among("ndan", -1, -1), new Among("nden", -1, -1) + ], + a_10 = [ + new Among("la", -1, -1), new Among("le", -1, -1) + ], + a_11 = [ + new Among("ca", -1, -1), new Among("ce", -1, -1) + ], + a_12 = [ + new Among("im", -1, -1), new Among("um", -1, -1), + new Among("\u00FCm", -1, -1), new Among("\u0131m", -1, -1) + ], + a_13 = [ + new Among("sin", -1, -1), new Among("sun", -1, -1), + new Among("s\u00FCn", -1, -1), new Among("s\u0131n", -1, -1) + ], + a_14 = [ + new Among("iz", -1, -1), new Among("uz", -1, -1), + new Among("\u00FCz", -1, -1), new Among("\u0131z", -1, -1) + ], + a_15 = [ + new Among("siniz", -1, -1), new Among("sunuz", -1, -1), + new Among("s\u00FCn\u00FCz", -1, -1), + new Among("s\u0131n\u0131z", -1, -1) + ], + a_16 = [ + new Among("lar", -1, -1), new Among("ler", -1, -1) + ], + a_17 = [ + new Among("niz", -1, -1), new Among("nuz", -1, -1), + new Among("n\u00FCz", -1, -1), new Among("n\u0131z", -1, -1) + ], + a_18 = [ + new Among("dir", -1, -1), new Among("tir", -1, -1), + new Among("dur", -1, -1), new Among("tur", -1, -1), + new Among("d\u00FCr", -1, -1), new Among("t\u00FCr", -1, -1), + new Among("d\u0131r", -1, -1), new Among("t\u0131r", -1, -1) + ], + a_19 = [ + new Among("cas\u0131na", -1, -1), new Among("cesine", -1, -1) + ], + a_20 = [ + new Among("di", -1, -1), new Among("ti", -1, -1), + new Among("dik", -1, -1), new Among("tik", -1, -1), + new Among("duk", -1, -1), new Among("tuk", -1, -1), + new Among("d\u00FCk", -1, -1), new Among("t\u00FCk", -1, -1), + new Among("d\u0131k", -1, -1), new Among("t\u0131k", -1, -1), + new Among("dim", -1, -1), new Among("tim", -1, -1), + new Among("dum", -1, -1), new Among("tum", -1, -1), + new Among("d\u00FCm", -1, -1), new Among("t\u00FCm", -1, -1), + new Among("d\u0131m", -1, -1), new Among("t\u0131m", -1, -1), + new Among("din", -1, -1), new Among("tin", -1, -1), + new Among("dun", -1, -1), new Among("tun", -1, -1), + new Among("d\u00FCn", -1, -1), new Among("t\u00FCn", -1, -1), + new Among("d\u0131n", -1, -1), new Among("t\u0131n", -1, -1), + new Among("du", -1, -1), new Among("tu", -1, -1), + new Among("d\u00FC", -1, -1), new Among("t\u00FC", -1, -1), + new Among("d\u0131", -1, -1), new Among("t\u0131", -1, -1) + ], + a_21 = [ + new Among("sa", -1, -1), new Among("se", -1, -1), + new Among("sak", -1, -1), new Among("sek", -1, -1), + new Among("sam", -1, -1), new Among("sem", -1, -1), + new Among("san", -1, -1), new Among("sen", -1, -1) + ], + a_22 = [ + new Among("mi\u015F", -1, -1), new Among("mu\u015F", -1, -1), + new Among("m\u00FC\u015F", -1, -1), + new Among("m\u0131\u015F", -1, -1) + ], + a_23 = [new Among("b", -1, 1), + new Among("c", -1, 2), new Among("d", -1, 3), + new Among("\u011F", -1, 4) + ], + g_vowel = [17, 65, 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 + ], + g_U = [ + 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 1 + ], + g_vowel1 = [1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 + ], + g_vowel2 = [17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 + ], + g_vowel3 = [1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1 + ], + g_vowel4 = [17], + g_vowel5 = [65], + g_vowel6 = [65], + B_c_s_n_s, I_strlen, g_habr = [ + ["a", g_vowel1, 97, 305], + ["e", g_vowel2, 101, 252], + ["\u0131", g_vowel3, 97, 305], + ["i", g_vowel4, 101, 105], + ["o", g_vowel5, 111, 117], + ["\u00F6", g_vowel6, 246, 252], + ["u", g_vowel5, 111, 117] + ], + sbp = new SnowballProgram(); + this.setCurrent = function(word) { + sbp.setCurrent(word); + }; + this.getCurrent = function() { + return sbp.getCurrent(); + }; + + function habr1(g_v, n1, n2) { + while (true) { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_v, n1, n2)) { + sbp.cursor = sbp.limit - v_1; + break; + } + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor <= sbp.limit_backward) + return false; + sbp.cursor--; + } + return true; + } + + function r_check_vowel_harmony() { + var v_1, v_2; + v_1 = sbp.limit - sbp.cursor; + habr1(g_vowel, 97, 305); + for (var i = 0; i < g_habr.length; i++) { + v_2 = sbp.limit - sbp.cursor; + var habr = g_habr[i]; + if (sbp.eq_s_b(1, habr[0]) && habr1(habr[1], habr[2], habr[3])) { + sbp.cursor = sbp.limit - v_1; + return true; + } + sbp.cursor = sbp.limit - v_2; + } + sbp.cursor = sbp.limit - v_2; + if (!sbp.eq_s_b(1, "\u00FC") || !habr1(g_vowel6, 246, 252)) + return false; + sbp.cursor = sbp.limit - v_1; + return true; + } + + function habr2(f1, f2) { + var v_1 = sbp.limit - sbp.cursor, + v_2; + if (f1()) { + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor > sbp.limit_backward) { + sbp.cursor--; + v_2 = sbp.limit - sbp.cursor; + if (f2()) { + sbp.cursor = sbp.limit - v_2; + return true; + } + } + } + sbp.cursor = sbp.limit - v_1; + if (f1()) { + sbp.cursor = sbp.limit - v_1; + return false; + } + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor <= sbp.limit_backward) + return false; + sbp.cursor--; + if (!f2()) + return false; + sbp.cursor = sbp.limit - v_1; + return true; + } + + function habr3(f1) { + return habr2(f1, function() { + return sbp.in_grouping_b(g_vowel, 97, 305); + }); + } + + function r_mark_suffix_with_optional_n_consonant() { + return habr3(function() { + return sbp.eq_s_b(1, "n"); + }); + } + + function r_mark_suffix_with_optional_s_consonant() { + return habr3(function() { + return sbp.eq_s_b(1, "s"); + }); + } + + function r_mark_suffix_with_optional_y_consonant() { + return habr3(function() { + return sbp.eq_s_b(1, "y"); + }); + } + + function r_mark_suffix_with_optional_U_vowel() { + return habr2(function() { + return sbp.in_grouping_b(g_U, 105, 305); + }, function() { + return sbp.out_grouping_b(g_vowel, 97, 305); + }); + } + + function r_mark_possessives() { + return sbp.find_among_b(a_0, 10) && + r_mark_suffix_with_optional_U_vowel(); + } + + function r_mark_sU() { + return r_check_vowel_harmony() && sbp.in_grouping_b(g_U, 105, 305) && + r_mark_suffix_with_optional_s_consonant(); + } + + function r_mark_lArI() { + return sbp.find_among_b(a_1, 2); + } + + function r_mark_yU() { + return r_check_vowel_harmony() && sbp.in_grouping_b(g_U, 105, 305) && + r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_nU() { + return r_check_vowel_harmony() && sbp.find_among_b(a_2, 4); + } + + function r_mark_nUn() { + return r_check_vowel_harmony() && sbp.find_among_b(a_3, 4) && + r_mark_suffix_with_optional_n_consonant(); + } + + function r_mark_yA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_4, 2) && + r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_nA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_5, 2); + } + + function r_mark_DA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_6, 4); + } + + function r_mark_ndA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_7, 2); + } + + function r_mark_DAn() { + return r_check_vowel_harmony() && sbp.find_among_b(a_8, 4); + } + + function r_mark_ndAn() { + return r_check_vowel_harmony() && sbp.find_among_b(a_9, 2); + } + + function r_mark_ylA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_10, 2) && + r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_ki() { + return sbp.eq_s_b(2, "ki"); + } + + function r_mark_ncA() { + return r_check_vowel_harmony() && sbp.find_among_b(a_11, 2) && + r_mark_suffix_with_optional_n_consonant(); + } + + function r_mark_yUm() { + return r_check_vowel_harmony() && sbp.find_among_b(a_12, 4) && + r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_sUn() { + return r_check_vowel_harmony() && sbp.find_among_b(a_13, 4); + } + + function r_mark_yUz() { + return r_check_vowel_harmony() && sbp.find_among_b(a_14, 4) && + r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_sUnUz() { + return sbp.find_among_b(a_15, 4); + } + + function r_mark_lAr() { + return r_check_vowel_harmony() && sbp.find_among_b(a_16, 2); + } + + function r_mark_nUz() { + return r_check_vowel_harmony() && sbp.find_among_b(a_17, 4); + } + + function r_mark_DUr() { + return r_check_vowel_harmony() && sbp.find_among_b(a_18, 8); + } + + function r_mark_cAsInA() { + return sbp.find_among_b(a_19, 2); + } + + function r_mark_yDU() { + return r_check_vowel_harmony() && sbp.find_among_b(a_20, 32) && + r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_ysA() { + return sbp.find_among_b(a_21, 8) && + r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_ymUs_() { + return r_check_vowel_harmony() && sbp.find_among_b(a_22, 4) && + r_mark_suffix_with_optional_y_consonant(); + } + + function r_mark_yken() { + return sbp.eq_s_b(3, "ken") && + r_mark_suffix_with_optional_y_consonant(); + } + + function habr4() { + var v_1 = sbp.limit - sbp.cursor; + if (!r_mark_ymUs_()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yDU()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ysA()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yken()) + return true; + } + } + } + return false; + } + + function habr5() { + if (r_mark_cAsInA()) { + var v_1 = sbp.limit - sbp.cursor; + if (!r_mark_sUnUz()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_lAr()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yUm()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_sUn()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yUz()) + sbp.cursor = sbp.limit - v_1; + } + } + } + } + if (r_mark_ymUs_()) + return false; + } + return true; + } + + function habr6() { + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + var v_1 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (!r_mark_DUr()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yDU()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ysA()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ymUs_()) + sbp.cursor = sbp.limit - v_1; + } + } + } + B_c_s_n_s = false; + return false; + } + return true; + } + + function habr7() { + if (!r_mark_nUz()) + return true; + var v_1 = sbp.limit - sbp.cursor; + if (!r_mark_yDU()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ysA()) + return true; + } + return false; + } + + function habr8() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + if (!r_mark_sUnUz()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yUz()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_sUn()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yUm()) + return true; + } + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_2 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (!r_mark_ymUs_()) + sbp.cursor = sbp.limit - v_2; + return false; + } + + function r_stem_nominal_verb_suffixes() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + sbp.ket = sbp.cursor; + B_c_s_n_s = true; + if (habr4()) { + sbp.cursor = sbp.limit - v_1; + if (habr5()) { + sbp.cursor = sbp.limit - v_1; + if (habr6()) { + sbp.cursor = sbp.limit - v_1; + if (habr7()) { + sbp.cursor = sbp.limit - v_1; + if (habr8()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_DUr()) + return; + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (!r_mark_sUnUz()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_lAr()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_yUm()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_sUn()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_yUz()) + sbp.cursor = sbp.limit - v_2; + } + } + } + } + if (!r_mark_ymUs_()) + sbp.cursor = sbp.limit - v_2; + } + } + } + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + } + + function r_stem_suffix_chain_before_ki() { + var v_1, v_2, v_3, v_4; + sbp.ket = sbp.cursor; + if (r_mark_ki()) { + v_1 = sbp.limit - sbp.cursor; + if (r_mark_DA()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_2 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } else { + sbp.cursor = sbp.limit - v_2; + if (r_mark_possessives()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } + } + return true; + } + sbp.cursor = sbp.limit - v_1; + if (r_mark_nUn()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_3 = sbp.limit - sbp.cursor; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else { + sbp.cursor = sbp.limit - v_3; + sbp.ket = sbp.cursor; + if (!r_mark_possessives()) { + sbp.cursor = sbp.limit - v_3; + if (!r_mark_sU()) { + sbp.cursor = sbp.limit - v_3; + if (!r_stem_suffix_chain_before_ki()) + return true; + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki() + } + } + return true; + } + sbp.cursor = sbp.limit - v_1; + if (r_mark_ndA()) { + v_4 = sbp.limit - sbp.cursor; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else { + sbp.cursor = sbp.limit - v_4; + if (r_mark_sU()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } else { + sbp.cursor = sbp.limit - v_4; + if (!r_stem_suffix_chain_before_ki()) + return false; + } + } + return true; + } + } + return false; + } + + function habr9(v_1) { + sbp.ket = sbp.cursor; + if (!r_mark_ndA()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_nA()) + return false; + } + var v_2 = sbp.limit - sbp.cursor; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else { + sbp.cursor = sbp.limit - v_2; + if (r_mark_sU()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } else { + sbp.cursor = sbp.limit - v_2; + if (!r_stem_suffix_chain_before_ki()) + return false; + } + } + return true; + } + + function habr10(v_1) { + sbp.ket = sbp.cursor; + if (!r_mark_ndAn()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_nU()) + return false; + } + var v_2 = sbp.limit - sbp.cursor; + if (!r_mark_sU()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_lArI()) + return false; + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + return true; + } + + function habr11() { + var v_1 = sbp.limit - sbp.cursor, + v_2; + sbp.ket = sbp.cursor; + if (!r_mark_nUn()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_ylA()) + return false; + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_2 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + if (r_stem_suffix_chain_before_ki()) + return true; + } + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (!r_mark_possessives()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_sU()) { + sbp.cursor = sbp.limit - v_2; + if (!r_stem_suffix_chain_before_ki()) + return true; + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + return true; + } + + function habr12() { + var v_1 = sbp.limit - sbp.cursor, + v_2, v_3; + sbp.ket = sbp.cursor; + if (!r_mark_DA()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yU()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_yA()) + return false; + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_2 = sbp.limit - sbp.cursor; + if (r_mark_possessives()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_3 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (!r_mark_lAr()) + sbp.cursor = sbp.limit - v_3; + } else { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_lAr()) + return true; + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + r_stem_suffix_chain_before_ki(); + return true; + } + + function r_stem_noun_suffixes() { + var v_1 = sbp.limit - sbp.cursor, + v_2, v_3; + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + return; + } + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (r_mark_ncA()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + v_2 = sbp.limit - sbp.cursor; + sbp.ket = sbp.cursor; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + } else { + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (!r_mark_possessives()) { + sbp.cursor = sbp.limit - v_2; + if (!r_mark_sU()) { + sbp.cursor = sbp.limit - v_2; + sbp.ket = sbp.cursor; + if (!r_mark_lAr()) + return; + sbp.bra = sbp.cursor; + sbp.slice_del(); + if (!r_stem_suffix_chain_before_ki()) + return; + } + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } + return; + } + sbp.cursor = sbp.limit - v_1; + if (habr9(v_1)) + return; + sbp.cursor = sbp.limit - v_1; + if (habr10(v_1)) + return; + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (r_mark_DAn()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + v_3 = sbp.limit - sbp.cursor; + if (r_mark_possessives()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } else { + sbp.cursor = sbp.limit - v_3; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } else { + sbp.cursor = sbp.limit - v_3; + r_stem_suffix_chain_before_ki(); + } + } + return; + } + sbp.cursor = sbp.limit - v_1; + if (habr11()) + return; + sbp.cursor = sbp.limit - v_1; + if (r_mark_lArI()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + return; + } + sbp.cursor = sbp.limit - v_1; + if (r_stem_suffix_chain_before_ki()) + return; + sbp.cursor = sbp.limit - v_1; + if (habr12()) + return; + sbp.cursor = sbp.limit - v_1; + sbp.ket = sbp.cursor; + if (!r_mark_possessives()) { + sbp.cursor = sbp.limit - v_1; + if (!r_mark_sU()) + return; + } + sbp.bra = sbp.cursor; + sbp.slice_del(); + sbp.ket = sbp.cursor; + if (r_mark_lAr()) { + sbp.bra = sbp.cursor; + sbp.slice_del(); + r_stem_suffix_chain_before_ki(); + } + } + + function r_post_process_last_consonants() { + var among_var; + sbp.ket = sbp.cursor; + among_var = sbp.find_among_b(a_23, 4); + if (among_var) { + sbp.bra = sbp.cursor; + switch (among_var) { + case 1: + sbp.slice_from("p"); + break; + case 2: + sbp.slice_from("\u00E7"); + break; + case 3: + sbp.slice_from("t"); + break; + case 4: + sbp.slice_from("k"); + break; + } + } + } + + function habr13() { + while (true) { + var v_1 = sbp.limit - sbp.cursor; + if (sbp.in_grouping_b(g_vowel, 97, 305)) { + sbp.cursor = sbp.limit - v_1; + break; + } + sbp.cursor = sbp.limit - v_1; + if (sbp.cursor <= sbp.limit_backward) + return false; + sbp.cursor--; + } + return true; + } + + function habr14(v_1, c1, c2) { + sbp.cursor = sbp.limit - v_1; + if (habr13()) { + var v_2 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, c1)) { + sbp.cursor = sbp.limit - v_2; + if (!sbp.eq_s_b(1, c2)) + return true; + } + sbp.cursor = sbp.limit - v_1; + var c = sbp.cursor; + sbp.insert(sbp.cursor, sbp.cursor, c2); + sbp.cursor = c; + return false; + } + return true; + } + + function r_append_U_to_stems_ending_with_d_or_g() { + var v_1 = sbp.limit - sbp.cursor; + if (!sbp.eq_s_b(1, "d")) { + sbp.cursor = sbp.limit - v_1; + if (!sbp.eq_s_b(1, "g")) + return; + } + if (habr14(v_1, "a", "\u0131")) + if (habr14(v_1, "e", "i")) + if (habr14(v_1, "o", "u")) + habr14(v_1, "\u00F6", "\u00FC") + } + + function r_more_than_one_syllable_word() { + var v_1 = sbp.cursor, + v_2 = 2, + v_3; + while (true) { + v_3 = sbp.cursor; + while (!sbp.in_grouping(g_vowel, 97, 305)) { + if (sbp.cursor >= sbp.limit) { + sbp.cursor = v_3; + if (v_2 > 0) + return false; + sbp.cursor = v_1; + return true; + } + sbp.cursor++; + } + v_2--; + } + } + + function habr15(v_1, n1, c1) { + while (!sbp.eq_s(n1, c1)) { + if (sbp.cursor >= sbp.limit) + return true; + sbp.cursor++; + } + I_strlen = n1; + if (I_strlen != sbp.limit) + return true; + sbp.cursor = v_1; + return false; + } + + function r_is_reserved_word() { + var v_1 = sbp.cursor; + if (habr15(v_1, 2, "ad")) { + sbp.cursor = v_1; + if (habr15(v_1, 5, "soyad")) + return false; + } + return true; + } + + function r_postlude() { + var v_1 = sbp.cursor; + if (r_is_reserved_word()) + return false; + sbp.limit_backward = v_1; + sbp.cursor = sbp.limit; + r_append_U_to_stems_ending_with_d_or_g(); + sbp.cursor = sbp.limit; + r_post_process_last_consonants(); + return true; + } + this.stem = function() { + if (r_more_than_one_syllable_word()) { + sbp.limit_backward = sbp.cursor; + sbp.cursor = sbp.limit; + r_stem_nominal_verb_suffixes(); + sbp.cursor = sbp.limit; + if (B_c_s_n_s) { + r_stem_noun_suffixes(); + sbp.cursor = sbp.limit_backward; + if (r_postlude()) + return true; + } + } + return false; + } + }; + + /* and return a function that stems a word for the current locale */ + return function(token) { + // for lunr version 2 + if (typeof token.update === "function") { + return token.update(function(word) { + st.setCurrent(word); + st.stem(); + return st.getCurrent(); + }) + } else { // for lunr version <= 1 + st.setCurrent(token); + st.stem(); + return st.getCurrent(); + } + } + })(); + + lunr.Pipeline.registerFunction(lunr.tr.stemmer, 'stemmer-tr'); + + lunr.tr.stopWordFilter = lunr.generateStopWordFilter('acaba altmış altı ama ancak arada aslında ayrıca bana bazı belki ben benden beni benim beri beş bile bin bir biri birkaç birkez birçok birşey birşeyi biz bizden bize bizi bizim bu buna bunda bundan bunlar bunları bunların bunu bunun burada böyle böylece da daha dahi de defa değil diye diğer doksan dokuz dolayı dolayısıyla dört edecek eden ederek edilecek ediliyor edilmesi ediyor elli en etmesi etti ettiği ettiğini eğer gibi göre halen hangi hatta hem henüz hep hepsi her herhangi herkesin hiç hiçbir iki ile ilgili ise itibaren itibariyle için işte kadar karşın katrilyon kendi kendilerine kendini kendisi kendisine kendisini kez ki kim kimden kime kimi kimse kırk milyar milyon mu mü mı nasıl ne neden nedenle nerde nerede nereye niye niçin o olan olarak oldu olduklarını olduğu olduğunu olmadı olmadığı olmak olması olmayan olmaz olsa olsun olup olur olursa oluyor on ona ondan onlar onlardan onları onların onu onun otuz oysa pek rağmen sadece sanki sekiz seksen sen senden seni senin siz sizden sizi sizin tarafından trilyon tüm var vardı ve veya ya yani yapacak yapmak yaptı yaptıkları yaptığı yaptığını yapılan yapılması yapıyor yedi yerine yetmiş yine yirmi yoksa yüz zaten çok çünkü öyle üzere üç şey şeyden şeyi şeyler şu şuna şunda şundan şunları şunu şöyle'.split(' ')); + + lunr.Pipeline.registerFunction(lunr.tr.stopWordFilter, 'stopWordFilter-tr'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.vi.js b/themes/LoveIt/assets/lib/lunr/lunr.vi.js new file mode 100644 index 00000000..9d8cce3d --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.vi.js @@ -0,0 +1,84 @@ +/*! + * Lunr languages, `Vietnamese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2017, Keerati Thiwanruk + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* register specific locale function */ + lunr.vi = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.vi.stopWordFilter, + lunr.vi.trimmer + ); + }; + + /* lunr trimmer function */ + lunr.vi.wordCharacters = "[" + + "A-Za-z" + + "\u0300\u0350" + // dấu huyền + "\u0301\u0351" + // dấu sắc + "\u0309" + // dấu hỏi + "\u0323" + // dấu nặng + "\u0303\u0343" + // dấu ngã + "\u00C2\u00E2" + //  + "\u00CA\u00EA" + // Ê + "\u00D4\u00F4" + // Ô + "\u0102-\u0103" + // Ă + "\u0110-\u0111" + // Đ + "\u01A0-\u01A1" + // Ơ + "\u01AF-\u01B0" + // Ư + "]"; + lunr.vi.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.vi.wordCharacters); + lunr.Pipeline.registerFunction(lunr.vi.trimmer, 'trimmer-vi'); + lunr.vi.stopWordFilter = lunr.generateStopWordFilter('là cái nhưng mà'.split(' ')); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/lunr.zh.js b/themes/LoveIt/assets/lib/lunr/lunr.zh.js new file mode 100644 index 00000000..d9dd83d5 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/lunr.zh.js @@ -0,0 +1,141 @@ +/*! + * Lunr languages, `Chinese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2019, Felix Lian (repairearth) + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball zhvaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function() { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return function(lunr) { + /* throw error if lunr is not yet included */ + if ('undefined' === typeof lunr) { + throw new Error('Lunr is not present. Please include / require Lunr before this script.'); + } + + /* throw error if lunr stemmer support is not yet included */ + if ('undefined' === typeof lunr.stemmerSupport) { + throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.'); + } + + /* + Chinese tokenization is trickier, since it does not + take into account spaces. + Since the tokenization function is represented different + internally for each of the Lunr versions, this had to be done + in order to try to try to pick the best way of doing this based + on the Lunr version + */ + var isLunr2 = lunr.version[0] == "2"; + + /* register specific locale function */ + lunr.zh = function() { + this.pipeline.reset(); + this.pipeline.add( + lunr.zh.trimmer, + lunr.zh.stopWordFilter, + lunr.zh.stemmer + ); + + // change the tokenizer for Chinese one + if (isLunr2) { // for lunr version 2.0.0 + this.tokenizer = lunr.zh.tokenizer; + } else { + if (lunr.tokenizer) { // for lunr version 0.6.0 + lunr.tokenizer = lunr.zh.tokenizer; + } + if (this.tokenizerFn) { // for lunr version 0.7.0 -> 1.0.0 + this.tokenizerFn = lunr.zh.tokenizer; + } + } + }; + + lunr.zh.tokenizer = function(obj) { + if (!arguments.length || obj == null || obj == undefined) return [] + if (Array.isArray(obj)) return obj.map(function (t) { return isLunr2 ? new lunr.Token(t.toLowerCase()) : t.toLowerCase() }) + + var str = obj.toString().trim().toLowerCase(); + var tokens = []; + + lunr.segmentit && lunr.segmentit.doSegment(str).forEach(function (seg) { + tokens = tokens.concat(seg.w.split(' ')); + }); + + tokens = tokens.filter(function (token) { + return !!token; + }); + + var fromIndex = 0 + + return tokens.map(function (token, index) { + if (isLunr2) { + var start = str.indexOf(token, fromIndex) + + var tokenMetadata = {} + tokenMetadata["position"] = [start, token.length] + tokenMetadata["index"] = index + + fromIndex = start + + return new lunr.Token(token, tokenMetadata); + } else { + return token + } + }); + } + + /* lunr trimmer function */ + lunr.zh.wordCharacters = "\\w\u4e00-\u9fa5"; + lunr.zh.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.zh.wordCharacters); + lunr.Pipeline.registerFunction(lunr.zh.trimmer, 'trimmer-zh'); + + /* lunr stemmer function */ + lunr.zh.stemmer = (function() { + + /* TODO Chinese stemmer */ + return function(word) { + return word; + } + })(); + lunr.Pipeline.registerFunction(lunr.zh.stemmer, 'stemmer-zh'); + + /* lunr stop word filter. see https://www.ranks.nl/stopwords/chinese-stopwords */ + lunr.zh.stopWordFilter = lunr.generateStopWordFilter( + '的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自'.split(' ')); + lunr.Pipeline.registerFunction(lunr.zh.stopWordFilter, 'stopWordFilter-zh'); + }; +})) diff --git a/themes/LoveIt/assets/lib/lunr/wordcut.js b/themes/LoveIt/assets/lib/lunr/wordcut.js new file mode 100644 index 00000000..146f4b44 --- /dev/null +++ b/themes/LoveIt/assets/lib/lunr/wordcut.js @@ -0,0 +1,6708 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.lunr || (g.lunr = {})).wordcut = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1; + }) + this.addWords(words, false) + } + if(finalize){ + this.finalizeDict(); + } + }, + + dictSeek: function (l, r, ch, strOffset, pos) { + var ans = null; + while (l <= r) { + var m = Math.floor((l + r) / 2), + dict_item = this.dict[m], + len = dict_item.length; + if (len <= strOffset) { + l = m + 1; + } else { + var ch_ = dict_item[strOffset]; + if (ch_ < ch) { + l = m + 1; + } else if (ch_ > ch) { + r = m - 1; + } else { + ans = m; + if (pos == LEFT) { + r = m - 1; + } else { + l = m + 1; + } + } + } + } + return ans; + }, + + isFinal: function (acceptor) { + return this.dict[acceptor.l].length == acceptor.strOffset; + }, + + createAcceptor: function () { + return { + l: 0, + r: this.dict.length - 1, + strOffset: 0, + isFinal: false, + dict: this, + transit: function (ch) { + return this.dict.transit(this, ch); + }, + isError: false, + tag: "DICT", + w: 1, + type: "DICT" + }; + }, + + transit: function (acceptor, ch) { + var l = this.dictSeek(acceptor.l, + acceptor.r, + ch, + acceptor.strOffset, + LEFT); + if (l !== null) { + var r = this.dictSeek(l, + acceptor.r, + ch, + acceptor.strOffset, + RIGHT); + acceptor.l = l; + acceptor.r = r; + acceptor.strOffset++; + acceptor.isFinal = this.isFinal(acceptor); + } else { + acceptor.isError = true; + } + return acceptor; + }, + + sortuniq: function(a){ + return a.sort().filter(function(item, pos, arr){ + return !pos || item != arr[pos - 1]; + }) + }, + + flatten: function(a){ + //[[1,2],[3]] -> [1,2,3] + return [].concat.apply([], a); + } +}; +module.exports = WordcutDict; + +}).call(this,"/dist/tmp") +},{"glob":16,"path":22}],3:[function(require,module,exports){ +var WordRule = { + createAcceptor: function(tag) { + if (tag["WORD_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + var lch = ch.toLowerCase(); + if (lch >= "a" && lch <= "z") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "WORD_RULE", + type: "WORD_RULE", + w: 1}; + } +}; + +var NumberRule = { + createAcceptor: function(tag) { + if (tag["NUMBER_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch >= "0" && ch <= "9") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "NUMBER_RULE", + type: "NUMBER_RULE", + w: 1}; + } +}; + +var SpaceRule = { + tag: "SPACE_RULE", + createAcceptor: function(tag) { + + if (tag["SPACE_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch == " " || ch == "\t" || ch == "\r" || ch == "\n" || + ch == "\u00A0" || ch=="\u2003"//nbsp and emsp + ) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: SpaceRule.tag, + w: 1, + type: "SPACE_RULE"}; + } +} + +var SingleSymbolRule = { + tag: "SINSYM", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (this.strOffset == 0 && ch.match(/^[\@\(\)\/\,\-\."`]$/)) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "SINSYM", + w: 1, + type: "SINSYM"}; + } +} + + +var LatinRules = [WordRule, SpaceRule, SingleSymbolRule, NumberRule]; + +module.exports = LatinRules; + +},{}],4:[function(require,module,exports){ +var _ = require("underscore") + , WordcutCore = require("./wordcut_core"); +var PathInfoBuilder = { + + /* + buildByPartAcceptors: function(path, acceptors, i) { + var + var genInfos = partAcceptors.reduce(function(genInfos, acceptor) { + + }, []); + + return genInfos; + } + */ + + buildByAcceptors: function(path, finalAcceptors, i) { + var self = this; + var infos = finalAcceptors.map(function(acceptor) { + var p = i - acceptor.strOffset + 1 + , _info = path[p]; + + var info = {p: p, + mw: _info.mw + (acceptor.mw === undefined ? 0 : acceptor.mw), + w: acceptor.w + _info.w, + unk: (acceptor.unk ? acceptor.unk : 0) + _info.unk, + type: acceptor.type}; + + if (acceptor.type == "PART") { + for(var j = p + 1; j <= i; j++) { + path[j].merge = p; + } + info.merge = p; + } + + return info; + }); + return infos.filter(function(info) { return info; }); + }, + + fallback: function(path, leftBoundary, text, i) { + var _info = path[leftBoundary]; + if (text[i].match(/[\u0E48-\u0E4E]/)) { + if (leftBoundary != 0) + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + mw: 0, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; +/* } else if(leftBoundary > 0 && path[leftBoundary].type !== "UNK") { + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; */ + } else { + return {p: leftBoundary, + mw: _info.mw, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; + } + }, + + build: function(path, finalAcceptors, i, leftBoundary, text) { + var basicPathInfos = this.buildByAcceptors(path, finalAcceptors, i); + if (basicPathInfos.length > 0) { + return basicPathInfos; + } else { + return [this.fallback(path, leftBoundary, text, i)]; + } + } +}; + +module.exports = function() { + return _.clone(PathInfoBuilder); +} + +},{"./wordcut_core":8,"underscore":25}],5:[function(require,module,exports){ +var _ = require("underscore"); + + +var PathSelector = { + selectPath: function(paths) { + var path = paths.reduce(function(selectedPath, path) { + if (selectedPath == null) { + return path; + } else { + if (path.unk < selectedPath.unk) + return path; + if (path.unk == selectedPath.unk) { + if (path.mw < selectedPath.mw) + return path + if (path.mw == selectedPath.mw) { + if (path.w < selectedPath.w) + return path; + } + } + return selectedPath; + } + }, null); + return path; + }, + + createPath: function() { + return [{p:null, w:0, unk:0, type: "INIT", mw:0}]; + } +}; + +module.exports = function() { + return _.clone(PathSelector); +}; + +},{"underscore":25}],6:[function(require,module,exports){ +function isMatch(pat, offset, ch) { + if (pat.length <= offset) + return false; + var _ch = pat[offset]; + return _ch == ch || + (_ch.match(/[กข]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/[มบ]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/\u0E49/) && ch.match(/[\u0E48-\u0E4B]/)); +} + +var Rule0 = { + pat: "เหก็ม", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (isMatch(Rule0.pat, this.strOffset,ch)) { + this.isFinal = (this.strOffset + 1 == Rule0.pat.length); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "THAI_RULE", + type: "THAI_RULE", + w: 1}; + } +}; + +var PartRule = { + createAcceptor: function(tag) { + return {strOffset: 0, + patterns: [ + "แก", "เก", "ก้", "กก์", "กา", "กี", "กิ", "กืก" + ], + isFinal: false, + transit: function(ch) { + var offset = this.strOffset; + this.patterns = this.patterns.filter(function(pat) { + return isMatch(pat, offset, ch); + }); + + if (this.patterns.length > 0) { + var len = 1 + offset; + this.isFinal = this.patterns.some(function(pat) { + return pat.length == len; + }); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "PART", + type: "PART", + unk: 1, + w: 1}; + } +}; + +var ThaiRules = [Rule0, PartRule]; + +module.exports = ThaiRules; + +},{}],7:[function(require,module,exports){ +var sys = require("sys") + , WordcutDict = require("./dict") + , WordcutCore = require("./wordcut_core") + , PathInfoBuilder = require("./path_info_builder") + , PathSelector = require("./path_selector") + , Acceptors = require("./acceptors") + , latinRules = require("./latin_rules") + , thaiRules = require("./thai_rules") + , _ = require("underscore"); + + +var Wordcut = Object.create(WordcutCore); +Wordcut.defaultPathInfoBuilder = PathInfoBuilder; +Wordcut.defaultPathSelector = PathSelector; +Wordcut.defaultAcceptors = Acceptors; +Wordcut.defaultLatinRules = latinRules; +Wordcut.defaultThaiRules = thaiRules; +Wordcut.defaultDict = WordcutDict; + + +Wordcut.initNoDict = function(dict_path) { + var self = this; + self.pathInfoBuilder = new self.defaultPathInfoBuilder; + self.pathSelector = new self.defaultPathSelector; + self.acceptors = new self.defaultAcceptors; + self.defaultLatinRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); + self.defaultThaiRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); +}; + +Wordcut.init = function(dict_path, withDefault, additionalWords) { + withDefault = withDefault || false; + this.initNoDict(); + var dict = _.clone(this.defaultDict); + dict.init(dict_path, withDefault, additionalWords); + this.acceptors.creators.push(dict); +}; + +module.exports = Wordcut; + +},{"./acceptors":1,"./dict":2,"./latin_rules":3,"./path_info_builder":4,"./path_selector":5,"./thai_rules":6,"./wordcut_core":8,"sys":28,"underscore":25}],8:[function(require,module,exports){ +var WordcutCore = { + + buildPath: function(text) { + var self = this + , path = self.pathSelector.createPath() + , leftBoundary = 0; + self.acceptors.reset(); + for (var i = 0; i < text.length; i++) { + var ch = text[i]; + self.acceptors.transit(ch); + + var possiblePathInfos = self + .pathInfoBuilder + .build(path, + self.acceptors.getFinalAcceptors(), + i, + leftBoundary, + text); + var selectedPath = self.pathSelector.selectPath(possiblePathInfos) + + path.push(selectedPath); + if (selectedPath.type !== "UNK") { + leftBoundary = i; + } + } + return path; + }, + + pathToRanges: function(path) { + var e = path.length - 1 + , ranges = []; + + while (e > 0) { + var info = path[e] + , s = info.p; + + if (info.merge !== undefined && ranges.length > 0) { + var r = ranges[ranges.length - 1]; + r.s = info.merge; + s = r.s; + } else { + ranges.push({s:s, e:e}); + } + e = s; + } + return ranges.reverse(); + }, + + rangesToText: function(text, ranges, delimiter) { + return ranges.map(function(r) { + return text.substring(r.s, r.e); + }).join(delimiter); + }, + + cut: function(text, delimiter) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + return this + .rangesToText(text, ranges, + (delimiter === undefined ? "|" : delimiter)); + }, + + cutIntoRanges: function(text, noText) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + if (!noText) { + ranges.forEach(function(r) { + r.text = text.substring(r.s, r.e); + }); + } + return ranges; + }, + + cutIntoArray: function(text) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + return ranges.map(function(r) { + return text.substring(r.s, r.e) + }); + } +}; + +module.exports = WordcutCore; + +},{}],9:[function(require,module,exports){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && !isFinite(value)) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) { + return a === b; + } + var aIsArgs = isArguments(a), + bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +},{"util/":28}],10:[function(require,module,exports){ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + +},{}],11:[function(require,module,exports){ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + + +},{"balanced-match":10,"concat-map":13}],12:[function(require,module,exports){ + +},{}],13:[function(require,module,exports){ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],14:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],15:[function(require,module,exports){ +(function (process){ +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = require("path") +var minimatch = require("minimatch") +var isAbsolute = require("path-is-absolute") +var Minimatch = minimatch.Minimatch + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern) + } + + return { + matcher: new Minimatch(pattern), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = options.cwd + self.changedCwd = path.resolve(options.cwd) !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + self.nomount = !!options.nomount + + // disable comments and negation unless the user explicitly + // passes in false as the option. + options.nonegate = options.nonegate === false ? false : true + options.nocomment = options.nocomment === false ? false : true + deprecationWarning(options) + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +// TODO(isaacs): remove entirely in v6 +// exported to reset in tests +exports.deprecationWarned +function deprecationWarning(options) { + if (!options.nonegate || !options.nocomment) { + if (process.noDeprecation !== true && !exports.deprecationWarned) { + var msg = 'glob WARNING: comments and negation will be disabled in v6' + if (process.throwDeprecation) + throw new Error(msg) + else if (process.traceDeprecation) + console.trace(msg) + else + console.error(msg) + + exports.deprecationWarned = true + } + } +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + return !(/\/$/.test(e)) + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +}).call(this,require('_process')) +},{"_process":24,"minimatch":20,"path":22,"path-is-absolute":23}],16:[function(require,module,exports){ +(function (process){ +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var inherits = require('inherits') +var EE = require('events').EventEmitter +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var globSync = require('./sync.js') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = require('inflight') +var util = require('util') +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +var once = require('once') + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +glob.hasMagic = function (pattern, options_) { + var options = util._extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + this._didRealPath = false + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + var n = this.minimatch.set.length + this._processing = 0 + this.matches = new Array(n) + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + + function done () { + --self._processing + if (self._processing <= 0) + self._finish() + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + if (this.realpath && !this._didRealpath) + return this._realpath() + + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._realpath = function () { + if (this._didRealpath) + return + + this._didRealpath = true + + var n = this.matches.length + if (n === 0) + return this._finish() + + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) + + function next () { + if (--n === 0) + self._finish() + } +} + +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() + + var found = Object.keys(matchset) + var self = this + var n = found.length + + if (n === 0) + return cb() + + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + fs.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here + + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (this.matches[index][e]) + return + + if (isIgnored(this, e)) + return + + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + var abs = this._makeAbs(e) + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + if (this.mark) + e = this._mark(e) + + this.matches[index][e] = true + + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) + + this.emit('match', e) +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er) + return cb() + + var isSym = lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } + + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) + + if (needDir && c === 'FILE') + return cb() + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } + } + + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) + } + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er) { + this.statCache[abs] = false + return cb() + } + + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && !stat.isDirectory()) + return cb(null, false, stat) + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return cb() + + return cb(null, c, stat) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./sync.js":17,"_process":24,"assert":9,"events":14,"fs":12,"inflight":18,"inherits":19,"minimatch":20,"once":21,"path":22,"path-is-absolute":23,"util":28}],17:[function(require,module,exports){ +(function (process){ +module.exports = globSync +globSync.GlobSync = GlobSync + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var Glob = require('./glob.js').Glob +var util = require('util') +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = fs.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) + } + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip processing + if (childrenIgnored(this, read)) + return + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this.matches[index][e] = true + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + var abs = this._makeAbs(e) + if (this.mark) + e = this._mark(e) + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[this._makeAbs(e)] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + if (this.stat) + this._stat(e) +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) + + var entries + var lstat + var stat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + // lstat failed, doesn't exist + return null + } + + var isSym = lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this.matches[index][prefix] = true +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c + + if (needDir && c === 'FILE') + return false + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + return false + } + + if (lstat.isSymbolicLink()) { + try { + stat = fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } + + this.statCache[abs] = stat + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return false + + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./glob.js":16,"_process":24,"assert":9,"fs":12,"minimatch":20,"path":22,"path-is-absolute":23,"util":28}],18:[function(require,module,exports){ +(function (process){ +var wrappy = require('wrappy') +var reqs = Object.create(null) +var once = require('once') + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} + +}).call(this,require('_process')) +},{"_process":24,"once":21,"wrappy":29}],19:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],20:[function(require,module,exports){ +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = { sep: '/' } +try { + path = require('path') +} catch (er) {} + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = require('brace-expansion') + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + // "" only matches "" + if (pattern.trim() === '') return p === '' + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + if (typeof pattern === 'undefined') { + throw new TypeError('undefined pattern') + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + if (pattern.length > 1024 * 64) { + throw new TypeError('pattern is too long') + } + + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + case '/': + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '.': + case '[': + case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') + return emptyFileEnd + } + + // should be unreachable. + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + +},{"brace-expansion":11,"path":22}],21:[function(require,module,exports){ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + +},{"wrappy":29}],22:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + + +exports.basename = function(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +}).call(this,require('_process')) +},{"_process":24}],23:[function(require,module,exports){ +(function (process){ +'use strict'; + +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + +}).call(this,require('_process')) +},{"_process":24}],24:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],25:[function(require,module,exports){ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + _.iteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, undefinedOnly) { + return function(obj) { + var length = arguments.length; + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + function createReduce(dir) { + // Optimized iterator function as using arguments.length + // in the main function will deoptimize the, see #1991. + function iterator(obj, iteratee, memo, keys, index, length) { + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + } + + return function(obj, iteratee, memo, context) { + iteratee = optimizeCb(iteratee, context, 4); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + // Determine the initial value if none is provided. + if (arguments.length < 3) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + return iterator(obj, iteratee, memo, keys, index, length); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var key; + if (isArrayLike(obj)) { + key = _.findIndex(obj, predicate, context); + } else { + key = _.findKey(obj, predicate, context); + } + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = isArrayLike(obj) ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = cb(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, startIndex) { + var output = [], idx = 0; + for (var i = startIndex || 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + //flatten current level of array or arguments object + if (!shallow) value = flatten(value, shallow, strict); + var j = 0, len = value.length; + output.length += len; + while (j < len) { + output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(arguments, true, true, 1); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + return _.unzip(arguments); + }; + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a predicate test + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + step = step || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var args = slice.call(arguments, 2); + var bound = function() { + return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); + } + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + function collectNonEnumProps(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object + // In contrast to _.map it returns an object + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}, + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s) + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(object, oiteratee, context) { + var result = {}, obj = object, iteratee, keys; + if (obj == null) return result; + if (_.isFunction(oiteratee)) { + keys = _.allKeys(obj); + iteratee = optimizeCb(oiteratee, context); + } else { + keys = flatten(arguments, false, false, 1); + iteratee = function(value, key, obj) { return key in obj; }; + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(flatten(arguments, false, false, 1), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), and in Safari 8 (#1929). + if (typeof /./ != 'function' && typeof Int8Array != 'object') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property, fallback) { + var value = object == null ? void 0 : object[property]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result(this, func.apply(_, args)); + }; + }); + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return '' + this._wrapped; + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); + +},{}],26:[function(require,module,exports){ +arguments[4][19][0].apply(exports,arguments) +},{"dup":19}],27:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],28:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":27,"_process":24,"inherits":26}],29:[function(require,module,exports){ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + +},{}]},{},[7])(7) +}); \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl-language.js b/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl-language.js new file mode 100644 index 00000000..bda7206b --- /dev/null +++ b/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl-language.js @@ -0,0 +1,260 @@ +/** + * Create a new [Mapbox GL JS plugin](https://www.mapbox.com/blog/build-mapbox-gl-js-plugins/) that + * modifies the layers of the map style to use the 'text-field' that matches the browser language. + * @constructor + * @param {object} options - Options to configure the plugin. + * @param {string[]} [options.supportedLanguages] - List of supported languages + * @param {Function} [options.languageTransform] - Custom style transformation to apply + * @param {RegExp} [options.languageField=/^\{name/] - RegExp to match if a text-field is a language field + * @param {Function} [options.getLanguageField] - Given a language choose the field in the vector tiles + * @param {string} [options.languageSource] - Name of the source that contains the different languages. + * @param {string} [options.defaultLanguage] - Name of the default language to initialize style after loading. + * @param {string[]} [options.excludedLayerIds] - Name of the layers that should be excluded from translation. + */ +function MapboxLanguage(options) { + options = Object.assign({}, options); + if (!(this instanceof MapboxLanguage)) { + throw new Error('MapboxLanguage needs to be called with the new keyword'); + } + + this.setLanguage = this.setLanguage.bind(this); + this._initialStyleUpdate = this._initialStyleUpdate.bind(this); + + this._defaultLanguage = options.defaultLanguage; + this._isLanguageField = options.languageField || /^\{name/; + this._getLanguageField = options.getLanguageField || function nameField(language) { + return language === 'mul' ? '{name}' : '{name_' + language + '}'; + }; + this._languageSource = options.languageSource || null; + this._languageTransform = options.languageTransform || function (style, language) { + if (language === 'ar') { + return noSpacing(style); + } else { + return standardSpacing(style); + } + }; + this._excludedLayerIds = options.excludedLayerIds || []; + this.supportedLanguages = options.supportedLanguages || ['ar', 'en', 'es', 'fr', 'de', 'ja', 'ko', 'mul', 'pt', 'ru', 'zh']; +} + +function standardSpacing(style) { + var changedLayers = style.layers.map(function (layer) { + if (!(layer.layout || {})['text-field']) return layer; + var spacing = 0; + if (layer['source-layer'] === 'state_label') { + spacing = 0.15; + } + if (layer['source-layer'] === 'marine_label') { + if (/-lg/.test(layer.id)) { + spacing = 0.25; + } + if (/-md/.test(layer.id)) { + spacing = 0.15; + } + if (/-sm/.test(layer.id)) { + spacing = 0.1; + } + } + if (layer['source-layer'] === 'place_label') { + if (/-suburb/.test(layer.id)) { + spacing = 0.15; + } + if (/-neighbour/.test(layer.id)) { + spacing = 0.1; + } + if (/-islet/.test(layer.id)) { + spacing = 0.01; + } + } + if (layer['source-layer'] === 'airport_label') { + spacing = 0.01; + } + if (layer['source-layer'] === 'rail_station_label') { + spacing = 0.01; + } + if (layer['source-layer'] === 'poi_label') { + if (/-scalerank/.test(layer.id)) { + spacing = 0.01; + } + } + if (layer['source-layer'] === 'road_label') { + if (/-label-/.test(layer.id)) { + spacing = 0.01; + } + if (/-shields/.test(layer.id)) { + spacing = 0.05; + } + } + return Object.assign({}, layer, { + layout: Object.assign({}, layer.layout, { + 'text-letter-spacing': spacing + }) + }); + }); + + return Object.assign({}, style, { + layers: changedLayers + }); +} + +function noSpacing(style) { + var changedLayers = style.layers.map(function (layer) { + if (!(layer.layout || {})['text-field']) return layer; + var spacing = 0; + return Object.assign({}, layer, { + layout: Object.assign({}, layer.layout, { + 'text-letter-spacing': spacing + }) + }); + }); + + return Object.assign({}, style, { + layers: changedLayers + }); +} + +function isNameStringField(isLangField, property) { + return typeof property === 'string' && isLangField.test(property); +} + +function isNameFunctionField(isLangField, property) { + return property.stops && property.stops.filter(function (stop) { + return isLangField.test(stop[1]); + }).length > 0; +} + +function adaptPropertyLanguage(isLangField, property, languageFieldName) { + if (isNameStringField(isLangField, property)) return languageFieldName; + if (isNameFunctionField(isLangField, property)) { + var newStops = property.stops.map(function (stop) { + if (isLangField.test(stop[1])) { + return [stop[0], languageFieldName]; + } + return stop; + }); + return Object.assign({}, property, { + stops: newStops + }); + } + return property; +} + +function changeLayerTextProperty(isLangField, layer, languageFieldName, excludedLayerIds) { + if (layer.layout && layer.layout['text-field'] && excludedLayerIds.indexOf(layer.id) === -1) { + return Object.assign({}, layer, { + layout: Object.assign({}, layer.layout, { + 'text-field': adaptPropertyLanguage(isLangField, layer.layout['text-field'], languageFieldName) + }) + }); + } + return layer; +} + +function findStreetsSource(style) { + var sources = Object.keys(style.sources).filter(function (sourceName) { + var source = style.sources[sourceName]; + return /mapbox-streets-v\d/.test(source.url); + }); + return sources[0]; +} + +/** + * Explicitly change the language for a style. + * @param {object} style - Mapbox GL style to modify + * @param {string} language - The language iso code + * @returns {object} the modified style + */ +MapboxLanguage.prototype.setLanguage = function (style, language) { + if (this.supportedLanguages.indexOf(language) < 0) throw new Error('Language ' + language + ' is not supported'); + var streetsSource = this._languageSource || findStreetsSource(style); + if (!streetsSource) return style; + + var field = this._getLanguageField(language); + var isLangField = this._isLanguageField; + var excludedLayerIds = this._excludedLayerIds; + var changedLayers = style.layers.map(function (layer) { + if (layer.source === streetsSource) return changeLayerTextProperty(isLangField, layer, field, excludedLayerIds); + return layer; + }); + + var languageStyle = Object.assign({}, style, { + layers: changedLayers + }); + + return this._languageTransform(languageStyle, language); +}; + +MapboxLanguage.prototype._initialStyleUpdate = function () { + var style = this._map.getStyle(); + var language = this._defaultLanguage || browserLanguage(this.supportedLanguages); + + // We only update the style once + this._map.off('styledata', this._initialStyleUpdate); + this._map.setStyle(this.setLanguage(style, language)); +}; + +function browserLanguage(supportedLanguages) { + var language = navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage); + var parts = language.split('-'); + var languageCode = language; + if (parts.length > 1) { + languageCode = parts[0]; + } + if (supportedLanguages.indexOf(languageCode) > -1) { + return languageCode; + } + return null; +} + +MapboxLanguage.prototype.onAdd = function (map) { + this._map = map; + this._map.on('styledata', this._initialStyleUpdate); + this._container = document.createElement('div'); + return this._container; +}; + +MapboxLanguage.prototype.onRemove = function () { + this._map.off('styledata', this._initialStyleUpdate); + this._map = undefined; +}; + +function ie11Polyfill() { + if (typeof Object.assign != 'function') { + // Must be writable: true, enumerable: false, configurable: true + Object.defineProperty(Object, 'assign', { + // eslint-disable-next-line no-unused-vars + value: function assign(target, varArgs) { // .length of function is 2 + // eslint-disable-next-line strict + 'use strict'; + if (target === null) { // TypeError if undefined or null + throw new TypeError('Cannot convert undefined or null to object'); + } + + var to = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + + if (nextSource !== null) { // Skip over if undefined or null + for (var nextKey in nextSource) { + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + }, + writable: true, + configurable: true + }); + } +} + +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = MapboxLanguage; +} else { + ie11Polyfill(); + window.MapboxLanguage = MapboxLanguage; +} diff --git a/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl.min.css b/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl.min.css new file mode 100644 index 00000000..228698f8 --- /dev/null +++ b/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl.min.css @@ -0,0 +1,5 @@ +/** + * Skipped minification because the original files appears to be already minified. + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +.mapboxgl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mapboxgl-canvas{position:absolute;left:0;top:0}.mapboxgl-map:-webkit-full-screen{width:100%;height:100%}.mapboxgl-canary{background-color:salmon}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas{touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right{position:absolute;pointer-events:none;z-index:2}.mapboxgl-ctrl-top-left{top:0;left:0}.mapboxgl-ctrl-top-right{top:0;right:0}.mapboxgl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right{right:0;bottom:0}.mapboxgl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl{margin:10px 0 0 10px;float:left}.mapboxgl-ctrl-top-right .mapboxgl-ctrl{margin:10px 10px 0 0;float:right}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl{margin:0 0 10px 10px;float:left}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl{margin:0 10px 10px 0;float:right}.mapboxgl-ctrl-group{border-radius:4px;background:#fff}.mapboxgl-ctrl-group:not(:empty){-moz-box-shadow:0 0 2px rgba(0,0,0,.1);-webkit-box-shadow:0 0 2px rgba(0,0,0,.1);box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.mapboxgl-ctrl-group button{width:29px;height:29px;display:block;padding:0;outline:none;border:0;box-sizing:border-box;background-color:transparent;cursor:pointer}.mapboxgl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon{display:block;width:100%;height:100%;background-repeat:no-repeat;background-position:50%}@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button{border-top:1px solid ButtonText}}.mapboxgl-ctrl button::-moz-focus-inner{border:0;padding:0}.mapboxgl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon{opacity:.25}.mapboxgl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.mapboxgl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:focus:only-child{border-radius:inherit}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23999'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon{-webkit-animation:mapboxgl-spin 2s linear infinite;-moz-animation:mapboxgl-spin 2s infinite linear;-o-animation:mapboxgl-spin 2s infinite linear;-ms-animation:mapboxgl-spin 2s infinite linear;animation:mapboxgl-spin 2s linear infinite}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}}@-webkit-keyframes mapboxgl-spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-moz-keyframes mapboxgl-spin{0%{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(1turn)}}@-o-keyframes mapboxgl-spin{0%{-o-transform:rotate(0deg)}to{-o-transform:rotate(1turn)}}@-ms-keyframes mapboxgl-spin{0%{-ms-transform:rotate(0deg)}to{-ms-transform:rotate(1turn)}}@keyframes mapboxgl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.mapboxgl-ctrl-logo{width:88px;height:23px;margin:0 0 -4px -4px;display:block;background-repeat:no-repeat;cursor:pointer;overflow:hidden;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E%3Cdefs%3E%3Cpath id='a' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='b' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='c'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/mask%3E%3Cg opacity='.3' stroke='%23000' stroke-width='3'%3E%3Ccircle mask='url(%23c)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23b' mask='url(%23c)'/%3E%3C/g%3E%3Cg opacity='.9' fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/g%3E%3C/svg%3E")}a.mapboxgl-ctrl-logo.mapboxgl-compact{width:23px}@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E%3Cdefs%3E%3Cpath id='a' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='b' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='c'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/mask%3E%3Cg stroke='%23000' stroke-width='3'%3E%3Ccircle mask='url(%23c)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23b' mask='url(%23c)'/%3E%3C/g%3E%3Cg fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/g%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E%3Cdefs%3E%3Cpath id='a' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='b' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='c'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/mask%3E%3Cg stroke='%23fff' stroke-width='3' fill='%23fff'%3E%3Ccircle mask='url(%23c)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23b' mask='url(%23c)'/%3E%3C/g%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/svg%3E")}}.mapboxgl-ctrl.mapboxgl-ctrl-attrib{padding:0 5px;background-color:hsla(0,0%,100%,.5);margin:0}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact{min-height:20px;padding:0;margin:10px;position:relative;background-color:#fff;border-radius:3px 12px 12px 3px}.mapboxgl-ctrl-attrib.mapboxgl-compact:hover{padding:2px 24px 2px 4px;visibility:visible;margin-top:6px}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:hover,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:hover{padding:2px 4px 2px 24px;border-radius:12px 3px 3px 12px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact:after{content:"";cursor:pointer;position:absolute;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E");background-color:hsla(0,0%,100%,.5);width:24px;height:24px;box-sizing:border-box;border-radius:12px}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{top:0;right:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{top:0;left:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E")}}.mapboxgl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.mapboxgl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-ctrl-attrib .mapbox-improve-map{font-weight:700;margin-left:2px}.mapboxgl-attrib-empty{display:none}.mapboxgl-ctrl-scale{background-color:hsla(0,0%,100%,.75);font-size:10px;border:2px solid #333;border-top:#333;padding:0 5px;color:#333;box-sizing:border-box}.mapboxgl-popup{position:absolute;top:0;left:0;display:-webkit-flex;display:flex;will-change:transform;pointer-events:none}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right{-webkit-flex-direction:column;flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.mapboxgl-popup-anchor-left{-webkit-flex-direction:row;flex-direction:row}.mapboxgl-popup-anchor-right{-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.mapboxgl-popup-tip{width:0;height:0;border:10px solid transparent;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip{-webkit-align-self:center;align-self:center;border-top:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip{-webkit-align-self:flex-start;align-self:flex-start;border-top:none;border-left:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip{-webkit-align-self:flex-end;align-self:flex-end;border-top:none;border-right:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{-webkit-align-self:center;align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip{-webkit-align-self:flex-start;align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip{-webkit-align-self:flex-end;align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip{-webkit-align-self:center;align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip{-webkit-align-self:center;align-self:center;border-right:none;border-left-color:#fff}.mapboxgl-popup-close-button{position:absolute;right:0;top:0;border:0;border-radius:0 3px 0 0;cursor:pointer;background-color:transparent}.mapboxgl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.mapboxgl-popup-content{position:relative;background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:10px 10px 15px;pointer-events:auto}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *{pointer-events:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer{display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer{display:none}.mapboxgl-marker{position:absolute;top:0;left:0;will-change:transform}.mapboxgl-user-location-dot,.mapboxgl-user-location-dot:before{background-color:#1da1f2;width:15px;height:15px;border-radius:50%}.mapboxgl-user-location-dot:before{content:"";position:absolute;-webkit-animation:mapboxgl-user-location-dot-pulse 2s infinite;-moz-animation:mapboxgl-user-location-dot-pulse 2s infinite;-ms-animation:mapboxgl-user-location-dot-pulse 2s infinite;animation:mapboxgl-user-location-dot-pulse 2s infinite}.mapboxgl-user-location-dot:after{border-radius:50%;border:2px solid #fff;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px;box-sizing:border-box;box-shadow:0 0 3px rgba(0,0,0,.35)}@-webkit-keyframes mapboxgl-user-location-dot-pulse{0%{-webkit-transform:scale(1);opacity:1}70%{-webkit-transform:scale(3);opacity:0}to{-webkit-transform:scale(1);opacity:0}}@-ms-keyframes mapboxgl-user-location-dot-pulse{0%{-ms-transform:scale(1);opacity:1}70%{-ms-transform:scale(3);opacity:0}to{-ms-transform:scale(1);opacity:0}}@keyframes mapboxgl-user-location-dot-pulse{0%{transform:scale(1);opacity:1}70%{transform:scale(3);opacity:0}to{transform:scale(1);opacity:0}}.mapboxgl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle{background-color:rgba(29,161,242,.2);width:1px;height:1px;border-radius:100%}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom{position:absolute;top:0;left:0;width:0;height:0;background:#fff;border:2px dotted #202020;opacity:.5}@media print{.mapbox-improve-map{display:none}} \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl.min.js b/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl.min.js new file mode 100644 index 00000000..43133d57 --- /dev/null +++ b/themes/LoveIt/assets/lib/mapbox-gl/mapbox-gl.min.js @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using Terser v3.14.1. + * Original file: /npm/mapbox-gl@1.10.1/dist/mapbox-gl.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).mapboxgl=e()}(this,function(){"use strict";var t,e,r;function i(i,n){if(t)if(e){var o="var sharedChunk = {}; ("+t+")(sharedChunk); ("+e+")(sharedChunk);",a={};t(a),(r=n(a)).workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"}))}else e=n;else t=n}return i(0,function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=i;function i(t,e,r,i){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(i-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=i,this.p2x=r,this.p2y=i}i.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},i.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},i.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},i.prototype.solveCurveX=function(t,e){var r,i,n,o,a;for(void 0===e&&(e=1e-6),n=t,a=0;a<8;a++){if(o=this.sampleCurveX(n)-t,Math.abs(o)(i=1))return i;for(;ro?r=n:i=n,n=.5*(i-r)+r}return n},i.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var n=o;function o(t,e){this.x=t,this.y=e}function a(t,e,i,n){var o=new r(t,e,i,n);return function(t){return o.solve(t)}}o.prototype={clone:function(){return new o(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),i=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),i=Math.sin(t),n=e.y+i*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-i*(this.y-e.y),this.y=n,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},o.convert=function(t){return t instanceof o?t:Array.isArray(t)?new o(t[0],t[1]):t};var s=a(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function u(t,e,r){var i=r-e,n=((t-e)%i+i)%i+e;return n===e?r:n}function c(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var i=0,n=e;i>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function m(t,e){t.forEach(function(t){e[t]&&(e[t]=e[t].bind(e))})}function y(t,e){return-1!==t.indexOf(e,t.length-e.length)}function g(t,e,r){var i={};for(var n in t)i[n]=e.call(r||this,t[n],n,t);return i}function _(t,e,r){var i={};for(var n in t)e.call(r||this,t[n],n,t)&&(i[n]=t[n]);return i}function v(t){return Array.isArray(t)?t.map(v):"object"==typeof t&&t?g(t,v):t}var x={};function b(t){x[t]||("undefined"!=typeof console&&console.warn(t),x[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function S(t){for(var e=0,r=0,i=t.length,n=i-1,o=void 0,a=void 0;r@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,function(t,r,i,n){var o=i||n;return e[r]=!o||o.toLowerCase(),""}),e["max-age"]){var r=parseInt(e["max-age"],10);isNaN(r)?delete e["max-age"]:e["max-age"]=r}return e}var E=null;function A(t){if(null==E){var e=t.navigator?t.navigator.userAgent:null;E=!!t.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return E}function z(t){try{var e=self[t];return e.setItem("_mapbox_test_",1),e.removeItem("_mapbox_test_"),!0}catch(t){return!1}}var P,C,k,M,D=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),L=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,B=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,R={now:D,frame:function(t){var e=L(t);return{cancel:function(){return B(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement("canvas"),i=r.getContext("2d");if(!i)throw new Error("failed to create canvas 2d context");return r.width=t.width,r.height=t.height,i.drawImage(t,0,0,t.width,t.height),i.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return P||(P=self.document.createElement("a")),P.href=t,P.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==C&&(C=self.matchMedia("(prefers-reduced-motion: reduce)")),C.matches)}},F={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf("https://api.mapbox.cn")?"https://events.mapbox.cn/events/v2":0===this.API_URL.indexOf("https://api.mapbox.com")?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},O={supported:!1,testSupport:function(t){!U&&M&&(V?N(t):k=t)}},U=!1,V=!1;function N(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,M),t.isContextLost())return;O.supported=!0}catch(t){}t.deleteTexture(e),U=!0}self.document&&((M=self.document.createElement("img")).onload=function(){k&&N(k),k=null,V=!0},M.onerror=function(){U=!0,k=null},M.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");var j="01",q=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function Z(t){return 0===t.indexOf("mapbox:")}q.prototype._createSkuToken=function(){var t=function(){for(var t="",e=0;e<10;e++)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62*Math.random())];return{token:["1",j,t].join(""),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},q.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},q.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},q.prototype.normalizeStyleURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/styles/v1"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeGlyphsURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/fonts/v1"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeSourceURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/v4/"+r.authority+".json",r.params.push("secure"),this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeSpriteURL=function(t,e,r,i){var n=K(t);return Z(t)?(n.path="/styles/v1"+n.path+"/sprite"+e+r,this._makeAPIURL(n,this._customAccessToken||i)):(n.path+=""+e+r,H(n))},q.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!Z(t))return t;var r=K(t);r.path=r.path.replace(/(\.(png|jpg)\d*)(?=$)/,(R.devicePixelRatio>=2||512===e?"@2x":"")+(O.supported?".webp":"$1")),r.path=r.path.replace(/^.+\/v4\//,"/"),r.path="/v4"+r.path;var i=this._customAccessToken||function(t){for(var e=0,r=t;e=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){b("Unable to write to LocalStorage")}},Y.prototype.processRequests=function(t){},Y.prototype.postEvent=function(t,e,r,i){var n=this;if(F.EVENTS_URL){var o=K(F.EVENTS_URL);o.params.push("access_token="+(i||F.ACCESS_TOKEN||""));var a={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:"1.10.1",skuId:j,userId:this.anonId},s=e?c(a,e):a,l={url:H(o),headers:{"Content-Type":"text/plain"},body:JSON.stringify([s])};this.pendingRequest=vt(l,function(t){n.pendingRequest=null,r(t),n.saveEventData(),n.processRequests(i)})}},Y.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var Q,$,tt=function(t){function e(){t.call(this,"map.load"),this.success={},this.skuToken=""}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,i){this.skuToken=r,(F.EVENTS_URL&&i||F.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return Z(t)||X(t)}))&&this.queueRequest({id:e,timestamp:Date.now()},i)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),i=r.id,n=r.timestamp;i&&this.success[i]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=f()),this.postEvent(n,{skuToken:this.skuToken},function(t){t||i&&(e.success[i]=!0)},t))}},e}(Y),et=new(function(t){function e(e){t.call(this,"appUserTurnstile"),this._customAccessToken=e}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.postTurnstileEvent=function(t,e){F.EVENTS_URL&&F.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return Z(t)||X(t)})&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=J(F.ACCESS_TOKEN),i=r?r.u:F.ACCESS_TOKEN,n=i!==this.eventData.tokenU;d(this.anonId)||(this.anonId=f(),n=!0);var o=this.queue.shift();if(this.eventData.lastSuccess){var a=new Date(this.eventData.lastSuccess),s=new Date(o),l=(o-this.eventData.lastSuccess)/864e5;n=n||l>=1||l<-1||a.getDate()!==s.getDate()}else n=!0;if(!n)return this.processRequests();this.postEvent(o,{"enabled.telemetry":!1},function(t){t||(e.eventData.lastSuccess=o,e.eventData.tokenU=i)},t)}},e}(Y)),rt=et.postTurnstileEvent.bind(et),it=new tt,nt=it.postMapLoadEvent.bind(it),ot=500,at=50;function st(){self.caches&&!Q&&(Q=self.caches.open("mapbox-tiles"))}function lt(t){var e=t.indexOf("?");return e<0?t:t.slice(0,e)}var ut,ct=1/0;function pt(){return null==ut&&(ut=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof self.createImageBitmap),ut}var ht={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};"function"==typeof Object.freeze&&Object.freeze(ht);var ft,dt,mt=function(t){function e(e,r,i){401===r&&X(i)&&(e+=": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes"),t.call(this,e),this.status=r,this.url=i,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.toString=function(){return this.name+": "+this.message+" ("+this.status+"): "+this.url},e}(Error),yt=T()?function(){return self.worker&&self.worker.referrer}:function(){return("blob:"===self.location.protocol?self.parent:self).location.href},gt=function(t,e){if(!(/^file:/.test(r=t.url)||/^file:/.test(yt())&&!/^\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty("signal"))return function(t,e){var r,i=new self.AbortController,n=new self.Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,referrer:yt(),signal:i.signal}),o=!1,a=!1,s=(r=n.url).indexOf("sku=")>0&&X(r);"json"===t.type&&n.headers.set("Accept","application/json");var l=function(r,i,o){if(!a){if(r&&"SecurityError"!==r.message&&b(r),i&&o)return u(i);var l=Date.now();self.fetch(n).then(function(r){if(r.ok){var i=s?r.clone():null;return u(r,i,l)}return e(new mt(r.statusText,r.status,t.url))}).catch(function(t){20!==t.code&&e(new Error(t.message))})}},u=function(r,i,s){("arrayBuffer"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text()).then(function(t){a||(i&&s&&function(t,e,r){if(st(),Q){var i={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach(function(t,e){return i.headers.set(e,t)});var n=I(e.headers.get("Cache-Control")||"");n["no-store"]||(n["max-age"]&&i.headers.set("Expires",new Date(r+1e3*n["max-age"]).toUTCString()),new Date(i.headers.get("Expires")).getTime()-r<42e4||function(t,e){if(void 0===$)try{new Response(new ReadableStream),$=!0}catch(t){$=!1}$?e(t.body):t.blob().then(e)}(e,function(e){var r=new self.Response(e,i);st(),Q&&Q.then(function(e){return e.put(lt(t.url),r)}).catch(function(t){return b(t.message)})}))}}(n,i,s),o=!0,e(null,t,r.headers.get("Cache-Control"),r.headers.get("Expires")))}).catch(function(t){a||e(new Error(t.message))})};return s?function(t,e){if(st(),!Q)return e(null);var r=lt(t.url);Q.then(function(t){t.match(r).then(function(i){var n=function(t){if(!t)return!1;var e=new Date(t.headers.get("Expires")||0),r=I(t.headers.get("Cache-Control")||"");return e>Date.now()&&!r["no-cache"]}(i);t.delete(r),n&&t.put(r,i.clone()),e(null,i,n)}).catch(e)}).catch(e)}(n,l):l(null,null),{cancel:function(){a=!0,o||i.abort()}}}(t,e);if(T()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e,void 0,!0)}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var i in r.open(t.method||"GET",t.url,!0),"arrayBuffer"===t.type&&(r.responseType="arraybuffer"),t.headers)r.setRequestHeader(i,t.headers[i]);return"json"===t.type&&(r.responseType="text",r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var i=r.response;if("json"===t.type)try{i=JSON.parse(r.response)}catch(t){return e(t)}e(null,i,r.getResponseHeader("Cache-Control"),r.getResponseHeader("Expires"))}else e(new mt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},_t=function(t,e){return gt(c(t,{type:"arrayBuffer"}),e)},vt=function(t,e){return gt(c(t,{method:"POST"}),e)};ft=[],dt=0;var xt=function(t,e){if(O.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*"),dt>=F.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return ft.push(r),r}dt++;var i=!1,n=function(){if(!i)for(i=!0,dt--;ft.length&&dt0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},It.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Et={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},expression_name:{type:"enum",values:{let:{group:"Variable binding"},var:{group:"Variable binding"},literal:{group:"Types"},array:{group:"Types"},at:{group:"Lookup"},in:{group:"Lookup"},"index-of":{group:"Lookup"},slice:{group:"Lookup"},case:{group:"Decision"},match:{group:"Decision"},coalesce:{group:"Decision"},step:{group:"Ramps, scales, curves"},interpolate:{group:"Ramps, scales, curves"},"interpolate-hcl":{group:"Ramps, scales, curves"},"interpolate-lab":{group:"Ramps, scales, curves"},ln2:{group:"Math"},pi:{group:"Math"},e:{group:"Math"},typeof:{group:"Types"},string:{group:"Types"},number:{group:"Types"},boolean:{group:"Types"},object:{group:"Types"},collator:{group:"Types"},format:{group:"Types"},image:{group:"Types"},"number-format":{group:"Types"},"to-string":{group:"Types"},"to-number":{group:"Types"},"to-boolean":{group:"Types"},"to-rgba":{group:"Color"},"to-color":{group:"Types"},rgb:{group:"Color"},rgba:{group:"Color"},get:{group:"Lookup"},has:{group:"Lookup"},length:{group:"Lookup"},properties:{group:"Feature data"},"feature-state":{group:"Feature data"},"geometry-type":{group:"Feature data"},id:{group:"Feature data"},zoom:{group:"Zoom"},"heatmap-density":{group:"Heatmap"},"line-progress":{group:"Feature data"},accumulated:{group:"Feature data"},"+":{group:"Math"},"*":{group:"Math"},"-":{group:"Math"},"/":{group:"Math"},"%":{group:"Math"},"^":{group:"Math"},sqrt:{group:"Math"},log10:{group:"Math"},ln:{group:"Math"},log2:{group:"Math"},sin:{group:"Math"},cos:{group:"Math"},tan:{group:"Math"},asin:{group:"Math"},acos:{group:"Math"},atan:{group:"Math"},min:{group:"Math"},max:{group:"Math"},round:{group:"Math"},abs:{group:"Math"},ceil:{group:"Math"},floor:{group:"Math"},distance:{group:"Math"},"==":{group:"Decision"},"!=":{group:"Decision"},">":{group:"Decision"},"<":{group:"Decision"},">=":{group:"Decision"},"<=":{group:"Decision"},all:{group:"Decision"},any:{group:"Decision"},"!":{group:"Decision"},within:{group:"Decision"},"is-supported-script":{group:"String"},upcase:{group:"String"},downcase:{group:"String"},concat:{group:"String"},"resolved-locale":{group:"String"}}},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}},At=function(t,e,r,i){this.message=(t?t+": ":"")+r,i&&(this.identifier=i),null!=e&&e.__line__&&(this.line=e.__line__)};function zt(t){var e=t.value;return e?[new At(t.key,e,"constants have been deprecated as of v8")]:[]}function Pt(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var i=0,n=e;i":"value"===t.itemType.kind?"array":"array<"+e+">"}return t.kind}var Xt=[Lt,Bt,Rt,Ft,Ot,jt,Ut,Zt(Vt),qt];function Wt(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!Wt(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if("value"===t.kind)for(var r=0,i=Xt;r255?255:t}function n(t){return i("%"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function o(t){return(e="%"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e}function a(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,s=t.replace(/ /g,"").toLowerCase();if(s in r)return r[s].slice();if("#"===s[0])return 4===s.length?(e=parseInt(s.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===s.length&&(e=parseInt(s.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=s.indexOf("("),u=s.indexOf(")");if(-1!==l&&u+1===s.length){var c=s.substr(0,l),p=s.substr(l+1,u-(l+1)).split(","),h=1;switch(c){case"rgba":if(4!==p.length)return null;h=o(p.pop());case"rgb":return 3!==p.length?null:[n(p[0]),n(p[1]),n(p[2]),h];case"hsla":if(4!==p.length)return null;h=o(p.pop());case"hsl":if(3!==p.length)return null;var f=(parseFloat(p[0])%360+360)%360/360,d=o(p[1]),m=o(p[2]),y=m<=.5?m*(d+1):m+d-m*d,g=2*m-y;return[i(255*a(g,y,f+1/3)),i(255*a(g,y,f)),i(255*a(g,y,f-1/3)),h];default:return null}}return null}}catch(t){}}).parseCSSColor,Yt=function(t,e,r,i){void 0===i&&(i=1),this.r=t,this.g=e,this.b=r,this.a=i};Yt.parse=function(t){if(t){if(t instanceof Yt)return t;if("string"==typeof t){var e=Jt(t);if(e)return new Yt(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},Yt.prototype.toString=function(){var t=this.toArray(),e=t[1],r=t[2],i=t[3];return"rgba("+Math.round(t[0])+","+Math.round(e)+","+Math.round(r)+","+i+")"},Yt.prototype.toArray=function(){var t=this.a;return 0===t?[0,0,0,0]:[255*this.r/t,255*this.g/t,255*this.b/t,t]},Yt.black=new Yt(0,0,0,1),Yt.white=new Yt(1,1,1,1),Yt.transparent=new Yt(0,0,0,0),Yt.red=new Yt(1,0,0,1);var Qt=function(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};Qt.prototype.compare=function(t,e){return this.collator.compare(t,e)},Qt.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var $t=function(t,e,r,i,n){this.text=t,this.image=e,this.scale=r,this.fontStack=i,this.textColor=n},te=function(t){this.sections=t};te.fromString=function(t){return new te([new $t(t,null,null,null,null)])},te.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some(function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length})},te.factory=function(t){return t instanceof te?t:te.fromString(t)},te.prototype.toString=function(){return 0===this.sections.length?"":this.sections.map(function(t){return t.text}).join("")},te.prototype.serialize=function(){for(var t=["format"],e=0,r=this.sections;e=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255?void 0===i||"number"==typeof i&&i>=0&&i<=1?null:"Invalid rgba value ["+[t,e,r,i].join(", ")+"]: 'a' must be between 0 and 1.":"Invalid rgba value ["+("number"==typeof i?[t,e,r,i]:[t,e,r]).join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}function ie(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof Yt)return!0;if(t instanceof Qt)return!0;if(t instanceof te)return!0;if(t instanceof ee)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if("string"!=typeof s||!(s in le)||"object"===s)return e.error('The item type argument of "array" must be one of string, number, boolean',1);o=le[s],i++}else o=Vt;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);a=t[2],i++}r=Zt(o,a)}else r=le[n];for(var l=[];i1)&&e.push(i)}}return e.concat(this.args.map(function(t){return t.serialize()}))};var ce=function(t){this.type=jt,this.sections=t};ce.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");for(var i=[],n=!1,o=1;o<=t.length-1;++o){var a=t[o];if(n&&"object"==typeof a&&!Array.isArray(a)){n=!1;var s=null;if(a["font-scale"]&&!(s=e.parse(a["font-scale"],1,Bt)))return null;var l=null;if(a["text-font"]&&!(l=e.parse(a["text-font"],1,Zt(Rt))))return null;var u=null;if(a["text-color"]&&!(u=e.parse(a["text-color"],1,Ot)))return null;var c=i[i.length-1];c.scale=s,c.font=l,c.textColor=u}else{var p=e.parse(t[o],1,Vt);if(!p)return null;var h=p.type.kind;if("string"!==h&&"value"!==h&&"null"!==h&&"resolvedImage"!==h)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");n=!0,i.push({content:p,scale:null,font:null,textColor:null})}}return new ce(i)},ce.prototype.evaluate=function(t){return new te(this.sections.map(function(e){var r=e.content.evaluate(t);return ne(r)===qt?new $t("",r,null,null,null):new $t(oe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)}))},ce.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},pe.prototype.eachChild=function(t){t(this.input)},pe.prototype.outputDefined=function(){return!1},pe.prototype.serialize=function(){return["image",this.input.serialize()]};var he={"to-boolean":Ft,"to-color":Ot,"to-number":Bt,"to-string":Rt},fe=function(t,e){this.type=t,this.args=e};fe.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r=t[0];if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");for(var i=he[r],n=[],o=1;o4?"Invalid rbga value "+JSON.stringify(e)+": expected an array containing either three or four numeric values.":re(e[0],e[1],e[2],e[3])))return new Yt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new se(r||"Could not parse color from value '"+("string"==typeof e?e:String(JSON.stringify(e)))+"'")}if("number"===this.type.kind){for(var a=null,s=0,l=this.args;s=e[2]||t[1]<=e[1]||t[3]>=e[3])}function xe(t,e){var r=(180+t[0])/360,i=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,n=Math.pow(2,e.z);return[Math.round(r*n*8192),Math.round(i*n*8192)]}function be(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function we(t,e){for(var r,i,n,o,a,s,l,u=!1,c=0,p=e.length;c0&&s<0||a<0&&s>0}function Ie(t,e,r){for(var i=0,n=r;ir[2]){var n=.5*i,o=t[0]-r[0]>n?-i:r[0]-t[0]>n?i:0;0===o&&(o=t[0]-r[2]>n?-i:r[2]-t[0]>n?i:0),t[0]+=o}_e(e,t)}function ke(t,e,r,i){for(var n=8192*Math.pow(2,i.z),o=[8192*i.x,8192*i.y],a=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild(function(t){r&&!Re(t,e)&&(r=!1)}),r}De.parse=function(t,e){if(2!==t.length)return e.error("'within' expression requires exactly one argument, but found "+(t.length-1)+" instead.");if(ie(t[1])){var r=t[1];if("FeatureCollection"===r.type)for(var i=0;ie))throw new se("Input is not a number.");o=a-1}return 0}Oe.prototype.parse=function(t,e,r,i,n){return void 0===n&&(n={}),e?this.concat(e,r,i)._parse(t,n):this._parse(t,n)},Oe.prototype._parse=function(t,e){function r(t,e,r){return"assert"===r?new ue(e,[t]):"coerce"===r?new fe(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var i=t[0];if("string"!=typeof i)return this.error("Expression name must be a string, but found "+typeof i+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var n=this.registry[i];if(n){var o=n.parse(t,this);if(!o)return null;if(this.expectedType){var a=this.expectedType,s=o.type;if("string"!==a.kind&&"number"!==a.kind&&"boolean"!==a.kind&&"object"!==a.kind&&"array"!==a.kind||"value"!==s.kind)if("color"!==a.kind&&"formatted"!==a.kind&&"resolvedImage"!==a.kind||"value"!==s.kind&&"string"!==s.kind){if(this.checkSubtype(a,s))return null}else o=r(o,a,e.typeAnnotation||"coerce");else o=r(o,a,e.typeAnnotation||"assert")}if(!(o instanceof ae)&&"resolvedImage"!==o.type.kind&&function t(e){if(e instanceof Fe)return t(e.boundExpression);if(e instanceof ye&&"error"===e.name)return!1;if(e instanceof ge)return!1;if(e instanceof De)return!1;var r=e instanceof fe||e instanceof ue,i=!0;return e.eachChild(function(e){i=r?i&&t(e):i&&e instanceof ae}),!!i&&Le(e)&&Re(e,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}(o)){var l=new me;try{o=new ae(o.type,o.evaluate(l))}catch(t){return this.error(t.message),null}}return o}return this.error('Unknown expression "'+i+'". If you wanted a literal array, use ["literal", [...]].',0)}return this.error(void 0===t?"'undefined' value invalid. Use null instead.":"object"==typeof t?'Bare objects invalid. Use ["literal", {...}] instead.':"Expected an array, but found "+typeof t+" instead.")},Oe.prototype.concat=function(t,e,r){var i="number"==typeof t?this.path.concat(t):this.path,n=r?this.scope.concat(r):this.scope;return new Oe(this.registry,i,e||null,n,this.errors)},Oe.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var i=""+this.key+e.map(function(t){return"["+t+"]"}).join("");this.errors.push(new Mt(i,t))},Oe.prototype.checkSubtype=function(t,e){var r=Wt(t,e);return r&&this.error(r),r};var Ve=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var i=0,n=r;i=a)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',l);var c=e.parse(s,u,n);if(!c)return null;n=n||c.type,i.push([a,c])}return new Ve(n,r,i)},Ve.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var i=this.input.evaluate(t);if(i<=e[0])return r[0].evaluate(t);var n=e.length;return i>=e[n-1]?r[n-1].evaluate(t):r[Ue(e,i)].evaluate(t)},Ve.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var je=Object.freeze({__proto__:null,number:Ne,color:function(t,e,r){return new Yt(Ne(t.r,e.r,r),Ne(t.g,e.g,r),Ne(t.b,e.b,r),Ne(t.a,e.a,r))},array:function(t,e,r){return t.map(function(t,i){return Ne(t,e[i],r)})}}),qe=6/29*3*(6/29),Ze=Math.PI/180,Ge=180/Math.PI;function Xe(t){return t>.008856451679035631?Math.pow(t,1/3):t/qe+4/29}function We(t){return t>6/29?t*t*t:qe*(t-4/29)}function Ke(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function He(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Je(t){var e=He(t.r),r=He(t.g),i=He(t.b),n=Xe((.4124564*e+.3575761*r+.1804375*i)/.95047),o=Xe((.2126729*e+.7151522*r+.072175*i)/1);return{l:116*o-16,a:500*(n-o),b:200*(o-Xe((.0193339*e+.119192*r+.9503041*i)/1.08883)),alpha:t.a}}function Ye(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,i=isNaN(t.b)?e:e-t.b/200;return e=1*We(e),r=.95047*We(r),i=1.08883*We(i),new Yt(Ke(3.2404542*r-1.5371385*e-.4985314*i),Ke(-.969266*r+1.8760108*e+.041556*i),Ke(.0556434*r-.2040259*e+1.0572252*i),t.alpha)}function Qe(t,e,r){var i=e-t;return t+r*(i>180||i<-180?i-360*Math.round(i/360):i)}var $e={forward:Je,reverse:Ye,interpolate:function(t,e,r){return{l:Ne(t.l,e.l,r),a:Ne(t.a,e.a,r),b:Ne(t.b,e.b,r),alpha:Ne(t.alpha,e.alpha,r)}}},tr={forward:function(t){var e=Je(t),r=e.l,i=e.a,n=e.b,o=Math.atan2(n,i)*Ge;return{h:o<0?o+360:o,c:Math.sqrt(i*i+n*n),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Ze,r=t.c;return Ye({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:Qe(t.h,e.h,r),c:Ne(t.c,e.c,r),l:Ne(t.l,e.l,r),alpha:Ne(t.alpha,e.alpha,r)}}},er=Object.freeze({__proto__:null,lab:$e,hcl:tr}),rr=function(t,e,r,i,n){this.type=t,this.operator=e,this.interpolation=r,this.input=i,this.labels=[],this.outputs=[];for(var o=0,a=n;o1}))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);i={name:"cubic-bezier",controlPoints:s}}if(t.length-1<4)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(!(n=e.parse(n,2,Bt)))return null;var l=[],u=null;"interpolate-hcl"===r||"interpolate-lab"===r?u=Ot:e.expectedType&&"value"!==e.expectedType.kind&&(u=e.expectedType);for(var c=0;c=p)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',f);var m=e.parse(h,d,u);if(!m)return null;u=u||m.type,l.push([p,m])}return"number"===u.kind||"color"===u.kind||"array"===u.kind&&"number"===u.itemType.kind&&"number"==typeof u.N?new rr(u,r,i,n,l):e.error("Type "+Gt(u)+" is not interpolatable.")},rr.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var i=this.input.evaluate(t);if(i<=e[0])return r[0].evaluate(t);var n=e.length;if(i>=e[n-1])return r[n-1].evaluate(t);var o=Ue(e,i),a=rr.interpolationFactor(this.interpolation,i,e[o],e[o+1]),s=r[o].evaluate(t),l=r[o+1].evaluate(t);return"interpolate"===this.operator?je[this.type.kind.toLowerCase()](s,l,a):"interpolate-hcl"===this.operator?tr.reverse(tr.interpolate(tr.forward(s),tr.forward(l),a)):$e.reverse($e.interpolate($e.forward(s),$e.forward(l),a))},rr.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new se("Array index out of bounds: "+e+" > "+(r.length-1)+".");if(e!==Math.floor(e))throw new se("Array index must be an integer, but found "+e+" instead.");return r[e]},ar.prototype.eachChild=function(t){t(this.index),t(this.input)},ar.prototype.outputDefined=function(){return!1},ar.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var sr=function(t,e){this.type=Ft,this.needle=t,this.haystack=e};sr.parse=function(t,e){if(3!==t.length)return e.error("Expected 2 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Vt),i=e.parse(t[2],2,Vt);return r&&i?Kt(r.type,[Ft,Rt,Bt,Lt,Vt])?new sr(r,i):e.error("Expected first argument to be of type boolean, string, number or null, but found "+Gt(r.type)+" instead"):null},sr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Ht(e,["boolean","string","number","null"]))throw new se("Expected first argument to be of type boolean, string, number or null, but found "+Gt(ne(e))+" instead.");if(!Ht(r,["string","array"]))throw new se("Expected second argument to be of type array or string, but found "+Gt(ne(r))+" instead.");return r.indexOf(e)>=0},sr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},sr.prototype.outputDefined=function(){return!0},sr.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var lr=function(t,e,r){this.type=Bt,this.needle=t,this.haystack=e,this.fromIndex=r};lr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Vt),i=e.parse(t[2],2,Vt);if(!r||!i)return null;if(!Kt(r.type,[Ft,Rt,Bt,Lt,Vt]))return e.error("Expected first argument to be of type boolean, string, number or null, but found "+Gt(r.type)+" instead");if(4===t.length){var n=e.parse(t[3],3,Bt);return n?new lr(r,i,n):null}return new lr(r,i)},lr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Ht(e,["boolean","string","number","null"]))throw new se("Expected first argument to be of type boolean, string, number or null, but found "+Gt(ne(e))+" instead.");if(!Ht(r,["string","array"]))throw new se("Expected second argument to be of type array or string, but found "+Gt(ne(r))+" instead.");if(this.fromIndex){var i=this.fromIndex.evaluate(t);return r.indexOf(e,i)}return r.indexOf(e)},lr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},lr.prototype.outputDefined=function(){return!1},lr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var ur=function(t,e,r,i,n,o){this.inputType=t,this.type=e,this.input=r,this.cases=i,this.outputs=n,this.otherwise=o};ur.parse=function(t,e){if(t.length<5)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if(t.length%2!=1)return e.error("Expected an even number of arguments.");var r,i;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(var n={},o=[],a=2;aNumber.MAX_SAFE_INTEGER)return u.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if("number"==typeof h&&Math.floor(h)!==h)return u.error("Numeric branch labels must be integer values.");if(r){if(u.checkSubtype(r,ne(h)))return null}else r=ne(h);if(void 0!==n[String(h)])return u.error("Branch labels must be unique.");n[String(h)]=o.length}var f=e.parse(l,a,i);if(!f)return null;i=i||f.type,o.push(f)}var d=e.parse(t[1],1,Vt);if(!d)return null;var m=e.parse(t[t.length-1],t.length-1,i);return m?"value"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new ur(r,i,d,n,o,m):null},ur.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(ne(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},ur.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},ur.prototype.outputDefined=function(){return this.outputs.every(function(t){return t.outputDefined()})&&this.otherwise.outputDefined()},ur.prototype.serialize=function(){for(var t=this,e=["match",this.input.serialize()],r=[],i={},n=0,o=Object.keys(this.cases).sort();n=5)return e.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Vt),i=e.parse(t[2],2,Bt);if(!r||!i)return null;if(!Kt(r.type,[Zt(Vt),Rt,Vt]))return e.error("Expected first argument to be of type array or string, but found "+Gt(r.type)+" instead");if(4===t.length){var n=e.parse(t[3],3,Bt);return n?new pr(r.type,r,i,n):null}return new pr(r.type,r,i)},pr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Ht(e,["string","array"]))throw new se("Expected first argument to be of type array or string, but found "+Gt(ne(e))+" instead.");if(this.endIndex){var i=this.endIndex.evaluate(t);return e.slice(r,i)}return e.slice(r)},pr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},pr.prototype.outputDefined=function(){return!1},pr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};var mr=dr("==",function(t,e,r){return e===r},fr),yr=dr("!=",function(t,e,r){return e!==r},function(t,e,r,i){return!fr(0,e,r,i)}),gr=dr("<",function(t,e,r){return e",function(t,e,r){return e>r},function(t,e,r,i){return i.compare(e,r)>0}),vr=dr("<=",function(t,e,r){return e<=r},function(t,e,r,i){return i.compare(e,r)<=0}),xr=dr(">=",function(t,e,r){return e>=r},function(t,e,r,i){return i.compare(e,r)>=0}),br=function(t,e,r,i,n){this.type=Rt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=i,this.maxFractionDigits=n};br.parse=function(t,e){if(3!==t.length)return e.error("Expected two arguments.");var r=e.parse(t[1],1,Bt);if(!r)return null;var i=t[2];if("object"!=typeof i||Array.isArray(i))return e.error("NumberFormat options argument must be an object.");var n=null;if(i.locale&&!(n=e.parse(i.locale,1,Rt)))return null;var o=null;if(i.currency&&!(o=e.parse(i.currency,1,Rt)))return null;var a=null;if(i["min-fraction-digits"]&&!(a=e.parse(i["min-fraction-digits"],1,Bt)))return null;var s=null;return i["max-fraction-digits"]&&!(s=e.parse(i["max-fraction-digits"],1,Bt))?null:new br(r,n,o,a,s)},br.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},br.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},br.prototype.outputDefined=function(){return!1},br.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]};var wr=function(t){this.type=Bt,this.input=t};wr.parse=function(t,e){if(2!==t.length)return e.error("Expected 1 argument, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?e.error("Expected argument of type string or array, but found "+Gt(r.type)+" instead."):new wr(r):null},wr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if("string"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new se("Expected value to be of type string or array, but found "+Gt(ne(e))+" instead.")},wr.prototype.eachChild=function(t){t(this.input)},wr.prototype.outputDefined=function(){return!1},wr.prototype.serialize=function(){var t=["length"];return this.eachChild(function(e){t.push(e.serialize())}),t};var Sr={"==":mr,"!=":yr,">":_r,"<":gr,">=":xr,"<=":vr,array:ue,at:ar,boolean:ue,case:cr,coalesce:nr,collator:ge,format:ce,image:pe,in:sr,"index-of":lr,interpolate:rr,"interpolate-hcl":rr,"interpolate-lab":rr,length:wr,let:or,literal:ae,match:ur,number:ue,"number-format":br,object:ue,slice:pr,step:Ve,string:ue,"to-boolean":fe,"to-color":fe,"to-number":fe,"to-string":fe,var:Fe,within:De};function Tr(t,e){var r=e[0],i=e[1],n=e[2],o=e[3];r=r.evaluate(t),i=i.evaluate(t),n=n.evaluate(t);var a=o?o.evaluate(t):1,s=re(r,i,n,a);if(s)throw new se(s);return new Yt(r/255*a,i/255*a,n/255*a,a)}function Ir(t,e){return t in e}function Er(t,e){var r=e[t];return void 0===r?null:r}function Ar(t){return{type:t}}function zr(t){return{result:"success",value:t}}function Pr(t){return{result:"error",value:t}}function Cr(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function kr(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Mr(t){return!!t.expression&&t.expression.interpolated}function Dr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Lr(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function Br(t){return t}function Rr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Fr(t,e,r,i,n){return Rr(typeof r===n?i[r]:void 0,t.default,e.default)}function Or(t,e,r){if("number"!==Dr(r))return Rr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var n=Ue(t.stops.map(function(t){return t[0]}),r);return t.stops[n][1]}function Ur(t,e,r){var i=void 0!==t.base?t.base:1;if("number"!==Dr(r))return Rr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var o=Ue(t.stops.map(function(t){return t[0]}),r),a=function(t,e,r,i){var n=i-r,o=t-r;return 0===n?0:1===e?o/n:(Math.pow(e,o)-1)/(Math.pow(e,n)-1)}(r,i,t.stops[o][0],t.stops[o+1][0]),s=t.stops[o][1],l=t.stops[o+1][1],u=je[e.type]||Br;if(t.colorSpace&&"rgb"!==t.colorSpace){var c=er[t.colorSpace];u=function(t,e){return c.reverse(c.interpolate(c.forward(t),c.forward(e),a))}}return"function"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),i=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==i)return u(r,i,a)}}:u(s,l,a)}function Vr(t,e,r){return"color"===e.type?r=Yt.parse(r):"formatted"===e.type?r=te.fromString(r.toString()):"resolvedImage"===e.type?r=ee.fromString(r.toString()):Dr(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0),Rr(r,t.default,e.default)}ye.register(Sr,{error:[{kind:"error"},[Rt],function(t,e){throw new se(e[0].evaluate(t))}],typeof:[Rt,[Vt],function(t,e){return Gt(ne(e[0].evaluate(t)))}],"to-rgba":[Zt(Bt,4),[Ot],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Ot,[Bt,Bt,Bt],Tr],rgba:[Ot,[Bt,Bt,Bt,Bt],Tr],has:{type:Ft,overloads:[[[Rt],function(t,e){return Ir(e[0].evaluate(t),t.properties())}],[[Rt,Ut],function(t,e){var r=e[1];return Ir(e[0].evaluate(t),r.evaluate(t))}]]},get:{type:Vt,overloads:[[[Rt],function(t,e){return Er(e[0].evaluate(t),t.properties())}],[[Rt,Ut],function(t,e){var r=e[1];return Er(e[0].evaluate(t),r.evaluate(t))}]]},"feature-state":[Vt,[Rt],function(t,e){return Er(e[0].evaluate(t),t.featureState||{})}],properties:[Ut,[],function(t){return t.properties()}],"geometry-type":[Rt,[],function(t){return t.geometryType()}],id:[Vt,[],function(t){return t.id()}],zoom:[Bt,[],function(t){return t.globals.zoom}],"heatmap-density":[Bt,[],function(t){return t.globals.heatmapDensity||0}],"line-progress":[Bt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Vt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],"+":[Bt,Ar(Bt),function(t,e){for(var r=0,i=0,n=e;i":[Ft,[Rt,Vt],function(t,e){var r=e[0],i=e[1],n=t.properties()[r.value],o=i.value;return typeof n==typeof o&&n>o}],"filter-id->":[Ft,[Vt],function(t,e){var r=e[0],i=t.id(),n=r.value;return typeof i==typeof n&&i>n}],"filter-<=":[Ft,[Rt,Vt],function(t,e){var r=e[0],i=e[1],n=t.properties()[r.value],o=i.value;return typeof n==typeof o&&n<=o}],"filter-id-<=":[Ft,[Vt],function(t,e){var r=e[0],i=t.id(),n=r.value;return typeof i==typeof n&&i<=n}],"filter->=":[Ft,[Rt,Vt],function(t,e){var r=e[0],i=e[1],n=t.properties()[r.value],o=i.value;return typeof n==typeof o&&n>=o}],"filter-id->=":[Ft,[Vt],function(t,e){var r=e[0],i=t.id(),n=r.value;return typeof i==typeof n&&i>=n}],"filter-has":[Ft,[Vt],function(t,e){return e[0].value in t.properties()}],"filter-has-id":[Ft,[],function(t){return null!==t.id()&&void 0!==t.id()}],"filter-type-in":[Ft,[Zt(Rt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],"filter-id-in":[Ft,[Zt(Vt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],"filter-in-small":[Ft,[Rt,Zt(Vt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],"filter-in-large":[Ft,[Rt,Zt(Vt)],function(t,e){var r=e[0],i=e[1];return function(t,e,r,i){for(;r<=i;){var n=r+i>>1;if(e[n]===t)return!0;e[n]>t?i=n-1:r=n+1}return!1}(t.properties()[r.value],i.value,0,i.value.length-1)}],all:{type:Ft,overloads:[[[Ft,Ft],function(t,e){var r=e[1];return e[0].evaluate(t)&&r.evaluate(t)}],[Ar(Ft),function(t,e){for(var r=0,i=e;r0&&"string"==typeof t[0]&&t[0]in Sr}function qr(t,e){var r=new Oe(Sr,[],e?function(t){var e={color:Ot,string:Rt,number:Bt,enum:Rt,boolean:Ft,formatted:jt,resolvedImage:qt};return"array"===t.type?Zt(e[t.value]||Vt,t.length):e[t.type]}(e):void 0),i=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return i?zr(new Nr(i,e)):Pr(r.errors)}Nr.prototype.evaluateWithoutErrorHandling=function(t,e,r,i,n,o){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=i,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=o,this.expression.evaluate(this._evaluator)},Nr.prototype.evaluate=function(t,e,r,i,n,o){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=i,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=o||null;try{var a=this.expression.evaluate(this._evaluator);if(null==a||"number"==typeof a&&a!=a)return this._defaultValue;if(this._enumValues&&!(a in this._enumValues))throw new se("Expected value to be one of "+Object.keys(this._enumValues).map(function(t){return JSON.stringify(t)}).join(", ")+", but found "+JSON.stringify(a)+" instead.");return a}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Zr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Be(e.expression)};Zr.prototype.evaluateWithoutErrorHandling=function(t,e,r,i,n,o){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,i,n,o)},Zr.prototype.evaluate=function(t,e,r,i,n,o){return this._styleExpression.evaluate(t,e,r,i,n,o)};var Gr=function(t,e,r,i){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Be(e.expression),this.interpolationType=i};function Xr(t,e){if("error"===(t=qr(t,e)).result)return t;var r=t.value.expression,i=Le(r);if(!i&&!Cr(e))return Pr([new Mt("","data expressions not supported")]);var n=Re(r,["zoom"]);if(!n&&!kr(e))return Pr([new Mt("","zoom expressions not supported")]);var o=function t(e){var r=null;if(e instanceof or)r=t(e.result);else if(e instanceof nr)for(var i=0,n=e.args;ii.maximum?[new At(e,r,r+" is greater than the maximum value "+i.maximum)]:[]}function Yr(t){var e,r,i,n=t.valueSpec,o=Ct(t.value.type),a={},s="categorical"!==o&&void 0===t.value.property,l=!s,u="array"===Dr(t.value.stops)&&"array"===Dr(t.value.stops[0])&&"object"===Dr(t.value.stops[0][0]),c=Kr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===o)return[new At(t.key,t.value,'identity function may not have a "stops" property')];var e=[],r=t.value;return e=e.concat(Hr({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:p})),"array"===Dr(r)&&0===r.length&&e.push(new At(t.key,r,"array must have at least one stop")),e},default:function(t){return vi({key:t.key,value:t.value,valueSpec:n,style:t.style,styleSpec:t.styleSpec})}}});return"identity"===o&&s&&c.push(new At(t.key,t.value,'missing required property "property"')),"identity"===o||t.value.stops||c.push(new At(t.key,t.value,'missing required property "stops"')),"exponential"===o&&t.valueSpec.expression&&!Mr(t.valueSpec)&&c.push(new At(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!Cr(t.valueSpec)?c.push(new At(t.key,t.value,"property functions not supported")):s&&!kr(t.valueSpec)&&c.push(new At(t.key,t.value,"zoom functions not supported"))),"categorical"!==o&&!u||void 0!==t.value.property||c.push(new At(t.key,t.value,'"property" property is required')),c;function p(t){var e=[],o=t.value,s=t.key;if("array"!==Dr(o))return[new At(s,o,"array expected, "+Dr(o)+" found")];if(2!==o.length)return[new At(s,o,"array length 2 expected, length "+o.length+" found")];if(u){if("object"!==Dr(o[0]))return[new At(s,o,"object expected, "+Dr(o[0])+" found")];if(void 0===o[0].zoom)return[new At(s,o,"object stop key must have zoom")];if(void 0===o[0].value)return[new At(s,o,"object stop key must have value")];if(i&&i>Ct(o[0].zoom))return[new At(s,o[0].zoom,"stop zoom values must appear in ascending order")];Ct(o[0].zoom)!==i&&(i=Ct(o[0].zoom),r=void 0,a={}),e=e.concat(Kr({key:s+"[0]",value:o[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Jr,value:h}}))}else e=e.concat(h({key:s+"[0]",value:o[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},o));return jr(kt(o[1]))?e.concat([new At(s+"[1]",o[1],"expressions are not allowed in function stops.")]):e.concat(vi({key:s+"[1]",value:o[1],valueSpec:n,style:t.style,styleSpec:t.styleSpec}))}function h(t,i){var s=Dr(t.value),l=Ct(t.value),u=null!==t.value?t.value:i;if(e){if(s!==e)return[new At(t.key,u,s+" stop domain type must match previous stop domain type "+e)]}else e=s;if("number"!==s&&"string"!==s&&"boolean"!==s)return[new At(t.key,u,"stop domain value must be a number, string, or boolean")];if("number"!==s&&"categorical"!==o){var c="number expected, "+s+" found";return Cr(n)&&void 0===o&&(c+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new At(t.key,u,c)]}return"categorical"!==o||"number"!==s||isFinite(l)&&Math.floor(l)===l?"categorical"!==o&&"number"===s&&void 0!==r&&l=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(var e=0,r=t.slice(1);ee?1:0}function ni(t){if(!t)return!0;var e,r=t[0];return t.length<=1?"any"!==r:"=="===r?oi(t[1],t[2],"=="):"!="===r?li(oi(t[1],t[2],"==")):"<"===r||">"===r||"<="===r||">="===r?oi(t[1],t[2],r):"any"===r?(e=t.slice(1),["any"].concat(e.map(ni))):"all"===r?["all"].concat(t.slice(1).map(ni)):"none"===r?["all"].concat(t.slice(1).map(ni).map(li)):"in"===r?ai(t[1],t.slice(2)):"!in"===r?li(ai(t[1],t.slice(2))):"has"===r?si(t[1]):"!has"===r?li(si(t[1])):"within"!==r||t}function oi(t,e,r){switch(t){case"$type":return["filter-type-"+r,e];case"$id":return["filter-id-"+r,e];default:return["filter-"+r,t,e]}}function ai(t,e){if(0===e.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(function(t){return typeof t!=typeof e[0]})?["filter-in-large",t,["literal",e.sort(ii)]]:["filter-in-small",t,["literal",e]]}}function si(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function li(t){return["!",t]}function ui(t){return ti(kt(t.value))?Qr(Pt({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):function t(e){var r=e.value,i=e.key;if("array"!==Dr(r))return[new At(i,r,"array expected, "+Dr(r)+" found")];var n,o=e.styleSpec,a=[];if(r.length<1)return[new At(i,r,"filter array must have at least 1 element")];switch(a=a.concat($r({key:i+"[0]",value:r[0],valueSpec:o.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ct(r[0])){case"<":case"<=":case">":case">=":r.length>=2&&"$type"===Ct(r[1])&&a.push(new At(i,r,'"$type" cannot be use with operator "'+r[0]+'"'));case"==":case"!=":3!==r.length&&a.push(new At(i,r,'filter array for operator "'+r[0]+'" must have 3 elements'));case"in":case"!in":r.length>=2&&"string"!==(n=Dr(r[1]))&&a.push(new At(i+"[1]",r[1],"string expected, "+n+" found"));for(var s=2;s=c[f+0]&&i>=c[f+1])?(a[h]=!0,o.push(u[h])):a[h]=!1}}},Ci.prototype._forEachCell=function(t,e,r,i,n,o,a,s){for(var l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),p=this._convertToCellCoord(i),h=l;h<=c;h++)for(var f=u;f<=p;f++){var d=this.d*f+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(f),this._convertFromCellCoord(h+1),this._convertFromCellCoord(f+1)))&&n.call(this,t,e,r,i,d,o,a,s))return}},Ci.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Ci.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Ci.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,i=0;i=0)){var c=t[u];l[u]=Di[s].shallow.indexOf(u)>=0?c:Oi(c,e)}t instanceof Error&&(l.message=t.message)}if(l.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==s&&(l.$name=s),l}throw new Error("can't serialize object of type "+typeof t)}function Ui(t){if(null==t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Ri(t)||Fi(t)||ArrayBuffer.isView(t)||t instanceof ki)return t;if(Array.isArray(t))return t.map(Ui);if("object"==typeof t){var e=t.$name||"Object",r=Di[e].klass;if(!r)throw new Error("can't deserialize unregistered class "+e);if(r.deserialize)return r.deserialize(t);for(var i=Object.create(r.prototype),n=0,o=Object.keys(t);n=0?s:Ui(s)}}return i}throw new Error("can't deserialize object of type "+typeof t)}var Vi=function(){this.first=!0};Vi.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},"Arabic Supplement":function(t){return t>=1872&&t<=1919},"Arabic Extended-A":function(t){return t>=2208&&t<=2303},"Hangul Jamo":function(t){return t>=4352&&t<=4607},"Unified Canadian Aboriginal Syllabics":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(t){return t>=6320&&t<=6399},"General Punctuation":function(t){return t>=8192&&t<=8303},"Letterlike Symbols":function(t){return t>=8448&&t<=8527},"Number Forms":function(t){return t>=8528&&t<=8591},"Miscellaneous Technical":function(t){return t>=8960&&t<=9215},"Control Pictures":function(t){return t>=9216&&t<=9279},"Optical Character Recognition":function(t){return t>=9280&&t<=9311},"Enclosed Alphanumerics":function(t){return t>=9312&&t<=9471},"Geometric Shapes":function(t){return t>=9632&&t<=9727},"Miscellaneous Symbols":function(t){return t>=9728&&t<=9983},"Miscellaneous Symbols and Arrows":function(t){return t>=11008&&t<=11263},"CJK Radicals Supplement":function(t){return t>=11904&&t<=12031},"Kangxi Radicals":function(t){return t>=12032&&t<=12255},"Ideographic Description Characters":function(t){return t>=12272&&t<=12287},"CJK Symbols and Punctuation":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},"Hangul Compatibility Jamo":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},"Bopomofo Extended":function(t){return t>=12704&&t<=12735},"CJK Strokes":function(t){return t>=12736&&t<=12783},"Katakana Phonetic Extensions":function(t){return t>=12784&&t<=12799},"Enclosed CJK Letters and Months":function(t){return t>=12800&&t<=13055},"CJK Compatibility":function(t){return t>=13056&&t<=13311},"CJK Unified Ideographs Extension A":function(t){return t>=13312&&t<=19903},"Yijing Hexagram Symbols":function(t){return t>=19904&&t<=19967},"CJK Unified Ideographs":function(t){return t>=19968&&t<=40959},"Yi Syllables":function(t){return t>=40960&&t<=42127},"Yi Radicals":function(t){return t>=42128&&t<=42191},"Hangul Jamo Extended-A":function(t){return t>=43360&&t<=43391},"Hangul Syllables":function(t){return t>=44032&&t<=55215},"Hangul Jamo Extended-B":function(t){return t>=55216&&t<=55295},"Private Use Area":function(t){return t>=57344&&t<=63743},"CJK Compatibility Ideographs":function(t){return t>=63744&&t<=64255},"Arabic Presentation Forms-A":function(t){return t>=64336&&t<=65023},"Vertical Forms":function(t){return t>=65040&&t<=65055},"CJK Compatibility Forms":function(t){return t>=65072&&t<=65103},"Small Form Variants":function(t){return t>=65104&&t<=65135},"Arabic Presentation Forms-B":function(t){return t>=65136&&t<=65279},"Halfwidth and Fullwidth Forms":function(t){return t>=65280&&t<=65519}};function ji(t){for(var e=0,r=t;e=65097&&t<=65103)||Ni["CJK Compatibility Ideographs"](t)||Ni["CJK Compatibility"](t)||Ni["CJK Radicals Supplement"](t)||Ni["CJK Strokes"](t)||!(!Ni["CJK Symbols and Punctuation"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Ni["CJK Unified Ideographs Extension A"](t)||Ni["CJK Unified Ideographs"](t)||Ni["Enclosed CJK Letters and Months"](t)||Ni["Hangul Compatibility Jamo"](t)||Ni["Hangul Jamo Extended-A"](t)||Ni["Hangul Jamo Extended-B"](t)||Ni["Hangul Jamo"](t)||Ni["Hangul Syllables"](t)||Ni.Hiragana(t)||Ni["Ideographic Description Characters"](t)||Ni.Kanbun(t)||Ni["Kangxi Radicals"](t)||Ni["Katakana Phonetic Extensions"](t)||Ni.Katakana(t)&&12540!==t||!(!Ni["Halfwidth and Fullwidth Forms"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!Ni["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||Ni["Unified Canadian Aboriginal Syllabics"](t)||Ni["Unified Canadian Aboriginal Syllabics Extended"](t)||Ni["Vertical Forms"](t)||Ni["Yijing Hexagram Symbols"](t)||Ni["Yi Syllables"](t)||Ni["Yi Radicals"](t))))}function Zi(t){return!(qi(t)||function(t){return!!(Ni["Latin-1 Supplement"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||Ni["General Punctuation"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||Ni["Letterlike Symbols"](t)||Ni["Number Forms"](t)||Ni["Miscellaneous Technical"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||Ni["Control Pictures"](t)&&9251!==t||Ni["Optical Character Recognition"](t)||Ni["Enclosed Alphanumerics"](t)||Ni["Geometric Shapes"](t)||Ni["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||Ni["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||Ni["CJK Symbols and Punctuation"](t)||Ni.Katakana(t)||Ni["Private Use Area"](t)||Ni["CJK Compatibility Forms"](t)||Ni["Small Form Variants"](t)||Ni["Halfwidth and Fullwidth Forms"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function Gi(t){return t>=1424&&t<=2303||Ni["Arabic Presentation Forms-A"](t)||Ni["Arabic Presentation Forms-B"](t)}function Xi(t,e){return!(!e&&Gi(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||Ni.Khmer(t))}function Wi(t){for(var e=0,r=t;e-1&&(Hi="error"),Ki&&Ki(t)};function Qi(){$i.fire(new St("pluginStateChange",{pluginStatus:Hi,pluginURL:Ji}))}var $i=new It,tn=function(){return Hi},en=function(){if("deferred"!==Hi||!Ji)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");Hi="loading",Qi(),Ji&&_t({url:Ji},function(t){t?Yi(t):(Hi="loaded",Qi())})},rn={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return"loaded"===Hi||null!=rn.applyArabicShaping},isLoading:function(){return"loading"===Hi},setState:function(t){Hi=t.pluginStatus,Ji=t.pluginURL},isParsed:function(){return null!=rn.applyArabicShaping&&null!=rn.processBidirectionalText&&null!=rn.processStyledBidirectionalText},getPluginURL:function(){return Ji}},nn=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Vi,this.transition={})};nn.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,i=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var on=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Lr(t))return new Wr(t,e);if(jr(t)){var r=Xr(t,e);if("error"===r.result)throw new Error(r.value.map(function(t){return t.key+": "+t.message}).join(", "));return r.value}var i=t;return"string"==typeof t&&"color"===e.type&&(i=Yt.parse(t)),{kind:"constant",evaluate:function(){return i}}}(void 0===e?t.specification.default:e,t.specification)};on.prototype.isDataDriven=function(){return"source"===this.expression.kind||"composite"===this.expression.kind},on.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var an=function(t){this.property=t,this.value=new on(t,void 0)};an.prototype.transitioned=function(t,e){return new ln(this.property,this.value,e,c({},t.transition,this.transition),t.now)},an.prototype.untransitioned=function(){return new ln(this.property,this.value,null,{},0)};var sn=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};sn.prototype.getValue=function(t){return v(this._values[t].value.value)},sn.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new an(this._values[t].property)),this._values[t].value=new on(this._values[t].property,null===e?void 0:v(e))},sn.prototype.getTransition=function(t){return v(this._values[t].transition)},sn.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new an(this._values[t].property)),this._values[t].transition=v(e)||void 0},sn.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,n;if(this.value.isDataDriven())return this.prior=null,n;if(i=1)return 1;var e=a*a,r=e*a;return 4*(a<.5?r:3*(a-e)+r-.75)}())}return n};var un=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};un.prototype.possiblyEvaluate=function(t,e,r){for(var i=new hn(this._properties),n=0,o=Object.keys(this._values);ni.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(dn),yn=function(t){this.specification=t};yn.prototype.possiblyEvaluate=function(t,e,r,i){if(void 0!==t.value){if("constant"===t.expression.kind){var n=t.expression.evaluate(e,null,{},r,i);return this._calculate(n,n,n,e)}return this._calculate(t.expression.evaluate(new nn(Math.floor(e.zoom-1),e)),t.expression.evaluate(new nn(Math.floor(e.zoom),e)),t.expression.evaluate(new nn(Math.floor(e.zoom+1),e)),e)}},yn.prototype._calculate=function(t,e,r,i){return i.zoom>i.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},yn.prototype.interpolate=function(t){return t};var gn=function(t){this.specification=t};gn.prototype.possiblyEvaluate=function(t,e,r,i){return!!t.expression.evaluate(e,null,{},r,i)},gn.prototype.interpolate=function(){return!1};var _n=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var i=this.defaultPropertyValues[e]=new on(r,void 0),n=this.defaultTransitionablePropertyValues[e]=new an(r);this.defaultTransitioningPropertyValues[e]=n.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=i.possiblyEvaluate({})}};Li("DataDrivenProperty",dn),Li("DataConstantProperty",fn),Li("CrossFadedDataDrivenProperty",mn),Li("CrossFadedProperty",yn),Li("ColorRampProperty",gn);var vn=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},"custom"!==e.type&&(this.metadata=(e=e).metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,"background"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new cn(r.layout)),r.paint)){for(var i in this._transitionablePaint=new sn(r.paint),e.paint)this.setPaintProperty(i,e.paint[i],{validate:!1});for(var n in e.layout)this.setLayoutProperty(n,e.layout[n],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new hn(r.paint)}}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return"visibility"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){void 0===r&&(r={}),null!=e&&this._validate(Ai,"layers."+this.id+".layout."+t,t,e,r)||("visibility"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e)},e.prototype.getPaintProperty=function(t){return y(t,"-transition")?this._transitionablePaint.getTransition(t.slice(0,-"-transition".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e&&this._validate(Ei,"layers."+this.id+".paint."+t,t,e,r))return!1;if(y(t,"-transition"))return this._transitionablePaint.setTransition(t.slice(0,-"-transition".length),e||void 0),!1;var i=this._transitionablePaint._values[t],n="cross-faded-data-driven"===i.property.specification["property-type"],o=i.value.isDataDriven(),a=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var s=this._transitionablePaint._values[t].value;return s.isDataDriven()||o||n||this._handleOverridablePaintPropertyUpdate(t,a,s)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||"none"===this.visibility},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),_(t,function(t,e){return!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)})},e.prototype._validate=function(t,e,r,i,n){return void 0===n&&(n={}),(!n||!1!==n.validate)&&zi(this,t.call(Ti,{key:e,layerType:this.type,objectKey:r,value:i,styleSpec:Et,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof pn&&Cr(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return!0}return!1},e}(It),xn={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},bn=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},wn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Sn(t,e){void 0===e&&(e=1);var r=0,i=0;return{members:t.map(function(t){var n=xn[t.type].BYTES_PER_ELEMENT,o=r=Tn(r,Math.max(e,n)),a=t.components||1;return i=Math.max(i,n),r+=n*a,{name:t.name,type:t.type,components:a,offset:o}}),size:Tn(r,Math.max(i,e)),alignment:e}}function Tn(t,e){return Math.ceil(t/e)*e}wn.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},wn.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},wn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},wn.prototype.clear=function(){this.length=0},wn.prototype.resize=function(t){this.reserve(t),this.length=t},wn.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},wn.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};var In=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var i=2*t;return this.int16[i+0]=e,this.int16[i+1]=r,t},e}(wn);In.prototype.bytesPerElement=4,Li("StructArrayLayout2i4",In);var En=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r,i)},e.prototype.emplace=function(t,e,r,i,n){var o=4*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=i,this.int16[o+3]=n,t},e}(wn);En.prototype.bytesPerElement=8,Li("StructArrayLayout4i8",En);var An=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,i,n,o)},e.prototype.emplace=function(t,e,r,i,n,o,a){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=i,this.int16[s+3]=n,this.int16[s+4]=o,this.int16[s+5]=a,t},e}(wn);An.prototype.bytesPerElement=12,Li("StructArrayLayout2i4i12",An);var zn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,i,n,o)},e.prototype.emplace=function(t,e,r,i,n,o,a){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=i,this.uint8[l+5]=n,this.uint8[l+6]=o,this.uint8[l+7]=a,t},e}(wn);zn.prototype.bytesPerElement=8,Li("StructArrayLayout2i4ub8",zn);var Pn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l,u){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,i,n,o,a,s,l,u)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u,c){var p=9*t,h=18*t;return this.uint16[p+0]=e,this.uint16[p+1]=r,this.uint16[p+2]=i,this.uint16[p+3]=n,this.uint16[p+4]=o,this.uint16[p+5]=a,this.uint16[p+6]=s,this.uint16[p+7]=l,this.uint8[h+16]=u,this.uint8[h+17]=c,t},e}(wn);Pn.prototype.bytesPerElement=18,Li("StructArrayLayout8ui2ub18",Pn);var Cn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l,u,c,p){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,i,n,o,a,s,l,u,c,p)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u,c,p,h){var f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=i,this.int16[f+3]=n,this.uint16[f+4]=o,this.uint16[f+5]=a,this.uint16[f+6]=s,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=p,this.int16[f+11]=h,t},e}(wn);Cn.prototype.bytesPerElement=24,Li("StructArrayLayout4i4ui4i24",Cn);var kn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r)},e.prototype.emplace=function(t,e,r,i){var n=3*t;return this.float32[n+0]=e,this.float32[n+1]=r,this.float32[n+2]=i,t},e}(wn);kn.prototype.bytesPerElement=12,Li("StructArrayLayout3f12",kn);var Mn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.uint32[1*t+0]=e,t},e}(wn);Mn.prototype.bytesPerElement=4,Li("StructArrayLayout1ul4",Mn);var Dn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,i,n,o,a,s,l)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u){var c=10*t,p=5*t;return this.int16[c+0]=e,this.int16[c+1]=r,this.int16[c+2]=i,this.int16[c+3]=n,this.int16[c+4]=o,this.int16[c+5]=a,this.uint32[p+3]=s,this.uint16[c+8]=l,this.uint16[c+9]=u,t},e}(wn);Dn.prototype.bytesPerElement=20,Li("StructArrayLayout6i1ul2ui20",Dn);var Ln=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,i,n,o)},e.prototype.emplace=function(t,e,r,i,n,o,a){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=i,this.int16[s+3]=n,this.int16[s+4]=o,this.int16[s+5]=a,t},e}(wn);Ln.prototype.bytesPerElement=12,Li("StructArrayLayout2i2i2i12",Ln);var Bn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,i,n)},e.prototype.emplace=function(t,e,r,i,n,o){var a=4*t,s=8*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=i,this.int16[s+6]=n,this.int16[s+7]=o,t},e}(wn);Bn.prototype.bytesPerElement=16,Li("StructArrayLayout2f1f2i16",Bn);var Rn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r,i)},e.prototype.emplace=function(t,e,r,i,n){var o=12*t,a=3*t;return this.uint8[o+0]=e,this.uint8[o+1]=r,this.float32[a+1]=i,this.float32[a+2]=n,t},e}(wn);Rn.prototype.bytesPerElement=12,Li("StructArrayLayout2ub2f12",Rn);var Fn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r)},e.prototype.emplace=function(t,e,r,i){var n=3*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,this.uint16[n+2]=i,t},e}(wn);Fn.prototype.bytesPerElement=6,Li("StructArrayLayout3ui6",Fn);var On=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y){var g=this.length;return this.resize(g+1),this.emplace(g,t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g){var _=24*t,v=12*t,x=48*t;return this.int16[_+0]=e,this.int16[_+1]=r,this.uint16[_+2]=i,this.uint16[_+3]=n,this.uint32[v+2]=o,this.uint32[v+3]=a,this.uint32[v+4]=s,this.uint16[_+10]=l,this.uint16[_+11]=u,this.uint16[_+12]=c,this.float32[v+7]=p,this.float32[v+8]=h,this.uint8[x+36]=f,this.uint8[x+37]=d,this.uint8[x+38]=m,this.uint32[v+10]=y,this.int16[_+22]=g,t},e}(wn);On.prototype.bytesPerElement=48,Li("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",On);var Un=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g,_,v,x,b,w,S,T,I,E,A){var z=this.length;return this.resize(z+1),this.emplace(z,t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g,_,v,x,b,w,S,T,I,E,A)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g,_,v,x,b,w,S,T,I,E,A,z){var P=34*t,C=17*t;return this.int16[P+0]=e,this.int16[P+1]=r,this.int16[P+2]=i,this.int16[P+3]=n,this.int16[P+4]=o,this.int16[P+5]=a,this.int16[P+6]=s,this.int16[P+7]=l,this.uint16[P+8]=u,this.uint16[P+9]=c,this.uint16[P+10]=p,this.uint16[P+11]=h,this.uint16[P+12]=f,this.uint16[P+13]=d,this.uint16[P+14]=m,this.uint16[P+15]=y,this.uint16[P+16]=g,this.uint16[P+17]=_,this.uint16[P+18]=v,this.uint16[P+19]=x,this.uint16[P+20]=b,this.uint16[P+21]=w,this.uint16[P+22]=S,this.uint32[C+12]=T,this.float32[C+13]=I,this.float32[C+14]=E,this.float32[C+15]=A,this.float32[C+16]=z,t},e}(wn);Un.prototype.bytesPerElement=68,Li("StructArrayLayout8i15ui1ul4f68",Un);var Vn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.float32[1*t+0]=e,t},e}(wn);Vn.prototype.bytesPerElement=4,Li("StructArrayLayout1f4",Vn);var Nn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r)},e.prototype.emplace=function(t,e,r,i){var n=3*t;return this.int16[n+0]=e,this.int16[n+1]=r,this.int16[n+2]=i,t},e}(wn);Nn.prototype.bytesPerElement=6,Li("StructArrayLayout3i6",Nn);var jn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r)},e.prototype.emplace=function(t,e,r,i){var n=4*t;return this.uint32[2*t+0]=e,this.uint16[n+2]=r,this.uint16[n+3]=i,t},e}(wn);jn.prototype.bytesPerElement=8,Li("StructArrayLayout1ul2ui8",jn);var qn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var i=2*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,t},e}(wn);qn.prototype.bytesPerElement=4,Li("StructArrayLayout2ui4",qn);var Zn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.uint16[1*t+0]=e,t},e}(wn);Zn.prototype.bytesPerElement=2,Li("StructArrayLayout1ui2",Zn);var Gn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var i=2*t;return this.float32[i+0]=e,this.float32[i+1]=r,t},e}(wn);Gn.prototype.bytesPerElement=8,Li("StructArrayLayout2f8",Gn);var Xn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r,i)},e.prototype.emplace=function(t,e,r,i,n){var o=4*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=i,this.float32[o+3]=n,t},e}(wn);Xn.prototype.bytesPerElement=16,Li("StructArrayLayout4f16",Xn);var Wn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new n(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(bn);Wn.prototype.size=20;var Kn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new Wn(this,t)},e}(Dn);Li("CollisionBoxArray",Kn);var Hn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(bn);Hn.prototype.size=48;var Jn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new Hn(this,t)},e}(On);Li("PlacedSymbolArray",Jn);var Yn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(bn);Yn.prototype.size=68;var Qn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new Yn(this,t)},e}(Un);Li("SymbolInstanceArray",Qn);var $n=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Vn);Li("GlyphOffsetArray",$n);var to=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Nn);Li("SymbolLineVertexArray",to);var eo=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(bn);eo.prototype.size=8;var ro=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new eo(this,t)},e}(jn);Li("FeatureIndexArray",ro);var io=Sn([{name:"a_pos",components:2,type:"Int16"}],4).members,no=function(t){void 0===t&&(t=[]),this.segments=t};function oo(t,e){return 256*(t=l(Math.floor(t),0,255))+l(Math.floor(e),0,255)}no.prototype.prepareSegment=function(t,e,r,i){var n=this.segments[this.segments.length-1];return t>no.MAX_VERTEX_ARRAY_LENGTH&&b("Max vertices per segment is "+no.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+t),(!n||n.vertexLength+t>no.MAX_VERTEX_ARRAY_LENGTH||n.sortKey!==i)&&(n={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==i&&(n.sortKey=i),this.segments.push(n)),n},no.prototype.get=function(){return this.segments},no.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|n>>>19))+((5*(n>>>16)&65535)<<16)&4294967295))+((58964+(o>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:n^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return n^=t.length,n=2246822507*(65535&(n^=n>>>16))+((2246822507*(n>>>16)&65535)<<16)&4294967295,n=3266489909*(65535&(n^=n>>>13))+((3266489909*(n>>>16)&65535)<<16)&4294967295,(n^=n>>>16)>>>0}}),lo=e(function(t){t.exports=function(t,e){for(var r,i=t.length,n=e^i,o=0;i>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(o)|(255&t.charCodeAt(++o))<<8|(255&t.charCodeAt(++o))<<16|(255&t.charCodeAt(++o))<<24))+((1540483477*(r>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),i-=4,++o;switch(i){case 3:n^=(255&t.charCodeAt(o+2))<<16;case 2:n^=(255&t.charCodeAt(o+1))<<8;case 1:n=1540483477*(65535&(n^=255&t.charCodeAt(o)))+((1540483477*(n>>>16)&65535)<<16)}return n=1540483477*(65535&(n^=n>>>13))+((1540483477*(n>>>16)&65535)<<16),(n^=n>>>15)>>>0}}),uo=so,co=lo;uo.murmur3=so,uo.murmur2=co;var po=function(){this.ids=[],this.positions=[],this.indexed=!1};po.prototype.add=function(t,e,r,i){this.ids.push(fo(t)),this.positions.push(e,r,i)},po.prototype.getPositions=function(t){for(var e=fo(t),r=0,i=this.ids.length-1;r>1;this.ids[n]>=e?i=n:r=n+1}for(var o=[];this.ids[r]===e;)o.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return o},po.serialize=function(t,e){var r=new Float64Array(t.ids),i=new Uint32Array(t.positions);return function t(e,r,i,n){for(;i>1],a=i-1,s=n+1;;){do{a++}while(e[a]o);if(a>=s)break;mo(e,a,s),mo(r,3*a,3*s),mo(r,3*a+1,3*s+1),mo(r,3*a+2,3*s+2)}s-iBo.max||a.yBo.max)&&(b("Geometry exceeds allowed extent, reduce your vector tile buffer size"),a.x=l(a.x,Bo.min,Bo.max),a.y=l(a.y,Bo.min,Bo.max))}return r}function Fo(t,e,r,i,n){t.emplaceBack(2*e+(i+1)/2,2*r+(n+1)/2)}var Oo=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new In,this.indexArray=new Fn,this.segments=new no,this.programConfigurations=new Mo(io,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};function Uo(t,e){for(var r=0;r1){if(qo(t,e))return!0;for(var i=0;i1?r:r.sub(e)._mult(n)._add(e))}function Wo(t,e){for(var r,i,n,o=!1,a=0;ae.y!=(n=r[l]).y>e.y&&e.x<(n.x-i.x)*(e.y-i.y)/(n.y-i.y)+i.x&&(o=!o);return o}function Ko(t,e){for(var r=!1,i=0,n=t.length-1;ie.y!=a.y>e.y&&e.x<(a.x-o.x)*(e.y-o.y)/(a.y-o.y)+o.x&&(r=!r)}return r}function Ho(t,e,r){var i=r[0],n=r[2];if(t.xn.x&&e.x>n.x||t.yn.y&&e.y>n.y)return!1;var o=w(t,e,r[0]);return o!==w(t,e,r[1])||o!==w(t,e,r[2])||o!==w(t,e,r[3])}function Jo(t,e,r){var i=e.paint.get(t).value;return"constant"===i.kind?i.value:r.programConfigurations.get(e.id).getMaxValue(t)}function Yo(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Qo(t,e,r,i,o){if(!e[0]&&!e[1])return t;var a=n.convert(e)._mult(o);"viewport"===r&&a._rotate(-i);for(var s=[],l=0;l=8192||c<0||c>=8192)){var p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=p.vertexLength;Fo(this.layoutVertexArray,u,c,-1,-1),Fo(this.layoutVertexArray,u,c,1,-1),Fo(this.layoutVertexArray,u,c,1,1),Fo(this.layoutVertexArray,u,c,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),p.vertexLength+=4,p.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},i)},Li("CircleBucket",Oo,{omit:["layers"]});var $o=new _n({"circle-sort-key":new dn(Et.layout_circle["circle-sort-key"])}),ta={paint:new _n({"circle-radius":new dn(Et.paint_circle["circle-radius"]),"circle-color":new dn(Et.paint_circle["circle-color"]),"circle-blur":new dn(Et.paint_circle["circle-blur"]),"circle-opacity":new dn(Et.paint_circle["circle-opacity"]),"circle-translate":new fn(Et.paint_circle["circle-translate"]),"circle-translate-anchor":new fn(Et.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new fn(Et.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new fn(Et.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new dn(Et.paint_circle["circle-stroke-width"]),"circle-stroke-color":new dn(Et.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new dn(Et.paint_circle["circle-stroke-opacity"])}),layout:$o},ea="undefined"!=typeof Float32Array?Float32Array:Array;function ra(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function ia(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3],s=e[4],l=e[5],u=e[6],c=e[7],p=e[8],h=e[9],f=e[10],d=e[11],m=e[12],y=e[13],g=e[14],_=e[15],v=r[0],x=r[1],b=r[2],w=r[3];return t[0]=v*i+x*s+b*p+w*m,t[1]=v*n+x*l+b*h+w*y,t[2]=v*o+x*u+b*f+w*g,t[3]=v*a+x*c+b*d+w*_,t[4]=(v=r[4])*i+(x=r[5])*s+(b=r[6])*p+(w=r[7])*m,t[5]=v*n+x*l+b*h+w*y,t[6]=v*o+x*u+b*f+w*g,t[7]=v*a+x*c+b*d+w*_,t[8]=(v=r[8])*i+(x=r[9])*s+(b=r[10])*p+(w=r[11])*m,t[9]=v*n+x*l+b*h+w*y,t[10]=v*o+x*u+b*f+w*g,t[11]=v*a+x*c+b*d+w*_,t[12]=(v=r[12])*i+(x=r[13])*s+(b=r[14])*p+(w=r[15])*m,t[13]=v*n+x*l+b*h+w*y,t[14]=v*o+x*u+b*f+w*g,t[15]=v*a+x*c+b*d+w*_,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var na,oa=ia;function aa(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3];return t[0]=r[0]*i+r[4]*n+r[8]*o+r[12]*a,t[1]=r[1]*i+r[5]*n+r[9]*o+r[13]*a,t[2]=r[2]*i+r[6]*n+r[10]*o+r[14]*a,t[3]=r[3]*i+r[7]*n+r[11]*o+r[15]*a,t}na=new ea(3),ea!=Float32Array&&(na[0]=0,na[1]=0,na[2]=0),function(){var t=new ea(4);ea!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0)}();var sa=(function(){var t=new ea(2);ea!=Float32Array&&(t[0]=0,t[1]=0)}(),function(t){function e(e){t.call(this,e,ta)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.createBucket=function(t){return new Oo(t)},e.prototype.queryRadius=function(t){var e=t;return Jo("circle-radius",this,e)+Jo("circle-stroke-width",this,e)+Yo(this.paint.get("circle-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,i,n,o,a,s){for(var l=Qo(t,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),o.angle,a),u=this.paint.get("circle-radius").evaluate(e,r)+this.paint.get("circle-stroke-width").evaluate(e,r),c="map"===this.paint.get("circle-pitch-alignment"),p=c?l:function(t,e){return l.map(function(t){return la(t,e)})}(0,s),h=c?u*a:u,f=0,d=i;ft.width||n.height>t.height||r.x>t.width-n.width||r.y>t.height-n.height)throw new RangeError("out of range source coordinates for image copy");if(n.width>e.width||n.height>e.height||i.x>e.width-n.width||i.y>e.height-n.height)throw new RangeError("out of range destination coordinates for image copy");for(var a=t.data,s=e.data,l=0;l80*r){i=o=t[0],n=a=t[1];for(var d=r;do&&(o=s),l>a&&(a=l);u=0!==(u=Math.max(o-i,a-n))?1/u:0}return Ea(h,f,r,i,n,u),f}function Ta(t,e,r,i,n){var o,a;if(n===Ka(t,e,r,i)>0)for(o=e;o=e;o-=i)a=Ga(o,t[o],t[o+1],a);return a&&Ua(a,a.next)&&(Xa(a),a=a.next),a}function Ia(t,e){if(!t)return t;e||(e=t);var r,i=t;do{if(r=!1,i.steiner||!Ua(i,i.next)&&0!==Oa(i.prev,i,i.next))i=i.next;else{if(Xa(i),(i=e=i.prev)===i.next)break;r=!0}}while(r||i!==e);return e}function Ea(t,e,r,i,n,o,a){if(t){!a&&o&&function(t,e,r,i){var n=t;do{null===n.z&&(n.z=La(n.x,n.y,e,r,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==t);n.prevZ.nextZ=null,n.prevZ=null,function(t){var e,r,i,n,o,a,s,l,u=1;do{for(r=t,t=null,o=null,a=0;r;){for(a++,i=r,s=0,e=0;e0||l>0&&i;)0!==s&&(0===l||!i||r.z<=i.z)?(n=r,r=r.nextZ,s--):(n=i,i=i.nextZ,l--),o?o.nextZ=n:t=n,n.prevZ=o,o=n;r=i}o.nextZ=null,u*=2}while(a>1)}(n)}(t,i,n,o);for(var s,l,u=t;t.prev!==t.next;)if(s=t.prev,l=t.next,o?za(t,i,n,o):Aa(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),Xa(t),t=l.next,u=l.next;else if((t=l)===u){a?1===a?Ea(t=Pa(Ia(t),e,r),e,r,i,n,o,2):2===a&&Ca(t,e,r,i,n,o):Ea(Ia(t),e,r,i,n,o,1);break}}}function Aa(t){var e=t.prev,r=t,i=t.next;if(Oa(e,r,i)>=0)return!1;for(var n=t.next.next;n!==t.prev;){if(Ra(e.x,e.y,r.x,r.y,i.x,i.y,n.x,n.y)&&Oa(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function za(t,e,r,i){var n=t.prev,o=t,a=t.next;if(Oa(n,o,a)>=0)return!1;for(var s=n.x>o.x?n.x>a.x?n.x:a.x:o.x>a.x?o.x:a.x,l=n.y>o.y?n.y>a.y?n.y:a.y:o.y>a.y?o.y:a.y,u=La(n.x=u&&h&&h.z<=c;){if(p!==t.prev&&p!==t.next&&Ra(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&Oa(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,h!==t.prev&&h!==t.next&&Ra(n.x,n.y,o.x,o.y,a.x,a.y,h.x,h.y)&&Oa(h.prev,h,h.next)>=0)return!1;h=h.nextZ}for(;p&&p.z>=u;){if(p!==t.prev&&p!==t.next&&Ra(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&Oa(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;h&&h.z<=c;){if(h!==t.prev&&h!==t.next&&Ra(n.x,n.y,o.x,o.y,a.x,a.y,h.x,h.y)&&Oa(h.prev,h,h.next)>=0)return!1;h=h.nextZ}return!0}function Pa(t,e,r){var i=t;do{var n=i.prev,o=i.next.next;!Ua(n,o)&&Va(n,i,i.next,o)&&qa(n,o)&&qa(o,n)&&(e.push(n.i/r),e.push(i.i/r),e.push(o.i/r),Xa(i),Xa(i.next),i=t=o),i=i.next}while(i!==t);return Ia(i)}function Ca(t,e,r,i,n,o){var a=t;do{for(var s=a.next.next;s!==a.prev;){if(a.i!==s.i&&Fa(a,s)){var l=Za(a,s);return a=Ia(a,a.next),l=Ia(l,l.next),Ea(a,e,r,i,n,o),void Ea(l,e,r,i,n,o)}s=s.next}a=a.next}while(a!==t)}function ka(t,e){return t.x-e.x}function Ma(t,e){if(e=function(t,e){var r,i=e,n=t.x,o=t.y,a=-1/0;do{if(o<=i.y&&o>=i.next.y&&i.next.y!==i.y){var s=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&s>a){if(a=s,s===n){if(o===i.y)return i;if(o===i.next.y)return i.next}r=i.x=i.x&&i.x>=c&&n!==i.x&&Ra(or.x||i.x===r.x&&Da(r,i)))&&(r=i,h=l)),i=i.next}while(i!==u);return r}(t,e)){var r=Za(e,t);Ia(e,e.next),Ia(r,r.next)}}function Da(t,e){return Oa(t.prev,t,e.prev)<0&&Oa(e.next,t,t.next)<0}function La(t,e,r,i,n){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*n)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*n)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Ba(t){var e=t,r=t;do{(e.x=0&&(t-a)*(i-s)-(r-a)*(e-s)>=0&&(r-a)*(o-s)-(n-a)*(i-s)>=0}function Fa(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&Va(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(qa(t,e)&&qa(e,t)&&function(t,e){var r=t,i=!1,n=(t.x+e.x)/2,o=(t.y+e.y)/2;do{r.y>o!=r.next.y>o&&r.next.y!==r.y&&n<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next}while(r!==t);return i}(t,e)&&(Oa(t.prev,t,e.prev)||Oa(t,e.prev,e))||Ua(t,e)&&Oa(t.prev,t,t.next)>0&&Oa(e.prev,e,e.next)>0)}function Oa(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function Ua(t,e){return t.x===e.x&&t.y===e.y}function Va(t,e,r,i){var n=ja(Oa(t,e,r)),o=ja(Oa(t,e,i)),a=ja(Oa(r,i,t)),s=ja(Oa(r,i,e));return n!==o&&a!==s||!(0!==n||!Na(t,r,e))||!(0!==o||!Na(t,i,e))||!(0!==a||!Na(r,t,i))||!(0!==s||!Na(r,e,i))}function Na(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function ja(t){return t>0?1:t<0?-1:0}function qa(t,e){return Oa(t.prev,t,t.next)<0?Oa(t,e,t.next)>=0&&Oa(t,t.prev,e)>=0:Oa(t,e,t.prev)<0||Oa(t,t.next,e)<0}function Za(t,e){var r=new Wa(t.i,t.x,t.y),i=new Wa(e.i,e.x,e.y),n=t.next,o=e.prev;return t.next=e,e.prev=t,r.next=n,n.prev=r,i.next=r,r.prev=i,o.next=i,i.prev=o,i}function Ga(t,e,r,i){var n=new Wa(t,e,r);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function Xa(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Wa(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Ka(t,e,r,i){for(var n=0,o=e,a=r-i;oi;){if(n-i>600){var a=n-i+1,s=r-i+1,l=Math.log(a),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(a-u)/a)*(s-a/2<0?-1:1);t(e,r,Math.max(i,Math.floor(r-s*u/a+c)),Math.min(n,Math.floor(r+(a-s)*u/a+c)),o)}var p=e[r],h=i,f=n;for(Ja(e,i,r),o(e[n],p)>0&&Ja(e,i,n);h0;)f--}0===o(e[i],p)?Ja(e,i,f):Ja(e,++f,n),f<=r&&(i=f+1),r<=f&&(n=f-1)}}(t,e,r||0,i||t.length-1,n||Ya)}function Ja(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function Ya(t,e){return te?1:0}function Qa(t,e){var r=t.length;if(r<=1)return[t];for(var i,n,o=[],a=0;a1)for(var l=0;l0&&r.holes.push(i+=t[n-1].length)}return r},ba.default=wa;var rs=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new In,this.indexArray=new Fn,this.indexArray2=new qn,this.programConfigurations=new Mo(xa,t.layers,t.zoom),this.segments=new no,this.segments2=new no,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};rs.prototype.populate=function(t,e,r){this.hasPattern=ts("fill",this.layers,e);for(var i=this.layers[0].layout.get("fill-sort-key"),n=[],o=0,a=t;o>3}if(o--,1===i||2===i)a+=t.readSVarint(),s+=t.readSVarint(),1===i&&(e&&l.push(e),e=[]),e.push(new n(a,s));else{if(7!==i)throw new Error("unknown command "+i);e&&e.push(e[0].clone())}}return e&&l.push(e),l},ls.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,i=0,n=0,o=0,a=1/0,s=-1/0,l=1/0,u=-1/0;t.pos>3}if(i--,1===r||2===r)(n+=t.readSVarint())s&&(s=n),(o+=t.readSVarint())u&&(u=o);else if(7!==r)throw new Error("unknown command "+r)}return[a,l,s,u]},ls.prototype.toGeoJSON=function(t,e,r){var i,n,o=this.extent*Math.pow(2,r),a=this.extent*t,s=this.extent*e,l=this.loadGeometry(),u=ls.types[this.type];function c(t){for(var e=0;e>3;e=1===i?t.readString():2===i?t.readFloat():3===i?t.readDouble():4===i?t.readVarint64():5===i?t.readVarint():6===i?t.readSVarint():7===i?t.readBoolean():null}return e}(r))}function ds(t,e,r){if(3===t){var i=new ps(r,r.readVarint()+r.pos);i.length&&(e[i.name]=i)}}hs.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new ss(this._pbf,e,this.extent,this._keys,this._values)};var ms={VectorTile:function(t,e){this.layers=t.readFields(ds,{},e)},VectorTileFeature:ss,VectorTileLayer:ps},ys=ms.VectorTileFeature.types,gs=Math.pow(2,13);function _s(t,e,r,i,n,o,a,s){t.emplaceBack(e,r,2*Math.floor(i*gs)+a,n*gs*2,o*gs*2,Math.round(s))}var vs=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new An,this.indexArray=new Fn,this.programConfigurations=new Mo(as,t.layers,t.zoom),this.segments=new no,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};function xs(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}vs.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=ts("fill-extrusion",this.layers,e);for(var i=0,n=t;i8192})||M.every(function(t){return t.y<0})||M.every(function(t){return t.y>8192})))for(var m=0,y=0;y=1){var _=d[y-1];if(!xs(g,_)){p.vertexLength+4>no.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var v=g.sub(_)._perp()._unit(),x=_.dist(g);m+x>32768&&(m=0),_s(this.layoutVertexArray,g.x,g.y,v.x,v.y,0,0,m),_s(this.layoutVertexArray,g.x,g.y,v.x,v.y,0,1,m),_s(this.layoutVertexArray,_.x,_.y,v.x,v.y,0,0,m+=x),_s(this.layoutVertexArray,_.x,_.y,v.x,v.y,0,1,m);var b=p.vertexLength;this.indexArray.emplaceBack(b,b+2,b+1),this.indexArray.emplaceBack(b+1,b+2,b+3),p.vertexLength+=4,p.primitiveLength+=2}}}}if(p.vertexLength+l>no.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),"Polygon"===ys[t.type]){for(var w=[],S=[],T=p.vertexLength,I=0,E=s;I=2&&t[l-1].equals(t[l-2]);)l--;for(var u=0;u0;if(S&&g>u){var I=c.dist(f);if(I>2*p){var E=c.sub(c.sub(f)._mult(p/I)._round());this.updateDistance(f,E),this.addCurrentVertex(E,m,0,0,h),f=E}}var A=f&&d,z=A?r:s?"butt":i;if(A&&"round"===z&&(bn&&(z="bevel"),"bevel"===z&&(b>2&&(z="flipbevel"),b100)_=y.mult(-1);else{var P=b*m.add(y).mag()/m.sub(y).mag();_._perp()._mult(P*(T?-1:1))}this.addCurrentVertex(c,_,0,0,h),this.addCurrentVertex(c,_.mult(-1),0,0,h)}else if("bevel"===z||"fakeround"===z){var C=-Math.sqrt(b*b-1),k=T?C:0,M=T?0:C;if(f&&this.addCurrentVertex(c,m,k,M,h),"fakeround"===z)for(var D=Math.round(180*w/Math.PI/20),L=1;L2*p){var V=c.add(d.sub(c)._mult(p/U)._round());this.updateDistance(c,V),this.addCurrentVertex(V,y,0,0,h),c=V}}}}},Ps.prototype.addCurrentVertex=function(t,e,r,i,n,o){void 0===o&&(o=!1);var a=e.y*i-e.x,s=-e.y-e.x*i;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,o,!1,r,n),this.addHalfVertex(t,a,s,o,!0,-i,n),this.distance>zs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,i,n,o))},Ps.prototype.addHalfVertex=function(t,e,r,i,n,o,a){var s=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((t.x<<1)+(i?1:0),(t.y<<1)+(n?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===o?0:o<0?-1:1)|(63&s)<<2,s>>6);var l=a.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,l),a.primitiveLength++),n?this.e2=l:this.e1=l},Ps.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(zs-1):this.distance},Ps.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Li("LineBucket",Ps,{omit:["layers","patternFeatures"]});var Cs=new _n({"line-cap":new fn(Et.layout_line["line-cap"]),"line-join":new dn(Et.layout_line["line-join"]),"line-miter-limit":new fn(Et.layout_line["line-miter-limit"]),"line-round-limit":new fn(Et.layout_line["line-round-limit"]),"line-sort-key":new dn(Et.layout_line["line-sort-key"])}),ks={paint:new _n({"line-opacity":new dn(Et.paint_line["line-opacity"]),"line-color":new dn(Et.paint_line["line-color"]),"line-translate":new fn(Et.paint_line["line-translate"]),"line-translate-anchor":new fn(Et.paint_line["line-translate-anchor"]),"line-width":new dn(Et.paint_line["line-width"]),"line-gap-width":new dn(Et.paint_line["line-gap-width"]),"line-offset":new dn(Et.paint_line["line-offset"]),"line-blur":new dn(Et.paint_line["line-blur"]),"line-dasharray":new yn(Et.paint_line["line-dasharray"]),"line-pattern":new mn(Et.paint_line["line-pattern"]),"line-gradient":new gn(Et.paint_line["line-gradient"])}),layout:Cs},Ms=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new nn(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,i,n){return r=c({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,i,n)},e}(dn))(ks.paint.properties["line-width"].specification);Ms.useIntegerZoom=!0;var Ds=function(t){function e(e){t.call(this,e,ks)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){"line-gradient"===t&&this._updateGradient()},e.prototype._updateGradient=function(){this.gradient=ya(this._transitionablePaint._values["line-gradient"].value.expression,"lineProgress"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values["line-floorwidth"]=Ms.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)},e.prototype.createBucket=function(t){return new Ps(t)},e.prototype.queryRadius=function(t){var e=t,r=Ls(Jo("line-width",this,e),Jo("line-gap-width",this,e)),i=Jo("line-offset",this,e);return r/2+Math.abs(i)+Yo(this.paint.get("line-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,i,o,a,s){var l=Qo(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),a.angle,s),u=s/2*Ls(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),c=this.paint.get("line-offset").evaluate(e,r);return c&&(i=function(t,e){for(var r=[],i=new n(0,0),o=0;o=3)for(var o=0;o0?e+2*t:t}var Bs=Sn([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Rs=Sn([{name:"a_projected_pos",components:3,type:"Float32"}],4),Fs=(Sn([{name:"a_fade_opacity",components:1,type:"Uint32"}],4),Sn([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}])),Os=(Sn([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]),Sn([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4)),Us=Sn([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function Vs(t,e,r){return t.sections.forEach(function(t){t.text=function(t,e,r){var i=e.layout.get("text-transform").evaluate(r,{});return"uppercase"===i?t=t.toLocaleUpperCase():"lowercase"===i&&(t=t.toLocaleLowerCase()),rn.applyArabicShaping&&(t=rn.applyArabicShaping(t)),t}(t.text,e,r)}),t}Sn([{name:"triangle",components:3,type:"Uint16"}]),Sn([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),Sn([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),Sn([{type:"Float32",name:"offsetX"}]),Sn([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);var Ns={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},js=function(t,e,r,i,n){var o,a,s=8*n-i-1,l=(1<>1,c=-7,p=r?n-1:0,h=r?-1:1,f=t[e+p];for(p+=h,o=f&(1<<-c)-1,f>>=-c,c+=s;c>0;o=256*o+t[e+p],p+=h,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=i;c>0;a=256*a+t[e+p],p+=h,c-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,i),o-=u}return(f?-1:1)*a*Math.pow(2,o-i)},qs=function(t,e,r,i,n,o){var a,s,l,u=8*o-n-1,c=(1<>1,h=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,d=i?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+p>=1?h/l:h*Math.pow(2,1-p))*l>=2&&(a++,l/=2),a+p>=c?(s=0,a=c):a+p>=1?(s=(e*l-1)*Math.pow(2,n),a+=p):(s=e*Math.pow(2,p-1)*Math.pow(2,n),a=0));n>=8;t[r+f]=255&s,f+=d,s/=256,n-=8);for(a=a<0;t[r+f]=255&a,f+=d,a/=256,u-=8);t[r+f-d]|=128*m},Zs=Gs;function Gs(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}Gs.Varint=0,Gs.Fixed64=1,Gs.Bytes=2,Gs.Fixed32=5;var Xs="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function Ws(t){return t.type===Gs.Bytes?t.readVarint()+t.pos:t.pos+1}function Ks(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Hs(t,e,r){var i=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(i);for(var n=r.pos-1;n>=t;n--)r.buf[n+i]=r.buf[n]}function Js(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function sl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function ll(t,e,r){1===t&&r.readMessage(ul,e)}function ul(t,e,r){if(3===t){var i=r.readMessage(cl,{}),n=i.width,o=i.height,a=i.left,s=i.top,l=i.advance;e.push({id:i.id,bitmap:new fa({width:n+6,height:o+6},i.bitmap),metrics:{width:n,height:o,left:a,top:s,advance:l}})}}function cl(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function pl(t){for(var e=0,r=0,i=0,n=t;i=0;h--){var f=a[h];if(!(p.w>f.w||p.h>f.h)){if(p.x=f.x,p.y=f.y,l=Math.max(l,p.y+p.h),s=Math.max(s,p.x+p.w),p.w===f.w&&p.h===f.h){var d=a.pop();h>3,o=this.pos;this.type=7&i,t(n,e,this),this.pos===o&&this.skip(i)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=ol(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=sl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=ol(this.buf,this.pos)+4294967296*ol(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=ol(this.buf,this.pos)+4294967296*sl(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=js(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=js(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,i=this.buf;return e=127&(r=i[this.pos++]),r<128?e:(e|=(127&(r=i[this.pos++]))<<7,r<128?e:(e|=(127&(r=i[this.pos++]))<<14,r<128?e:(e|=(127&(r=i[this.pos++]))<<21,r<128?e:function(t,e,r){var i,n,o=r.buf;if(i=(112&(n=o[r.pos++]))>>4,n<128)return Ks(t,i,e);if(i|=(127&(n=o[r.pos++]))<<3,n<128)return Ks(t,i,e);if(i|=(127&(n=o[r.pos++]))<<10,n<128)return Ks(t,i,e);if(i|=(127&(n=o[r.pos++]))<<17,n<128)return Ks(t,i,e);if(i|=(127&(n=o[r.pos++]))<<24,n<128)return Ks(t,i,e);if(i|=(1&(n=o[r.pos++]))<<31,n<128)return Ks(t,i,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=i[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Xs?function(t,e,r){return Xs.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var i="",n=e;n239?4:l>223?3:l>191?2:1;if(n+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(o=t[n+1]))&&(u=(31&l)<<6|63&o)<=127&&(u=null):3===c?(a=t[n+2],128==(192&(o=t[n+1]))&&128==(192&a)&&((u=(15&l)<<12|(63&o)<<6|63&a)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(a=t[n+2],s=t[n+3],128==(192&(o=t[n+1]))&&128==(192&a)&&128==(192&s)&&((u=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,i+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),i+=String.fromCharCode(u),n+=c}return i}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==Gs.Bytes)return t.push(this.readVarint(e));var r=Ws(this);for(t=t||[];this.pos127;);else if(e===Gs.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Gs.Fixed32)this.pos+=4;else{if(e!==Gs.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,i;if(t>=0?(r=t%4294967296|0,i=t/4294967296|0):(i=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,i=i+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7)}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))))}(i,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var i,n,o=0;o55295&&i<57344){if(!n){i>56319||o+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):n=i;continue}if(i<56320){t[r++]=239,t[r++]=191,t[r++]=189,n=i;continue}i=n-55296<<10|i-56320|65536,n=null}else n&&(t[r++]=239,t[r++]=191,t[r++]=189,n=null);i<128?t[r++]=i:(i<2048?t[r++]=i>>6|192:(i<65536?t[r++]=i>>12|224:(t[r++]=i>>18|240,t[r++]=i>>12&63|128),t[r++]=i>>6&63|128),t[r++]=63&i|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&Hs(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),qs(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),qs(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&Hs(r,i,this),this.pos=r-1,this.writeVarint(i),this.pos+=i},writeMessage:function(t,e,r){this.writeTag(t,Gs.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Js,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Ys,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,tl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Qs,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,$s,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,el,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,rl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,il,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,nl,e)},writeBytesField:function(t,e){this.writeTag(t,Gs.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,Gs.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,Gs.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,Gs.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,Gs.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,Gs.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,Gs.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,Gs.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,Gs.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,Gs.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};var hl=function(t,e){var r=e.pixelRatio,i=e.version,n=e.stretchX,o=e.stretchY,a=e.content;this.paddedRect=t,this.pixelRatio=r,this.stretchX=n,this.stretchY=o,this.content=a,this.version=i},fl={tl:{configurable:!0},br:{configurable:!0},tlbr:{configurable:!0},displaySize:{configurable:!0}};fl.tl.get=function(){return[this.paddedRect.x+1,this.paddedRect.y+1]},fl.br.get=function(){return[this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]},fl.tlbr.get=function(){return this.tl.concat(this.br)},fl.displaySize.get=function(){return[(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]},Object.defineProperties(hl.prototype,fl);var dl=function(t,e){var r={},i={};this.haveRenderCallbacks=[];var n=[];this.addImages(t,r,n),this.addImages(e,i,n);var o=pl(n),a=new da({width:o.w||1,height:o.h||1});for(var s in t){var l=t[s],u=r[s].paddedRect;da.copy(l.data,a,{x:0,y:0},{x:u.x+1,y:u.y+1},l.data)}for(var c in e){var p=e[c],h=i[c].paddedRect,f=h.x+1,d=h.y+1,m=p.data.width,y=p.data.height;da.copy(p.data,a,{x:0,y:0},{x:f,y:d},p.data),da.copy(p.data,a,{x:0,y:y-1},{x:f,y:d-1},{width:m,height:1}),da.copy(p.data,a,{x:0,y:0},{x:f,y:d+y},{width:m,height:1}),da.copy(p.data,a,{x:m-1,y:0},{x:f-1,y:d},{width:1,height:y}),da.copy(p.data,a,{x:0,y:0},{x:f+m,y:d},{width:1,height:y})}this.image=a,this.iconPositions=r,this.patternPositions=i};dl.prototype.addImages=function(t,e,r){for(var i in t){var n=t[i],o={x:0,y:0,w:n.data.width+2,h:n.data.height+2};r.push(o),e[i]=new hl(o,n),n.hasRenderCallback&&this.haveRenderCallbacks.push(i)}},dl.prototype.patchUpdatedImages=function(t,e){for(var r in t.dispatchRenderCallbacks(this.haveRenderCallbacks),t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e)},dl.prototype.patchUpdatedImage=function(t,e,r){if(t&&e&&t.version!==e.version){t.version=e.version;var i=t.tl;r.update(e.data,void 0,{x:i[0],y:i[1]})}},Li("ImagePosition",hl),Li("ImageAtlas",dl);var ml={horizontal:1,vertical:2,horizontalOnly:3},yl=function(){this.scale=1,this.fontStack="",this.imageName=null};yl.forText=function(t,e){var r=new yl;return r.scale=t||1,r.fontStack=e,r},yl.forImage=function(t){var e=new yl;return e.imageName=t,e};var gl=function(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null};function _l(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m){var y,g=gl.fromFeature(t,n);p===ml.vertical&&g.verticalizePunctuation();var _=rn.processBidirectionalText,v=rn.processStyledBidirectionalText;if(_&&1===g.sections.length){y=[];for(var x=0,b=_(g.toString(),Il(g,u,o,e,i,f,d));x0&&O>I&&(I=O)}else{var U=r[A.fontStack],V=U&&U[P];if(V&&V.rect)M=V.rect,k=V.metrics;else{var N=e[A.fontStack],j=N&&N[P];if(!j)continue;k=j.metrics}C=24*(b-A.scale)}B?(t.verticalizable=!0,T.push({glyph:P,imageName:D,x:h,y:f+C,vertical:B,scale:A.scale,fontStack:A.fontStack,sectionIndex:z,metrics:k,rect:M}),h+=L*A.scale+u):(T.push({glyph:P,imageName:D,x:h,y:f+C,vertical:B,scale:A.scale,fontStack:A.fontStack,sectionIndex:z,metrics:k,rect:M}),h+=k.advance*A.scale+u)}0!==T.length&&(d=Math.max(h-u,d),Al(T,0,T.length-1,y,I)),h=0;var q=o*b+I;S.lineOffset=Math.max(I,w),f+=q,m=Math.max(q,m),++g}else f+=o,++g}var Z,G=f- -17,X=El(a),W=X.horizontalAlign,K=X.verticalAlign;(function(t,e,r,i,n,o,a,s,l){var u,c=(e-r)*n;u=o!==a?-s*i- -17:(-i*l+.5)*a;for(var p=0,h=t;p=0&&i>=t&&vl[this.text.charCodeAt(i)];i--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},gl.prototype.substring=function(t,e){var r=new gl;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},gl.prototype.toString=function(){return this.text},gl.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce(function(e,r){return Math.max(e,t.sections[r].scale)},0)},gl.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(yl.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,i=0;i=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var vl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},xl={};function bl(t,e,r,i,n,o){if(e.imageName){var a=i[e.imageName];return a?a.displaySize[0]*e.scale*24/o+n:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+n:0}function wl(t,e,r,i){var n=Math.pow(t-e,2);return i?t=0,p=0,h=0;h-r/2;){if(--a<0)return!1;s-=t[a].dist(o),o=t[a]}s+=t[a].dist(t[a+1]),a++;for(var l=[],u=0;si;)u-=l.shift().angleDelta;if(u>n)return!1;a++,s+=c.dist(p)}return!0}function Bl(t){for(var e=0,r=0;ru){var d=(u-l)/f,m=Ne(p.x,h.x,d),y=Ne(p.y,h.y,d),g=new Pl(m,y,h.angleTo(p),c);return g._round(),!a||Ll(t,g,s,a,e)?g:void 0}l+=f}}function Ul(t,e,r,i,n,o,a,s,l){var u=Rl(i,o,a),c=Fl(i,n),p=c*a,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-p=0&&b=0&&w=0&&f+c<=p){var S=new Pl(b,w,v,m);S._round(),n&&!Ll(e,S,a,n,o)||d.push(S)}}h+=_}return l||d.length||s||(d=t(e,h/2,i,n,o,a,s,!0,u)),d}(t,h?e/2*s%e:(c/2+2*o)*a*s%e,e,u,r,p,h,!1,l)}function Vl(t,e,r,i,o){for(var a=[],s=0;s=i&&h.x>=i||(p.x>=i?p=new n(i,p.y+(i-p.x)/(h.x-p.x)*(h.y-p.y))._round():h.x>=i&&(h=new n(i,p.y+(i-p.x)/(h.x-p.x)*(h.y-p.y))._round()),p.y>=o&&h.y>=o||(p.y>=o?p=new n(p.x+(o-p.y)/(h.y-p.y)*(h.x-p.x),o)._round():h.y>=o&&(h=new n(p.x+(o-p.y)/(h.y-p.y)*(h.x-p.x),o)._round()),u&&p.equals(u[u.length-1])||a.push(u=[p]),u.push(h)))))}return a}function Nl(t,e,r,i){var o=[],a=t.image,s=a.pixelRatio,l=a.paddedRect.w-2,u=a.paddedRect.h-2,c=t.right-t.left,p=t.bottom-t.top,h=a.stretchX||[[0,l]],f=a.stretchY||[[0,u]],d=function(t,e){return t+e[1]-e[0]},m=h.reduce(d,0),y=f.reduce(d,0),g=l-m,_=u-y,v=0,x=m,b=0,w=y,S=0,T=g,I=0,E=_;if(a.content&&i){var A=a.content;v=jl(h,0,A[0]),b=jl(f,0,A[1]),x=jl(h,A[0],A[2]),w=jl(f,A[1],A[3]),S=A[0]-v,I=A[1]-b,T=A[2]-A[0]-x,E=A[3]-A[1]-w}var z=function(i,o,l,u){var h=Zl(i.stretch-v,x,c,t.left),f=Gl(i.fixed-S,T,i.stretch,m),d=Zl(o.stretch-b,w,p,t.top),g=Gl(o.fixed-I,E,o.stretch,y),_=Zl(l.stretch-v,x,c,t.left),A=Gl(l.fixed-S,T,l.stretch,m),z=Zl(u.stretch-b,w,p,t.top),P=Gl(u.fixed-I,E,u.stretch,y),C=new n(h,d),k=new n(_,d),M=new n(_,z),D=new n(h,z),L=new n(f/s,g/s),B=new n(A/s,P/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),O=Math.cos(R),U=[O,-F,F,O];C._matMult(U),k._matMult(U),D._matMult(U),M._matMult(U)}var V=i.stretch+i.fixed,N=o.stretch+o.fixed;return{tl:C,tr:k,bl:D,br:M,tex:{x:a.paddedRect.x+1+V,y:a.paddedRect.y+1+N,w:l.stretch+l.fixed-V,h:u.stretch+u.fixed-N},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:L,pixelOffsetBR:B,minFontScaleX:T/s/c,minFontScaleY:E/s/p,isSDF:r}};if(i&&(a.stretchX||a.stretchY))for(var P=ql(h,g,m),C=ql(f,_,y),k=0;k0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var m=a.top*s-l,y=a.bottom*s+l,g=a.left*s-l,_=a.right*s+l,v=a.collisionPadding;if(v&&(g-=v[0]*s,m-=v[1]*s,_+=v[2]*s,y+=v[3]*s),c){var x=new n(g,m),b=new n(_,m),w=new n(g,y),S=new n(_,y),T=c*Math.PI/180;x._rotate(T),b._rotate(T),w._rotate(T),S._rotate(T),g=Math.min(x.x,b.x,w.x,S.x),_=Math.max(x.x,b.x,w.x,S.x),m=Math.min(x.y,b.y,w.y,S.y),y=Math.max(x.y,b.y,w.y,S.y)}t.emplaceBack(e.x,e.y,g,m,_,y,r,i,o)}this.boxEndIndex=t.length},Wl=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=Kl),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function Kl(t,e){return te?1:0}function Hl(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var i=1/0,o=1/0,a=-1/0,s=-1/0,l=t[0],u=0;ua)&&(a=c.x),(!u||c.y>s)&&(s=c.y)}var p=Math.min(a-i,s-o),h=p/2,f=new Wl([],Jl);if(0===p)return new n(i,o);for(var d=i;dy.d||!y.d)&&(y=_,r&&console.log("found best %d after %d probes",Math.round(1e4*_.d)/1e4,g)),_.max-y.d<=e||(f.push(new Yl(_.p.x-(h=_.h/2),_.p.y-h,h,t)),f.push(new Yl(_.p.x+h,_.p.y-h,h,t)),f.push(new Yl(_.p.x-h,_.p.y+h,h,t)),f.push(new Yl(_.p.x+h,_.p.y+h,h,t)),g+=4)}return r&&(console.log("num probes: "+g),console.log("best distance: "+y.d)),y.p}function Jl(t,e){return e.max-t.max}function Yl(t,e,r,i){this.p=new n(t,e),this.h=r,this.d=function(t,e){for(var r=!1,i=1/0,n=0;nt.y!=c.y>t.y&&t.x<(c.x-u.x)*(t.y-u.y)/(c.y-u.y)+u.x&&(r=!r),i=Math.min(i,Xo(t,u,c))}return(r?1:-1)*Math.sqrt(i)}(this.p,i),this.max=this.d+this.h*Math.SQRT2}Wl.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},Wl.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},Wl.prototype.peek=function(){return this.data[0]},Wl.prototype._up=function(t){for(var e=this.data,r=this.compare,i=e[t];t>0;){var n=t-1>>1,o=e[n];if(r(i,o)>=0)break;e[t]=o,t=n}e[t]=i},Wl.prototype._down=function(t){for(var e=this.data,r=this.compare,i=this.length>>1,n=e[t];t=0)break;e[t]=a,t=o}e[t]=n};var Ql=Number.POSITIVE_INFINITY;function $l(t,e){return e[1]!==Ql?function(t,e,r){var i=0,n=0;switch(e=Math.abs(e),r=Math.abs(r),t){case"top-right":case"top-left":case"top":n=r-7;break;case"bottom-right":case"bottom-left":case"bottom":n=7-r}switch(t){case"top-right":case"bottom-right":case"right":i=-e;break;case"top-left":case"bottom-left":case"left":i=e}return[i,n]}(t,e[0],e[1]):function(t,e){var r=0,i=0;e<0&&(e=0);var n=e/Math.sqrt(2);switch(t){case"top-right":case"top-left":i=n-7;break;case"bottom-right":case"bottom-left":i=7-n;break;case"bottom":i=7-e;break;case"top":i=e-7}switch(t){case"top-right":case"bottom-right":r=-n;break;case"top-left":case"bottom-left":r=n;break;case"left":r=e;break;case"right":r=-e}return[r,i]}(t,e[0])}function tu(t){switch(t){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function eu(t,e,r,i,o,a,s,l,u,c,p,h,f,d,m){var y=function(t,e,r,i,o,a,s,l){for(var u=i.layout.get("text-rotate").evaluate(a,{})*Math.PI/180,c=[],p=0,h=e.positionedLines;p32640&&b(t.layerIds[0]+': Value for "text-size" is >= 255. Reduce your "text-size".'):"composite"===g.kind&&((_=[128*d.compositeTextSizes[0].evaluate(s,{},m),128*d.compositeTextSizes[1].evaluate(s,{},m)])[0]>32640||_[1]>32640)&&b(t.layerIds[0]+': Value for "text-size" is >= 255. Reduce your "text-size".'),t.addSymbols(t.text,y,_,l,a,s,c,e,u.lineStartIndex,u.lineLength,f,m);for(var v=0,x=p;v=0;a--)if(i.dist(o[a])0)&&("constant"!==o.value.kind||o.value.value.length>0),u="constant"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,c=n.get("symbol-sort-key");if(this.features=[],l||u){for(var p=e.iconDependencies,h=e.glyphDependencies,f=e.availableImages,d=new nn(this.zoom),m=0,y=t;m=0;for(var D=0,L=T.sections;D=0;s--)o[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:n},s>0&&(n+=e[s-1].dist(e[s]));for(var l=0;l0},pu.prototype.hasIconData=function(){return this.icon.segments.get().length>0},pu.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},pu.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},pu.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},pu.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),i=r.vertexStartIndex+4*r.numGlyphs,n=r.vertexStartIndex;n1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,i=this.symbolInstanceIndexes;r=0&&i.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)}),n.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,n.verticalPlacedTextSymbolIndex),n.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,n.placedIconSymbolIndex),n.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,n.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Li("SymbolBucket",pu,{omit:["layers","collisionBoxArray","features","compareText"]}),pu.MAX_GLYPHS=65535,pu.addDynamicAttributes=su;var hu=new _n({"symbol-placement":new fn(Et.layout_symbol["symbol-placement"]),"symbol-spacing":new fn(Et.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new fn(Et.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new dn(Et.layout_symbol["symbol-sort-key"]),"symbol-z-order":new fn(Et.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new fn(Et.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new fn(Et.layout_symbol["icon-ignore-placement"]),"icon-optional":new fn(Et.layout_symbol["icon-optional"]),"icon-rotation-alignment":new fn(Et.layout_symbol["icon-rotation-alignment"]),"icon-size":new dn(Et.layout_symbol["icon-size"]),"icon-text-fit":new fn(Et.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new fn(Et.layout_symbol["icon-text-fit-padding"]),"icon-image":new dn(Et.layout_symbol["icon-image"]),"icon-rotate":new dn(Et.layout_symbol["icon-rotate"]),"icon-padding":new fn(Et.layout_symbol["icon-padding"]),"icon-keep-upright":new fn(Et.layout_symbol["icon-keep-upright"]),"icon-offset":new dn(Et.layout_symbol["icon-offset"]),"icon-anchor":new dn(Et.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new fn(Et.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new fn(Et.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new fn(Et.layout_symbol["text-rotation-alignment"]),"text-field":new dn(Et.layout_symbol["text-field"]),"text-font":new dn(Et.layout_symbol["text-font"]),"text-size":new dn(Et.layout_symbol["text-size"]),"text-max-width":new dn(Et.layout_symbol["text-max-width"]),"text-line-height":new fn(Et.layout_symbol["text-line-height"]),"text-letter-spacing":new dn(Et.layout_symbol["text-letter-spacing"]),"text-justify":new dn(Et.layout_symbol["text-justify"]),"text-radial-offset":new dn(Et.layout_symbol["text-radial-offset"]),"text-variable-anchor":new fn(Et.layout_symbol["text-variable-anchor"]),"text-anchor":new dn(Et.layout_symbol["text-anchor"]),"text-max-angle":new fn(Et.layout_symbol["text-max-angle"]),"text-writing-mode":new fn(Et.layout_symbol["text-writing-mode"]),"text-rotate":new dn(Et.layout_symbol["text-rotate"]),"text-padding":new fn(Et.layout_symbol["text-padding"]),"text-keep-upright":new fn(Et.layout_symbol["text-keep-upright"]),"text-transform":new dn(Et.layout_symbol["text-transform"]),"text-offset":new dn(Et.layout_symbol["text-offset"]),"text-allow-overlap":new fn(Et.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new fn(Et.layout_symbol["text-ignore-placement"]),"text-optional":new fn(Et.layout_symbol["text-optional"])}),fu={paint:new _n({"icon-opacity":new dn(Et.paint_symbol["icon-opacity"]),"icon-color":new dn(Et.paint_symbol["icon-color"]),"icon-halo-color":new dn(Et.paint_symbol["icon-halo-color"]),"icon-halo-width":new dn(Et.paint_symbol["icon-halo-width"]),"icon-halo-blur":new dn(Et.paint_symbol["icon-halo-blur"]),"icon-translate":new fn(Et.paint_symbol["icon-translate"]),"icon-translate-anchor":new fn(Et.paint_symbol["icon-translate-anchor"]),"text-opacity":new dn(Et.paint_symbol["text-opacity"]),"text-color":new dn(Et.paint_symbol["text-color"],{runtimeType:Ot,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),"text-halo-color":new dn(Et.paint_symbol["text-halo-color"]),"text-halo-width":new dn(Et.paint_symbol["text-halo-width"]),"text-halo-blur":new dn(Et.paint_symbol["text-halo-blur"]),"text-translate":new fn(Et.paint_symbol["text-translate"]),"text-translate-anchor":new fn(Et.paint_symbol["text-translate-anchor"])}),layout:hu},du=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Lt,this.defaultValue=t};du.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},du.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},du.prototype.outputDefined=function(){return!1},du.prototype.serialize=function(){return null},Li("FormatSectionOverride",du,{omit:["defaultValue"]});var mu=function(t){function e(e){t.call(this,e,fu)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){var i=this.layout.get("text-writing-mode");if(i){for(var n=[],o=0,a=i;o",targetMapId:i,sourceMapId:o.mapId})}}},Pu.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(""===e.type){delete this.tasks[r];var i=this.cancelCallbacks[r];delete this.cancelCallbacks[r],i&&i()}else T()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},Pu.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},Pu.prototype.processTask=function(t,e){var r=this;if(""===e.type){var i=this.callbacks[t];delete this.callbacks[t],i&&(e.error?i(Ui(e.error)):i(null,Ui(e.data)))}else{var n=!1,o=A(this.globalScope)?void 0:[],a=e.hasCallback?function(e,i){n=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:"",sourceMapId:r.mapId,error:e?Oi(e):null,data:Oi(i,o)},o)}:function(t){n=!0},s=null,l=Ui(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,a);else if(this.parent.getWorkerSource){var u=e.type.split(".");s=this.parent.getWorkerSource(e.sourceMapId,u[0],l.source)[u[1]](l,a)}else a(new Error("Could not find function "+e.type));!n&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},Pu.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};var ku=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};ku.prototype.setNorthEast=function(t){return this._ne=t instanceof Mu?new Mu(t.lng,t.lat):Mu.convert(t),this},ku.prototype.setSouthWest=function(t){return this._sw=t instanceof Mu?new Mu(t.lng,t.lat):Mu.convert(t),this},ku.prototype.extend=function(t){var e,r,i=this._sw,n=this._ne;if(t instanceof Mu)e=t,r=t;else{if(!(t instanceof ku))return Array.isArray(t)?4===t.length||t.every(Array.isArray)?this.extend(ku.convert(t)):this.extend(Mu.convert(t)):this;if(r=t._ne,!(e=t._sw)||!r)return this}return i||n?(i.lng=Math.min(e.lng,i.lng),i.lat=Math.min(e.lat,i.lat),n.lng=Math.max(r.lng,n.lng),n.lat=Math.max(r.lat,n.lat)):(this._sw=new Mu(e.lng,e.lat),this._ne=new Mu(r.lng,r.lat)),this},ku.prototype.getCenter=function(){return new Mu((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},ku.prototype.getSouthWest=function(){return this._sw},ku.prototype.getNorthEast=function(){return this._ne},ku.prototype.getNorthWest=function(){return new Mu(this.getWest(),this.getNorth())},ku.prototype.getSouthEast=function(){return new Mu(this.getEast(),this.getSouth())},ku.prototype.getWest=function(){return this._sw.lng},ku.prototype.getSouth=function(){return this._sw.lat},ku.prototype.getEast=function(){return this._ne.lng},ku.prototype.getNorth=function(){return this._ne.lat},ku.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},ku.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},ku.prototype.isEmpty=function(){return!(this._sw&&this._ne)},ku.prototype.contains=function(t){var e=Mu.convert(t),r=e.lng,i=e.lat,n=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(n=this._sw.lng>=r&&r>=this._ne.lng),this._sw.lat<=i&&i<=this._ne.lat&&n},ku.convert=function(t){return!t||t instanceof ku?t:new ku(t)};var Mu=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid LngLat object: ("+t+", "+e+")");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};Mu.prototype.wrap=function(){return new Mu(u(this.lng,-180,180),this.lat)},Mu.prototype.toArray=function(){return[this.lng,this.lat]},Mu.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},Mu.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,i=t.lat*e,n=Math.sin(r)*Math.sin(i)+Math.cos(r)*Math.cos(i)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(n,1))},Mu.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new ku(new Mu(this.lng-r,this.lat-e),new Mu(this.lng+r,this.lat+e))},Mu.convert=function(t){if(t instanceof Mu)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Mu(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new Mu(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var Du=2*Math.PI*6371008.8;function Lu(t){return Du*Math.cos(t*Math.PI/180)}function Bu(t){return(180+t)/360}function Ru(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Fu(t,e){return t/Lu(e)}function Ou(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}var Uu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};Uu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Mu.convert(t);return new Uu(Bu(r.lng),Ru(r.lat),Fu(e,r.lat))},Uu.prototype.toLngLat=function(){return new Mu(360*this.x-180,Ou(this.y))},Uu.prototype.toAltitude=function(){return this.z*Lu(Ou(this.y))},Uu.prototype.meterInMercatorCoordinateUnits=function(){return 1/Du*(t=Ou(this.y),1/Math.cos(t*Math.PI/180));var t};var Vu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=qu(0,t,t,e,r)};Vu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Vu.prototype.url=function(t,e){var r,i,n,o,a,s=(i=this.y,n=this.z,o=Cu(256*(r=this.x),256*(i=Math.pow(2,n)-i-1),n),a=Cu(256*(r+1),256*(i+1),n),o[0]+","+o[1]+","+a[0]+","+a[1]),l=function(t,e,r){for(var i,n="",o=t;o>0;o--)n+=(e&(i=1<this.canonical.z?new ju(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new ju(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},ju.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?qu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):qu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},ju.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},ju.prototype.children=function(t){if(this.overscaledZ>=t)return[new ju(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,i=2*this.canonical.y;return[new ju(e,this.wrap,e,r,i),new ju(e,this.wrap,e,r+1,i),new ju(e,this.wrap,e,r,i+1),new ju(e,this.wrap,e,r+1,i+1)]},ju.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(e+1)*this.stride+(t+1)},Zu.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},Zu.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Zu.prototype.getPixels=function(){return new da({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Zu.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");var i=e*this.dim,n=e*this.dim+this.dim,o=r*this.dim,a=r*this.dim+this.dim;switch(e){case-1:i=n-1;break;case 1:n=i+1}switch(r){case-1:o=a-1;break;case 1:a=o+1}for(var s=-e*this.dim,l=-r*this.dim,u=o;u=0&&c[3]>=0&&s.insert(a,c[0],c[1],c[2],c[3])}},Hu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new ms.VectorTile(new Zs(this.rawTileData)).layers,this.sourceLayerCoder=new Gu(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},Hu.prototype.query=function(t,e,r,i){var o=this;this.loadVTLayers();for(var a=t.params||{},s=8192/t.tileSize/t.scale,l=ri(a.filter),u=t.queryGeometry,c=t.queryPadding*s,p=Yu(u),h=this.grid.query(p.minX-c,p.minY-c,p.maxX+c,p.maxY+c),f=Yu(t.cameraQueryGeometry),d=0,m=this.grid3D.query(f.minX-c,f.minY-c,f.maxX+c,f.maxY+c,function(e,r,i,o){return function(t,e,r,i,o){for(var a=0,s=t;a=l.x&&o>=l.y)return!0}var u=[new n(e,r),new n(e,o),new n(i,o),new n(i,r)];if(t.length>2)for(var c=0,p=u;c=0)return!0;return!1}(o,p)){var h=this.sourceLayerCoder.decode(r),f=this.vtLayers[h].feature(i);if(n.filter(new nn(this.tileID.overscaledZ),f))for(var d=this.getId(f,h),m=0;mi)n=!1;else if(e)if(this.expirationTimeat&&(t.getActor().send("enforceCacheSizeLimit",ot),ct=0)},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete("mapbox-tiles");t&&e.catch(t).then(function(){return t()})},t.clipLine=Vl,t.clone=function(t){var e=new ea(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=v,t.clone$2=function(t){var e=new ea(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=Us,t.config=F,t.create=function(){var t=new ea(16);return ea!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new ea(9);return ea!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new ea(4);return ea!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=qr,t.createLayout=Sn,t.createStyleLayer=function(t){return"custom"===t.type?new xu(t):new bu[t.type](t)},t.cross=function(t,e,r){var i=e[0],n=e[1],o=e[2],a=r[0],s=r[1],l=r[2];return t[0]=n*l-o*s,t[1]=o*a-i*l,t[2]=i*s-n*a,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var i=0;i0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t},t.number=Ne,t.offscreenCanvasSupported=pt,t.ortho=function(t,e,r,i,n,o,a){var s=1/(e-r),l=1/(i-n),u=1/(o-a);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*s,t[13]=(n+i)*l,t[14]=(a+o)*u,t[15]=1,t},t.parseGlyphPBF=function(t){return new Zs(t).readFields(ll,[])},t.pbf=Zs,t.performSymbolLayout=function(t,e,r,i,n,o,a){t.createArrays(),t.tilePixelRatio=8192/(512*t.overscaling),t.compareText={},t.iconsNeedLinear=!1;var s=t.layers[0].layout,l=t.layers[0]._unevaluatedLayout._values,u={};if("composite"===t.textSizeData.kind){var c=t.textSizeData,p=c.maxZoom;u.compositeTextSizes=[l["text-size"].possiblyEvaluate(new nn(c.minZoom),a),l["text-size"].possiblyEvaluate(new nn(p),a)]}if("composite"===t.iconSizeData.kind){var h=t.iconSizeData,f=h.maxZoom;u.compositeIconSizes=[l["icon-size"].possiblyEvaluate(new nn(h.minZoom),a),l["icon-size"].possiblyEvaluate(new nn(f),a)]}u.layoutTextSize=l["text-size"].possiblyEvaluate(new nn(t.zoom+1),a),u.layoutIconSize=l["icon-size"].possiblyEvaluate(new nn(t.zoom+1),a),u.textMaxSize=l["text-size"].possiblyEvaluate(new nn(18));for(var d=24*s.get("text-line-height"),m="map"===s.get("text-rotation-alignment")&&"point"!==s.get("symbol-placement"),y=s.get("text-keep-upright"),g=s.get("text-size"),_=function(){var o=x[v],l=s.get("text-font").evaluate(o,{},a).join(","),c=g.evaluate(o,{},a),p=u.layoutTextSize.evaluate(o,{},a),h=u.layoutIconSize.evaluate(o,{},a),f={horizontal:{},vertical:void 0},_=o.text,w=[0,0];if(_){var S=_.toString(),T=24*s.get("text-letter-spacing").evaluate(o,{},a),I=function(t){for(var e=0,r=S;e=8192||p.y<0||p.y>=8192||function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g,_,v,x,w,S,T,I){var E,A,z,P,C,k=t.addToLineVertexArray(e,r),M=0,D=0,L=0,B=0,R=-1,F=-1,O={},U=uo(""),V=0,N=0;if(void 0===s._unevaluatedLayout.getValue("text-radial-offset")?(V=(E=s.layout.get("text-offset").evaluate(x,{},T).map(function(t){return 24*t}))[0],N=E[1]):(V=24*s.layout.get("text-radial-offset").evaluate(x,{},T),N=Ql),t.allowVerticalPlacement&&i.vertical){var j=s.layout.get("text-rotate").evaluate(x,{},T)+90;P=new Xl(l,e,u,c,p,i.vertical,h,f,d,j),a&&(C=new Xl(l,e,u,c,p,a,y,g,d,j))}if(n){var q=s.layout.get("icon-rotate").evaluate(x,{}),Z="none"!==s.layout.get("icon-text-fit"),G=Nl(n,q,S,Z),X=a?Nl(a,q,S,Z):void 0;z=new Xl(l,e,u,c,p,n,y,g,!1,q),M=4*G.length;var W=t.iconSizeData,K=null;"source"===W.kind?(K=[128*s.layout.get("icon-size").evaluate(x,{})])[0]>32640&&b(t.layerIds[0]+': Value for "icon-size" is >= 255. Reduce your "icon-size".'):"composite"===W.kind&&((K=[128*w.compositeIconSizes[0].evaluate(x,{},T),128*w.compositeIconSizes[1].evaluate(x,{},T)])[0]>32640||K[1]>32640)&&b(t.layerIds[0]+': Value for "icon-size" is >= 255. Reduce your "icon-size".'),t.addSymbols(t.icon,G,K,v,_,x,!1,e,k.lineStartIndex,k.lineLength,-1,T),R=t.icon.placedSymbolArray.length-1,X&&(D=4*X.length,t.addSymbols(t.icon,X,K,v,_,x,ml.vertical,e,k.lineStartIndex,k.lineLength,-1,T),F=t.icon.placedSymbolArray.length-1)}for(var H in i.horizontal){var J=i.horizontal[H];if(!A){U=uo(J.text);var Y=s.layout.get("text-rotate").evaluate(x,{},T);A=new Xl(l,e,u,c,p,J,h,f,d,Y)}var Q=1===J.positionedLines.length;if(L+=eu(t,e,J,o,s,d,x,m,k,i.vertical?ml.horizontal:ml.horizontalOnly,Q?Object.keys(i.horizontal):[H],O,R,w,T),Q)break}i.vertical&&(B+=eu(t,e,i.vertical,o,s,d,x,m,k,ml.vertical,["vertical"],O,F,w,T));var $=A?A.boxStartIndex:t.collisionBoxArray.length,tt=A?A.boxEndIndex:t.collisionBoxArray.length,et=P?P.boxStartIndex:t.collisionBoxArray.length,rt=P?P.boxEndIndex:t.collisionBoxArray.length,it=z?z.boxStartIndex:t.collisionBoxArray.length,nt=z?z.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,at=C?C.boxEndIndex:t.collisionBoxArray.length,st=-1,lt=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};st=lt(A,st),st=lt(P,st),st=lt(z,st);var ut=(st=lt(C,st))>-1?1:0;ut&&(st*=I/24),t.glyphOffsetArray.length>=pu.MAX_GLYPHS&&b("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==x.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,x.sortKey),t.symbolInstances.emplaceBack(e.x,e.y,O.right>=0?O.right:-1,O.center>=0?O.center:-1,O.left>=0?O.left:-1,O.vertical||-1,R,F,U,$,tt,et,rt,it,nt,ot,at,u,L,B,M,D,ut,0,h,V,N,st)}(t,p,s,r,i,n,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,g,w,I,l,v,S,E,d,e,o,u,c,a)};if("line"===A)for(var k=0,M=Vl(e.geometry,0,0,8192,8192);k1){var V=Ol(U,T,r.vertical||m,i,24,_);V&&C(U,V)}}else if("Polygon"===e.type)for(var N=0,j=Qa(e.geometry,0);N=z.maxzoom||"none"!==z.visibility&&(a(A,this.zoom,i),(m[z.id]=z.createBucket({index:c.bucketLayerIDs.length,layers:A,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:x,sourceID:this.source})).populate(b,y,this.tileID.canonical),c.bucketLayerIDs.push(A.map(function(t){return t.id})))}}}var P=t.mapObject(y.glyphDependencies,function(t){return Object.keys(t).map(Number)});Object.keys(P).length?o.send("getGlyphs",{uid:this.uid,stacks:P},function(t,e){p||(p=t,h=e,M.call(l))}):h={};var C=Object.keys(y.iconDependencies);C.length?o.send("getImages",{icons:C,source:this.source,tileID:this.tileID,type:"icons"},function(t,e){p||(p=t,f=e,M.call(l))}):f={};var k=Object.keys(y.patternDependencies);function M(){if(p)return s(p);if(h&&f&&d){var e=new n(h),r=new t.ImageAtlas(f,d);for(var o in m){var l=m[o];l instanceof t.SymbolBucket?(a(l.layers,this.zoom,i),t.performSymbolLayout(l,h,e.positions,f,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(a(l.layers,this.zoom,i),l.addFeatures(y,this.tileID.canonical,r.patternPositions))}this.status="done",s(null,{buckets:t.values(m).filter(function(t){return!t.isEmpty()}),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?f:null,glyphPositions:this.returnDependencies?e.positions:null})}}k.length?o.send("getImages",{icons:k,source:this.source,tileID:this.tileID,type:"patterns"},function(t,e){p||(p=t,d=e,M.call(l))}):d={},M.call(this)};var l=function(t,e,r,i){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=i||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var i=this,n=e.uid;this.loading||(this.loading={});var a=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[n]=new o(e);s.abort=this.loadVectorData(e,function(e,o){if(delete i.loading[n],e||!o)return s.status="done",i.loaded[n]=s,r(e);var l=o.rawData,u={};o.expires&&(u.expires=o.expires),o.cacheControl&&(u.cacheControl=o.cacheControl);var c={};if(a){var p=a.finish();p&&(c.resourceTiming=JSON.parse(JSON.stringify(p)))}s.vectorTile=o.vectorTile,s.parse(o.vectorTile,i.layerIndex,i.availableImages,i.actor,function(e,i){if(e||!i)return r(e);r(null,t.extend({rawTileData:l.slice(0)},i,u,c))}),i.loaded=i.loaded||{},i.loaded[n]=s})},l.prototype.reloadTile=function(t,e){var r=this,i=this.loaded,n=t.uid,o=this;if(i&&i[n]){var a=i[n];a.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,i){var n=a.reloadCallback;n&&(delete a.reloadCallback,a.parse(a.vectorTile,o.layerIndex,r.availableImages,o.actor,n)),e(t,i)};"parsing"===a.status?a.reloadCallback=s:"done"===a.status&&(a.vectorTile?a.parse(a.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,i=t.uid;r&&r[i]&&r[i].abort&&(r[i].abort(),delete r[i]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,i=t.uid;r&&r[i]&&delete r[i],e()};var u=t.window.ImageBitmap,c=function(){this.loaded={}};function p(t,e){if(0!==t.length){h(t[0],e);for(var r=1;r=0!=!!e&&t.reverse()}c.prototype.loadTile=function(e,r){var i=e.uid,n=e.encoding,o=e.rawImageData,a=u&&o instanceof u?this.getImageData(o):o,s=new t.DEMData(i,a,n);this.loaded=this.loaded||{},this.loaded[i]=s,r(null,s)},c.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},c.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,d=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,"id"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};d.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,i=this._feature.geometry;r>31}function z(t,e){for(var r=t.loadGeometry(),i=t.type,n=0,o=0,a=r.length,s=0;s>1;!function t(e,r,i,n,o,a){for(;o>n;){if(o-n>600){var s=o-n+1,l=i-n+1,u=Math.log(s),c=.5*Math.exp(2*u/3),p=.5*Math.sqrt(u*c*(s-c)/s)*(l-s/2<0?-1:1);t(e,r,i,Math.max(n,Math.floor(i-l*c/s+p)),Math.min(o,Math.floor(i+(s-l)*c/s+p)),a)}var h=r[2*i+a],f=n,d=o;for(C(e,r,n,i),r[2*o+a]>h&&C(e,r,n,o);fh;)d--}r[2*n+a]===h?C(e,r,n,d):C(e,r,++d,o),d<=i&&(n=d+1),i<=d&&(o=d-1)}}(e,r,s,n,o,a%2),t(e,r,i,n,s-1,a+1),t(e,r,i,s+1,o,a+1)}}(a,s,i,0,a.length-1,0)};B.prototype.range=function(t,e,r,i){return function(t,e,r,i,n,o,a){for(var s,l,u=[0,t.length-1,0],c=[];u.length;){var p=u.pop(),h=u.pop(),f=u.pop();if(h-f<=a)for(var d=f;d<=h;d++)l=e[2*d+1],(s=e[2*d])>=r&&s<=n&&l>=i&&l<=o&&c.push(t[d]);else{var m=Math.floor((f+h)/2);l=e[2*m+1],(s=e[2*m])>=r&&s<=n&&l>=i&&l<=o&&c.push(t[m]);var y=(p+1)%2;(0===p?r<=s:i<=l)&&(u.push(f),u.push(m-1),u.push(y)),(0===p?n>=s:o>=l)&&(u.push(m+1),u.push(h),u.push(y))}}return c}(this.ids,this.coords,t,e,r,i,this.nodeSize)},B.prototype.within=function(t,e,r){return function(t,e,r,i,n,o){for(var a=[0,t.length-1,0],s=[],l=n*n;a.length;){var u=a.pop(),c=a.pop(),p=a.pop();if(c-p<=o)for(var h=p;h<=c;h++)M(e[2*h],e[2*h+1],r,i)<=l&&s.push(t[h]);else{var f=Math.floor((p+c)/2),d=e[2*f],m=e[2*f+1];M(d,m,r,i)<=l&&s.push(t[f]);var y=(u+1)%2;(0===u?r-n<=d:i-n<=m)&&(a.push(p),a.push(f-1),a.push(y)),(0===u?r+n>=d:i+n>=m)&&(a.push(f+1),a.push(c),a.push(y))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var R={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},F=function(t){this.options=Z(Object.create(R),t),this.trees=new Array(this.options.maxZoom+1)};function O(t,e,r,i,n){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:i,properties:n}}function U(t,e){var r=t.geometry.coordinates,i=r[1];return{x:j(r[0]),y:q(i),zoom:1/0,index:e,parentId:-1}}function V(t){return{type:"Feature",id:t.id,properties:N(t),geometry:{type:"Point",coordinates:[(i=t.x,360*(i-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,i}function N(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+"k":e>=1e3?Math.round(e/100)/10+"k":e;return Z(Z({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function j(t){return t/360+.5}function q(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function Z(t,e){for(var r in e)t[r]=e[r];return t}function G(t){return t.x}function X(t){return t.y}function W(t,e,r,i,n,o){var a=n-r,s=o-i;if(0!==a||0!==s){var l=((t-r)*a+(e-i)*s)/(a*a+s*s);l>1?(r=n,i=o):l>0&&(r+=a*l,i+=s*l)}return(a=t-r)*a+(s=e-i)*s}function K(t,e,r,i){var n={id:void 0===t?null:t,type:e,geometry:r,tags:i,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if("Point"===r||"MultiPoint"===r||"LineString"===r)H(t,e);else if("Polygon"===r||"MultiLineString"===r)for(var i=0;i0&&(a+=i?(n*u-l*o)/2:Math.sqrt(Math.pow(l-n,2)+Math.pow(u-o,2))),n=l,o=u}var c=e.length-3;e[2]=1,function t(e,r,i,n){for(var o,a=n,s=i-r>>1,l=i-r,u=e[r],c=e[r+1],p=e[i],h=e[i+1],f=r+3;fa)o=f,a=d;else if(d===a){var m=Math.abs(f-s);mn&&(o-r>3&&t(e,r,o,n),e[o+2]=a,i-o>3&&t(e,o,i,n))}(e,0,c,r),e[c+2]=1,e.size=Math.abs(a),e.start=0,e.end=e.size}function $(t,e,r,i){for(var n=0;n1?1:r}function rt(t,e,r,i,n,o,a,s){if(i/=e,o>=(r/=e)&&a=i)return null;for(var l=[],u=0;u=r&&d=i)){var m=[];if("Point"===h||"MultiPoint"===h)it(p,m,r,i,n);else if("LineString"===h)nt(p,m,r,i,n,!1,s.lineMetrics);else if("MultiLineString"===h)at(p,m,r,i,n,!1);else if("Polygon"===h)at(p,m,r,i,n,!0);else if("MultiPolygon"===h)for(var y=0;y=r&&a<=i&&(e.push(t[o]),e.push(t[o+1]),e.push(t[o+2]))}}function nt(t,e,r,i,n,o,a){for(var s,l,u=ot(t),c=0===n?lt:ut,p=t.start,h=0;hr&&(l=c(u,f,d,y,g,r),a&&(u.start=p+s*l)):_>i?v=r&&(l=c(u,f,d,y,g,r),x=!0),v>i&&_<=i&&(l=c(u,f,d,y,g,i),x=!0),!o&&x&&(a&&(u.end=p+s*l),e.push(u),u=ot(t)),a&&(p+=s)}var b=t.length-3;f=t[b],d=t[b+1],m=t[b+2],(_=0===n?f:d)>=r&&_<=i&&st(u,f,d,m),b=u.length-3,o&&b>=3&&(u[b]!==u[0]||u[b+1]!==u[1])&&st(u,u[0],u[1],u[2]),u.length&&e.push(u)}function ot(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function at(t,e,r,i,n,o){for(var a=0;aa.maxX&&(a.maxX=c),p>a.maxY&&(a.maxY=p)}return a}function mt(t,e,r,i){var n=e.geometry,o=e.type,a=[];if("Point"===o||"MultiPoint"===o)for(var s=0;s0&&e.size<(n?a:i))r.numPoints+=e.length/3;else{for(var s=[],l=0;la)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;n&&function(t,e){for(var r=0,i=0,n=t.length,o=n-2;i0===e)for(i=0,n=t.length;i24)throw new Error("maxZoom should be in the 0-24 range");if(e.promoteId&&e.generateId)throw new Error("promoteId and generateId cannot be used together.");var i=function(t,e){var r=[];if("FeatureCollection"===t.type)for(var i=0;i=i;u--){var c=+Date.now();s=this._cluster(s,u),this.trees[u]=new B(s,G,X,o,Float32Array),r&&console.log("z%d: %d clusters in %dms",u,s.length,+Date.now()-c)}return r&&console.timeEnd("total time"),this},F.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,i=Math.max(-90,Math.min(90,t[1])),n=180===t[2]?180:((t[2]+180)%360+360)%360-180,o=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,n=180;else if(r>n){var a=this.getClusters([r,i,180,o],e),s=this.getClusters([-180,i,n,o],e);return a.concat(s)}for(var l=this.trees[this._limitZoom(e)],u=[],c=0,p=l.range(j(r),q(o),j(n),q(i));c1?this._map(s,!0):null,d=(a<<5)+(e+1)+this.points.length,m=0,y=u;m>5},F.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},F.prototype._map=function(t,e){if(t.numPoints)return e?Z({},t.properties):t.properties;var r=this.points[t.index].properties,i=this.options.map(r);return e&&i===r?Z({},i):i},gt.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},gt.prototype.splitTile=function(t,e,r,i,n,o,a){for(var s=[t,e,r,i],l=this.options,u=l.debug;s.length;){i=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var c=1<1&&console.time("creation"),h=this.tiles[p]=dt(t,e,r,i,l),this.tileCoords.push({z:e,x:r,y:i}),u)){u>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,r,i,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd("creation"));var f="z"+e;this.stats[f]=(this.stats[f]||0)+1,this.total++}if(h.source=t,n){if(e===l.maxZoom||e===n)continue;var d=1<1&&console.time("clipping");var m,y,g,_,v,x,b=.5*l.buffer/l.extent,w=.5-b,S=.5+b,T=1+b;m=y=g=_=null,v=rt(t,c,r-b,r+S,0,h.minX,h.maxX,l),x=rt(t,c,r+w,r+T,0,h.minX,h.maxX,l),t=null,v&&(m=rt(v,c,i-b,i+S,1,h.minY,h.maxY,l),y=rt(v,c,i+w,i+T,1,h.minY,h.maxY,l),v=null),x&&(g=rt(x,c,i-b,i+S,1,h.minY,h.maxY,l),_=rt(x,c,i+w,i+T,1,h.minY,h.maxY,l),x=null),u>1&&console.timeEnd("clipping"),s.push(m||[],e+1,2*r,2*i),s.push(y||[],e+1,2*r,2*i+1),s.push(g||[],e+1,2*r+1,2*i),s.push(_||[],e+1,2*r+1,2*i+1)}}},gt.prototype.getTile=function(t,e,r){var i=this.options,n=i.extent,o=i.debug;if(t<0||t>24)return null;var a=1<1&&console.log("drilling down to z%d-%d-%d",t,e,r);for(var l,u=t,c=e,p=r;!l&&u>0;)u--,c=Math.floor(c/2),p=Math.floor(p/2),l=this.tiles[_t(u,c,p)];return l&&l.source?(o>1&&console.log("found parent tile z%d-%d-%d",u,c,p),o>1&&console.time("drilling down"),this.splitTile(l.source,u,c,p,t,e,r),o>1&&console.timeEnd("drilling down"),this.tiles[s]?ht(this.tiles[s],n):null):null};var xt=function(e){function r(t,r,i,n){e.call(this,t,r,i,vt),n&&(this.loadGeoJSON=n)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&"Idle"!==this._state?this._state="NeedsLoadData":(this._state="Coalescing",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,i=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var n=!!(i&&i.request&&i.request.collectResourceTiming)&&new t.RequestPerformance(i.request);this.loadGeoJSON(i,function(o,a){if(o||!a)return r(o);if("object"!=typeof a)return r(new Error("Input data given to '"+i.source+"' is not a valid GeoJSON object."));!function t(e,r){var i,n=e&&e.type;if("FeatureCollection"===n)for(i=0;i=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requestors;e=0?1.2:1))}function g(t,e,r,i,n,o,a){for(var s=0;s65535)e(new Error("glyphs > 65535 not supported"));else if(o.ranges[s])e(null,{stack:r,id:n,glyph:a});else{var l=o.requests[s];l||(l=o.requests[s]=[],v.loadGlyphRange(r,s,i.url,i.requestManager,function(t,e){if(e){for(var r in e)i._doesCharSupportLocalGlyph(+r)||(o.glyphs[+r]=e[+r]);o.ranges[s]=!0}for(var n=0,a=l;n1&&(s=t[++a]);var u=Math.abs(l-s.left),c=Math.abs(l-s.right),p=Math.min(u,c),h=void 0,f=n/r*(i+1);if(s.isDash){var d=i-Math.abs(f);h=Math.sqrt(p*p+d*d)}else h=i-Math.sqrt(p*p+f*f);this.data[o+l]=Math.max(0,Math.min(255,h+128))}},S.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],i=t[e+1];r.zeroLength?t.splice(e,1):i&&i.isDash===r.isDash&&(i.left=r.left,t.splice(e,1))}var n=t[0],o=t[t.length-1];n.isDash===o.isDash&&(n.left=o.left-this.width,o.right=n.right+this.width);for(var a=this.width*this.nextRow,s=0,l=t[s],u=0;u1&&(l=t[++s]);var c=Math.abs(u-l.left),p=Math.abs(u-l.right),h=Math.min(c,p);this.data[a+u]=Math.max(0,Math.min(255,(l.isDash?h:-h)+128))}},S.prototype.addDash=function(e,r){var i=r?7:0,n=2*i+1;if(this.nextRow+n>this.height)return t.warnOnce("LineAtlas out of space"),null;for(var o=0,a=0;a=i&&e.x=n&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,o,r.z,n,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,a,r.y-1).key]={backfilled:!1}),r.y+10&&(i.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event("data",i))}})},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(e){if(e)r.fire(new t.ErrorEvent(e));else{var i={dataType:"source",sourceDataType:"content"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(i.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event("data",i))}}),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send("geojson.getClusterChildren",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,i){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:t,limit:e,offset:r},i),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var i=t.extend({},this.workerOptions),n=this._data;"string"==typeof n?(i.request=this.map._requestManager.transformRequest(t.browser.resolveURL(n),t.ResourceType.Source),i.request.collectResourceTiming=this._collectResourceTiming):i.data=JSON.stringify(n),this.actor.send(this.type+".loadData",i,function(t,n){r._removed||n&&n.abandoned||(r._loaded=!0,n&&n.resourceTiming&&n.resourceTiming[r.id]&&(r._resourceTiming=n.resourceTiming[r.id].slice(0)),r.actor.send(r.type+".coalesce",{source:i.source},null),e(t))})},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var i=this,n=e.actor?"reloadTile":"loadTile";e.actor=this.actor,e.request=this.actor.send(n,{type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},function(t,o){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(o,i.map.painter,"reloadTile"===n),r(null))})},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),k=t.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),M=function(e){function r(t,r,i,n){e.call(this),this.id=t,this.dispatcher=i,this.coordinates=r.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(n),this.options=r}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.load=function(e,r){var i=this;this._loaded=!1,this.fire(new t.Event("dataloading",{dataType:"source"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),function(n,o){i._loaded=!0,n?i.fire(new t.ErrorEvent(n)):o&&(i.image=o,e&&(i.coordinates=e),r&&r(),i._finishLoading())})},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,function(){e.texture=null}),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event("data",{dataType:"source",sourceDataType:"metadata"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var i=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,i=1/0,n=-1/0,o=-1/0,a=0,s=e;ar.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+r.start(0)+" and "+r.end(0)+"-second mark."))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,k.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var n=this.tiles[i];"loaded"!==n.state&&(n.state="loaded",n.texture=this.texture)}}},r.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(M),L=function(e){function r(r,i,n,o){e.call(this,r,i,n,o),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some(function(t){return!Array.isArray(t)||2!==t.length||t.some(function(t){return"number"!=typeof t})})||this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,i=r.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,k.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,i.RGBA,{premultiply:!0}),this.tiles){var o=this.tiles[n];"loaded"!==o.state&&(o.state="loaded",o.texture=this.texture)}}},r.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var a=this._getAndRemoveByKey(this.order[0]);a&&this.onRemove(a)}return this},U.prototype.has=function(t){return t.wrapped().key in this.data},U.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},U.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},U.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},U.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},U.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,i=void 0===e?0:this.data[r].indexOf(e),n=this.data[r][i];return this.data[r].splice(i,1),n.timeout&&clearTimeout(n.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(n.value),this.order.splice(this.order.indexOf(r),1),this},U.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},U.prototype.filter=function(t){var e=[];for(var r in this.data)for(var i=0,n=this.data[r];i1||(Math.abs(r)>1&&(1===Math.abs(r+n)?r+=n:1===Math.abs(r-n)&&(r-=n)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,i),t.neighboringTiles&&t.neighboringTiles[o]&&(t.neighboringTiles[o].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,i){for(var n in this._tiles){var o=this._tiles[n];if(!(i[n]||!o.hasData()||o.tileID.overscaledZ<=e||o.tileID.overscaledZ>r)){for(var a=o.tileID;o&&o.tileID.overscaledZ>e+1;){var s=o.tileID.scaledTo(o.tileID.overscaledZ-1);(o=this._tiles[s.key])&&o.hasData()&&(a=s)}for(var l=a;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){i[a.key]=a;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var i=t.overscaledZ-1;i>=e;i--){var n=t.scaledTo(i),o=this._getLoadedTile(n);if(o)return o}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=Math.ceil(t.width/this._source.tileSize)+1,r=Math.ceil(t.height/this._source.tileSize)+1,i=Math.floor(e*r*5),n="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,i):i;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){var r={};for(var i in this._tiles){var n=this._tiles[i];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+e),r[n.tileID.key]=n}for(var o in this._tiles=r,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var a in this._tiles)this._setTileReloadTimer(a,this._tiles[a])}},r.prototype.update=function(e){var i=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var n;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?n=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)}):(n=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(n=n.filter(function(t){return i._source.hasTile(t)}))):n=[];var o=e.coveringZoomLevel(this._source),a=Math.max(o-r.maxOverzooming,this._source.minzoom),s=Math.max(o+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(n,o);if(Mt(this._source.type)){for(var u={},c={},p=0,h=Object.keys(l);pthis._source.maxzoom){var y=d.children(this._source.maxzoom)[0],g=this.getTile(y);if(g&&g.hasData()){i[y.key]=y;continue}}else{var _=d.children(this._source.maxzoom);if(i[_[0].key]&&i[_[1].key]&&i[_[2].key]&&i[_[3].key])continue}for(var v=m.wasRequested(),x=d.overscaledZ-1;x>=o;--x){var b=d.scaledTo(x);if(n[b.key])break;if(n[b.key]=!0,!(m=this.getTile(b))&&v&&(m=this._addTile(b)),m&&(i[b.key]=b,v=m.wasRequested(),m.hasData()))break}}}return i},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,i=this._tiles[t].tileID;i.overscaledZ>0;){if(i.key in this._loadedParentTiles){r=this._loadedParentTiles[i.key];break}e.push(i.key);var n=i.scaledTo(i.overscaledZ-1);if(r=this._getLoadedTile(n))break;i=n}for(var o=0,a=e;o0||(e.hasData()&&"reloading"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,i){var n=this,o=[],a=this.transform;if(!a)return o;for(var s=i?a.getCameraQueryGeometry(e):e,l=e.map(function(t){return a.pointCoordinate(t)}),u=s.map(function(t){return a.pointCoordinate(t)}),c=this.getIds(),p=1/0,h=1/0,f=-1/0,d=-1/0,m=0,y=u;m=0&&g[1].y+y>=0){var _=l.map(function(t){return s.getTilePoint(t)}),v=u.map(function(t){return s.getTilePoint(t)});o.push({tile:i,tileID:s,queryGeometry:_,cameraQueryGeometry:v,scale:m})}}},v=0;v=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){this._state.updateState(t=t||"_geojsonTileLayer",e,r)},r.prototype.removeFeatureState=function(t,e,r){this._state.removeFeatureState(t=t||"_geojsonTileLayer",e,r)},r.prototype.getFeatureState=function(t,e){return this._state.getState(t=t||"_geojsonTileLayer",e)},r.prototype.setDependencies=function(t,e,r){var i=this._tiles[t];i&&i.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles)this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,"reloading");this._cache.filter(function(r){return!r.hasDependency(t,e)})},r}(t.Evented);function kt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),i=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||i-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Mt(t){return"raster"===t||"image"===t||"video"===t}function Dt(){return new t.window.Worker(Xn.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var Lt="mapboxgl_preloaded_worker_pool",Bt=function(){this.active={}};Bt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(n-a)/s:0;return this.points[o].mult(1-l).add(this.points[r].mult(l))};var Jt=function(t,e,r){var i=this.boxCells=[],n=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var o=0;o=-e[0]&&r<=e[0]&&i>=-e[1]&&i<=e[1]}function re(e,r,i,n,o,a,s,l){var u=n?e.textSizeData:e.iconSizeData,c=t.evaluateSizeForZoom(u,i.transform.zoom),p=[256/i.width*2+1,256/i.height*2+1],h=n?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var f=e.lineVertexArray,d=n?e.text.placedSymbolArray:e.icon.placedSymbolArray,m=i.transform.width/i.transform.height,y=!1,g=0;gMath.abs(i.x-r.x)*n?{useVertical:!0}:(e===t.WritingMode.vertical?r.yi.x)?{needsFlipping:!0}:null}function oe(e,r,i,n,o,a,s,l,u,c,p,h,f,d){var m,y=r/24,g=e.lineOffsetX*y,_=e.lineOffsetY*y;if(e.numGlyphs>1){var v=e.glyphStartIndex+e.numGlyphs,x=e.lineStartIndex,b=e.lineStartIndex+e.lineLength,w=ie(y,l,g,_,i,p,h,e,u,a,f);if(!w)return{notEnoughRoom:!0};var S=$t(w.first.point,s).point,T=$t(w.last.point,s).point;if(n&&!i){var I=ne(e.writingMode,S,T,d);if(I)return I}m=[w.first];for(var E=e.glyphStartIndex+1;E0?C.point:ae(h,P,A,1,o),M=ne(e.writingMode,A,k,d);if(M)return M}var D=se(y*l.getoffsetX(e.glyphStartIndex),g,_,i,p,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,u,a,f);if(!D)return{notEnoughRoom:!0};m=[D]}for(var L=0,B=m;L0?1:-1,m=0;n&&(d*=-1,m=Math.PI),d<0&&(m+=Math.PI);for(var y=d>0?l+s:l+s+1,g=o,_=o,v=0,x=0,b=Math.abs(f),w=[];v+x<=b;){if((y+=d)=u)return null;if(_=g,w.push(g),void 0===(g=h[y])){var S=new t.Point(c.getx(y),c.gety(y)),T=$t(S,p);if(T.signedDistanceFromCamera>0)g=h[y]=T.point;else{var I=y-d;g=ae(0===v?a:new t.Point(c.getx(I),c.gety(I)),S,_,b-v+1,p)}}v+=x,x=_.dist(g)}var E=(b-v)/x,A=g.sub(_),z=A.mult(E)._add(_);z._add(A._unit()._perp()._mult(i*d));var P=m+Math.atan2(g.y-_.y,g.x-_.x);return w.push(z),{point:z,angle:P,path:w}}Jt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Jt.prototype.insert=function(t,e,r,i,n){this._forEachCell(e,r,i,n,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(i),this.bboxes.push(n)},Jt.prototype.insertCircle=function(t,e,r,i){this._forEachCell(e-i,r-i,e+i,r+i,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(i)},Jt.prototype._insertBoxCell=function(t,e,r,i,n,o){this.boxCells[n].push(o)},Jt.prototype._insertCircleCell=function(t,e,r,i,n,o){this.circleCells[n].push(o)},Jt.prototype._query=function(t,e,r,i,n,o){if(r<0||t>this.width||i<0||e>this.height)return!n&&[];var a=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=i){if(n)return!0;for(var s=0;s0:a},Jt.prototype._queryCircle=function(t,e,r,i,n){var o=t-r,a=t+r,s=e-r,l=e+r;if(a<0||o>this.width||l<0||s>this.height)return!i&&[];var u=[];return this._forEachCell(o,s,a,l,this._queryCellCircle,u,{hitTest:i,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}},n),i?u.length>0:u},Jt.prototype.query=function(t,e,r,i,n){return this._query(t,e,r,i,!1,n)},Jt.prototype.hitTest=function(t,e,r,i,n){return this._query(t,e,r,i,!0,n)},Jt.prototype.hitTestCircle=function(t,e,r,i){return this._queryCircle(t,e,r,!0,i)},Jt.prototype._queryCell=function(t,e,r,i,n,o,a,s){var l=a.seenUids,u=this.boxCells[n];if(null!==u)for(var c=this.bboxes,p=0,h=u;p=c[d+0]&&i>=c[d+1]&&(!s||s(this.boxKeys[f]))){if(a.hitTest)return o.push(!0),!0;o.push({key:this.boxKeys[f],x1:c[d],y1:c[d+1],x2:c[d+2],y2:c[d+3]})}}}var m=this.circleCells[n];if(null!==m)for(var y=this.circles,g=0,_=m;g<_.length;g+=1){var v=_[g];if(!l.circle[v]){l.circle[v]=!0;var x=3*v;if(this._circleAndRectCollide(y[x],y[x+1],y[x+2],t,e,r,i)&&(!s||s(this.circleKeys[v]))){if(a.hitTest)return o.push(!0),!0;var b=y[x],w=y[x+1],S=y[x+2];o.push({key:this.circleKeys[v],x1:b-S,y1:w-S,x2:b+S,y2:w+S})}}}},Jt.prototype._queryCellCircle=function(t,e,r,i,n,o,a,s){var l=a.circle,u=a.seenUids,c=this.boxCells[n];if(null!==c)for(var p=this.bboxes,h=0,f=c;ha*a+s*s},Jt.prototype._circleAndRectCollide=function(t,e,r,i,n,o,a){var s=(o-i)/2,l=Math.abs(t-(i+s));if(l>s+r)return!1;var u=(a-n)/2,c=Math.abs(e-(n+u));if(c>u+r)return!1;if(l<=s||c<=u)return!0;var p=l-s,h=c-u;return p*p+h*h<=r*r};var le=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r=1;k--)C.push(z.path[k]);for(var M=1;M0){for(var R=C[0].clone(),F=C[0].clone(),O=1;O=I.x&&F.x<=E.x&&R.y>=I.y&&F.y<=E.y?[C]:F.xE.x||F.yE.y?[]:t.clipLine([C],I.x,I.y,E.x,E.y)}for(var U=0,V=B;U=this.screenRightBoundary||i<100||e>this.screenBottomBoundary},pe.prototype.isInsideGrid=function(t,e,r,i){return r>=0&&t=0&&e0?(this.prevPlacement&&this.prevPlacement.variableOffsets[p.crossTileID]&&this.prevPlacement.placements[p.crossTileID]&&this.prevPlacement.placements[p.crossTileID].text&&(m=this.prevPlacement.variableOffsets[p.crossTileID].anchor),this.variableOffsets[p.crossTileID]={textOffset:y,width:r,height:i,anchor:t,textBoxScale:n,prevAnchor:m},this.markUsedJustification(h,t,p,f),h.allowVerticalPlacement&&(this.markUsedOrientation(h,f,p),this.placedOrientations[p.crossTileID]=f),{shift:g,placedGlyphBoxes:_}):void 0},be.prototype.placeLayerBucketPart=function(e,r,i){var n=this,o=e.parameters,a=o.bucket,s=o.layout,l=o.posMatrix,u=o.textLabelPlaneMatrix,c=o.labelToScreenMatrix,p=o.textPixelRatio,h=o.holdingForFade,f=o.collisionBoxArray,d=o.partiallyEvaluatedTextSize,m=o.collisionGroup,y=s.get("text-optional"),g=s.get("icon-optional"),_=s.get("text-allow-overlap"),v=s.get("icon-allow-overlap"),x="map"===s.get("text-rotation-alignment"),b="map"===s.get("text-pitch-alignment"),w="none"!==s.get("icon-text-fit"),S="viewport-y"===s.get("symbol-z-order"),T=_&&(v||!a.hasIconData()||g),I=v&&(_||!a.hasTextData()||y);!a.collisionArrays&&f&&a.deserializeCollisionBoxes(f);var E=function(e,o){if(!r[e.crossTileID])if(h)n.placements[e.crossTileID]=new me(!1,!1,!1);else{var f,S=!1,E=!1,A=!0,z=null,P={box:null,offscreen:null},C={box:null,offscreen:null},k=null,M=null,D=0,L=0,B=0;o.textFeatureIndex?D=o.textFeatureIndex:e.useRuntimeCollisionCircles&&(D=e.featureIndex),o.verticalTextFeatureIndex&&(L=o.verticalTextFeatureIndex);var R=o.textBox;if(R){var F=function(r){var i=t.WritingMode.horizontal;if(a.allowVerticalPlacement&&!r&&n.prevPlacement){var o=n.prevPlacement.placedOrientations[e.crossTileID];o&&(n.placedOrientations[e.crossTileID]=o,n.markUsedOrientation(a,i=o,e))}return i},O=function(r,i){if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&o.verticalTextBox)for(var n=0,s=a.writingModes;n0&&(U=U.filter(function(t){return t!==V.anchor})).unshift(V.anchor)}var N=function(t,r,i){for(var o=t.x2-t.x1,s=t.y2-t.y1,u=e.textBoxScale,c=w&&!v?r:null,h={box:[],offscreen:!1},f=_?2*U.length:U.length,d=0;d=U.length,e,a,i,c);if(y&&(h=y.placedGlyphBoxes)&&h.box&&h.box.length){S=!0,z=y.shift;break}}return h};O(function(){return N(R,o.iconBox,t.WritingMode.horizontal)},function(){var r=o.verticalTextBox;return a.allowVerticalPlacement&&!(P&&P.box&&P.box.length)&&e.numVerticalGlyphVertices>0&&r?N(r,o.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}}),P&&(S=P.box,A=P.offscreen);var j=F(P&&P.box);if(!S&&n.prevPlacement){var q=n.prevPlacement.variableOffsets[e.crossTileID];q&&(n.variableOffsets[e.crossTileID]=q,n.markUsedJustification(a,q.anchor,e,j))}}else{var Z=function(t,r){var i=n.collisionIndex.placeCollisionBox(t,_,p,l,m.predicate);return i&&i.box&&i.box.length&&(n.markUsedOrientation(a,r,e),n.placedOrientations[e.crossTileID]=r),i};O(function(){return Z(R,t.WritingMode.horizontal)},function(){var r=o.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?Z(r,t.WritingMode.vertical):{box:null,offscreen:null}}),F(P&&P.box&&P.box.length)}}if(S=(f=P)&&f.box&&f.box.length>0,A=f&&f.offscreen,e.useRuntimeCollisionCircles){var G=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),X=t.evaluateSizeForFeature(a.textSizeData,d,G),W=s.get("text-padding");k=n.collisionIndex.placeCollisionCircles(_,G,a.lineVertexArray,a.glyphOffsetArray,X,l,u,c,i,b,m.predicate,e.collisionCircleDiameter,W),S=_||k.circles.length>0&&!k.collisionDetected,A=A&&k.offscreen}if(o.iconFeatureIndex&&(B=o.iconFeatureIndex),o.iconBox){var K=function(t){var e=w&&z?xe(t,z.x,z.y,x,b,n.transform.angle):t;return n.collisionIndex.placeCollisionBox(e,v,p,l,m.predicate)};E=C&&C.box&&C.box.length&&o.verticalIconBox?(M=K(o.verticalIconBox)).box.length>0:(M=K(o.iconBox)).box.length>0,A=A&&M.offscreen}var H=y||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,J=g||0===e.numIconVertices;if(H||J?J?H||(E=E&&S):S=E&&S:E=S=E&&S,S&&f&&f.box&&n.collisionIndex.insertCollisionBox(f.box,s.get("text-ignore-placement"),a.bucketInstanceId,C&&C.box&&L?L:D,m.ID),E&&M&&n.collisionIndex.insertCollisionBox(M.box,s.get("icon-ignore-placement"),a.bucketInstanceId,B,m.ID),k&&(S&&n.collisionIndex.insertCollisionCircles(k.circles,s.get("text-ignore-placement"),a.bucketInstanceId,D,m.ID),i)){var Y=a.bucketInstanceId,Q=n.collisionCircleArrays[Y];void 0===Q&&(Q=n.collisionCircleArrays[Y]=new ye);for(var $=0;$=0;--z){var P=A[z];E(a.symbolInstances.get(P),a.collisionArrays[P])}else for(var C=e.symbolInstanceStart;C=0&&(e.text.placedSymbolArray.get(l).crossTileID=o>=0&&l!==o?0:i.crossTileID)}},be.prototype.markUsedOrientation=function(e,r,i){for(var n=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,o=r===t.WritingMode.vertical?r:0,a=0,s=[i.leftJustifiedTextSymbolIndex,i.centerJustifiedTextSymbolIndex,i.rightJustifiedTextSymbolIndex];a0,_=n.placedOrientations[o.crossTileID],v=_===t.WritingMode.vertical,x=_===t.WritingMode.horizontal||_===t.WritingMode.horizontalOnly;if(s>0||l>0){var b=Ce(y.text);d(e.text,s,v?ke:b),d(e.text,l,x?ke:b);var w=y.text.isHidden();[o.rightJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.leftJustifiedTextSymbolIndex].forEach(function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=w||v?1:0)}),o.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).hidden=w||x?1:0);var S=n.variableOffsets[o.crossTileID];S&&n.markUsedJustification(e,S.anchor,o,_);var T=n.placedOrientations[o.crossTileID];T&&(n.markUsedJustification(e,"left",o,T),n.markUsedOrientation(e,T,o))}if(g){var I=Ce(y.icon),E=!(h&&o.verticalPlacedIconSymbolIndex&&v);o.placedIconSymbolIndex>=0&&(d(e.icon,o.numIconVertices,E?I:ke),e.icon.placedSymbolArray.get(o.placedIconSymbolIndex).hidden=y.icon.isHidden()),o.verticalPlacedIconSymbolIndex>=0&&(d(e.icon,o.numVerticalIconVertices,E?ke:I),e.icon.placedSymbolArray.get(o.verticalPlacedIconSymbolIndex).hidden=y.icon.isHidden())}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var A=e.collisionArrays[i];if(A){var z=new t.Point(0,0);if(A.textBox||A.verticalTextBox){var P=!0;if(u){var C=n.variableOffsets[m];C?(z=ve(C.anchor,C.width,C.height,C.textOffset,C.textBoxScale),c&&z._rotate(p?n.transform.angle:-n.transform.angle)):P=!1}A.textBox&&we(e.textCollisionBox.collisionVertexArray,y.text.placed,!P||v,z.x,z.y),A.verticalTextBox&&we(e.textCollisionBox.collisionVertexArray,y.text.placed,!P||x,z.x,z.y)}var k=Boolean(!x&&A.verticalIconBox);A.iconBox&&we(e.iconCollisionBox.collisionVertexArray,y.icon.placed,k,h?z.x:0,h?z.y:0),A.verticalIconBox&&we(e.iconCollisionBox.collisionVertexArray,y.icon.placed,!k,h?z.x:0,h?z.y:0)}}},y=0;yt},be.prototype.setStale=function(){this.stale=!0};var Se=Math.pow(2,25),Te=Math.pow(2,24),Ie=Math.pow(2,17),Ee=Math.pow(2,16),Ae=Math.pow(2,9),ze=Math.pow(2,8),Pe=Math.pow(2,1);function Ce(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*Se+e*Te+r*Ie+e*Ee+r*Ae+e*ze+r*Pe+e}var ke=0,Me=function(t){this._sortAcrossTiles="viewport-y"!==t.layout.get("symbol-z-order")&&void 0!==t.layout.get("symbol-sort-key").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Me.prototype.continuePlacement=function(t,e,r,i,n){for(var o=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if("symbol"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Me(s)),this._inProgressLayer.continuePlacement(i[s.source],this.placement,this._showCollisionBoxes,s,a))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},De.prototype.commit=function(t){return this.placement.commit(t),this.placement};var Le=512/t.EXTENT/2,Be=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var i=0;it.overscaledZ)for(var s in a){var l=a[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,n)}else{var u=a[t.scaledTo(Number(o)).key];u&&u.findMatches(e.symbolInstances,t,n)}}for(var c=0;c1?"@2x":"",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,".json"),t.ResourceType.SpriteJSON),function(t,e){l=null,a||(a=t,n=e,c())}),u=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,".png"),t.ResourceType.SpriteImage),function(t,e){u=null,a||(a=t,o=e,c())});function c(){if(a)i(a);else if(n&&o){var e=t.browser.getImageData(o),r={};for(var s in n){var l=n[s],u=l.width,c=l.height,p=l.x,h=l.y,f=l.sdf,d=l.pixelRatio,m=l.stretchX,y=l.stretchY,g=l.content,_=new t.RGBAImage({width:u,height:c});t.RGBAImage.copy(e,_,{x:p,y:h},{x:0,y:0},{width:u,height:c}),r[s]={data:_,pixelRatio:d,sdf:f,stretchX:m,stretchY:y,content:g}}i(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),u&&(u.cancel(),u=null)}}}(e,this.map._requestManager,function(e,i){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(i)for(var n in i)r.imageManager.addImage(n,i[n]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast("setImages",r._availableImages),r.fire(new t.Event("data",{dataType:"style"}))})},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var i=e.sourceLayer;if(i){var n=r.getSource();("geojson"===n.type||n.vectorLayerIds&&-1===n.vectorLayerIds.indexOf(i))&&this.fire(new t.ErrorEvent(new Error('Source layer "'+i+'" does not exist on source "'+n.id+'" as specified by style layer "'+e.id+'"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,i=t;r0)throw new Error("Unimplemented: "+n.map(function(t){return t.command}).join(", ")+".");return i.forEach(function(t){"setTransition"!==t.command&&r[t.command].apply(r,t.args)}),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event("data",{dataType:"style"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event("data",{dataType:"style"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,i){var n=this;if(void 0===i&&(i={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error("There is already a source with this ID");if(!r.type)throw new Error("The type property must be defined, but the only the following properties were given: "+Object.keys(r).join(", ")+".");if(!(["vector","raster","geojson","video","image"].indexOf(r.type)>=0&&this._validate(t.validateStyle.source,"sources."+e,r,null,i))){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var o=this.sourceCaches[e]=new Ct(e,r,this.dispatcher);o.style=this,o.setEventedParent(this,function(){return{isSourceLoaded:n.loaded(),source:o.serialize(),sourceId:e}}),o.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error("There is no source with this ID");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source "'+e+'" cannot be removed while layer "'+r+'" is using it.')));var i=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],i.fire(new t.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),i.setEventedParent(null),i.clearTiles(),i.onRemove&&i.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,i){void 0===i&&(i={}),this._checkLoaded();var n=e.id;if(this.getLayer(n))this.fire(new t.ErrorEvent(new Error('Layer with id "'+n+'" already exists on this map')));else{var o;if("custom"===e.type){if(Ue(this,t.validateCustomStyleLayer(e)))return;o=t.createStyleLayer(e)}else{if("object"==typeof e.source&&(this.addSource(n,e.source),e=t.clone$1(e),e=t.extend(e,{source:n})),this._validate(t.validateStyle.layer,"layers."+n,e,{arrayIndex:-1},i))return;o=t.createStyleLayer(e),this._validateLayer(o),o.setEventedParent(this,{layer:{id:n}}),this._serializedLayers[o.id]=o.serialize()}var a=r?this._order.indexOf(r):this._order.length;if(r&&-1===a)this.fire(new t.ErrorEvent(new Error('Layer with id "'+r+'" does not exist on this map.')));else{if(this._order.splice(a,0,n),this._layerOrderChanged=!0,this._layers[n]=o,this._removedLayers[n]&&o.source&&"custom"!==o.type){var s=this._removedLayers[n];delete this._removedLayers[n],s.type!==o.type?this._updatedSources[o.source]="clear":(this._updatedSources[o.source]="reload",this.sourceCaches[o.source].pause())}this._updateLayer(o),o.onAdd&&o.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var i=this._order.indexOf(e);this._order.splice(i,1);var n=r?this._order.indexOf(r):this._order.length;r&&-1===n?this.fire(new t.ErrorEvent(new Error('Layer with id "'+r+'" does not exist on this map.'))):(this._order.splice(n,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be moved.")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var i=this._order.indexOf(e);this._order.splice(i,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be removed.")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,i){this._checkLoaded();var n=this.getLayer(e);n?n.minzoom===r&&n.maxzoom===i||(null!=r&&(n.minzoom=r),null!=i&&(n.maxzoom=i),this._updateLayer(n)):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot have zoom extent.")))},r.prototype.setFilter=function(e,r,i){void 0===i&&(i={}),this._checkLoaded();var n=this.getLayer(e);if(n){if(!t.deepEqual(n.filter,r))return null==r?(n.filter=void 0,void this._updateLayer(n)):void(this._validate(t.validateStyle.filter,"layers."+n.id+".filter",r,null,i)||(n.filter=t.clone$1(r),this._updateLayer(n)))}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be filtered.")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,i,n){void 0===n&&(n={}),this._checkLoaded();var o=this.getLayer(e);o?t.deepEqual(o.getLayoutProperty(r),i)||(o.setLayoutProperty(r,i,n),this._updateLayer(o)):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be styled.")))},r.prototype.getLayoutProperty=function(e,r){var i=this.getLayer(e);if(i)return i.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style.")))},r.prototype.setPaintProperty=function(e,r,i,n){void 0===n&&(n={}),this._checkLoaded();var o=this.getLayer(e);o?t.deepEqual(o.getPaintProperty(r),i)||(o.setPaintProperty(r,i,n)&&this._updateLayer(o),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be styled.")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var i=e.source,n=e.sourceLayer,o=this.sourceCaches[i];if(void 0!==o){var a=o.getSource().type;"geojson"===a&&n?this.fire(new t.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==a||n?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error("The feature id parameter must be provided."))),o.setFeatureState(n,e.id,r)):this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+i+"' does not exist in the map's style.")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var i=e.source,n=this.sourceCaches[i];if(void 0!==n){var o=n.getSource().type,a="vector"===o?e.sourceLayer:void 0;"vector"!==o||a?r&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.ErrorEvent(new Error("A feature id is requred to remove its specific state property."))):n.removeFeatureState(a,e.id,r):this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+i+"' does not exist in the map's style.")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,i=e.sourceLayer,n=this.sourceCaches[r];if(void 0!==n){if("vector"!==n.getSource().type||i)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error("The feature id parameter must be provided."))),n.getFeatureState(i,e.id);this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+r+"' does not exist in the map's style.")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,function(t){return t.serialize()}),layers:this._serializeLayers(this._order)},function(t){return void 0!==t})},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&"raster"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return"fill-extrusion"===e._layers[t].type},i={},n=[],o=this._order.length-1;o>=0;o--){var a=this._order[o];if(r(a)){i[a]=o;for(var s=0,l=t;s=0;f--){var d=this._order[f];if(r(d))for(var m=n.length-1;m>=0;m--){var y=n[m].feature;if(i[y.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),$e=gr("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),tr=gr("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}"),er=gr("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}"),rr=gr("varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),ir=gr("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),nr=gr("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}"),or=gr("varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}"),ar=gr("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}"),sr=gr("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),lr=gr("uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),ur=gr("uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}"),cr=gr("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define MAX_LINE_DISTANCE 32767.0\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}"),pr=gr("uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),hr=gr("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}"),fr=gr("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),dr=gr("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}"),mr=gr("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}"),yr=gr("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}");function gr(t,e){var r=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,i={};return{fragmentSource:t=t.replace(r,function(t,e,r,n,o){return i[o]=!0,"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nvarying "+r+" "+n+" "+o+";\n#else\nuniform "+r+" "+n+" u_"+o+";\n#endif\n":"\n#ifdef HAS_UNIFORM_u_"+o+"\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n"}),vertexSource:e=e.replace(r,function(t,e,r,n,o){var a="float"===n?"vec2":"vec4",s=o.match(/color/)?"color":a;return i[o]?"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nuniform lowp float u_"+o+"_t;\nattribute "+r+" "+a+" a_"+o+";\nvarying "+r+" "+n+" "+o+";\n#else\nuniform "+r+" "+n+" u_"+o+";\n#endif\n":"vec4"===s?"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+o+" = a_"+o+";\n#else\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+o+" = unpack_mix_"+s+"(a_"+o+", u_"+o+"_t);\n#else\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n":"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nuniform lowp float u_"+o+"_t;\nattribute "+r+" "+a+" a_"+o+";\n#else\nuniform "+r+" "+n+" u_"+o+";\n#endif\n":"vec4"===s?"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+r+" "+n+" "+o+" = a_"+o+";\n#else\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+r+" "+n+" "+o+" = unpack_mix_"+s+"(a_"+o+", u_"+o+"_t);\n#else\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n"})}}var _r=Object.freeze({__proto__:null,prelude:Ge,background:Xe,backgroundPattern:We,circle:Ke,clippingMask:He,heatmap:Je,heatmapTexture:Ye,collisionBox:Qe,collisionCircle:$e,debug:tr,fill:er,fillOutline:rr,fillOutlinePattern:ir,fillPattern:nr,fillExtrusion:or,fillExtrusionPattern:ar,hillshadePrepare:sr,hillshade:lr,line:ur,lineGradient:cr,linePattern:pr,lineSDF:hr,raster:fr,symbolIcon:dr,symbolSDF:mr,symbolTextAndIcon:yr}),vr=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};vr.prototype.bind=function(t,e,r,i,n,o,a,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==i.length,u=0;!l&&u>16,s>>16],u_pixel_coord_lower:[65535&a,65535&s]}}xr.prototype.draw=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m){var y,g=t.gl;if(!this.failedToCreate){for(var _ in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(i),t.setColorMode(n),t.setCullFace(o),this.fixedUniforms)this.fixedUniforms[_].set(a[_]);f&&f.setUniforms(t,this.binderUniforms,p,{zoom:h});for(var v=(y={},y[g.LINES]=2,y[g.TRIANGLES]=3,y[g.LINE_STRIP]=1,y)[e],x=0,b=c.get();x0?1-1/(1.001-a):-a),u_contrast_factor:(o=n.paint.get("raster-contrast"),o>0?1/(1-o):1+o),u_spin_weights:Nr(n.paint.get("raster-hue-rotate"))};var o,a};function Nr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var jr,qr=function(t,e,r,i,n,o,a,s,l,u){var c=n.transform;return{u_is_size_zoom_constant:+("constant"===t||"source"===t),u_is_size_feature_constant:+("constant"===t||"camera"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:c.cameraToCenterDistance,u_pitch:c.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:c.width/c.height,u_fade_change:n.options.fadeDuration?n.symbolFadeChange:1,u_matrix:o,u_label_plane_matrix:a,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+i,u_texsize:u,u_texture:0}},Zr=function(e,r,i,n,o,a,s,l,u,c,p){var h=o.transform;return t.extend(qr(e,r,i,n,o,a,s,l,u,c),{u_gamma_scale:n?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+p})},Gr=function(e,r,i,n,o,a,s,l,u,c){return t.extend(Zr(e,r,i,n,o,a,s,l,!0,u,!0),{u_texsize_icon:c,u_texture_icon:1})},Xr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Wr=function(e,r,i,n,o,a){return t.extend(function(t,e,r,i){var n=r.imageManager.getPattern(t.from.toString()),o=r.imageManager.getPattern(t.to.toString()),a=r.imageManager.getPixelSize(),s=a.width,l=a.height,u=Math.pow(2,i.tileID.overscaledZ),c=i.tileSize*Math.pow(2,r.transform.tileZoom)/u,p=c*(i.tileID.canonical.x+i.tileID.wrap*u),h=c*i.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:n.tl,u_pattern_br_a:n.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:n.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/he(i,1,r.transform.tileZoom),u_pixel_coord_upper:[p>>16,h>>16],u_pixel_coord_lower:[65535&p,65535&h]}}(n,a,i,o),{u_matrix:e,u_opacity:r})},Kr={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Hr(e,r,i,n,o,a,s){for(var l=e.context,u=l.gl,c=e.useProgram("collisionBox"),p=[],h=0,f=0,d=0;d0){var b=t.create(),w=_;t.mul(b,g.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(b,b,g.placementViewportMatrix),p.push({circleArray:x,circleOffset:f,transform:w,invTransform:b}),f=h+=x.length/4}v&&c.draw(l,u.LINES,It.disabled,Et.disabled,e.colorModeForRenderPass(),zt.disabled,Pr(_,e.transform,y),i.id,v.layoutVertexBuffer,v.indexBuffer,v.segments,null,e.transform.zoom,null,null,v.collisionVertexBuffer)}}if(s&&p.length){var S=e.useProgram("collisionCircle"),T=new t.StructArrayLayout2f1f2i16;T.resize(4*h),T._trim();for(var I=0,E=0,A=p;E=0&&(m[g.associatedIconIndex]={shiftedAnchor:T,angle:I})}else ue(g.numGlyphs,f)}if(p){d.clear();for(var A=e.icon.placedSymbolArray,z=0;z0){var s=t.browser.now(),l=(s-e.timeAdded)/a,u=r?(s-r.timeAdded)/a:-1,c=i.getSource(),p=o.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-p)>Math.abs(e.tileID.overscaledZ-p),f=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-u,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-f}:{opacity:f,mix:0}}return{opacity:1,mix:0}}var si=new t.Color(1,0,0,1),li=new t.Color(0,1,0,1),ui=new t.Color(0,0,1,1),ci=new t.Color(1,0,1,1),pi=new t.Color(0,1,1,1);function hi(t,e,r,i){di(t,0,e+r/2,t.transform.width,r,i)}function fi(t,e,r,i){di(t,e-r/2,0,r,t.transform.height,i)}function di(e,r,i,n,o,a){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,o*t.browser.devicePixelRatio),s.clear({color:a}),l.disable(l.SCISSOR_TEST)}function mi(e,r,i){var n=e.context,o=n.gl,a=i.posMatrix,s=e.useProgram("debug"),l=It.disabled,u=Et.disabled,c=e.colorModeForRenderPass();n.activeTexture.set(o.TEXTURE0),e.emptyTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE),s.draw(n,o.LINE_STRIP,l,u,c,zt.disabled,kr(a,t.Color.red),"$debug",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var p=r.getTileByID(i.key).latestRawTileData,h=Math.floor((p&&p.byteLength||0)/1024),f=r.getTile(i).tileSize,d=512/Math.min(f,512)*(i.overscaledZ/e.transform.zoom)*.5,m=i.canonical.toString();i.overscaledZ!==i.canonical.z&&(m+=" => "+i.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,i=t.context.gl,n=t.debugOverlayCanvas.getContext("2d");n.clearRect(0,0,r.width,r.height),n.shadowColor="white",n.shadowBlur=2,n.lineWidth=1.5,n.strokeStyle="white",n.textBaseline="top",n.font="bold 36px Open Sans, sans-serif",n.fillText(e,5,5),n.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE)}(e,m+" "+h+"kb"),s.draw(n,o.TRIANGLES,l,u,At.alphaBlended,zt.disabled,kr(a,t.Color.transparent,d),"$debug",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var yi={symbol:function(e,r,i,n,o){if("translucent"===e.renderPass){var a=Et.disabled,s=e.colorModeForRenderPass();i.layout.get("text-variable-anchor")&&function(e,r,i,n,o,a,s){for(var l=r.transform,u="map"===o,c="map"===a,p=0,h=e;p256&&this.clearStencil(),r.setColorMode(At.disabled),r.setDepthMode(It.disabled);var n=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var o=0,a=e;o256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Et({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},gi.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Et({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},gi.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,i=t.sort(function(t,e){return e.overscaledZ-t.overscaledZ}),n=i[i.length-1].overscaledZ,o=i[0].overscaledZ-n+1;if(o>1){this.currentStencilSource=void 0,this.nextStencilID+o>256&&this.clearStencil();for(var a={},s=0;s=0;this.currentLayer--){var x=this.style._layers[n[this.currentLayer]],b=o[x.source],w=c[x.source];this._renderTileClippingMasks(x,w),this.renderLayer(this,b,x,w)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer0?e.pop():null},gi.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},gi.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=""+t+(e?e.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[r]||(this.cache[r]=new xr(this.context,_r[t],e,Kr[t],this._showOverdrawInspector)),this.cache[r]},gi.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},gi.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},gi.prototype.initDebugOverlayCanvas=function(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=t.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))},gi.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var _i=function(t,e){this.points=t,this.planes=e};_i.fromInvProjectionMatrix=function(e,r,i){var n=Math.pow(2,i),o=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(function(r){return t.transformMat4([],r,e)}).map(function(e){return t.scale$1([],e,1/e[3]/r*n)}),a=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(function(e){var r=t.sub([],o[e[0]],o[e[1]]),i=t.sub([],o[e[2]],o[e[1]]),n=t.normalize([],t.cross([],r,i)),a=-t.dot(n,o[e[1]]);return n.concat(a)});return new _i(o,a)};var vi=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};vi.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],i=t.clone$2(this.min),n=t.clone$2(this.max),o=0;o=0;if(0===a)return 0;a!==r.length&&(i=!1)}if(i)return 2;for(var l=0;l<3;l++){for(var u=Number.MAX_VALUE,c=-Number.MAX_VALUE,p=0;pthis.max[l]-this.min[l])return 0}return 1};var xi=function(t,e,r,i){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===i&&(i=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(i)||i<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=e,this.left=r,this.right=i};xi.prototype.interpolate=function(e,r,i){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,i)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,i)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,i)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,i)),this},xi.prototype.getCenter=function(e,r){var i=t.clamp((this.left+e-this.right)/2,0,e),n=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(i,n)},xi.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},xi.prototype.clone=function(){return new xi(this.top,this.bottom,this.left,this.right)},xi.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var bi=function(e,r,i,n,o){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===o||o,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==i?0:i,this._maxPitch=null==n?60:n,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new xi,this._posMatrixCache={},this._alignedPosMatrixCache={}},wi={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};bi.prototype.clone=function(){var t=new bi(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},wi.minZoom.get=function(){return this._minZoom},wi.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},wi.maxZoom.get=function(){return this._maxZoom},wi.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},wi.minPitch.get=function(){return this._minPitch},wi.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},wi.maxPitch.get=function(){return this._maxPitch},wi.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},wi.renderWorldCopies.get=function(){return this._renderWorldCopies},wi.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},wi.worldSize.get=function(){return this.tileSize*this.scale},wi.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},wi.size.get=function(){return new t.Point(this.width,this.height)},wi.bearing.get=function(){return-this.angle/Math.PI*180},wi.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},wi.pitch.get=function(){return this._pitch/Math.PI*180},wi.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},wi.fov.get=function(){return this._fov/Math.PI*180},wi.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},wi.zoom.get=function(){return this._zoom},wi.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},wi.center.get=function(){return this._center},wi.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},wi.padding.get=function(){return this._edgeInsets.toJSON()},wi.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},wi.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},bi.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},bi.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},bi.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},bi.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var i=this.pointCoordinate(new t.Point(0,0)),n=this.pointCoordinate(new t.Point(this.width,0)),o=this.pointCoordinate(new t.Point(this.width,this.height)),a=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(i.x,n.x,o.x,a.x)),l=Math.floor(Math.max(i.x,n.x,o.x,a.x)),u=s-1;u<=l+1;u++)0!==u&&r.push(new t.UnwrappedTileID(u,e));return r},bi.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),i=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var n=t.MercatorCoordinate.fromLngLat(this.center),o=Math.pow(2,r),a=[o*n.x,o*n.y,0],s=_i.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var u=function(t){return{aabb:new vi([t*o,0,0],[(t+1)*o,o,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},c=[],p=[],h=r,f=e.reparseOverscaled?i:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)c.push(u(-d)),c.push(u(d));for(c.push(u(0));c.length>0;){var m=c.pop(),y=m.x,g=m.y,_=m.fullyVisible;if(!_){var v=m.aabb.intersects(s);if(0===v)continue;_=2===v}var x=m.aabb.distanceX(a),b=m.aabb.distanceY(a),w=Math.max(Math.abs(x),Math.abs(b));if(m.zoom===h||w>3+(1<=l)p.push({tileID:new t.OverscaledTileID(m.zoom===h?f:m.zoom,m.wrap,m.zoom,y,g),distanceSq:t.sqrLen([a[0]-.5-y,a[1]-.5-g])});else for(var S=0;S<4;S++){var T=(y<<1)+S%2,I=(g<<1)+(S>>1);c.push({aabb:m.aabb.quadrant(S),zoom:m.zoom+1,x:T,y:I,wrap:m.wrap,fullyVisible:_})}}return p.sort(function(t,e){return t.distanceSq-e.distanceSq}).map(function(t){return t.tileID})},bi.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},wi.unmodified.get=function(){return this._unmodified},bi.prototype.zoomScale=function(t){return Math.pow(2,t)},bi.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},bi.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},bi.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},wi.point.get=function(){return this.project(this.center)},bi.prototype.setLocationAtPoint=function(e,r){var i=this.pointCoordinate(r),n=this.pointCoordinate(this.centerPoint),o=this.locationCoordinate(e),a=new t.MercatorCoordinate(o.x-(i.x-n.x),o.y-(i.y-n.y));this.center=this.coordinateLocation(a),this._renderWorldCopies&&(this.center=this.center.wrap())},bi.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},bi.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},bi.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},bi.prototype.coordinateLocation=function(t){return t.toLngLat()},bi.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],i=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(i,i,this.pixelMatrixInverse);var n=r[3],o=i[3],a=r[1]/n,s=i[1]/o,l=r[2]/n,u=i[2]/o,c=l===u?0:(0-l)/(u-l);return new t.MercatorCoordinate(t.number(r[0]/n,i[0]/o,c)/this.worldSize,t.number(a,s,c)/this.worldSize)},bi.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},bi.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},bi.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},bi.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},bi.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var i=e.key,n=r?this._alignedPosMatrixCache:this._posMatrixCache;if(n[i])return n[i];var o=e.canonical,a=this.worldSize/this.zoomScale(o.z),s=o.x+Math.pow(2,o.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*a,o.y*a,0]),t.scale(l,l,[a/t.EXTENT,a/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),n[i]=new Float32Array(l),n[i]},bi.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},bi.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,i,n,o=-90,a=90,s=-180,l=180,u=this.size,c=this._unmodified;if(this.latRange){var p=this.latRange;o=t.mercatorYfromLat(p[1])*this.worldSize,e=(a=t.mercatorYfromLat(p[0])*this.worldSize)-oa&&(n=a-y)}if(this.lngRange){var g=f.x,_=u.x/2;g-_l&&(i=l-_)}void 0===i&&void 0===n||(this.center=this.unproject(new t.Point(void 0!==i?i:f.x,void 0!==n?n:f.y))),this._unmodified=c,this._constraining=!1}},bi.prototype._calcMatrices=function(){if(this.height){var e=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var r=Math.PI/2+this._pitch,i=this._fov*(.5+e.y/this.height),n=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-r-i,.01,Math.PI-.01)),o=this.point,a=o.x,s=o.y,l=1.01*(Math.cos(Math.PI/2-this._pitch)*n+this.cameraToCenterDistance),u=this.height/50,c=new Float64Array(16);t.perspective(c,this._fov,this.width/this.height,u,l),c[8]=2*-e.x/this.width,c[9]=2*e.y/this.height,t.scale(c,c,[1,-1,1]),t.translate(c,c,[0,0,-this.cameraToCenterDistance]),t.rotateX(c,c,this._pitch),t.rotateZ(c,c,this.angle),t.translate(c,c,[-a,-s,0]),this.mercatorMatrix=t.scale([],c,[this.worldSize,this.worldSize,this.worldSize]),t.scale(c,c,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=c,this.invProjMatrix=t.invert([],this.projMatrix);var p=this.width%2/2,h=this.height%2/2,f=Math.cos(this.angle),d=Math.sin(this.angle),m=a-Math.round(a)+f*p+d*h,y=s-Math.round(s)+f*h+d*p,g=new Float64Array(c);if(t.translate(g,g,[m>.5?m-1:m,y>.5?y-1:y,0]),this.alignedProjMatrix=g,c=t.create(),t.scale(c,c,[this.width/2,-this.height/2,1]),t.translate(c,c,[1,-1,0]),this.labelPlaneMatrix=c,c=t.create(),t.scale(c,c,[1,-1,1]),t.translate(c,c,[-1,-1,0]),t.scale(c,c,[2/this.width,2/this.height,1]),this.glCoordMatrix=c,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(c=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error("failed to invert matrix");this.pixelMatrixInverse=c,this._posMatrixCache={},this._alignedPosMatrixCache={}}},bi.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},bi.prototype.getCameraPoint=function(){var e=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,e))},bi.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var i=r.x,n=r.y,o=r.x,a=r.y,s=0,l=e;s=3&&!t.some(function(t){return isNaN(t)})){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Si.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,"",e)}catch(t){}};var Ti={linearity:.3,easing:t.bezier(0,0,.3,1)},Ii=t.extend({deceleration:2500,maxSpeed:1400},Ti),Ei=t.extend({deceleration:20,maxSpeed:1400},Ti),Ai=t.extend({deceleration:1e3,maxSpeed:360},Ti),zi=t.extend({deceleration:1e3,maxSpeed:90},Ti),Pi=function(t){this._map=t,this.clear()};function Ci(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},Pi.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},i=0,n=this._inertiaBuffer;i=this._clickTolerance||this._map.fire(new Mi(t.type,this._map,t))},Bi.prototype.dblclick=function(t){return this._firePreventable(new Mi(t.type,this._map,t))},Bi.prototype.mouseover=function(t){this._map.fire(new Mi(t.type,this._map,t))},Bi.prototype.mouseout=function(t){this._map.fire(new Mi(t.type,this._map,t))},Bi.prototype.touchstart=function(t){return this._firePreventable(new Di(t.type,this._map,t))},Bi.prototype.touchmove=function(t){this._map.fire(new Di(t.type,this._map,t))},Bi.prototype.touchend=function(t){this._map.fire(new Di(t.type,this._map,t))},Bi.prototype.touchcancel=function(t){this._map.fire(new Di(t.type,this._map,t))},Bi.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Bi.prototype.isEnabled=function(){return!0},Bi.prototype.isActive=function(){return!1},Bi.prototype.enable=function(){},Bi.prototype.disable=function(){};var Ri=function(t){this._map=t};Ri.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},Ri.prototype.mousemove=function(t){this._map.fire(new Mi(t.type,this._map,t))},Ri.prototype.mousedown=function(){this._delayContextMenu=!0},Ri.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Mi("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},Ri.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Mi(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()},Ri.prototype.isEnabled=function(){return!0},Ri.prototype.isActive=function(){return!1},Ri.prototype.enable=function(){},Ri.prototype.disable=function(){};var Fi=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Oi(t,e){for(var r={},i=0;ithis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),i.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),i=0,n=e;i30)&&(this.aborted=!0)}}},Ui.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var i=!this.aborted&&this.centroid;if(this.reset(),i)return i}};var Vi=function(t){this.singleTap=new Ui(t),this.numTaps=t.numTaps,this.reset()};Vi.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},Vi.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},Vi.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},Vi.prototype.touchend=function(t,e,r){var i=this.singleTap.touchend(t,e,r);if(i){var n=t.timeStamp-this.lastTime<500,o=!this.lastTap||this.lastTap.dist(i)<30;if(n&&o||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=i,this.count===this.numTaps)return this.reset(),i}};var Ni=function(){this._zoomIn=new Vi({numTouches:1,numTaps:2}),this._zoomOut=new Vi({numTouches:2,numTaps:1}),this.reset()};Ni.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Ni.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Ni.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Ni.prototype.touchend=function(t,e,r){var i=this,n=this._zoomIn.touchend(t,e,r),o=this._zoomOut.touchend(t,e,r);return n?(this._active=!0,t.preventDefault(),setTimeout(function(){return i.reset()},0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(n)},{originalEvent:t})}}):o?(this._active=!0,t.preventDefault(),setTimeout(function(){return i.reset()},0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(o)},{originalEvent:t})}}):void 0},Ni.prototype.touchcancel=function(){this.reset()},Ni.prototype.enable=function(){this._enabled=!0},Ni.prototype.disable=function(){this._enabled=!1,this.reset()},Ni.prototype.isEnabled=function(){return this._enabled},Ni.prototype.isActive=function(){return this._active};var ji=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};ji.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},ji.prototype._correctButton=function(t,e){return!1},ji.prototype._move=function(t,e){return{}},ji.prototype.mousedown=function(t,e){if(!this._lastPoint){var i=r.mouseButton(t);this._correctButton(t,i)&&(this._lastPoint=e,this._eventButton=i)}},ji.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)0&&(this._active=!0);var n=Oi(i,r),o=new t.Point(0,0),a=new t.Point(0,0),s=0;for(var l in n){var u=n[l],c=this._touches[l];c&&(o._add(u),a._add(u.sub(c)),s++,n[l]=u)}if(this._touches=n,!(sMath.abs(t.x)}var tn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,$i(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var i=t[0].sub(this._lastPoints[0]),n=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(i,n,r.timeStamp),this._valid)return this._lastPoints=t,this._active=!0,{pitchDelta:(i.y+n.y)/2*-.5}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var i=t.mag()>=2,n=e.mag()>=2;if(i||n){if(!i||!n)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var o=t.y>0==e.y>0;return $i(t)&&$i(e)&&o}},e}(Wi),en={panStep:100,bearingStep:15,pitchStep:10},rn=function(){var t=en;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function nn(t){return t*(2-t)}rn.prototype.reset=function(){this._active=!1},rn.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,i=0,n=0,o=0,a=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?i=-1:(t.preventDefault(),o=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),o=1);break;case 38:t.shiftKey?n=1:(t.preventDefault(),a=-1);break;case 40:t.shiftKey?n=-1:(t.preventDefault(),a=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:"keyboardHandler",easing:nn,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+i*e._bearingStep,pitch:s.getPitch()+n*e._pitchStep,offset:[-o*e._panStep,-a*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},rn.prototype.enable=function(){this._enabled=!0},rn.prototype.disable=function(){this._enabled=!1,this.reset()},rn.prototype.isEnabled=function(){return this._enabled},rn.prototype.isActive=function(){return this._active};var on=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll(["_onWheel","_onTimeout","_onScrollFrame","_onScrollFinished"],this)};on.prototype.setZoomRate=function(t){this._defaultZoomRate=t},on.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},on.prototype.isEnabled=function(){return!!this._enabled},on.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},on.prototype.isZooming=function(){return!!this._zooming},on.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&"center"===t.around)},on.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},on.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,i=t.browser.now(),n=i-(this._lastWheelEventTime||0);this._lastWheelEventTime=i,0!==r&&r%4.000244140625==0?this._type="wheel":0!==r&&Math.abs(r)<4?this._type="trackpad":n>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(n*r)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},on.prototype._onTimeout=function(t){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)},on.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var i=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(i)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},on.prototype.renderFrame=function(){return this._onScrollFrame()},on.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var i="wheel"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,n=2/(1+Math.exp(-Math.abs(this._delta*i)));this._delta<0&&0!==n&&(n=1/n);var o="number"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(o*n))),"wheel"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var a,s="number"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,u=this._easing,c=!1;if("wheel"===this._type&&l&&u){var p=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=u(p);a=t.number(l,s,h),p<1?this._frameId||(this._frameId=!0):c=!0}else a=s,c=!0;return this._active=!0,c&&(this._active=!1,this._finishTimeout=setTimeout(function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!c,zoomDelta:a-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},on.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var i=this._prevEase,n=(t.browser.now()-i.start)/i.duration,o=i.easing(n+.01)-i.easing(n),a=.27/Math.sqrt(o*o+1e-4)*.01,s=Math.sqrt(.0729-a*a);r=t.bezier(a,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},on.prototype.reset=function(){this._active=!1};var an=function(t,e){this._clickZoom=t,this._tapZoom=e};an.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},an.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},an.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},an.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var sn=function(){this.reset()};sn.prototype.reset=function(){this._active=!1},sn.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},sn.prototype.enable=function(){this._enabled=!0},sn.prototype.disable=function(){this._enabled=!1,this.reset()},sn.prototype.isEnabled=function(){return this._enabled},sn.prototype.isActive=function(){return this._active};var ln=function(){this._tap=new Vi({numTouches:1,numTaps:1}),this.reset()};ln.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},ln.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},ln.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var i=e[0],n=i.y-this._swipePoint.y;return this._swipePoint=i,t.preventDefault(),this._active=!0,{zoomDelta:n/128}}}else this._tap.touchmove(t,e,r)},ln.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},ln.prototype.touchcancel=function(){this.reset()},ln.prototype.enable=function(){this._enabled=!0},ln.prototype.disable=function(){this._enabled=!1,this.reset()},ln.prototype.isEnabled=function(){return this._enabled},ln.prototype.isActive=function(){return this._active};var un=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};un.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},un.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},un.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},un.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var cn=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};cn.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},cn.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},cn.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},cn.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var pn=function(t,e,r,i){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=i,this._rotationDisabled=!1,this._enabled=!0};pn.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},pn.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},pn.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},pn.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},pn.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},pn.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var hn=function(t){return t.zoom||t.drag||t.pitch||t.rotate},fn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(t.Event);function dn(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var mn=function(e,i){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Pi(e),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(i),t.bindAll(["handleEvent","handleWindowEvent"],this);var n=this._el;this._listeners=[[n,"touchstart",{passive:!1}],[n,"touchmove",{passive:!1}],[n,"touchend",void 0],[n,"touchcancel",void 0],[n,"mousedown",void 0],[n,"mousemove",void 0],[n,"mouseup",void 0],[t.window.document,"mousemove",{capture:!0}],[t.window.document,"mouseup",void 0],[n,"mouseover",void 0],[n,"mouseout",void 0],[n,"dblclick",void 0],[n,"click",void 0],[n,"keydown",{capture:!1}],[n,"keyup",void 0],[n,"wheel",{passive:!1}],[n,"contextmenu",void 0],[t.window,"blur",void 0]];for(var o=0,a=this._listeners;oo?Math.min(2,b):Math.max(.5,b),w=Math.pow(y,1-e),S=n.unproject(v.add(x.mult(e*w)).mult(m));n.setLocationAtPoint(n.renderWorldCopies?S.wrap():S,d)}i._fireMoveEvents(r)},function(t){i._afterEase(r,t)},e),this},r.prototype._prepareEase=function(e,r,i){void 0===i&&(i={}),this._moving=!0,r||i.moving||this.fire(new t.Event("movestart",e)),this._zooming&&!i.zooming&&this.fire(new t.Event("zoomstart",e)),this._rotating&&!i.rotating&&this.fire(new t.Event("rotatestart",e)),this._pitching&&!i.pitching&&this.fire(new t.Event("pitchstart",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event("move",e)),this._zooming&&this.fire(new t.Event("zoom",e)),this._rotating&&this.fire(new t.Event("rotate",e)),this._pitching&&this.fire(new t.Event("pitch",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var i=this._zooming,n=this._rotating,o=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,i&&this.fire(new t.Event("zoomend",e)),n&&this.fire(new t.Event("rotateend",e)),o&&this.fire(new t.Event("pitchend",e)),this.fire(new t.Event("moveend",e))}},r.prototype.flyTo=function(e,r){var i=this;if(!e.essential&&t.browser.prefersReducedMotion){var n=t.pick(e,["center","zoom","bearing","pitch","around"]);return this.jumpTo(n,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var o=this.transform,a=this.getZoom(),s=this.getBearing(),l=this.getPitch(),u=this.getPadding(),c="zoom"in e?t.clamp(+e.zoom,o.minZoom,o.maxZoom):a,p="bearing"in e?this._normalizeBearing(e.bearing,s):s,h="pitch"in e?+e.pitch:l,f="padding"in e?e.padding:o.padding,d=o.zoomScale(c-a),m=t.Point.convert(e.offset),y=o.centerPoint.add(m),g=o.pointLocation(y),_=t.LngLat.convert(e.center||g);this._normalizeCenter(_);var v=o.project(g),x=o.project(_).sub(v),b=e.curve,w=Math.max(o.width,o.height),S=w/d,T=x.mag();if("minZoom"in e){var I=t.clamp(Math.min(e.minZoom,a,c),o.minZoom,o.maxZoom),E=w/o.zoomScale(I-a);b=Math.sqrt(E/T*2)}var A=b*b;function z(t){var e=(S*S-w*w+(t?-1:1)*A*A*T*T)/(2*(t?S:w)*A*T);return Math.log(Math.sqrt(e*e+1)-e)}function P(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var k=z(0),M=function(t){return C(k)/C(k+b*t)},D=function(t){return w*((C(k)*(P(e=k+b*t)/C(e))-P(k))/A)/T;var e},L=(z(1)-k)/b;if(Math.abs(T)<1e-6||!isFinite(L)){if(Math.abs(w-S)<1e-6)return this.easeTo(e,r);var B=Se.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==p,this._pitching=h!==l,this._padding=!o.isPaddingEqual(f),this._prepareEase(r,!1),this._ease(function(e){var n=e*L,d=1/M(n);o.zoom=1===e?c:a+o.scaleZoom(d),i._rotating&&(o.bearing=t.number(s,p,e)),i._pitching&&(o.pitch=t.number(l,h,e)),i._padding&&(o.interpolatePadding(u,f,e),y=o.centerPoint.add(m));var g=1===e?_:o.unproject(v.add(x.mult(D(n))).mult(d));o.setLocationAtPoint(o.renderWorldCopies?g.wrap():g,y),i._fireMoveEvents(r)},function(){return i._afterEase(r)},e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var i=this.handlers;i&&i.stop()}return this},r.prototype._ease=function(e,r,i){!1===i.animate||0===i.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=i,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var i=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),gn=function(e){void 0===e&&(e={}),this.options=e,t.bindAll(["_updateEditLink","_updateData","_updateCompact"],this)};gn.prototype.getDefaultPosition=function(){return"bottom-right"},gn.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._innerContainer=r.create("div","mapboxgl-ctrl-attrib-inner",this._container),e&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),void 0===e&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},gn.prototype.onRemove=function(){r.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},gn.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(".mapbox-improve-map"));var r=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var i=r.reduce(function(t,e,i){return e.value&&(t+=e.key+"="+e.value+(i=0)return!1;return!0})).join(" | ");a!==this._attribHTML&&(this._attribHTML=a,t.length?(this._innerContainer.innerHTML=a,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},gn.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact")};var _n=function(){t.bindAll(["_updateLogo"],this),t.bindAll(["_updateCompact"],this)};_n.prototype.onAdd=function(t){this._map=t,this._container=r.create("div","mapboxgl-ctrl");var e=r.create("a","mapboxgl-ctrl-logo");return e.target="_blank",e.rel="noopener nofollow",e.href="https://www.mapbox.com/",e.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),e.setAttribute("rel","noopener nofollow"),this._container.appendChild(e),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},_n.prototype.onRemove=function(){r.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},_n.prototype.getDefaultPosition=function(){return"bottom-left"},_n.prototype._updateLogo=function(t){t&&"metadata"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?"block":"none")},_n.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t)if(t[e].getSource().mapbox_logo)return!0;return!1}},_n.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add("mapboxgl-compact"):e.classList.remove("mapboxgl-compact")}};var vn=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};vn.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},vn.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,i=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=e.minPitch&&e.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error("maxPitch must be less than or equal to 60");var n=new bi(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(i.call(this,n,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new vn,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},xn,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),"string"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error("Container '"+e.container+"' not found.")}else{if(!(e.container instanceof wn))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll(["_onWindowOnline","_onWindowResize","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return r._update(!1)}),this.on("moveend",function(){return r._update(!1)}),this.on("zoom",function(){return r._update(!0)}),void 0!==t.window&&(t.window.addEventListener("online",this._onWindowOnline,!1),t.window.addEventListener("resize",this._onWindowResize,!1)),this.handlers=new mn(this,e),this._hash=e.hash&&new Si("string"==typeof e.hash&&e.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new gn({customAttribution:e.customAttribution})),this.addControl(new _n,e.logoPosition),this.on("style.load",function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)}),this.on("data",function(e){r._update("style"===e.dataType),r.fire(new t.Event(e.dataType+"data",e))}),this.on("dataloading",function(e){r.fire(new t.Event(e.dataType+"dataloading",e))})}i&&(n.__proto__=i),(n.prototype=Object.create(i&&i.prototype)).constructor=n;var o={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return n.prototype._getMapId=function(){return this._mapId},n.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r="top-right"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var i=e.onAdd(this);this._controls.push(e);var n=this._controlPositions[r];return-1!==r.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},n.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},n.prototype.resize=function(e){var r=this._containerDimensions(),i=r[0],n=r[1];this._resizeCanvas(i,n),this.transform.resize(i,n),this.painter.resize(i,n);var o=!this._moving;return o&&(this.stop(),this.fire(new t.Event("movestart",e)).fire(new t.Event("move",e))),this.fire(new t.Event("resize",e)),o&&this.fire(new t.Event("moveend",e)),this},n.prototype.getBounds=function(){return this.transform.getBounds()},n.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},n.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},n.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error("maxZoom must be greater than the current minZoom")},n.prototype.getMaxZoom=function(){return this.transform.maxZoom},n.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()60)throw new Error("maxPitch must be less than or equal to 60");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error("maxPitch must be greater than the current minPitch")},n.prototype.getMaxPitch=function(){return this.transform.maxPitch},n.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},n.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},n.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},n.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},n.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},n.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},n.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},n.prototype._createDelegatedListener=function(t,e,r){var i,n=this;if("mouseenter"===t||"mouseover"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(i){var a=n.getLayer(e)?n.queryRenderedFeatures(i.point,{layers:[e]}):[];a.length?o||(o=!0,r.call(n,new Mi(t,n,i.originalEvent,{features:a}))):o=!1},mouseout:function(){o=!1}}}}if("mouseleave"===t||"mouseout"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(i){(n.getLayer(e)?n.queryRenderedFeatures(i.point,{layers:[e]}):[]).length?a=!0:a&&(a=!1,r.call(n,new Mi(t,n,i.originalEvent)))},mouseout:function(e){a&&(a=!1,r.call(n,new Mi(t,n,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(i={},i[t]=function(t){var i=n.getLayer(e)?n.queryRenderedFeatures(t.point,{layers:[e]}):[];i.length&&(t.features=i,r.call(n,t),delete t.features)},i)}},n.prototype.on=function(t,e,r){if(void 0===r)return i.prototype.on.call(this,t,e);var n=this._createDelegatedListener(t,e,r);for(var o in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(n),n.delegates)this.on(o,n.delegates[o]);return this},n.prototype.once=function(t,e,r){if(void 0===r)return i.prototype.once.call(this,t,e);var n=this._createDelegatedListener(t,e,r);for(var o in n.delegates)this.once(o,n.delegates[o]);return this},n.prototype.off=function(t,e,r){var n=this;return void 0===r?i.prototype.off.call(this,t,e):(this._delegatedListeners&&this._delegatedListeners[t]&&function(i){for(var o=i[t],a=0;a180;){var s=i.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=i.width&&s.y<=i.height)break;e.lng>i.center.lng?e.lng-=360:e.lng+=360}return e}Pn.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Pn.prototype.move=function(t,e){var r=this.map,i=this.mouseRotate.mousemoveWindow(t,e);if(i&&i.bearingDelta&&r.setBearing(r.getBearing()+i.bearingDelta),this.mousePitch){var n=this.mousePitch.mousemoveWindow(t,e);n&&n.pitchDelta&&r.setPitch(r.getPitch()+n.pitchDelta)}},Pn.prototype.off=function(){var t=this.element;r.removeEventListener(t,"mousedown",this.mousedown),r.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),r.removeEventListener(t,"touchmove",this.touchmove),r.removeEventListener(t,"touchend",this.touchend),r.removeEventListener(t,"touchcancel",this.reset),this.offTemp()},Pn.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,"mousemove",this.mousemove),r.removeEventListener(t.window,"mouseup",this.mouseup)},Pn.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,"mousemove",this.mousemove),r.addEventListener(t.window,"mouseup",this.mouseup)},Pn.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Pn.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Pn.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Pn.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Pn.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)e.getEast()||r.latitudee.getNorth())},i.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}},i.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new t.Event("geolocate",e)),this._finish()}},i.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),i=e.coords.accuracy,n=this._map.getBearing(),o=t.extend({bearing:n},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(i),o,{geolocateSource:!0})},i.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},i.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),i=e.distanceTo(r),n=Math.ceil(2*this._accuracy/i);this._circleElement.style.width=n+"px",this._circleElement.style.height=n+"px"},i.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},i.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var r=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=r,this._geolocateButton.setAttribute("aria-label",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&Fn)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new t.Event("error",e)),this._finish()}},i.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},i.prototype._setupUI=function(e){var i=this;if(this._container.addEventListener("contextmenu",function(t){return t.preventDefault()}),this._geolocateButton=r.create("button","mapboxgl-ctrl-geolocate",this._container),r.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",!1===e){t.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n)}else{var o=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=o,this._geolocateButton.setAttribute("aria-label",o)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=r.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new Ln(this._dotElement),this._circleElement=r.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Ln({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(e){e.geolocateSource||"ACTIVE_LOCK"!==i._watchState||e.originalEvent&&"resize"===e.originalEvent.type||(i._watchState="BACKGROUND",i._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),i._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),i.fire(new t.Event("trackuserlocationend")))})},i.prototype.trigger=function(){if(!this._setup)return t.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Rn--,Fn=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new t.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),++Rn>1?(e={maximumAge:6e5,timeout:0},Fn=!0):(e=this.options.positionOptions,Fn=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},i.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},i}(t.Evented),Un={maxWidth:100,unit:"metric"},Vn=function(e){this.options=t.extend({},Un,e),t.bindAll(["_onMove","setUnit"],this)};function Nn(t,e,r){var i=r&&r.maxWidth||100,n=t._container.clientHeight/2,o=t.unproject([0,n]),a=t.unproject([i,n]),s=o.distanceTo(a);if(r&&"imperial"===r.unit){var l=3.2808*s;l>5280?jn(e,i,l/5280,t._getUIString("ScaleControl.Miles")):jn(e,i,l,t._getUIString("ScaleControl.Feet"))}else r&&"nautical"===r.unit?jn(e,i,s/1852,t._getUIString("ScaleControl.NauticalMiles")):s>=1e3?jn(e,i,s/1e3,t._getUIString("ScaleControl.Kilometers")):jn(e,i,s,t._getUIString("ScaleControl.Meters"))}function jn(t,e,r,i){var n,o,a,s=(n=r,(o=Math.pow(10,(""+Math.floor(n)).length-1))*(a=(a=n/o)>=10?10:a>=5?5:a>=3?3:a>=2?2:a>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(a)));t.style.width=e*(s/r)+"px",t.innerHTML=s+" "+i}Vn.prototype.getDefaultPosition=function(){return"bottom-left"},Vn.prototype._onMove=function(){Nn(this._map,this._container,this.options)},Vn.prototype.onAdd=function(t){return this._map=t,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",t.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Vn.prototype.onRemove=function(){r.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Vn.prototype.setUnit=function(t){this.options.unit=t,Nn(this._map,this._container,this.options)};var qn=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce("Full screen control 'container' must be a DOM element.")),t.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in t.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in t.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in t.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in t.window.document&&(this._fullscreenchange="MSFullscreenChange")};qn.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",t.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},qn.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},qn.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},qn.prototype._setupUI=function(){var e=this._fullscreenButton=r.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);r.create("span","mapboxgl-ctrl-icon",e).setAttribute("aria-hidden",!0),e.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},qn.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute("aria-label",t),this._fullscreenButton.title=t},qn.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},qn.prototype._isFullscreen=function(){return this._fullscreen},qn.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},qn.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Zn={closeButton:!0,closeOnClick:!0,className:"",maxWidth:"240px"},Gn=function(e){function i(r){e.call(this),this.options=t.extend(Object.create(Zn),r),t.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new t.Event("open")),this},i.prototype.isOpen=function(){return!!this._map},i.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new t.Event("close")),this},i.prototype.getLngLat=function(){return this._lngLat},i.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},i.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},i.prototype.getElement=function(){return this._container},i.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},i.prototype.setHTML=function(e){var r,i=t.window.document.createDocumentFragment(),n=t.window.document.createElement("body");for(n.innerHTML=e;r=n.firstChild;)i.appendChild(r);return this.setDOMContent(i)},i.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},i.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},i.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},i.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},i.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},i.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},i.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create("div","mapboxgl-popup-content",this._container),this.options.closeButton&&(this._closeButton=r.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},i.prototype._onMouseUp=function(t){this._update(t.point)},i.prototype._onMouseMove=function(t){this._update(t.point)},i.prototype._onDrag=function(t){this._update(t.point)},i.prototype._update=function(e){var i=this;if(this._map&&(this._lngLat||this._trackPointer)&&this._content&&(this._container||(this._container=r.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=r.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(t){return i._container.classList.add(t)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Cn(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var n=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),o=this.options.anchor,a=function e(r){if(r){if("number"==typeof r){var i=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.Point(0,0),top:new t.Point(0,r),"top-left":new t.Point(i,i),"top-right":new t.Point(-i,i),bottom:new t.Point(0,-r),"bottom-left":new t.Point(i,-i),"bottom-right":new t.Point(-i,-i),left:new t.Point(r,0),right:new t.Point(-r,0)}}if(r instanceof t.Point||Array.isArray(r)){var n=t.Point.convert(r);return{center:n,top:n,"top-left":n,"top-right":n,bottom:n,"bottom-left":n,"bottom-right":n,left:n,right:n}}return{center:t.Point.convert(r.center||[0,0]),top:t.Point.convert(r.top||[0,0]),"top-left":t.Point.convert(r["top-left"]||[0,0]),"top-right":t.Point.convert(r["top-right"]||[0,0]),bottom:t.Point.convert(r.bottom||[0,0]),"bottom-left":t.Point.convert(r["bottom-left"]||[0,0]),"bottom-right":t.Point.convert(r["bottom-right"]||[0,0]),left:t.Point.convert(r.left||[0,0]),right:t.Point.convert(r.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!o){var s,l=this._container.offsetWidth,u=this._container.offsetHeight;s=n.y+a.bottom.ythis._map.transform.height-u?["bottom"]:[],n.xthis._map.transform.width-l/2&&s.push("right"),o=0===s.length?"bottom":s.join("-")}var c=n.add(a[o]).round();r.setTransform(this._container,kn[o]+" translate("+c.x+"px,"+c.y+"px)"),Mn(this._container,o,"popup")}},i.prototype._onClose=function(){this.remove()},i}(t.Evented),Xn={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:In,NavigationControl:zn,GeolocateControl:On,AttributionControl:gn,ScaleControl:Vn,FullscreenControl:qn,Popup:Gn,Marker:Ln,Style:qe,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Ot().acquire(Lt)},clearPrewarmedResources:function(){var t=Rt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(Lt),Rt=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Bt.workerCount},set workerCount(t){Bt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:""};return Xn}),r}); +//# sourceMappingURL=/sm/611dc9144edc1667053630223290333ac72ae99b79697a40bc8590e55c95a75d.map \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/mermaid/mermaid.min.js b/themes/LoveIt/assets/lib/mermaid/mermaid.min.js new file mode 100644 index 00000000..75b86f97 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/mermaid.min.js @@ -0,0 +1,42 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.mermaid=e():t.mermaid=e()}("undefined"!=typeof self?self:this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=353)}([function(t,e,n){"use strict";n.r(e);var r=function(t,e){return te?1:t>=e?0:NaN},i=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return r(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)>0?i=a:r=a+1}return r}}};var a=i(r),o=a.right,s=a.left,u=o,c=function(t,e){null==e&&(e=l);for(var n=0,r=t.length-1,i=t[0],a=new Array(r<0?0:r);nt?1:e>=t?0:NaN},d=function(t){return null===t?NaN:+t},p=function(t,e){var n,r,i=t.length,a=0,o=-1,s=0,u=0;if(null==e)for(;++o1)return u/(a-1)},y=function(t,e){var n=p(t,e);return n?Math.sqrt(n):n},g=function(t,e){var n,r,i,a=t.length,o=-1;if(null==e){for(;++o=n)for(r=i=n;++on&&(r=n),i=n)for(r=i=n;++on&&(r=n),i0)return[t];if((r=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=0?(a>=k?10:a>=E?5:a>=A?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=k?10:a>=E?5:a>=A?2:1)}function M(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=k?i*=10:a>=E?i*=5:a>=A&&(i*=2),ef;)h.pop(),--d;var p,y=new Array(d+1);for(i=0;i<=d;++i)(p=y[i]=[]).x0=i>0?h[i-1]:l,p.x1=i=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,a=Math.floor(i),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(i-a)}},D=function(t,e,n){return t=b.call(t,d).sort(r),Math.ceil((n-e)/(2*(C(t,.75)-C(t,.25))*Math.pow(t.length,-1/3)))},L=function(t,e,n){return Math.ceil((n-e)/(3.5*y(t)*Math.pow(t.length,-1/3)))},F=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++ar&&(r=n)}else for(;++a=n)for(r=n;++ar&&(r=n);return r},I=function(t,e){var n,r=t.length,i=r,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(r=t[i]).length;--e>=0;)n[--o]=r[e];return n},B=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++an&&(r=n)}else for(;++a=n)for(r=n;++an&&(r=n);return r},j=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r},Y=function(t,e){if(n=t.length){var n,i,a=0,o=0,s=t[o];for(null==e&&(e=r);++a=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function ut(t,e){for(var n,r=0,i=t.length;r0)for(var n,r,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var _t="http://www.w3.org/1999/xhtml",wt={svg:"http://www.w3.org/2000/svg",xhtml:_t,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},kt=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),wt.hasOwnProperty(e)?{space:wt[e],local:t}:t};function Et(t){return function(){this.removeAttribute(t)}}function At(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Tt(t,e){return function(){this.setAttribute(t,e)}}function St(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Mt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Ot(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var Nt=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function Ct(t){return function(){this.style.removeProperty(t)}}function Dt(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Lt(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Ft(t,e){return t.style.getPropertyValue(e)||Nt(t).getComputedStyle(t,null).getPropertyValue(e)}function It(t){return function(){delete this[t]}}function Pt(t,e){return function(){this[t]=e}}function Rt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Bt(t){return t.trim().split(/^|\s+/)}function jt(t){return t.classList||new Yt(t)}function Yt(t){this._node=t,this._names=Bt(t.getAttribute("class")||"")}function zt(t,e){for(var n=jt(t),r=-1,i=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Ht(){this.textContent=""}function Wt(t){return function(){this.textContent=t}}function qt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Xt(){this.innerHTML=""}function Zt(t){return function(){this.innerHTML=t}}function Jt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function Qt(){this.nextSibling&&this.parentNode.appendChild(this)}function Kt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function te(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===_t&&e.documentElement.namespaceURI===_t?e.createElement(t):e.createElementNS(n,t)}}function ee(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var ne=function(t){var e=kt(t);return(e.local?ee:te)(e)};function re(){return null}function ie(){var t=this.parentNode;t&&t.removeChild(this)}function ae(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function oe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}var se={},ue=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(se={mouseenter:"mouseover",mouseleave:"mouseout"}));function ce(t,e,n){return t=le(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function le(t,e,n){return function(r){var i=ue;ue=r;try{t.call(this,this.__data__,e,n)}finally{ue=i}}}function fe(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function he(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r=_&&(_=x+1);!(b=m[_])&&++_=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=xt);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a1?this.each((null==e?Ct:"function"==typeof e?Lt:Dt)(t,e,null==n?"":n)):Ft(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?It:"function"==typeof e?Rt:Pt)(t,e)):this.node()[t]},classed:function(t,e){var n=Bt(t+"");if(arguments.length<2){for(var r=jt(this.node()),i=-1,a=n.length;++i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new qe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new qe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Fe.exec(t))?new qe(e[1],e[2],e[3],1):(e=Ie.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Pe.exec(t))?Ve(e[1],e[2],e[3],e[4]):(e=Re.exec(t))?Ve(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Be.exec(t))?Qe(e[1],e[2]/100,e[3]/100,1):(e=je.exec(t))?Qe(e[1],e[2]/100,e[3]/100,e[4]):Ye.hasOwnProperty(t)?Ge(Ye[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function Ge(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function Ve(t,e,n,r){return r<=0&&(t=e=n=NaN),new qe(t,e,n,r)}function He(t){return t instanceof Oe||(t=$e(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function We(t,e,n,r){return 1===arguments.length?He(t):new qe(t,e,n,null==r?1:r)}function qe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Xe(){return"#"+Je(this.r)+Je(this.g)+Je(this.b)}function Ze(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Je(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Qe(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new en(t,e,n,r)}function Ke(t){if(t instanceof en)return new en(t.h,t.s,t.l,t.opacity);if(t instanceof Oe||(t=$e(t)),!t)return new en;if(t instanceof en)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,u=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n0&&u<1?0:o,new en(o,s,u,t.opacity)}function tn(t,e,n,r){return 1===arguments.length?Ke(t):new en(t,e,n,null==r?1:r)}function en(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function nn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function rn(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Se(Oe,$e,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ze,formatHex:ze,formatHsl:function(){return Ke(this).formatHsl()},formatRgb:Ue,toString:Ue}),Se(qe,We,Me(Oe,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Xe,formatHex:Xe,formatRgb:Ze,toString:Ze})),Se(en,tn,Me(Oe,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new en(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new en(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new qe(nn(t>=240?t-240:t+120,i,r),nn(t,i,r),nn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var an=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r180||n<-180?n-360*Math.round(n/360):n):sn(isNaN(t)?e:t)}function ln(t){return 1==(t=+t)?fn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):sn(isNaN(e)?n:e)}}function fn(t,e){var n=e-t;return n?un(t,n):sn(isNaN(t)?e:t)}var hn=function t(e){var n=ln(e);function r(t,e){var r=n((t=We(t)).r,(e=We(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=fn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function dn(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,u.push({i:o,x:_n(n,r)})),a=En.lastIndex;return a=0&&e._call.call(null,t),e=e._next;--Ln}function Hn(){Rn=(Pn=jn.now())+Bn,Ln=Fn=0;try{Vn()}finally{Ln=0,function(){var t,e,n=An,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:An=e);Tn=t,qn(r)}(),Rn=0}}function Wn(){var t=jn.now(),e=t-Pn;e>1e3&&(Bn-=e,Pn=t)}function qn(t){Ln||(Fn&&(Fn=clearTimeout(Fn)),t-Rn>24?(t<1/0&&(Fn=setTimeout(Hn,t-jn.now()-Bn)),In&&(In=clearInterval(In))):(In||(Pn=jn.now(),In=setInterval(Wn,1e3)),Ln=1,Yn(Hn)))}$n.prototype=Gn.prototype={constructor:$n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?zn():+n)+(null==e?0:+e),this._next||Tn===this||(Tn?Tn._next=this:An=this,Tn=this),this._call=t,this._time=n,qn()},stop:function(){this._call&&(this._call=null,this._time=1/0,qn())}};var Xn=function(t,e,n){var r=new $n;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r},Zn=lt("start","end","cancel","interrupt"),Jn=[],Qn=function(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(u){var c,l,f,h;if(1!==n.state)return s();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return Xn(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function tr(t,e){var n=er(t,e);if(n.state>3)throw new Error("too late; already running");return n}function er(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var nr,rr,ir,ar,or=function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}},sr=180/Math.PI,ur={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},cr=function(t,e,n,r,i,a){var o,s,u;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,u/=s),t*r180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:_n(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,u),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:_n(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,u),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:_n(t,n)},{i:s-2,x:_n(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,u),a=o=null,function(t){for(var e,n=-1,r=u.length;++n=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Kn:tr;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Lr=_e.prototype.constructor;function Fr(t){return function(){this.style.removeProperty(t)}}function Ir(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Pr(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Ir(t,a,n)),r}return a._value=e,a}function Rr(t){return function(e){this.textContent=t.call(this,e)}}function Br(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Rr(r)),e}return r._value=t,r}var jr=0;function Yr(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function zr(t){return _e().transition(t)}function Ur(){return++jr}var $r=_e.prototype;function Gr(t){return t*t*t}function Vr(t){return--t*t*t+1}function Hr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}Yr.prototype=zr.prototype={constructor:Yr,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=ht(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o1&&n.name===e)return new Yr([[t]],Xr,e,+r);return null},Jr=function(t){return function(){return t}},Qr=function(t,e,n){this.target=t,this.type=e,this.selection=n};function Kr(){ue.stopImmediatePropagation()}var ti=function(){ue.preventDefault(),ue.stopImmediatePropagation()},ei={name:"drag"},ni={name:"space"},ri={name:"handle"},ii={name:"center"};function ai(t){return[+t[0],+t[1]]}function oi(t){return[ai(t[0]),ai(t[1])]}function si(t){return function(e){return Cn(e,ue.touches,t)}}var ui={name:"x",handles:["w","e"].map(gi),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},ci={name:"y",handles:["n","s"].map(gi),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},li={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(gi),input:function(t){return null==t?null:oi(t)},output:function(t){return t}},fi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},hi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},di={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},pi={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},yi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function gi(t){return{type:t}}function mi(){return!ue.ctrlKey&&!ue.button}function vi(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function bi(){return navigator.maxTouchPoints||"ontouchstart"in this}function xi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function _i(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function wi(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function ki(){return Ti(ui)}function Ei(){return Ti(ci)}var Ai=function(){return Ti(li)};function Ti(t){var e,n=vi,r=mi,i=bi,a=!0,o=lt("start","brush","end"),s=6;function u(e){var n=e.property("__brush",y).selectAll(".overlay").data([gi("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",fi.overlay).merge(n).each((function(){var t=xi(this).extent;we(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([gi("selection")]).enter().append("rect").attr("class","selection").attr("cursor",fi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return fi[t.type]})),e.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var t=we(this),e=xi(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,e,n){return!n&&t.__brush.emitter||new f(t,e)}function f(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function h(){if((!e||ue.touches)&&r.apply(this,arguments)){var n,i,o,s,u,f,h,d,p,y,g,m=this,v=ue.target.__data__.type,b="selection"===(a&&ue.metaKey?v="overlay":v)?ei:a&&ue.altKey?ii:ri,x=t===ci?null:pi[v],_=t===ui?null:yi[v],w=xi(m),k=w.extent,E=w.selection,A=k[0][0],T=k[0][1],S=k[1][0],M=k[1][1],O=0,N=0,C=x&&_&&a&&ue.shiftKey,D=ue.touches?si(ue.changedTouches[0].identifier):Dn,L=D(m),F=L,I=l(m,arguments,!0).beforestart();"overlay"===v?(E&&(p=!0),w.selection=E=[[n=t===ci?A:L[0],o=t===ui?T:L[1]],[u=t===ci?S:n,h=t===ui?M:o]]):(n=E[0][0],o=E[0][1],u=E[1][0],h=E[1][1]),i=n,s=o,f=u,d=h;var P=we(m).attr("pointer-events","none"),R=P.selectAll(".overlay").attr("cursor",fi[v]);if(ue.touches)I.moved=j,I.ended=z;else{var B=we(ue.view).on("mousemove.brush",j,!0).on("mouseup.brush",z,!0);a&&B.on("keydown.brush",U,!0).on("keyup.brush",$,!0),Ae(ue.view)}Kr(),or(m),c.call(m),I.start()}function j(){var t=D(m);!C||y||g||(Math.abs(t[0]-F[0])>Math.abs(t[1]-F[1])?g=!0:y=!0),F=t,p=!0,ti(),Y()}function Y(){var t;switch(O=F[0]-L[0],N=F[1]-L[1],b){case ni:case ei:x&&(O=Math.max(A-n,Math.min(S-u,O)),i=n+O,f=u+O),_&&(N=Math.max(T-o,Math.min(M-h,N)),s=o+N,d=h+N);break;case ri:x<0?(O=Math.max(A-n,Math.min(S-n,O)),i=n+O,f=u):x>0&&(O=Math.max(A-u,Math.min(S-u,O)),i=n,f=u+O),_<0?(N=Math.max(T-o,Math.min(M-o,N)),s=o+N,d=h):_>0&&(N=Math.max(T-h,Math.min(M-h,N)),s=o,d=h+N);break;case ii:x&&(i=Math.max(A,Math.min(S,n-O*x)),f=Math.max(A,Math.min(S,u+O*x))),_&&(s=Math.max(T,Math.min(M,o-N*_)),d=Math.max(T,Math.min(M,h+N*_)))}f0&&(n=i-O),_<0?h=d-N:_>0&&(o=s-N),b=ni,R.attr("cursor",fi.selection),Y());break;default:return}ti()}function $(){switch(ue.keyCode){case 16:C&&(y=g=C=!1,Y());break;case 18:b===ii&&(x<0?u=f:x>0&&(n=i),_<0?h=d:_>0&&(o=s),b=ri,Y());break;case 32:b===ni&&(ue.altKey?(x&&(u=f-O*x,n=i+O*x),_&&(h=d-N*_,o=s+N*_),b=ii):(x<0?u=f:x>0&&(n=i),_<0?h=d:_>0&&(o=s),b=ri),R.attr("cursor",fi[v]),Y());break;default:return}ti()}}function d(){l(this,arguments).moved()}function p(){l(this,arguments).ended()}function y(){var e=this.__brush||{selection:null};return e.extent=oi(n.apply(this,arguments)),e.dim=t,e}return u.move=function(e,n){e.selection?e.on("start.brush",(function(){l(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){l(this,arguments).end()})).tween("brush",(function(){var e=this,r=e.__brush,i=l(e,arguments),a=r.selection,o=t.input("function"==typeof n?n.apply(this,arguments):n,r.extent),s=Mn(a,o);function u(t){r.selection=1===t&&null===o?null:s(t),c.call(e),i.brush()}return null!==a&&null!==o?u:u(1)})):e.each((function(){var e=this,r=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,r):n,i.extent),o=l(e,r).beforestart();or(e),i.selection=null===a?null:a,c.call(e),o.start().brush().end()}))},u.clear=function(t){u.move(t,null)},f.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){pe(new Qr(u,e,t.output(this.state.selection)),o.apply,o,[e,this.that,this.args])}},u.extent=function(t){return arguments.length?(n="function"==typeof t?t:Jr(oi(t)),u):n},u.filter=function(t){return arguments.length?(r="function"==typeof t?t:Jr(!!t),u):r},u.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Jr(!!t),u):i},u.handleSize=function(t){return arguments.length?(s=+t,u):s},u.keyModifiers=function(t){return arguments.length?(a=!!t,u):a},u.on=function(){var t=o.on.apply(o,arguments);return t===o?u:t},u}var Si=Math.cos,Mi=Math.sin,Oi=Math.PI,Ni=Oi/2,Ci=2*Oi,Di=Math.max;function Li(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}var Fi=function(){var t=0,e=null,n=null,r=null;function i(i){var a,o,s,u,c,l,f=i.length,h=[],d=w(f),p=[],y=[],g=y.groups=new Array(f),m=new Array(f*f);for(a=0,c=-1;++c1e-6)if(Math.abs(l*s-u*c)>1e-6&&i){var h=n-a,d=r-o,p=s*s+u*u,y=h*h+d*d,g=Math.sqrt(p),m=Math.sqrt(f),v=i*Math.tan((Ri-Math.acos((p+f-y)/(2*g*m)))/2),b=v/m,x=v/g;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*c)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*h>c*d)+","+(this._x1=t+x*s)+","+(this._y1=e+x*u)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),u=t+o,c=e+s,l=1^a,f=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+u+","+c:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+u+","+c),n&&(f<0&&(f=f%Bi+Bi),f>ji?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=u)+","+(this._y1=c):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=Ri)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Ui=zi;function $i(t){return t.source}function Gi(t){return t.target}function Vi(t){return t.radius}function Hi(t){return t.startAngle}function Wi(t){return t.endAngle}var qi=function(){var t=$i,e=Gi,n=Vi,r=Hi,i=Wi,a=null;function o(){var o,s=Ii.call(arguments),u=t.apply(this,s),c=e.apply(this,s),l=+n.apply(this,(s[0]=u,s)),f=r.apply(this,s)-Ni,h=i.apply(this,s)-Ni,d=l*Si(f),p=l*Mi(f),y=+n.apply(this,(s[0]=c,s)),g=r.apply(this,s)-Ni,m=i.apply(this,s)-Ni;if(a||(a=o=Ui()),a.moveTo(d,p),a.arc(0,0,l,f,h),f===g&&h===m||(a.quadraticCurveTo(0,0,y*Si(g),y*Mi(g)),a.arc(0,0,y,g,m)),a.quadraticCurveTo(0,0,d,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:Pi(+t),o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Pi(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Pi(+t),o):i},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o};function Xi(){}function Zi(t,e){var n=new Xi;if(t instanceof Xi)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var r,i=-1,a=t.length;if(null==e)for(;++i=r.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var u,c,l,f=-1,h=n.length,d=r[i++],p=Ji(),y=o();++fr.length)return n;var o,s=i[a-1];return null!=e&&a>=r.length?o=n.entries():(o=[],n.each((function(e,n){o.push({key:n,values:t(e,a)})}))),null!=s?o.sort((function(t,e){return s(t.key,e.key)})):o}(a(t,0,ea,na),0)},key:function(t){return r.push(t),n},sortKeys:function(t){return i[r.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}};function Ki(){return{}}function ta(t,e,n){t[e]=n}function ea(){return Ji()}function na(t,e,n){t.set(e,n)}function ra(){}var ia=Ji.prototype;function aa(t,e){var n=new ra;if(t instanceof ra)t.each((function(t){n.add(t)}));else if(t){var r=-1,i=t.length;if(null==e)for(;++r6/29*(6/29)*(6/29)?Math.pow(t,1/3):t/(6/29*3*(6/29))+4/29}function ma(t){return t>6/29?t*t*t:6/29*3*(6/29)*(t-4/29)}function va(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ba(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function xa(t){if(t instanceof ka)return new ka(t.h,t.c,t.l,t.opacity);if(t instanceof ya||(t=ha(t)),0===t.a&&0===t.b)return new ka(NaN,0r!=d>r&&n<(h-c)*(r-l)/(d-l)+c&&(i=-i)}return i}function Ra(t,e,n){var r,i,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],a=n[r],o=e[r],i<=a&&a<=o||o<=a&&a<=i)}var Ba=function(){},ja=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],Ya=function(){var t=1,e=1,n=O,r=s;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(La);else{var r=g(t),i=r[0],o=r[1];e=M(i,o,e),e=w(Math.floor(i/e)*e,Math.floor(o/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],s=[];return function(n,r,i){var a,s,u,c,l,f,h=new Array,d=new Array;a=s=-1,c=n[0]>=r,ja[c<<1].forEach(p);for(;++a=r,ja[u|c<<1].forEach(p);ja[c<<0].forEach(p);for(;++s=r,l=n[s*t]>=r,ja[c<<1|l<<2].forEach(p);++a=r,f=l,l=n[s*t+a+1]>=r,ja[u|c<<1|l<<2|f<<3].forEach(p);ja[c|l<<3].forEach(p)}a=-1,l=n[s*t]>=r,ja[l<<2].forEach(p);for(;++a=r,ja[l<<2|f<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+s],u=[t[1][0]+a,t[1][1]+s],c=o(r),l=o(u);(e=d[c])?(n=h[l])?(delete d[e.end],delete h[n.start],e===n?(e.ring.push(u),i(e.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(u),d[e.end=l]=e):(e=h[l])?(n=d[c])?(delete h[e.start],delete d[n.end],e===n?(e.ring.push(u),i(e.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(r),h[e.start=c]=e):h[c]=d[l]={start:c,end:l,ring:[r,u]}}ja[l<<3].forEach(p)}(n,i,(function(t){r(t,n,i),function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e0?a.push([t]):s.push(t)})),s.forEach((function(t){for(var e,n=0,r=a.length;n0&&o0&&s0&&a>0))throw new Error("invalid size");return t=r,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?Fa(Da.call(t)):Fa(t),i):n},i.smooth=function(t){return arguments.length?(r=t?s:Ba,i):r===s},i};function za(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(u-=t.data[s-a+o*r]),e.data[s-n+o*r]=u/Math.min(s+1,r-1+a-s,a))}function Ua(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(u-=t.data[o+(s-a)*r]),e.data[o+(s-n)*r]=u/Math.min(s+1,i-1+a-s,a))}function $a(t){return t[0]}function Ga(t){return t[1]}function Va(){return 1}var Ha=function(){var t=$a,e=Ga,n=Va,r=960,i=500,a=20,o=2,s=3*a,u=r+2*s>>o,c=i+2*s>>o,l=Fa(20);function f(r){var i=new Float32Array(u*c),f=new Float32Array(u*c);r.forEach((function(r,a,l){var f=+t(r,a,l)+s>>o,h=+e(r,a,l)+s>>o,d=+n(r,a,l);f>=0&&f=0&&h>o),Ua({width:u,height:c,data:f},{width:u,height:c,data:i},a>>o),za({width:u,height:c,data:i},{width:u,height:c,data:f},a>>o),Ua({width:u,height:c,data:f},{width:u,height:c,data:i},a>>o),za({width:u,height:c,data:i},{width:u,height:c,data:f},a>>o),Ua({width:u,height:c,data:f},{width:u,height:c,data:i},a>>o);var d=l(i);if(!Array.isArray(d)){var p=F(i);d=M(0,p,d),(d=w(0,Math.floor(p/d)*d,d)).shift()}return Ya().thresholds(d).size([u,c])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(y)}function y(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function g(){return u=r+2*(s=3*a)>>o,c=i+2*s>>o,f}return f.x=function(e){return arguments.length?(t="function"==typeof e?e:Fa(+e),f):t},f.y=function(t){return arguments.length?(e="function"==typeof t?t:Fa(+t),f):e},f.weight=function(t){return arguments.length?(n="function"==typeof t?t:Fa(+t),f):n},f.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,g()},f.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),g()},f.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?Fa(Da.call(t)):Fa(t),f):l},f.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),g()},f},Wa=function(t){return function(){return t}};function qa(t,e,n,r,i,a,o,s,u,c){this.target=t,this.type=e,this.subject=n,this.identifier=r,this.active=i,this.x=a,this.y=o,this.dx=s,this.dy=u,this._=c}function Xa(){return!ue.ctrlKey&&!ue.button}function Za(){return this.parentNode}function Ja(t){return null==t?{x:ue.x,y:ue.y}:t}function Qa(){return navigator.maxTouchPoints||"ontouchstart"in this}qa.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Ka=function(){var t,e,n,r,i=Xa,a=Za,o=Ja,s=Qa,u={},c=lt("start","drag","end"),l=0,f=0;function h(t){t.on("mousedown.drag",d).filter(s).on("touchstart.drag",g).on("touchmove.drag",m).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var o=b("mouse",a.apply(this,arguments),Dn,this,arguments);o&&(we(ue.view).on("mousemove.drag",p,!0).on("mouseup.drag",y,!0),Ae(ue.view),ke(),n=!1,t=ue.clientX,e=ue.clientY,o("start"))}}function p(){if(Ee(),!n){var r=ue.clientX-t,i=ue.clientY-e;n=r*r+i*i>f}u.mouse("drag")}function y(){we(ue.view).on("mousemove.drag mouseup.drag",null),Te(ue.view,n),Ee(),u.mouse("end")}function g(){if(i.apply(this,arguments)){var t,e,n=ue.changedTouches,r=a.apply(this,arguments),o=n.length;for(t=0;t9999?"+"+io(e,6):io(e,4))+"-"+io(t.getUTCMonth()+1,2)+"-"+io(t.getUTCDate(),2)+(a?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"."+io(a,3)+"Z":i?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"Z":r||n?"T"+io(n,2)+":"+io(r,2)+"Z":"")}var oo=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],a=t.length,o=0,s=0,u=a<=0,c=!1;function l(){if(u)return eo;if(c)return c=!1,to;var e,r,i=o;if(34===t.charCodeAt(i)){for(;o++=a?u=!0:10===(r=t.charCodeAt(o++))?c=!0:13===r&&(c=!0,10===t.charCodeAt(o)&&++o),t.slice(i+1,e-1).replace(/""/g,'"')}for(;o=(a=(y+m)/2))?y=a:m=a,(l=n>=(o=(g+v)/2))?g=o:v=o,i=d,!(d=d[f=l<<1|c]))return i[f]=p,t;if(s=+t._x.call(null,d.data),u=+t._y.call(null,d.data),e===s&&n===u)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(y+m)/2))?y=a:m=a,(l=n>=(o=(g+v)/2))?g=o:v=o}while((f=l<<1|c)==(h=(u>=o)<<1|s>=a));return i[h]=d,i[f]=p,t}var _s=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function ws(t){return t[0]}function ks(t){return t[1]}function Es(t,e,n){var r=new As(null==e?ws:e,null==n?ks:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function As(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Ts(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var Ss=Es.prototype=As.prototype;function Ms(t){return t.x+t.vx}function Os(t){return t.y+t.vy}Ss.copy=function(){var t,e,n=new As(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=Ts(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=Ts(e));return n},Ss.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return xs(this.cover(e,n),e,n,t)},Ss.addAll=function(t){var e,n,r,i,a=t.length,o=new Array(a),s=new Array(a),u=1/0,c=1/0,l=-1/0,f=-1/0;for(n=0;nl&&(l=r),if&&(f=i));if(u>l||c>f)return this;for(this.cover(u,c).cover(l,f),n=0;nt||t>=i||r>e||e>=a;)switch(s=(eh||(a=u.y0)>d||(o=u.x1)=m)<<1|t>=g)&&(u=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=u)}else{var v=t-+this._x.call(null,y.data),b=e-+this._y.call(null,y.data),x=v*v+b*b;if(x=(s=(p+g)/2))?p=s:g=s,(l=o>=(u=(y+m)/2))?y=u:m=u,e=d,!(d=d[f=l<<1|c]))return this;if(!d.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(n=e,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[f]=i:delete e[f],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[h]=d:this._root=d),this):(this._root=i,this)},Ss.removeAll=function(t){for(var e=0,n=t.length;eu+d||ic+d||as.index){var p=u-o.x-o.vx,y=c-o.y-o.vy,g=p*p+y*y;gt.r&&(t.r=t[e].r)}function s(){if(e){var r,i,a=e.length;for(n=new Array(a),r=0;r1?(null==n?s.remove(t):s.set(t,d(n)),e):s.get(t)},find:function(e,n,r){var i,a,o,s,u,c=0,l=t.length;for(null==r?r=1/0:r*=r,c=0;c1?(c.on(t,n),e):c.on(t)}}},Bs=function(){var t,e,n,r,i=vs(-30),a=1,o=1/0,s=.81;function u(r){var i,a=t.length,o=Es(t,Fs,Is).visitAfter(l);for(n=r,i=0;i=o)){(t.data!==e||t.next)&&(0===l&&(d+=(l=bs())*l),0===f&&(d+=(f=bs())*f),d1?r[0]+r.slice(2):r,+t.slice(n+1)]},$s=function(t){return(t=Us(Math.abs(t)))?t[1]:NaN},Gs=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Vs(t){if(!(e=Gs.exec(t)))throw new Error("invalid format: "+t);var e;return new Hs({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Hs(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}Vs.prototype=Hs.prototype,Hs.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ws,qs,Xs,Zs,Js=function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Qs={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Js(100*t,e)},r:Js,s:function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Ws=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Us(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Ks=function(t){return t},tu=Array.prototype.map,eu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],nu=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Ks:(e=tu.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],u=0;i>0&&s>0&&(u+s+1>r&&(s=Math.max(1,r-u)),a.push(t.substring(i-=s,i+s)),!((u+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Ks:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(tu.call(t.numerals,String)),u=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"-":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function f(t){var e=(t=Vs(t)).fill,n=t.align,f=t.sign,h=t.symbol,d=t.zero,p=t.width,y=t.comma,g=t.precision,m=t.trim,v=t.type;"n"===v?(y=!0,v="g"):Qs[v]||(void 0===g&&(g=12),m=!0,v="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",x="$"===h?a:/[%p]/.test(v)?u:"",_=Qs[v],w=/[defgprs%]/.test(v);function k(t){var i,a,u,h=b,k=x;if("c"===v)k=_(t)+k,t="";else{var E=(t=+t)<0;if(t=isNaN(t)?l:_(Math.abs(t),g),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),E&&0==+t&&(E=!1),h=(E?"("===f?f:c:"-"===f||"("===f?"":f)+h,k=("s"===v?eu[8+Ws/3]:"")+k+(E&&"("===f?")":""),w)for(i=-1,a=t.length;++i(u=t.charCodeAt(i))||u>57){k=(46===u?o+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}y&&!d&&(t=r(t,1/0));var A=h.length+t.length+k.length,T=A>1)+h+t+k+T.slice(A);break;default:t=T+h+t+k}return s(t)}return g=void 0===g?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return t+""},k}return{format:f,formatPrefix:function(t,e){var n=f(((t=Vs(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor($s(e)/3))),i=Math.pow(10,-r),a=eu[8+r/3];return function(t){return n(i*t)+a}}}};function ru(t){return qs=nu(t),Xs=qs.format,Zs=qs.formatPrefix,qs}ru({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});var iu=function(t){return Math.max(0,-$s(Math.abs(t)))},au=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor($s(e)/3)))-$s(Math.abs(t)))},ou=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,$s(e)-$s(t))+1},su=function(){return new uu};function uu(){this.reset()}uu.prototype={constructor:uu,reset:function(){this.s=this.t=0},add:function(t){lu(cu,t,this.t),lu(this,cu.s,this.s),this.s?this.t+=cu.t:this.s=cu.t},valueOf:function(){return this.s}};var cu=new uu;function lu(t,e,n){var r=t.s=e+n,i=r-e,a=r-i;t.t=e-a+(n-i)}var fu=Math.PI,hu=fu/2,du=fu/4,pu=2*fu,yu=180/fu,gu=fu/180,mu=Math.abs,vu=Math.atan,bu=Math.atan2,xu=Math.cos,_u=Math.ceil,wu=Math.exp,ku=(Math.floor,Math.log),Eu=Math.pow,Au=Math.sin,Tu=Math.sign||function(t){return t>0?1:t<0?-1:0},Su=Math.sqrt,Mu=Math.tan;function Ou(t){return t>1?0:t<-1?fu:Math.acos(t)}function Nu(t){return t>1?hu:t<-1?-hu:Math.asin(t)}function Cu(t){return(t=Au(t/2))*t}function Du(){}function Lu(t,e){t&&Iu.hasOwnProperty(t.type)&&Iu[t.type](t,e)}var Fu={Feature:function(t,e){Lu(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r=0?1:-1,i=r*n,a=xu(e=(e*=gu)/2+du),o=Au(e),s=Uu*o,u=zu*a+s*xu(i),c=s*r*Au(i);Gu.add(bu(c,u)),Yu=t,zu=a,Uu=o}var Ju=function(t){return Vu.reset(),$u(t,Hu),2*Vu};function Qu(t){return[bu(t[1],t[0]),Nu(t[2])]}function Ku(t){var e=t[0],n=t[1],r=xu(n);return[r*xu(e),r*Au(e),Au(n)]}function tc(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function ec(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function nc(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function rc(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function ic(t){var e=Su(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var ac,oc,sc,uc,cc,lc,fc,hc,dc,pc,yc=su(),gc={point:mc,lineStart:bc,lineEnd:xc,polygonStart:function(){gc.point=_c,gc.lineStart=wc,gc.lineEnd=kc,yc.reset(),Hu.polygonStart()},polygonEnd:function(){Hu.polygonEnd(),gc.point=mc,gc.lineStart=bc,gc.lineEnd=xc,Gu<0?(ac=-(sc=180),oc=-(uc=90)):yc>1e-6?uc=90:yc<-1e-6&&(oc=-90),pc[0]=ac,pc[1]=sc},sphere:function(){ac=-(sc=180),oc=-(uc=90)}};function mc(t,e){dc.push(pc=[ac=t,sc=t]),euc&&(uc=e)}function vc(t,e){var n=Ku([t*gu,e*gu]);if(hc){var r=ec(hc,n),i=ec([r[1],-r[0],0],r);ic(i),i=Qu(i);var a,o=t-cc,s=o>0?1:-1,u=i[0]*yu*s,c=mu(o)>180;c^(s*ccuc&&(uc=a):c^(s*cc<(u=(u+360)%360-180)&&uuc&&(uc=e)),c?tEc(ac,sc)&&(sc=t):Ec(t,sc)>Ec(ac,sc)&&(ac=t):sc>=ac?(tsc&&(sc=t)):t>cc?Ec(ac,t)>Ec(ac,sc)&&(sc=t):Ec(t,sc)>Ec(ac,sc)&&(ac=t)}else dc.push(pc=[ac=t,sc=t]);euc&&(uc=e),hc=n,cc=t}function bc(){gc.point=vc}function xc(){pc[0]=ac,pc[1]=sc,gc.point=mc,hc=null}function _c(t,e){if(hc){var n=t-cc;yc.add(mu(n)>180?n+(n>0?360:-360):n)}else lc=t,fc=e;Hu.point(t,e),vc(t,e)}function wc(){Hu.lineStart()}function kc(){_c(lc,fc),Hu.lineEnd(),mu(yc)>1e-6&&(ac=-(sc=180)),pc[0]=ac,pc[1]=sc,hc=null}function Ec(t,e){return(e-=t)<0?e+360:e}function Ac(t,e){return t[0]-e[0]}function Tc(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eEc(r[0],r[1])&&(r[1]=i[1]),Ec(i[0],r[1])>Ec(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-1/0,e=0,r=a[n=a.length-1];e<=n;r=i,++e)i=a[e],(s=Ec(r[1],i[0]))>o&&(o=s,ac=i[0],sc=r[1])}return dc=pc=null,ac===1/0||oc===1/0?[[NaN,NaN],[NaN,NaN]]:[[ac,oc],[sc,uc]]},Gc={sphere:Du,point:Vc,lineStart:Wc,lineEnd:Zc,polygonStart:function(){Gc.lineStart=Jc,Gc.lineEnd=Qc},polygonEnd:function(){Gc.lineStart=Wc,Gc.lineEnd=Zc}};function Vc(t,e){t*=gu;var n=xu(e*=gu);Hc(n*xu(t),n*Au(t),Au(e))}function Hc(t,e,n){++Sc,Oc+=(t-Oc)/Sc,Nc+=(e-Nc)/Sc,Cc+=(n-Cc)/Sc}function Wc(){Gc.point=qc}function qc(t,e){t*=gu;var n=xu(e*=gu);Yc=n*xu(t),zc=n*Au(t),Uc=Au(e),Gc.point=Xc,Hc(Yc,zc,Uc)}function Xc(t,e){t*=gu;var n=xu(e*=gu),r=n*xu(t),i=n*Au(t),a=Au(e),o=bu(Su((o=zc*a-Uc*i)*o+(o=Uc*r-Yc*a)*o+(o=Yc*i-zc*r)*o),Yc*r+zc*i+Uc*a);Mc+=o,Dc+=o*(Yc+(Yc=r)),Lc+=o*(zc+(zc=i)),Fc+=o*(Uc+(Uc=a)),Hc(Yc,zc,Uc)}function Zc(){Gc.point=Vc}function Jc(){Gc.point=Kc}function Qc(){tl(Bc,jc),Gc.point=Vc}function Kc(t,e){Bc=t,jc=e,t*=gu,e*=gu,Gc.point=tl;var n=xu(e);Yc=n*xu(t),zc=n*Au(t),Uc=Au(e),Hc(Yc,zc,Uc)}function tl(t,e){t*=gu;var n=xu(e*=gu),r=n*xu(t),i=n*Au(t),a=Au(e),o=zc*a-Uc*i,s=Uc*r-Yc*a,u=Yc*i-zc*r,c=Su(o*o+s*s+u*u),l=Nu(c),f=c&&-l/c;Ic+=f*o,Pc+=f*s,Rc+=f*u,Mc+=l,Dc+=l*(Yc+(Yc=r)),Lc+=l*(zc+(zc=i)),Fc+=l*(Uc+(Uc=a)),Hc(Yc,zc,Uc)}var el=function(t){Sc=Mc=Oc=Nc=Cc=Dc=Lc=Fc=Ic=Pc=Rc=0,$u(t,Gc);var e=Ic,n=Pc,r=Rc,i=e*e+n*n+r*r;return i<1e-12&&(e=Dc,n=Lc,r=Fc,Mc<1e-6&&(e=Oc,n=Nc,r=Cc),(i=e*e+n*n+r*r)<1e-12)?[NaN,NaN]:[bu(n,e)*yu,Nu(r/Su(i))*yu]},nl=function(t){return function(){return t}},rl=function(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n};function il(t,e){return[mu(t)>fu?t+Math.round(-t/pu)*pu:t,e]}function al(t,e,n){return(t%=pu)?e||n?rl(sl(t),ul(e,n)):sl(t):e||n?ul(e,n):il}function ol(t){return function(e,n){return[(e+=t)>fu?e-pu:e<-fu?e+pu:e,n]}}function sl(t){var e=ol(t);return e.invert=ol(-t),e}function ul(t,e){var n=xu(t),r=Au(t),i=xu(e),a=Au(e);function o(t,e){var o=xu(e),s=xu(t)*o,u=Au(t)*o,c=Au(e),l=c*n+s*r;return[bu(u*i-l*a,s*n-c*r),Nu(l*i+u*a)]}return o.invert=function(t,e){var o=xu(e),s=xu(t)*o,u=Au(t)*o,c=Au(e),l=c*i-u*a;return[bu(u*i+c*a,s*n+l*r),Nu(l*n-s*r)]},o}il.invert=il;var cl=function(t){function e(e){return(e=t(e[0]*gu,e[1]*gu))[0]*=yu,e[1]*=yu,e}return t=al(t[0]*gu,t[1]*gu,t.length>2?t[2]*gu:0),e.invert=function(e){return(e=t.invert(e[0]*gu,e[1]*gu))[0]*=yu,e[1]*=yu,e},e};function ll(t,e,n,r,i,a){if(n){var o=xu(e),s=Au(e),u=r*n;null==i?(i=e+r*pu,a=e-u/2):(i=fl(o,i),a=fl(o,a),(r>0?ia)&&(i+=r*pu));for(var c,l=i;r>0?l>a:l1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},pl=function(t,e){return mu(t[0]-e[0])<1e-6&&mu(t[1]-e[1])<1e-6};function yl(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}var gl=function(t,e,n,r,i){var a,o,s=[],u=[];if(t.forEach((function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],o=t[e];if(pl(r,o)){for(i.lineStart(),a=0;a=0;--a)i.point((l=c[a])[0],l[1]);else r(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}};function ml(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r=0?1:-1,A=E*k,T=A>fu,S=y*_;if(vl.add(bu(S*E*Au(A),g*w+S*xu(A))),o+=T?k+E*pu:k,T^d>=n^b>=n){var M=ec(Ku(h),Ku(v));ic(M);var O=ec(a,M);ic(O);var N=(T^k>=0?-1:1)*Nu(O[2]);(r>N||r===N&&(M[0]||M[1]))&&(s+=T^k>=0?1:-1)}}return(o<-1e-6||o<1e-6&&vl<-1e-6)^1&s},_l=function(t,e,n,r){return function(i){var a,o,s,u=e(i),c=dl(),l=e(c),f=!1,h={point:d,lineStart:y,lineEnd:g,polygonStart:function(){h.point=m,h.lineStart=v,h.lineEnd=b,o=[],a=[]},polygonEnd:function(){h.point=d,h.lineStart=y,h.lineEnd=g,o=R(o);var t=xl(a,r);o.length?(f||(i.polygonStart(),f=!0),gl(o,kl,t,n,i)):t&&(f||(i.polygonStart(),f=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),f&&(i.polygonEnd(),f=!1),o=a=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){u.point(t,e)}function y(){h.point=p,u.lineStart()}function g(){h.point=d,u.lineEnd()}function m(t,e){s.push([t,e]),l.point(t,e)}function v(){l.lineStart(),s=[]}function b(){m(s[0][0],s[0][1]),l.lineEnd();var t,e,n,r,u=l.clean(),h=c.result(),d=h.length;if(s.pop(),a.push(s),s=null,d)if(1&u){if((e=(n=h[0]).length-1)>0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t1&&2&u&&h.push(h.pop().concat(h.shift())),o.push(h.filter(wl))}return h}};function wl(t){return t.length>1}function kl(t,e){return((t=t.x)[0]<0?t[1]-hu-1e-6:hu-t[1])-((e=e.x)[0]<0?e[1]-hu-1e-6:hu-e[1])}var El=_l((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?fu:-fu,u=mu(a-n);mu(u-fu)<1e-6?(t.point(n,r=(r+o)/2>0?hu:-hu),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),t.point(a,r),e=0):i!==s&&u>=fu&&(mu(n-i)<1e-6&&(n-=1e-6*i),mu(a-s)<1e-6&&(a-=1e-6*s),r=function(t,e,n,r){var i,a,o=Au(t-n);return mu(o)>1e-6?vu((Au(e)*(a=xu(r))*Au(n)-Au(r)*(i=xu(e))*Au(t))/(i*a*o)):(e+r)/2}(n,r,a,o),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),e=0),t.point(n=a,r=o),i=s},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*hu,r.point(-fu,i),r.point(0,i),r.point(fu,i),r.point(fu,0),r.point(fu,-i),r.point(0,-i),r.point(-fu,-i),r.point(-fu,0),r.point(-fu,i);else if(mu(t[0]-e[0])>1e-6){var a=t[0]0,i=mu(e)>1e-6;function a(t,n){return xu(t)*xu(n)>e}function o(t,n,r){var i=[1,0,0],a=ec(Ku(t),Ku(n)),o=tc(a,a),s=a[0],u=o-s*s;if(!u)return!r&&t;var c=e*o/u,l=-e*s/u,f=ec(i,a),h=rc(i,c);nc(h,rc(a,l));var d=f,p=tc(h,d),y=tc(d,d),g=p*p-y*(tc(h,h)-1);if(!(g<0)){var m=Su(g),v=rc(d,(-p-m)/y);if(nc(v,h),v=Qu(v),!r)return v;var b,x=t[0],_=n[0],w=t[1],k=n[1];_0^v[1]<(mu(v[0]-x)<1e-6?w:k):w<=v[1]&&v[1]<=k:E>fu^(x<=v[0]&&v[0]<=_)){var T=rc(d,(-p+m)/y);return nc(T,h),[v,Qu(T)]}}}function s(e,n){var i=r?t:fu-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return _l(a,(function(t){var e,n,u,c,l;return{lineStart:function(){c=u=!1,l=1},point:function(f,h){var d,p=[f,h],y=a(f,h),g=r?y?0:s(f,h):y?s(f+(f<0?fu:-fu),h):0;if(!e&&(c=u=y)&&t.lineStart(),y!==u&&(!(d=o(e,p))||pl(e,d)||pl(p,d))&&(p[0]+=1e-6,p[1]+=1e-6,y=a(p[0],p[1])),y!==u)l=0,y?(t.lineStart(),d=o(p,e),t.point(d[0],d[1])):(d=o(e,p),t.point(d[0],d[1]),t.lineEnd()),e=d;else if(i&&e&&r^y){var m;g&n||!(m=o(p,e,!0))||(l=0,r?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1])))}!y||e&&pl(e,p)||t.point(p[0],p[1]),e=p,u=y,n=g},lineEnd:function(){u&&t.lineEnd(),e=null},clean:function(){return l|(c&&u)<<1}}}),(function(e,r,i,a){ll(a,t,n,i,e,r)}),r?[0,-t]:[-fu,t-fu])};function Tl(t,e,n,r){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=r}function a(i,a,s,c){var l=0,f=0;if(null==i||(l=o(i,s))!==(f=o(a,s))||u(i,a)<0^s>0)do{c.point(0===l||3===l?t:n,l>1?r:e)}while((l=(l+s+4)%4)!==f);else c.point(a[0],a[1])}function o(r,i){return mu(r[0]-t)<1e-6?i>0?0:3:mu(r[0]-n)<1e-6?i>0?2:1:mu(r[1]-e)<1e-6?i>0?1:0:i>0?3:2}function s(t,e){return u(t.x,e.x)}function u(t,e){var n=o(t,1),r=o(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var u,c,l,f,h,d,p,y,g,m,v,b=o,x=dl(),_={point:w,lineStart:function(){_.point=k,c&&c.push(l=[]);m=!0,g=!1,p=y=NaN},lineEnd:function(){u&&(k(f,h),d&&g&&x.rejoin(),u.push(x.result()));_.point=w,g&&b.lineEnd()},polygonStart:function(){b=x,u=[],c=[],v=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=c.length;nr&&(h-a)*(r-o)>(d-o)*(t-a)&&++e:d<=r&&(h-a)*(r-o)<(d-o)*(t-a)&&--e;return e}(),n=v&&e,i=(u=R(u)).length;(n||i)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),i&&gl(u,s,e,a,o),o.polygonEnd());b=o,u=c=l=null}};function w(t,e){i(t,e)&&b.point(t,e)}function k(a,o){var s=i(a,o);if(c&&l.push([a,o]),m)f=a,h=o,d=s,m=!1,s&&(b.lineStart(),b.point(a,o));else if(s&&g)b.point(a,o);else{var u=[p=Math.max(-1e9,Math.min(1e9,p)),y=Math.max(-1e9,Math.min(1e9,y))],x=[a=Math.max(-1e9,Math.min(1e9,a)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,n,r,i,a){var o,s=t[0],u=t[1],c=0,l=1,f=e[0]-s,h=e[1]-u;if(o=n-s,f||!(o>0)){if(o/=f,f<0){if(o0){if(o>l)return;o>c&&(c=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>c&&(c=o)}else if(f>0){if(o0)){if(o/=h,h<0){if(o0){if(o>l)return;o>c&&(c=o)}if(o=a-u,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>c&&(c=o)}else if(h>0){if(o0&&(t[0]=s+c*f,t[1]=u+c*h),l<1&&(e[0]=s+l*f,e[1]=u+l*h),!0}}}}}(u,x,t,e,n,r)?s&&(b.lineStart(),b.point(a,o),v=!1):(g||(b.lineStart(),b.point(u[0],u[1])),b.point(x[0],x[1]),s||b.lineEnd(),v=!1)}p=a,y=o,g=s}return _}}var Sl,Ml,Ol,Nl=function(){var t,e,n,r=0,i=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Tl(r,i,a,o)(e=n)},extent:function(s){return arguments.length?(r=+s[0][0],i=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[r,i],[a,o]]}}},Cl=su(),Dl={sphere:Du,point:Du,lineStart:function(){Dl.point=Fl,Dl.lineEnd=Ll},lineEnd:Du,polygonStart:Du,polygonEnd:Du};function Ll(){Dl.point=Dl.lineEnd=Du}function Fl(t,e){Sl=t*=gu,Ml=Au(e*=gu),Ol=xu(e),Dl.point=Il}function Il(t,e){t*=gu;var n=Au(e*=gu),r=xu(e),i=mu(t-Sl),a=xu(i),o=r*Au(i),s=Ol*n-Ml*r*a,u=Ml*n+Ol*r*a;Cl.add(bu(Su(o*o+s*s),u)),Sl=t,Ml=n,Ol=r}var Pl=function(t){return Cl.reset(),$u(t,Dl),+Cl},Rl=[null,null],Bl={type:"LineString",coordinates:Rl},jl=function(t,e){return Rl[0]=t,Rl[1]=e,Pl(Bl)},Yl={Feature:function(t,e){return Ul(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r0&&(i=jl(t[a],t[a-1]))>0&&n<=i&&r<=i&&(n+r-i)*(1-Math.pow((n-r)/i,2))<1e-12*i)return!0;n=r}return!1}function Vl(t,e){return!!xl(t.map(Hl),Wl(e))}function Hl(t){return(t=t.map(Wl)).pop(),t}function Wl(t){return[t[0]*gu,t[1]*gu]}var ql=function(t,e){return(t&&Yl.hasOwnProperty(t.type)?Yl[t.type]:Ul)(t,e)};function Xl(t,e,n){var r=w(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function Zl(t,e,n){var r=w(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function Jl(){var t,e,n,r,i,a,o,s,u,c,l,f,h=10,d=h,p=90,y=360,g=2.5;function m(){return{type:"MultiLineString",coordinates:v()}}function v(){return w(_u(r/p)*p,n,p).map(l).concat(w(_u(s/y)*y,o,y).map(f)).concat(w(_u(e/h)*h,t,h).filter((function(t){return mu(t%p)>1e-6})).map(u)).concat(w(_u(a/d)*d,i,d).filter((function(t){return mu(t%y)>1e-6})).map(c))}return m.lines=function(){return v().map((function(t){return{type:"LineString",coordinates:t}}))},m.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(f(o).slice(1),l(n).reverse().slice(1),f(s).reverse().slice(1))]}},m.extent=function(t){return arguments.length?m.extentMajor(t).extentMinor(t):m.extentMinor()},m.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],r>n&&(t=r,r=n,n=t),s>o&&(t=s,s=o,o=t),m.precision(g)):[[r,s],[n,o]]},m.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),m.precision(g)):[[e,a],[t,i]]},m.step=function(t){return arguments.length?m.stepMajor(t).stepMinor(t):m.stepMinor()},m.stepMajor=function(t){return arguments.length?(p=+t[0],y=+t[1],m):[p,y]},m.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],m):[h,d]},m.precision=function(h){return arguments.length?(g=+h,u=Xl(a,i,90),c=Zl(e,t,g),l=Xl(s,o,90),f=Zl(r,n,g),m):g},m.extentMajor([[-180,1e-6-90],[180,90-1e-6]]).extentMinor([[-180,-80-1e-6],[180,80+1e-6]])}function Ql(){return Jl()()}var Kl,tf,ef,nf,rf=function(t,e){var n=t[0]*gu,r=t[1]*gu,i=e[0]*gu,a=e[1]*gu,o=xu(r),s=Au(r),u=xu(a),c=Au(a),l=o*xu(n),f=o*Au(n),h=u*xu(i),d=u*Au(i),p=2*Nu(Su(Cu(a-r)+o*u*Cu(i-n))),y=Au(p),g=p?function(t){var e=Au(t*=p)/y,n=Au(p-t)/y,r=n*l+e*h,i=n*f+e*d,a=n*s+e*c;return[bu(i,r)*yu,bu(a,Su(r*r+i*i))*yu]}:function(){return[n*yu,r*yu]};return g.distance=p,g},af=function(t){return t},of=su(),sf=su(),uf={point:Du,lineStart:Du,lineEnd:Du,polygonStart:function(){uf.lineStart=cf,uf.lineEnd=hf},polygonEnd:function(){uf.lineStart=uf.lineEnd=uf.point=Du,of.add(mu(sf)),sf.reset()},result:function(){var t=of/2;return of.reset(),t}};function cf(){uf.point=lf}function lf(t,e){uf.point=ff,Kl=ef=t,tf=nf=e}function ff(t,e){sf.add(nf*t-ef*e),ef=t,nf=e}function hf(){ff(Kl,tf)}var df=uf,pf=1/0,yf=pf,gf=-pf,mf=gf;var vf,bf,xf,_f,wf={point:function(t,e){tgf&&(gf=t);emf&&(mf=e)},lineStart:Du,lineEnd:Du,polygonStart:Du,polygonEnd:Du,result:function(){var t=[[pf,yf],[gf,mf]];return gf=mf=-(yf=pf=1/0),t}},kf=0,Ef=0,Af=0,Tf=0,Sf=0,Mf=0,Of=0,Nf=0,Cf=0,Df={point:Lf,lineStart:Ff,lineEnd:Rf,polygonStart:function(){Df.lineStart=Bf,Df.lineEnd=jf},polygonEnd:function(){Df.point=Lf,Df.lineStart=Ff,Df.lineEnd=Rf},result:function(){var t=Cf?[Of/Cf,Nf/Cf]:Mf?[Tf/Mf,Sf/Mf]:Af?[kf/Af,Ef/Af]:[NaN,NaN];return kf=Ef=Af=Tf=Sf=Mf=Of=Nf=Cf=0,t}};function Lf(t,e){kf+=t,Ef+=e,++Af}function Ff(){Df.point=If}function If(t,e){Df.point=Pf,Lf(xf=t,_f=e)}function Pf(t,e){var n=t-xf,r=e-_f,i=Su(n*n+r*r);Tf+=i*(xf+t)/2,Sf+=i*(_f+e)/2,Mf+=i,Lf(xf=t,_f=e)}function Rf(){Df.point=Lf}function Bf(){Df.point=Yf}function jf(){zf(vf,bf)}function Yf(t,e){Df.point=zf,Lf(vf=xf=t,bf=_f=e)}function zf(t,e){var n=t-xf,r=e-_f,i=Su(n*n+r*r);Tf+=i*(xf+t)/2,Sf+=i*(_f+e)/2,Mf+=i,Of+=(i=_f*t-xf*e)*(xf+t),Nf+=i*(_f+e),Cf+=3*i,Lf(xf=t,_f=e)}var Uf=Df;function $f(t){this._context=t}$f.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,pu)}},result:Du};var Gf,Vf,Hf,Wf,qf,Xf=su(),Zf={point:Du,lineStart:function(){Zf.point=Jf},lineEnd:function(){Gf&&Qf(Vf,Hf),Zf.point=Du},polygonStart:function(){Gf=!0},polygonEnd:function(){Gf=null},result:function(){var t=+Xf;return Xf.reset(),t}};function Jf(t,e){Zf.point=Qf,Vf=Wf=t,Hf=qf=e}function Qf(t,e){Wf-=t,qf-=e,Xf.add(Su(Wf*Wf+qf*qf)),Wf=t,qf=e}var Kf=Zf;function th(){this._string=[]}function eh(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}th.prototype={_radius:4.5,_circle:eh(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=eh(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var nh=function(t,e){var n,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),$u(t,n(r))),r.result()}return a.area=function(t){return $u(t,n(df)),df.result()},a.measure=function(t){return $u(t,n(Kf)),Kf.result()},a.bounds=function(t){return $u(t,n(wf)),wf.result()},a.centroid=function(t){return $u(t,n(Uf)),Uf.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,af):(t=e).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(e=null,new th):new $f(e=t),"function"!=typeof i&&r.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(e)},rh=function(t){return{stream:ih(t)}};function ih(t){return function(e){var n=new ah;for(var r in t)n[r]=t[r];return n.stream=e,n}}function ah(){}function oh(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),$u(n,t.stream(wf)),e(wf.result()),null!=r&&t.clipExtent(r),t}function sh(t,e,n){return oh(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),o=+e[0][0]+(r-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])}),n)}function uh(t,e,n){return sh(t,[[0,0],e],n)}function ch(t,e,n){return oh(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),a=(r-i*(n[1][0]+n[0][0]))/2,o=-i*n[0][1];t.scale(150*i).translate([a,o])}),n)}function lh(t,e,n){return oh(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),a=-i*n[0][0],o=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,o])}),n)}ah.prototype={constructor:ah,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var fh=xu(30*gu),hh=function(t,e){return+e?function(t,e){function n(r,i,a,o,s,u,c,l,f,h,d,p,y,g){var m=c-r,v=l-i,b=m*m+v*v;if(b>4*e&&y--){var x=o+h,_=s+d,w=u+p,k=Su(x*x+_*_+w*w),E=Nu(w/=k),A=mu(mu(w)-1)<1e-6||mu(a-f)<1e-6?(a+f)/2:bu(_,x),T=t(A,E),S=T[0],M=T[1],O=S-r,N=M-i,C=v*O-m*N;(C*C/b>e||mu((m*O+v*N)/b-.5)>.3||o*h+s*d+u*p2?t[2]%360*gu:0,S()):[g*yu,m*yu,v*yu]},A.angle=function(t){return arguments.length?(b=t%360*gu,S()):b*yu},A.precision=function(t){return arguments.length?(o=hh(s,E=t*t),M()):Su(E)},A.fitExtent=function(t,e){return sh(A,t,e)},A.fitSize=function(t,e){return uh(A,t,e)},A.fitWidth=function(t,e){return ch(A,t,e)},A.fitHeight=function(t,e){return lh(A,t,e)},function(){return e=t.apply(this,arguments),A.invert=e.invert&&T,S()}}function vh(t){var e=0,n=fu/3,r=mh(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*gu,n=t[1]*gu):[e*yu,n*yu]},i}function bh(t,e){var n=Au(t),r=(n+Au(e))/2;if(mu(r)<1e-6)return function(t){var e=xu(t);function n(t,n){return[t*e,Au(n)/e]}return n.invert=function(t,n){return[t/e,Nu(n*e)]},n}(t);var i=1+n*(2*r-n),a=Su(i)/r;function o(t,e){var n=Su(i-2*r*Au(e))/r;return[n*Au(t*=r),a-n*xu(t)]}return o.invert=function(t,e){var n=a-e;return[bu(t,mu(n))/r*Tu(n),Nu((i-(t*t+n*n)*r*r)/(2*r))]},o}var xh=function(){return vh(bh).scale(155.424).center([0,33.6442])},_h=function(){return xh().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])};var wh=function(){var t,e,n,r,i,a,o=_h(),s=xh().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=xh().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(t,e){a=[t,e]}};function l(t){var e=t[0],o=t[1];return a=null,n.point(e,o),a||(r.point(e,o),a)||(i.point(e,o),a)}function f(){return t=e=null,l}return l.invert=function(t){var e=o.scale(),n=o.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?u:o).invert(t)},l.stream=function(n){return t&&e===n?t:(r=[o.stream(e=n),s.stream(n),u.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n0?e<1e-6-hu&&(e=1e-6-hu):e>hu-1e-6&&(e=hu-1e-6);var n=i/Eu(Dh(e),r);return[n*Au(r*t),i-n*xu(r*t)]}return a.invert=function(t,e){var n=i-e,a=Tu(r)*Su(t*t+n*n);return[bu(t,mu(n))/r*Tu(n),2*vu(Eu(i/a,1/r))-hu]},a}var Fh=function(){return vh(Lh).scale(109.5).parallels([30,30])};function Ih(t,e){return[t,e]}Ih.invert=Ih;var Ph=function(){return gh(Ih).scale(152.63)};function Rh(t,e){var n=xu(t),r=t===e?Au(t):(n-xu(e))/(e-t),i=n/r+t;if(mu(r)<1e-6)return Ih;function a(t,e){var n=i-e,a=r*t;return[n*Au(a),i-n*xu(a)]}return a.invert=function(t,e){var n=i-e;return[bu(t,mu(n))/r*Tu(n),i-Tu(r)*Su(t*t+n*n)]},a}var Bh=function(){return vh(Rh).scale(131.154).center([0,13.9389])},jh=1.340264,Yh=-.081106,zh=893e-6,Uh=.003796,$h=Su(3)/2;function Gh(t,e){var n=Nu($h*Au(e)),r=n*n,i=r*r*r;return[t*xu(n)/($h*(jh+3*Yh*r+i*(7*zh+9*Uh*r))),n*(jh+Yh*r+i*(zh+Uh*r))]}Gh.invert=function(t,e){for(var n,r=e,i=r*r,a=i*i*i,o=0;o<12&&(a=(i=(r-=n=(r*(jh+Yh*i+a*(zh+Uh*i))-e)/(jh+3*Yh*i+a*(7*zh+9*Uh*i)))*r)*i*i,!(mu(n)<1e-12));++o);return[$h*t*(jh+3*Yh*i+a*(7*zh+9*Uh*i))/xu(r),Nu(Au(r)/$h)]};var Vh=function(){return gh(Gh).scale(177.158)};function Hh(t,e){var n=xu(e),r=xu(t)*n;return[n*Au(t)/r,Au(e)/r]}Hh.invert=Eh(vu);var Wh=function(){return gh(Hh).scale(144.049).clipAngle(60)};function qh(t,e,n,r){return 1===t&&1===e&&0===n&&0===r?af:ih({point:function(i,a){this.stream.point(i*t+n,a*e+r)}})}var Xh=function(){var t,e,n,r,i,a,o=1,s=0,u=0,c=1,l=1,f=af,h=null,d=af;function p(){return r=i=null,a}return a={stream:function(t){return r&&i===t?r:r=f(d(i=t))},postclip:function(r){return arguments.length?(d=r,h=t=e=n=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(h=t=e=n=null,af):Tl(h=+r[0][0],t=+r[0][1],e=+r[1][0],n=+r[1][1]),p()):null==h?null:[[h,t],[e,n]]},scale:function(t){return arguments.length?(f=qh((o=+t)*c,o*l,s,u),p()):o},translate:function(t){return arguments.length?(f=qh(o*c,o*l,s=+t[0],u=+t[1]),p()):[s,u]},reflectX:function(t){return arguments.length?(f=qh(o*(c=t?-1:1),o*l,s,u),p()):c<0},reflectY:function(t){return arguments.length?(f=qh(o*c,o*(l=t?-1:1),s,u),p()):l<0},fitExtent:function(t,e){return sh(a,t,e)},fitSize:function(t,e){return uh(a,t,e)},fitWidth:function(t,e){return ch(a,t,e)},fitHeight:function(t,e){return lh(a,t,e)}}};function Zh(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}Zh.invert=function(t,e){var n,r=e,i=25;do{var a=r*r,o=a*a;r-=n=(r*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(mu(n)>1e-6&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]};var Jh=function(){return gh(Zh).scale(175.295)};function Qh(t,e){return[xu(e)*Au(t),Au(e)]}Qh.invert=Eh(Nu);var Kh=function(){return gh(Qh).scale(249.5).clipAngle(90+1e-6)};function td(t,e){var n=xu(e),r=1+xu(t)*n;return[n*Au(t)/r,Au(e)/r]}td.invert=Eh((function(t){return 2*vu(t)}));var ed=function(){return gh(td).scale(250).clipAngle(142)};function nd(t,e){return[ku(Mu((hu+e)/2)),-t]}nd.invert=function(t,e){return[-e,2*vu(wu(t))-hu]};var rd=function(){var t=Ch(nd),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)};function id(t,e){return t.parent===e.parent?1:2}function ad(t,e){return t+e.x}function od(t,e){return Math.max(t,e.y)}var sd=function(){var t=id,e=1,n=1,r=!1;function i(i){var a,o=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(ad,0)/t.length}(n),e.y=function(t){return 1+t.reduce(od,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)}));var s=function(t){for(var e;e=t.children;)t=e[0];return t}(i),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),c=s.x-t(s,u)/2,l=u.x+t(u,s)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-c)/(l-c)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i};function ud(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function cd(t,e){var n,r,i,a,o,s=new dd(t),u=+t.value&&(s.value=t.value),c=[s];for(null==e&&(e=ld);n=c.pop();)if(u&&(n.value=+n.data.value),(i=e(n.data))&&(o=i.length))for(n.children=new Array(o),a=o-1;a>=0;--a)c.push(r=n.children[a]=new dd(i[a])),r.parent=n,r.depth=n.depth+1;return s.eachBefore(hd)}function ld(t){return t.children}function fd(t){t.data=t.data.data}function hd(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function dd(t){this.data=t,this.depth=this.height=0,this.parent=null}dd.prototype=cd.prototype={constructor:dd,count:function(){return this.eachAfter(ud)},each:function(t){var e,n,r,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(r=0,i=n.length;r=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return cd(this).eachBefore(fd)}};var pd=Array.prototype.slice;var yd=function(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(pd.call(t))).length,a=[];r0&&n*n>r*r+i*i}function bd(t,e){for(var n=0;n(o*=o)?(r=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-r*r)),n.x=t.x-r*s-a*u,n.y=t.y-r*u+a*s):(r=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-r*r)),n.x=e.x+r*s-a*u,n.y=e.y+r*u+a*s)):(n.x=e.x+n.r,n.y=e.y)}function Ed(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Ad(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,a=(e.y*n.r+n.y*e.r)/r;return i*i+a*a}function Td(t){this._=t,this.next=null,this.previous=null}function Sd(t){if(!(i=t.length))return 0;var e,n,r,i,a,o,s,u,c,l,f;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;kd(n,e,r=t[2]),e=new Td(e),n=new Td(n),r=new Td(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(s=3;s0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Nd(e),n):t},n.parentId=function(t){return arguments.length?(e=Nd(t),n):e},n};function Hd(t,e){return t.parent===e.parent?1:2}function Wd(t){var e=t.children;return e?e[0]:t.t}function qd(t){var e=t.children;return e?e[e.length-1]:t.t}function Xd(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function Zd(t,e,n){return t.a.parent===e.parent?t.a:n}function Jd(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}Jd.prototype=Object.create(dd.prototype);var Qd=function(){var t=Hd,e=1,n=1,r=null;function i(i){var u=function(t){for(var e,n,r,i,a,o=new Jd(t,0),s=[o];e=s.pop();)if(r=e._.children)for(e.children=new Array(a=r.length),i=a-1;i>=0;--i)s.push(n=e.children[i]=new Jd(r[i],i)),n.parent=e;return(o.parent=new Jd(null,0)).children=[o],o}(i);if(u.eachAfter(a),u.parent.m=-u.z,u.eachBefore(o),r)i.eachBefore(s);else{var c=i,l=i,f=i;i.eachBefore((function(t){t.xl.x&&(l=t),t.depth>f.depth&&(f=t)}));var h=c===l?1:t(c,l)/2,d=h-c.x,p=e/(l.x+h+d),y=n/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*y}))}return i}function a(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,a=e,o=e,s=n,u=a.parent.children[0],c=a.m,l=o.m,f=s.m,h=u.m;s=qd(s),a=Wd(a),s&&a;)u=Wd(u),(o=qd(o)).a=e,(i=s.z+f-a.z-c+t(s._,a._))>0&&(Xd(Zd(s,e,r),e,i),c+=i,l+=i),f+=s.m,c+=a.m,h+=u.m,l+=o.m;s&&!qd(o)&&(o.t=s,o.m+=f-l),a&&!Wd(u)&&(u.t=a,u.m+=c-h,r=e)}return r}(e,i,e.parent.A||r[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},Kd=function(t,e,n,r,i){for(var a,o=t.children,s=-1,u=o.length,c=t.value&&(i-n)/t.value;++sh&&(h=s),g=l*l*y,(d=Math.max(h/g,g/f))>p){l-=s;break}p=d}m.push(o={value:l,dice:u1?e:1)},n}(tp),rp=function(){var t=np,e=!1,n=1,r=1,i=[0],a=Cd,o=Cd,s=Cd,u=Cd,c=Cd;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(f),i=[0],e&&t.eachBefore(Bd),t}function f(e){var n=i[e.depth],r=e.x0+n,l=e.y0+n,f=e.x1-n,h=e.y1-n;f=n-1){var l=s[e];return l.x0=i,l.y0=a,l.x1=o,void(l.y1=u)}var f=c[e],h=r/2+f,d=e+1,p=n-1;for(;d>>1;c[y]u-a){var v=(i*m+o*g)/r;t(e,d,g,i,a,v,u),t(d,n,m,v,a,o,u)}else{var b=(a*m+u*g)/r;t(e,d,g,i,a,o,b),t(d,n,m,i,b,o,u)}}(0,u,t.value,e,n,r,i)},ap=function(t,e,n,r,i){(1&t.depth?Kd:jd)(t,e,n,r,i)},op=function t(e){function n(t,n,r,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,u,c,l,f=-1,h=o.length,d=t.value;++f1?e:1)},n}(tp),sp=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}},up=function(t,e){var n=cn(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}},cp=function(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}},lp=Math.SQRT2;function fp(t){return((t=Math.exp(t))+1/t)/2}var hp=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],s=e[0],u=e[1],c=e[2],l=s-i,f=u-a,h=l*l+f*f;if(h<1e-12)r=Math.log(c/o)/lp,n=function(t){return[i+t*l,a+t*f,o*Math.exp(lp*t*r)]};else{var d=Math.sqrt(h),p=(c*c-o*o+4*h)/(2*o*2*d),y=(c*c-o*o-4*h)/(2*c*2*d),g=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(y*y+1)-y);r=(m-g)/lp,n=function(t){var e,n=t*r,s=fp(g),u=o/(2*d)*(s*(e=lp*n+g,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[i+u*l,a+u*f,o*s/fp(lp*n+g)]}}return n.duration=1e3*r,n};function dp(t){return function(e,n){var r=t((e=tn(e)).h,(n=tn(n)).h),i=fn(e.s,n.s),a=fn(e.l,n.l),o=fn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var pp=dp(cn),yp=dp(fn);function gp(t,e){var n=fn((t=pa(t)).l,(e=pa(e)).l),r=fn(t.a,e.a),i=fn(t.b,e.b),a=fn(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=a(e),t+""}}function mp(t){return function(e,n){var r=t((e=wa(e)).h,(n=wa(n)).h),i=fn(e.c,n.c),a=fn(e.l,n.l),o=fn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var vp=mp(cn),bp=mp(fn);function xp(t){return function e(n){function r(e,r){var i=t((e=Na(e)).h,(r=Na(r)).h),a=fn(e.s,r.s),o=fn(e.l,r.l),s=fn(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=o(Math.pow(t,n)),e.opacity=s(t),e+""}}return n=+n,r.gamma=e,r}(1)}var _p=xp(cn),wp=xp(fn);function kp(t,e){for(var n=0,r=e.length-1,i=e[0],a=new Array(r<0?0:r);n1&&(e=t[a[o-2]],n=t[a[o-1]],r=t[s],(n[0]-e[0])*(r[1]-e[1])-(n[1]-e[1])*(r[0]-e[0])<=0);)--o;a[o++]=s}return a.slice(0,o)}var Op=function(t){if((n=t.length)<3)return null;var e,n,r=new Array(n),i=new Array(n);for(e=0;e=0;--e)c.push(t[r[a[e]][2]]);for(e=+s;es!=c>s&&o<(u-n)*(s-r)/(c-r)+n&&(l=!l),u=n,c=r;return l},Cp=function(t){for(var e,n,r=-1,i=t.length,a=t[i-1],o=a[0],s=a[1],u=0;++r1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(Dp),Ip=function t(e){function n(){var t=Fp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Dp),Pp=function t(e){function n(t){return function(){for(var n=0,r=0;rr&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function ty(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i2?ey:ty,i=a=null,f}function f(e){return isNaN(e=+e)?n:(i||(i=r(o.map(t),s,u)))(t(c(e)))}return f.invert=function(n){return c(e((a||(a=r(s,o.map(t),_n)))(n)))},f.domain=function(t){return arguments.length?(o=Up.call(t,Xp),c===Jp||(c=Kp(o)),l()):o.slice()},f.range=function(t){return arguments.length?(s=$p.call(t),l()):s.slice()},f.rangeRound=function(t){return s=$p.call(t),u=cp,l()},f.clamp=function(t){return arguments.length?(c=t?Kp(o):Jp,f):c!==Jp},f.interpolate=function(t){return arguments.length?(u=t,l()):u},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,l()}}function iy(t,e){return ry()(t,e)}var ay=function(t,e,n,r){var i,a=M(t,e,n);switch((r=Vs(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=au(a,o))||(r.precision=i),Zs(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=ou(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=iu(a))||(r.precision=i-2*("%"===r.type))}return Xs(r)};function oy(t){var e=t.domain;return t.ticks=function(t){var n=e();return T(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return ay(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),a=0,o=i.length-1,s=i[a],u=i[o];return u0?r=S(s=Math.floor(s/r)*r,u=Math.ceil(u/r)*r,n):r<0&&(r=S(s=Math.ceil(s*r)/r,u=Math.floor(u*r)/r,n)),r>0?(i[a]=Math.floor(s/r)*r,i[o]=Math.ceil(u/r)*r,e(i)):r<0&&(i[a]=Math.ceil(s*r)/r,i[o]=Math.floor(u*r)/r,e(i)),t},t}function sy(){var t=iy(Jp,Jp);return t.copy=function(){return ny(t,sy())},jp.apply(t,arguments),oy(t)}function uy(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Up.call(e,Xp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return uy(t).unknown(e)},t=arguments.length?Up.call(t,Xp):[0,1],oy(n)}var cy=function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o0){for(;hu)break;y.push(f)}}else for(;h=1;--l)if(!((f=c*l)u)break;y.push(f)}}else y=T(h,d,Math.min(d-h,p)).map(n);return r?y.reverse():y},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=Xs(i)),t===1/0)return i;null==t&&(t=10);var o=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*a0?i[r-1]:e[0],r=r?[i[r-1],n]:[i[o-1],i[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return i.slice()},o.copy=function(){return Oy().domain([e,n]).range(a).unknown(t)},jp.apply(oy(o),arguments)}function Ny(){var t,e=[.5],n=[0,1],r=1;function i(i){return i<=i?n[u(e,i,0,r)]:t}return i.domain=function(t){return arguments.length?(e=$p.call(t),r=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=$p.call(t),r=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var r=n.indexOf(t);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Ny().domain(e).range(n).unknown(t)},jp.apply(i,arguments)}var Cy=new Date,Dy=new Date;function Ly(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Cy.setTime(+e),Dy.setTime(+r),t(Cy),t(Dy),Math.floor(n(Cy,Dy))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Fy=Ly((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Fy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ly((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};var Iy=Fy,Py=Fy.range,Ry=Ly((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),By=Ry,jy=Ry.range;function Yy(t){return Ly((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var zy=Yy(0),Uy=Yy(1),$y=Yy(2),Gy=Yy(3),Vy=Yy(4),Hy=Yy(5),Wy=Yy(6),qy=zy.range,Xy=Uy.range,Zy=$y.range,Jy=Gy.range,Qy=Vy.range,Ky=Hy.range,tg=Wy.range,eg=Ly((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),ng=eg,rg=eg.range,ig=Ly((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),ag=ig,og=ig.range,sg=Ly((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),ug=sg,cg=sg.range,lg=Ly((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),fg=lg,hg=lg.range,dg=Ly((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));dg.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ly((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):dg:null};var pg=dg,yg=dg.range;function gg(t){return Ly((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var mg=gg(0),vg=gg(1),bg=gg(2),xg=gg(3),_g=gg(4),wg=gg(5),kg=gg(6),Eg=mg.range,Ag=vg.range,Tg=bg.range,Sg=xg.range,Mg=_g.range,Og=wg.range,Ng=kg.range,Cg=Ly((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),Dg=Cg,Lg=Cg.range,Fg=Ly((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Fg.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ly((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};var Ig=Fg,Pg=Fg.range;function Rg(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Bg(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function jg(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Yg(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,u=t.shortMonths,c=Qg(i),l=Kg(i),f=Qg(a),h=Kg(a),d=Qg(o),p=Kg(o),y=Qg(s),g=Kg(s),m=Qg(u),v=Kg(u),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return u[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:xm,e:xm,f:Am,H:_m,I:wm,j:km,L:Em,m:Tm,M:Sm,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:ev,s:nv,S:Mm,u:Om,U:Nm,V:Cm,w:Dm,W:Lm,x:null,X:null,y:Fm,Y:Im,Z:Pm,"%":tv},x={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return u[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Rm,e:Rm,f:Um,H:Bm,I:jm,j:Ym,L:zm,m:$m,M:Gm,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:ev,s:nv,S:Vm,u:Hm,U:Wm,V:qm,w:Xm,W:Zm,x:null,X:null,y:Jm,Y:Qm,Z:Km,"%":tv},_={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=v[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=y.exec(e.slice(n));return r?(t.m=g[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return E(t,e,n,r)},d:lm,e:lm,f:gm,H:hm,I:hm,j:fm,L:ym,m:cm,M:dm,p:function(t,e,n){var r=c.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},q:um,Q:vm,s:bm,S:pm,u:em,U:nm,V:rm,w:tm,W:im,x:function(t,e,r){return E(t,n,e,r)},X:function(t,e,n){return E(t,r,e,n)},y:om,Y:am,Z:sm,"%":mm};function w(t,e){return function(n){var r,i,a,o=[],s=-1,u=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=Bg(jg(a.y,0,1))).getUTCDay(),r=i>4||0===i?vg.ceil(r):vg(r),r=Dg.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=Rg(jg(a.y,0,1))).getDay(),r=i>4||0===i?Uy.ceil(r):Uy(r),r=ng.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Bg(jg(a.y,0,1)).getUTCDay():Rg(jg(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Bg(a)):Rg(a)}}function E(t,e,n,r){for(var i,a,o=0,s=e.length,u=n.length;o=u)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=_[i in Hg?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return(b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),x.x=w(n,x),x.X=w(r,x),x.c=w(e,x),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}})}var zg,Ug,$g,Gg,Vg,Hg={"-":"",_:" ",0:"0"},Wg=/^\s*\d+/,qg=/^%/,Xg=/[\\^$*+?|[\]().{}]/g;function Zg(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a68?1900:2e3),n+r[0].length):-1}function sm(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function um(t,e,n){var r=Wg.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function cm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function lm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function fm(t,e,n){var r=Wg.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function hm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function dm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function pm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function ym(t,e,n){var r=Wg.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function gm(t,e,n){var r=Wg.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function mm(t,e,n){var r=qg.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function vm(t,e,n){var r=Wg.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function bm(t,e,n){var r=Wg.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function xm(t,e){return Zg(t.getDate(),e,2)}function _m(t,e){return Zg(t.getHours(),e,2)}function wm(t,e){return Zg(t.getHours()%12||12,e,2)}function km(t,e){return Zg(1+ng.count(Iy(t),t),e,3)}function Em(t,e){return Zg(t.getMilliseconds(),e,3)}function Am(t,e){return Em(t,e)+"000"}function Tm(t,e){return Zg(t.getMonth()+1,e,2)}function Sm(t,e){return Zg(t.getMinutes(),e,2)}function Mm(t,e){return Zg(t.getSeconds(),e,2)}function Om(t){var e=t.getDay();return 0===e?7:e}function Nm(t,e){return Zg(zy.count(Iy(t)-1,t),e,2)}function Cm(t,e){var n=t.getDay();return t=n>=4||0===n?Vy(t):Vy.ceil(t),Zg(Vy.count(Iy(t),t)+(4===Iy(t).getDay()),e,2)}function Dm(t){return t.getDay()}function Lm(t,e){return Zg(Uy.count(Iy(t)-1,t),e,2)}function Fm(t,e){return Zg(t.getFullYear()%100,e,2)}function Im(t,e){return Zg(t.getFullYear()%1e4,e,4)}function Pm(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Zg(e/60|0,"0",2)+Zg(e%60,"0",2)}function Rm(t,e){return Zg(t.getUTCDate(),e,2)}function Bm(t,e){return Zg(t.getUTCHours(),e,2)}function jm(t,e){return Zg(t.getUTCHours()%12||12,e,2)}function Ym(t,e){return Zg(1+Dg.count(Ig(t),t),e,3)}function zm(t,e){return Zg(t.getUTCMilliseconds(),e,3)}function Um(t,e){return zm(t,e)+"000"}function $m(t,e){return Zg(t.getUTCMonth()+1,e,2)}function Gm(t,e){return Zg(t.getUTCMinutes(),e,2)}function Vm(t,e){return Zg(t.getUTCSeconds(),e,2)}function Hm(t){var e=t.getUTCDay();return 0===e?7:e}function Wm(t,e){return Zg(mg.count(Ig(t)-1,t),e,2)}function qm(t,e){var n=t.getUTCDay();return t=n>=4||0===n?_g(t):_g.ceil(t),Zg(_g.count(Ig(t),t)+(4===Ig(t).getUTCDay()),e,2)}function Xm(t){return t.getUTCDay()}function Zm(t,e){return Zg(vg.count(Ig(t)-1,t),e,2)}function Jm(t,e){return Zg(t.getUTCFullYear()%100,e,2)}function Qm(t,e){return Zg(t.getUTCFullYear()%1e4,e,4)}function Km(){return"+0000"}function tv(){return"%"}function ev(t){return+t}function nv(t){return Math.floor(+t/1e3)}function rv(t){return zg=Yg(t),Ug=zg.format,$g=zg.parse,Gg=zg.utcFormat,Vg=zg.utcParse,zg}rv({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function iv(t){return new Date(t)}function av(t){return t instanceof Date?+t:+new Date(+t)}function ov(t,e,n,r,a,o,s,u,c){var l=iy(Jp,Jp),f=l.invert,h=l.domain,d=c(".%L"),p=c(":%S"),y=c("%I:%M"),g=c("%I %p"),m=c("%a %d"),v=c("%b %d"),b=c("%B"),x=c("%Y"),_=[[s,1,1e3],[s,5,5e3],[s,15,15e3],[s,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[a,1,36e5],[a,3,108e5],[a,6,216e5],[a,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function w(i){return(s(i)1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return qb.h=360*t-100,qb.s=1.5-1.5*e,qb.l=.8-.9*e,qb+""},Zb=We(),Jb=Math.PI/3,Qb=2*Math.PI/3,Kb=function(t){var e;return t=(.5-t)*Math.PI,Zb.r=255*(e=Math.sin(t))*e,Zb.g=255*(e=Math.sin(t+Jb))*e,Zb.b=255*(e=Math.sin(t+Qb))*e,Zb+""},tx=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"};function ex(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var nx=ex(Dv("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),rx=ex(Dv("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ix=ex(Dv("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ax=ex(Dv("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),ox=function(t){return we(ne(t).call(document.documentElement))},sx=0;function ux(){return new cx}function cx(){this._="@"+(++sx).toString(36)}cx.prototype=ux.prototype={constructor:cx,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var lx=function(t){return"string"==typeof t?new be([document.querySelectorAll(t)],[document.documentElement]):new be([null==t?[]:t],ve)},fx=function(t,e){null==e&&(e=On().touches);for(var n=0,r=e?e.length:0,i=new Array(r);n1?0:t<-1?xx:Math.acos(t)}function Ex(t){return t>=1?_x:t<=-1?-_x:Math.asin(t)}function Ax(t){return t.innerRadius}function Tx(t){return t.outerRadius}function Sx(t){return t.startAngle}function Mx(t){return t.endAngle}function Ox(t){return t&&t.padAngle}function Nx(t,e,n,r,i,a,o,s){var u=n-t,c=r-e,l=o-i,f=s-a,h=f*u-l*c;if(!(h*h<1e-12))return[t+(h=(l*(e-a)-f*(t-i))/h)*u,e+h*c]}function Cx(t,e,n,r,i,a,o){var s=t-n,u=e-r,c=(o?a:-a)/bx(s*s+u*u),l=c*u,f=-c*s,h=t+l,d=e+f,p=n+l,y=r+f,g=(h+p)/2,m=(d+y)/2,v=p-h,b=y-d,x=v*v+b*b,_=i-a,w=h*y-p*d,k=(b<0?-1:1)*bx(gx(0,_*_*x-w*w)),E=(w*b-v*k)/x,A=(-w*v-b*k)/x,T=(w*b+v*k)/x,S=(-w*v+b*k)/x,M=E-g,O=A-m,N=T-g,C=S-m;return M*M+O*O>N*N+C*C&&(E=T,A=S),{cx:E,cy:A,x01:-l,y01:-f,x11:E*(i/_-1),y11:A*(i/_-1)}}var Dx=function(){var t=Ax,e=Tx,n=hx(0),r=null,i=Sx,a=Mx,o=Ox,s=null;function u(){var u,c,l=+t.apply(this,arguments),f=+e.apply(this,arguments),h=i.apply(this,arguments)-_x,d=a.apply(this,arguments)-_x,p=dx(d-h),y=d>h;if(s||(s=u=Ui()),f1e-12)if(p>wx-1e-12)s.moveTo(f*yx(h),f*vx(h)),s.arc(0,0,f,h,d,!y),l>1e-12&&(s.moveTo(l*yx(d),l*vx(d)),s.arc(0,0,l,d,h,y));else{var g,m,v=h,b=d,x=h,_=d,w=p,k=p,E=o.apply(this,arguments)/2,A=E>1e-12&&(r?+r.apply(this,arguments):bx(l*l+f*f)),T=mx(dx(f-l)/2,+n.apply(this,arguments)),S=T,M=T;if(A>1e-12){var O=Ex(A/l*vx(E)),N=Ex(A/f*vx(E));(w-=2*O)>1e-12?(x+=O*=y?1:-1,_-=O):(w=0,x=_=(h+d)/2),(k-=2*N)>1e-12?(v+=N*=y?1:-1,b-=N):(k=0,v=b=(h+d)/2)}var C=f*yx(v),D=f*vx(v),L=l*yx(_),F=l*vx(_);if(T>1e-12){var I,P=f*yx(b),R=f*vx(b),B=l*yx(x),j=l*vx(x);if(p1e-12?M>1e-12?(g=Cx(B,j,C,D,f,M,y),m=Cx(P,R,L,F,f,M,y),s.moveTo(g.cx+g.x01,g.cy+g.y01),M1e-12&&w>1e-12?S>1e-12?(g=Cx(L,F,P,R,l,-S,y),m=Cx(C,D,B,j,l,-S,y),s.lineTo(g.cx+g.x01,g.cy+g.y01),S=l;--f)s.point(g[f],m[f]);s.lineEnd(),s.areaEnd()}y&&(g[c]=+t(h,c,u),m[c]=+n(h,c,u),s.point(e?+e(h,c,u):g[c],r?+r(h,c,u):m[c]))}if(d)return s=null,d+""||null}function c(){return Rx().defined(i).curve(o).context(a)}return u.x=function(n){return arguments.length?(t="function"==typeof n?n:hx(+n),e=null,u):t},u.x0=function(e){return arguments.length?(t="function"==typeof e?e:hx(+e),u):t},u.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:hx(+t),u):e},u.y=function(t){return arguments.length?(n="function"==typeof t?t:hx(+t),r=null,u):n},u.y0=function(t){return arguments.length?(n="function"==typeof t?t:hx(+t),u):n},u.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:hx(+t),u):r},u.lineX0=u.lineY0=function(){return c().x(t).y(n)},u.lineY1=function(){return c().x(t).y(r)},u.lineX1=function(){return c().x(e).y(n)},u.defined=function(t){return arguments.length?(i="function"==typeof t?t:hx(!!t),u):i},u.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),u):o},u.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),u):a},u},jx=function(t,e){return et?1:e>=t?0:NaN},Yx=function(t){return t},zx=function(){var t=Yx,e=jx,n=null,r=hx(0),i=hx(wx),a=hx(0);function o(o){var s,u,c,l,f,h=o.length,d=0,p=new Array(h),y=new Array(h),g=+r.apply(this,arguments),m=Math.min(wx,Math.max(-wx,i.apply(this,arguments)-g)),v=Math.min(Math.abs(m)/h,a.apply(this,arguments)),b=v*(m<0?-1:1);for(s=0;s0&&(d+=f);for(null!=e?p.sort((function(t,n){return e(y[t],y[n])})):null!=n&&p.sort((function(t,e){return n(o[t],o[e])})),s=0,c=d?(m-h*b)/d:0;s0?f*c:0)+b,y[u]={data:o[u],index:s,value:f,startAngle:g,endAngle:l,padAngle:v};return y}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:hx(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:hx(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:hx(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:hx(+t),o):a},o},Ux=Gx(Fx);function $x(t){this._curve=t}function Gx(t){function e(e){return new $x(t(e))}return e._curve=t,e}function Vx(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Gx(t)):e()._curve},t}$x.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Hx=function(){return Vx(Rx().curve(Ux))},Wx=function(){var t=Bx().curve(Ux),e=t.curve,n=t.lineX0,r=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Vx(n())},delete t.lineX0,t.lineEndAngle=function(){return Vx(r())},delete t.lineX1,t.lineInnerRadius=function(){return Vx(i())},delete t.lineY0,t.lineOuterRadius=function(){return Vx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Gx(t)):e()._curve},t},qx=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]},Xx=Array.prototype.slice;function Zx(t){return t.source}function Jx(t){return t.target}function Qx(t){var e=Zx,n=Jx,r=Ix,i=Px,a=null;function o(){var o,s=Xx.call(arguments),u=e.apply(this,s),c=n.apply(this,s);if(a||(a=o=Ui()),t(a,+r.apply(this,(s[0]=u,s)),+i.apply(this,s),+r.apply(this,(s[0]=c,s)),+i.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(r="function"==typeof t?t:hx(+t),o):r},o.y=function(t){return arguments.length?(i="function"==typeof t?t:hx(+t),o):i},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function Kx(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function t_(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function e_(t,e,n,r,i){var a=qx(e,n),o=qx(e,n=(n+i)/2),s=qx(r,n),u=qx(r,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],u[0],u[1])}function n_(){return Qx(Kx)}function r_(){return Qx(t_)}function i_(){var t=Qx(e_);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var a_={draw:function(t,e){var n=Math.sqrt(e/xx);t.moveTo(n,0),t.arc(0,0,n,0,wx)}},o_={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},s_=Math.sqrt(1/3),u_=2*s_,c_={draw:function(t,e){var n=Math.sqrt(e/u_),r=n*s_;t.moveTo(0,-n),t.lineTo(r,0),t.lineTo(0,n),t.lineTo(-r,0),t.closePath()}},l_=Math.sin(xx/10)/Math.sin(7*xx/10),f_=Math.sin(wx/10)*l_,h_=-Math.cos(wx/10)*l_,d_={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),r=f_*n,i=h_*n;t.moveTo(0,-n),t.lineTo(r,i);for(var a=1;a<5;++a){var o=wx*a/5,s=Math.cos(o),u=Math.sin(o);t.lineTo(u*n,-s*n),t.lineTo(s*r-u*i,u*r+s*i)}t.closePath()}},p_={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}},y_=Math.sqrt(3),g_={draw:function(t,e){var n=-Math.sqrt(e/(3*y_));t.moveTo(0,2*n),t.lineTo(-y_*n,-n),t.lineTo(y_*n,-n),t.closePath()}},m_=Math.sqrt(3)/2,v_=1/Math.sqrt(12),b_=3*(v_/2+1),x_={draw:function(t,e){var n=Math.sqrt(e/b_),r=n/2,i=n*v_,a=r,o=n*v_+n,s=-a,u=o;t.moveTo(r,i),t.lineTo(a,o),t.lineTo(s,u),t.lineTo(-.5*r-m_*i,m_*r+-.5*i),t.lineTo(-.5*a-m_*o,m_*a+-.5*o),t.lineTo(-.5*s-m_*u,m_*s+-.5*u),t.lineTo(-.5*r+m_*i,-.5*i-m_*r),t.lineTo(-.5*a+m_*o,-.5*o-m_*a),t.lineTo(-.5*s+m_*u,-.5*u-m_*s),t.closePath()}},__=[a_,o_,c_,p_,d_,g_,x_],w_=function(){var t=hx(a_),e=hx(64),n=null;function r(){var r;if(n||(n=r=Ui()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:hx(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:hx(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r},k_=function(){};function E_(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function A_(t){this._context=t}A_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:E_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var T_=function(t){return new A_(t)};function S_(t){this._context=t}S_.prototype={areaStart:k_,areaEnd:k_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var M_=function(t){return new S_(t)};function O_(t){this._context=t}O_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var N_=function(t){return new O_(t)};function C_(t,e){this._basis=new A_(t),this._beta=e}C_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],o=t[n]-i,s=e[n]-a,u=-1;++u<=n;)r=u/n,this._basis.point(this._beta*t[u]+(1-this._beta)*(i+r*o),this._beta*e[u]+(1-this._beta)*(a+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var D_=function t(e){function n(t){return 1===e?new A_(t):new C_(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function L_(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function F_(t,e){this._context=t,this._k=(1-e)/6}F_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:L_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:L_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var I_=function t(e){function n(t){return new F_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function P_(t,e){this._context=t,this._k=(1-e)/6}P_.prototype={areaStart:k_,areaEnd:k_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:L_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var R_=function t(e){function n(t){return new P_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function B_(t,e){this._context=t,this._k=(1-e)/6}B_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:L_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var j_=function t(e){function n(t){return new B_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Y_(t,e,n){var r=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>1e-12){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*c+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,a,o,t._x2,t._y2)}function z_(t,e){this._context=t,this._alpha=e}z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var U_=function t(e){function n(t){return e?new z_(t,e):new F_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function $_(t,e){this._context=t,this._alpha=e}$_.prototype={areaStart:k_,areaEnd:k_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var G_=function t(e){function n(t){return e?new $_(t,e):new P_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function V_(t,e){this._context=t,this._alpha=e}V_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var H_=function t(e){function n(t){return e?new V_(t,e):new B_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function W_(t){this._context=t}W_.prototype={areaStart:k_,areaEnd:k_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};var q_=function(t){return new W_(t)};function X_(t){return t<0?-1:1}function Z_(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(X_(a)+X_(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function J_(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Q_(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function K_(t){this._context=t}function tw(t){this._context=new ew(t)}function ew(t){this._context=t}function nw(t){return new K_(t)}function rw(t){return new tw(t)}function iw(t){this._context=t}function aw(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var uw=function(t){return new sw(t,.5)};function cw(t){return new sw(t,0)}function lw(t){return new sw(t,1)}var fw=function(t,e){if((i=t.length)>1)for(var n,r,i,a=1,o=t[e[0]],s=o.length;a=0;)n[e]=e;return n};function dw(t,e){return t[e]}var pw=function(){var t=hx([]),e=hw,n=fw,r=dw;function i(i){var a,o,s=t.apply(this,arguments),u=i.length,c=s.length,l=new Array(c);for(a=0;a0){for(var n,r,i,a=0,o=t[0].length;a0)for(var n,r,i,a,o,s,u=0,c=t[e[0]].length;u0?(r[0]=a,r[1]=a+=i):i<0?(r[1]=o,r[0]=o+=i):(r[0]=0,r[1]=i)},mw=function(t,e){if((n=t.length)>0){for(var n,r=0,i=t[e[0]],a=i.length;r0&&(r=(n=t[e[0]]).length)>0){for(var n,r,i,a=0,o=1;oa&&(a=e,r=n);return r}var _w=function(t){var e=t.map(ww);return hw(t).sort((function(t,n){return e[t]-e[n]}))};function ww(t){for(var e,n=0,r=-1,i=t.length;++r0)){if(a/=h,h<0){if(a0){if(a>f)return;a>l&&(l=a)}if(a=r-u,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>l&&(l=a)}else if(h>0){if(a0)){if(a/=d,d<0){if(a0){if(a>f)return;a>l&&(l=a)}if(a=i-c,d||!(a<0)){if(a/=d,d<0){if(a>f)return;a>l&&(l=a)}else if(d>0){if(a0||f<1)||(l>0&&(t[0]=[u+l*h,c+l*d]),f<1&&(t[1]=[u+f*h,c+f*d]),!0)}}}}}function Uw(t,e,n,r,i){var a=t[1];if(a)return!0;var o,s,u=t[0],c=t.left,l=t.right,f=c[0],h=c[1],d=l[0],p=l[1],y=(f+d)/2,g=(h+p)/2;if(p===h){if(y=r)return;if(f>d){if(u){if(u[1]>=i)return}else u=[y,n];a=[y,i]}else{if(u){if(u[1]1)if(f>d){if(u){if(u[1]>=i)return}else u=[(n-s)/o,n];a=[(i-s)/o,i]}else{if(u){if(u[1]=r)return}else u=[e,o*e+s];a=[r,o*r+s]}else{if(u){if(u[0]=-lk)){var d=u*u+c*c,p=l*l+f*f,y=(f*d-c*p)/h,g=(u*p-l*d)/h,m=Ww.pop()||new qw;m.arc=t,m.site=i,m.x=y+o,m.y=(m.cy=g+s)+Math.sqrt(y*y+g*g),t.circle=m;for(var v=null,b=sk._;b;)if(m.yck)s=s.L;else{if(!((i=a-ik(s,o))>ck)){r>-ck?(e=s.P,n=s):i>-ck?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){ok[t.index]={site:t,halfedges:[]}}(t);var u=Kw(t);if(ak.insert(e,u),e||n){if(e===n)return Zw(e),n=Kw(e.site),ak.insert(u,n),u.edge=n.edge=Bw(e.site,u.site),Xw(e),void Xw(n);if(n){Zw(e),Zw(n);var c=e.site,l=c[0],f=c[1],h=t[0]-l,d=t[1]-f,p=n.site,y=p[0]-l,g=p[1]-f,m=2*(h*g-d*y),v=h*h+d*d,b=y*y+g*g,x=[(g*v-d*b)/m+l,(h*b-y*v)/m+f];Yw(n.edge,c,p,x),u.edge=Bw(c,t,null,x),n.edge=Bw(t,p,null,x),Xw(e),Xw(n)}else u.edge=Bw(e.site,u.site)}}function rk(t,e){var n=t.site,r=n[0],i=n[1],a=i-e;if(!a)return r;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],u=n[1],c=u-e;if(!c)return s;var l=s-r,f=1/a-1/c,h=l/c;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*c)-u+c/2+i-a/2)))/f+r:(r+s)/2}function ik(t,e){var n=t.N;if(n)return rk(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var ak,ok,sk,uk,ck=1e-6,lk=1e-12;function fk(t,e){return e[1]-t[1]||e[0]-t[0]}function hk(t,e){var n,r,i,a=t.sort(fk).pop();for(uk=[],ok=new Array(t.length),ak=new Rw,sk=new Rw;;)if(i=Hw,a&&(!i||a[1]ck||Math.abs(i[0][1]-i[1][1])>ck)||delete uk[a]}(o,s,u,c),function(t,e,n,r){var i,a,o,s,u,c,l,f,h,d,p,y,g=ok.length,m=!0;for(i=0;ick||Math.abs(y-h)>ck)&&(u.splice(s,0,uk.push(jw(o,d,Math.abs(p-t)ck?[t,Math.abs(f-t)ck?[Math.abs(h-r)ck?[n,Math.abs(f-n)ck?[Math.abs(h-e)=s)return null;var u=t-i.site[0],c=e-i.site[1],l=u*u+c*c;do{i=a.cells[r=o],o=null,i.halfedges.forEach((function(n){var r=a.edges[n],s=r.left;if(s!==i.site&&s||(s=r.right)){var u=t-s[0],c=e-s[1],f=u*u+c*c;fr?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}var Sk=function(){var t,e,n=_k,r=wk,i=Tk,a=Ek,o=Ak,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],c=250,l=hp,f=lt("start","zoom","end"),h=0;function d(t){t.property("__zoom",kk).on("wheel.zoom",x).on("mousedown.zoom",_).on("dblclick.zoom",w).filter(o).on("touchstart.zoom",k).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",A).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new gk(e,t.x,t.y)}function y(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new gk(t.k,r,i)}function g(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,e,n){t.on("start.zoom",(function(){v(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){v(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=v(t,i),o=r.apply(t,i),s=null==n?g(o):"function"==typeof n?n.apply(t,i):n,u=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),c=t.__zoom,f="function"==typeof e?e.apply(t,i):e,h=l(c.invert(s).concat(u/c.k),f.invert(s).concat(u/f.k));return function(t){if(1===t)t=f;else{var e=h(t),n=u/e[2];t=new gk(n,s[0]-e[0]*n,s[1]-e[1]*n)}a.zoom(null,t)}}))}function v(t,e,n){return!n&&t.__zooming||new b(t,e)}function b(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=v(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=Dn(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[o,e.invert(o)],or(this),t.start()}xk(),t.wheel=setTimeout(c,150),t.zoom("mouse",i(y(p(e,r),t.mouse[0],t.mouse[1]),t.extent,u))}function c(){t.wheel=null,t.end()}}function _(){if(!e&&n.apply(this,arguments)){var t=v(this,arguments,!0),r=we(ue.view).on("mousemove.zoom",c,!0).on("mouseup.zoom",l,!0),a=Dn(this),o=ue.clientX,s=ue.clientY;Ae(ue.view),bk(),t.mouse=[a,this.__zoom.invert(a)],or(this),t.start()}function c(){if(xk(),!t.moved){var e=ue.clientX-o,n=ue.clientY-s;t.moved=e*e+n*n>h}t.zoom("mouse",i(y(t.that.__zoom,t.mouse[0]=Dn(t.that),t.mouse[1]),t.extent,u))}function l(){r.on("mousemove.zoom mouseup.zoom",null),Te(ue.view,t.moved),xk(),t.end()}}function w(){if(n.apply(this,arguments)){var t=this.__zoom,e=Dn(this),a=t.invert(e),o=t.k*(ue.shiftKey?.5:2),s=i(y(p(t,o),e,a),r.apply(this,arguments),u);xk(),c>0?we(this).transition().duration(c).call(m,s,e):we(this).call(d.transform,s)}}function k(){if(n.apply(this,arguments)){var e,r,i,a,o=ue.touches,s=o.length,u=v(this,arguments,ue.changedTouches.length===s);for(bk(),r=0;rf&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},T={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 5;case 1:case 2:case 3:case 4:break;case 5:return this.begin("ID"),10;case 6:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),42;case 7:return this.popState(),this.popState(),this.begin("LINE"),12;case 8:return this.popState(),this.popState(),5;case 9:return this.begin("LINE"),21;case 10:return this.begin("LINE"),23;case 11:return this.begin("LINE"),24;case 12:return this.begin("LINE"),25;case 13:return this.begin("LINE"),30;case 14:return this.begin("LINE"),27;case 15:return this.begin("LINE"),29;case 16:return this.popState(),13;case 17:return 22;case 18:return 37;case 19:return 38;case 20:return 33;case 21:return 31;case 22:return this.begin("ID"),16;case 23:return this.begin("ID"),17;case 24:return 19;case 25:return 6;case 26:return 15;case 27:return 36;case 28:return 5;case 29:return e.yytext=e.yytext.trim(),42;case 30:return 45;case 31:return 46;case 32:return 43;case 33:return 44;case 34:return 47;case 35:return 48;case 36:return 49;case 37:return 40;case 38:return 41;case 39:return 5;case 40:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:participant\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[2,3,16],inclusive:!1},ALIAS:{rules:[2,3,7,8],inclusive:!1},ID:{rules:[2,3,6],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],inclusive:!0}}};function S(){this.yy={}}return A.lexer=T,S.prototype=A,A.Parser=S,new S}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){var r=n(168);t.exports={Graph:r.Graph,json:n(271),alg:n(272),version:r.version}},function(t,e,n){var r;try{r={cloneDeep:n(283),constant:n(78),defaults:n(137),each:n(79),filter:n(111),find:n(284),flatten:n(139),forEach:n(109),forIn:n(289),has:n(85),isUndefined:n(122),last:n(290),map:n(123),mapValues:n(291),max:n(292),merge:n(294),min:n(299),minBy:n(300),now:n(301),pick:n(144),range:n(145),reduce:n(125),sortBy:n(308),uniqueId:n(146),values:n(130),zipObject:n(313)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){ +/** + * @license + * Copyright (c) 2012-2013 Chris Pettitt + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +t.exports={graphlib:n(281),dagre:n(136),intersect:n(338),render:n(340),util:n(10),version:n(352)}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(3),i=n(13).Graph;function a(t,e,n,i){var a;do{a=r.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function o(t){return r.max(r.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!r.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,u=t.width/2,c=t.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(s)*u>Math.abs(o)*c?(s<0&&(c=-c),n=c*o/s,r=c):(o<0&&(u=-u),n=u,r=u*s/o);return{x:i+n,y:a+r}},buildLayerMatrix:function(t){var e=r.map(r.range(o(t)+1),(function(){return[]}));return r.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;r.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank})));r.forEach(t.nodes(),(function(n){var i=t.node(n);r.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.forEach(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.forEach(n,(function(e,n){r.isUndefined(e)&&n%a!=0?--i:i&&r.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,r){var i={width:0,height:0};arguments.length>=4&&(i.rank=n,i.order=r);return a(t,"border",i,e)},maxRank:o,partition:function(t,e){var n={lhs:[],rhs:[]};return r.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=r.now();try{return e()}finally{console.log(t+" time: "+(r.now()-n)+"ms")}},notime:function(t,e){return e()}}},function(t,e,n){var r;try{r={clone:n(169),constant:n(78),each:n(79),filter:n(111),has:n(85),isArray:n(4),isEmpty:n(246),isFunction:n(31),isUndefined:n(122),keys:n(25),map:n(123),reduce:n(125),size:n(249),transform:n(255),union:n(256),values:n(130)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(37);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(r.isPlainObject(n)){var i=n.transition;if(r.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&d())}function d(){if(!l){var t=s(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f1)for(var n=1;n=0;r--){var i=t[r];"."===i?t.splice(r,1):".."===i?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}function r(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:t.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(e=o+"/"+e,i="/"===o.charAt(0))}return(i?"/":"")+(e=n(r(e.split("/"),(function(t){return!!t})),!i).join("/"))||"."},e.normalize=function(t){var a=e.isAbsolute(t),o="/"===i(t,-1);return(t=n(r(t.split("/"),(function(t){return!!t})),!a).join("/"))||a||(t="."),t&&o&&(t+="/"),(a?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(r(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e=0&&""===t[n];n--);return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var i=r(t.split("/")),a=r(n.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(e=t.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=function(t){"string"!=typeof t&&(t+="");var e,n=0,r=-1,i=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!i){n=e+1;break}}else-1===r&&(i=!1,r=e+1);return-1===r?"":t.slice(n,r)}(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,n=0,r=-1,i=!0,a=0,o=t.length-1;o>=0;--o){var s=t.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===e?e=o:1!==a&&(a=1):-1!==e&&(a=-1);else if(!i){n=o+1;break}}return-1===e||-1===r||0===a||1===a&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n(11))},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,4],i=[2,4],a=[1,9],o=[1,11],s=[1,13],u=[1,14],c=[1,15],l=[1,16],f=[1,21],h=[1,17],d=[1,18],p=[1,19],y=[1,20],g=[1,22],m=[1,4,5,13,14,16,18,19,21,22,23,24,25,28],v=[1,4,5,11,12,13,14,16,18,19,21,22,23,24,25,28],b=[4,5,13,14,16,18,19,21,22,23,24,25,28],x={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,idStatement:10,DESCR:11,"--\x3e":12,HIDE_EMPTY:13,scale:14,WIDTH:15,COMPOSIT_STATE:16,STRUCT_START:17,STRUCT_STOP:18,STATE_DESCR:19,AS:20,ID:21,FORK:22,JOIN:23,CONCURRENT:24,note:25,notePosition:26,NOTE_TEXT:27,EDGE_STATE:28,left_of:29,right_of:30,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",11:"DESCR",12:"--\x3e",13:"HIDE_EMPTY",14:"scale",15:"WIDTH",16:"COMPOSIT_STATE",17:"STRUCT_START",18:"STRUCT_STOP",19:"STATE_DESCR",20:"AS",21:"ID",22:"FORK",23:"JOIN",24:"CONCURRENT",25:"note",27:"NOTE_TEXT",28:"EDGE_STATE",29:"left_of",30:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,4],[9,4],[10,1],[10,1],[26,1],[26,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.setRootDoc(a[s]),a[s];case 4:this.$=[];break;case 5:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 6:case 7:this.$=a[s];break;case 8:this.$="nl";break;case 9:this.$={stmt:"state",id:a[s],type:"default",description:""};break;case 10:this.$={stmt:"state",id:a[s-1],type:"default",description:r.trimColon(a[s])};break;case 11:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-2],type:"default",description:""},state2:{stmt:"state",id:a[s],type:"default",description:""}};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-3],type:"default",description:""},state2:{stmt:"state",id:a[s-1],type:"default",description:""},description:a[s].substr(1).trim()};break;case 16:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 17:var u=a[s],c=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");u=l[0],c=[c,l[1]]}this.$={stmt:"state",id:u,type:"default",description:c};break;case 18:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 19:this.$={stmt:"state",id:a[s],type:"fork"};break;case 20:this.$={stmt:"state",id:a[s],type:"join"};break;case 21:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 22:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 24:case 25:this.$=a[s]}},table:[{3:1,4:e,5:n,6:r},{1:[3]},{3:5,4:e,5:n,6:r},{3:6,4:e,5:n,6:r},t([1,4,5,13,14,16,19,21,22,23,24,25,28],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,19:l,21:f,22:h,23:d,24:p,25:y,28:g},t(m,[2,5]),{9:23,10:12,13:s,14:u,16:c,19:l,21:f,22:h,23:d,24:p,25:y,28:g},t(m,[2,7]),t(m,[2,8]),t(m,[2,9],{11:[1,24],12:[1,25]}),t(m,[2,13]),{15:[1,26]},t(m,[2,15],{17:[1,27]}),{20:[1,28]},t(m,[2,19]),t(m,[2,20]),t(m,[2,21]),{26:29,27:[1,30],29:[1,31],30:[1,32]},t(v,[2,24]),t(v,[2,25]),t(m,[2,6]),t(m,[2,10]),{10:33,21:f,28:g},t(m,[2,14]),t(b,i,{7:34}),{21:[1,35]},{21:[1,36]},{20:[1,37]},{21:[2,26]},{21:[2,27]},t(m,[2,11],{11:[1,38]}),{4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,18:[1,39],19:l,21:f,22:h,23:d,24:p,25:y,28:g},t(m,[2,17],{17:[1,40]}),{27:[1,41]},{21:[1,42]},t(m,[2,12]),t(m,[2,16]),t(b,i,{7:43}),t(m,[2,22]),t(m,[2,23]),{4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,18:[1,44],19:l,21:f,22:h,23:d,24:p,25:y,28:g},t(m,[2,18])],defaultActions:{5:[2,1],6:[2,2],31:[2,26],32:[2,27]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},_={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 5;case 1:case 2:case 3:case 4:break;case 5:return this.pushState("SCALE"),14;case 6:return 15;case 7:this.popState();break;case 8:this.pushState("STATE");break;case 9:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),22;case 10:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 11:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),22;case 12:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 13:this.begin("STATE_STRING");break;case 14:return this.popState(),this.pushState("STATE_ID"),"AS";case 15:return this.popState(),"ID";case 16:this.popState();break;case 17:return"STATE_DESCR";case 18:return 16;case 19:this.popState();break;case 20:return this.popState(),this.pushState("struct"),17;case 21:return this.popState(),18;case 22:break;case 23:return this.begin("NOTE"),25;case 24:return this.popState(),this.pushState("NOTE_ID"),29;case 25:return this.popState(),this.pushState("NOTE_ID"),30;case 26:this.popState(),this.pushState("FLOATING_NOTE");break;case 27:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 28:break;case 29:return"NOTE_TEXT";case 30:return this.popState(),"ID";case 31:return this.popState(),this.pushState("NOTE_TEXT"),21;case 32:return this.popState(),e.yytext=e.yytext.substr(2).trim(),27;case 33:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),27;case 34:case 35:return 6;case 36:return 13;case 37:return 28;case 38:return 21;case 39:return e.yytext=e.yytext.trim(),11;case 40:return 12;case 41:return 24;case 42:return 5;case 43:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:\s*[^:;]+end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[2,3],inclusive:!1},struct:{rules:[2,3,8,21,22,23,37,38,39,40,41],inclusive:!1},FLOATING_NOTE_ID:{rules:[30],inclusive:!1},FLOATING_NOTE:{rules:[27,28,29],inclusive:!1},NOTE_TEXT:{rules:[32,33],inclusive:!1},NOTE_ID:{rules:[31],inclusive:!1},NOTE:{rules:[24,25,26],inclusive:!1},SCALE:{rules:[6,7],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[15],inclusive:!1},STATE_STRING:{rules:[16,17],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[2,3,9,10,11,12,13,14,18,19,20],inclusive:!1},ID:{rules:[2,3],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,8,20,23,34,35,36,37,38,39,40,42,43],inclusive:!0}}};function w(){this.yy={}}return x.lexer=_,w.prototype=x,x.Parser=w,new w}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t){t.exports=function(){"use strict";var e,r;function i(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function c(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function l(t,e){var n,r=[];for(n=0;n>>0,r=0;rgt(t)?(a=t+1,s-gt(t)):(a=t,s),{year:a,dayOfYear:o}}function It(t,e,n){var r,i,a=Lt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+Pt(i=t.year()-1,e,n):o>Pt(t.year(),e,n)?(r=o-Pt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function Pt(t,e,n){var r=Lt(t,e,n),i=Lt(t+1,e,n);return(gt(t)-r+i)/7}function Rt(t,e){return t.slice(e,7).concat(t.slice(0,e))}G("w",["ww",2],"wo","week"),G("W",["WW",2],"Wo","isoWeek"),F("week","w"),F("isoWeek","W"),B("week",5),B("isoWeek",5),lt("w",Q),lt("ww",Q,q),lt("W",Q),lt("WW",Q,q),yt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=k(t)})),G("d",0,"do","day"),G("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),G("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),G("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),G("e",0,0,"weekday"),G("E",0,0,"isoWeekday"),F("day","d"),F("weekday","e"),F("isoWeekday","E"),B("day",11),B("weekday",11),B("isoWeekday",11),lt("d",Q),lt("e",Q),lt("E",Q),lt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),lt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),lt("dddd",(function(t,e){return e.weekdaysRegex(t)})),yt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:p(n).invalidWeekday=t})),yt(["d","e","E"],(function(t,e,n,r){e[r]=k(t)}));var Bt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),jt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=ut,Ut=ut,$t=ut;function Gt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],u=[],c=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),u.push(a),c.push(r),c.push(i),c.push(a);for(o.sort(t),s.sort(t),u.sort(t),c.sort(t),e=0;e<7;e++)s[e]=ht(s[e]),u[e]=ht(u[e]),c[e]=ht(c[e]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Vt(){return this.hours()%12||12}function Ht(t,e){G(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Wt(t,e){return e._meridiemParse}G("H",["HH",2],0,"hour"),G("h",["hh",2],0,Vt),G("k",["kk",2],0,(function(){return this.hours()||24})),G("hmm",0,0,(function(){return""+Vt.apply(this)+j(this.minutes(),2)})),G("hmmss",0,0,(function(){return""+Vt.apply(this)+j(this.minutes(),2)+j(this.seconds(),2)})),G("Hmm",0,0,(function(){return""+this.hours()+j(this.minutes(),2)})),G("Hmmss",0,0,(function(){return""+this.hours()+j(this.minutes(),2)+j(this.seconds(),2)})),Ht("a",!0),Ht("A",!1),F("hour","h"),B("hour",13),lt("a",Wt),lt("A",Wt),lt("H",Q),lt("h",Q),lt("k",Q),lt("HH",Q,q),lt("hh",Q,q),lt("kk",Q,q),lt("hmm",K),lt("hmmss",tt),lt("Hmm",K),lt("Hmmss",tt),pt(["H","HH"],3),pt(["k","kk"],(function(t,e,n){var r=k(t);e[3]=24===r?0:r})),pt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),pt(["h","hh"],(function(t,e,n){e[3]=k(t),p(n).bigHour=!0})),pt("hmm",(function(t,e,n){var r=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r)),p(n).bigHour=!0})),pt("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r,2)),e[5]=k(t.substr(i)),p(n).bigHour=!0})),pt("Hmm",(function(t,e,n){var r=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r))})),pt("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r,2)),e[5]=k(t.substr(i))}));var qt,Xt=xt("Hours",!0),Zt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:At,monthsShort:Tt,week:{dow:0,doy:6},weekdays:Bt,weekdaysMin:Yt,weekdaysShort:jt,meridiemParse:/[ap]\.?m?\.?/i},Jt={},Qt={};function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function te(e){var r=null;if(!Jt[e]&&void 0!==t&&t&&t.exports)try{r=qt._abbr,n(167)("./"+e),ee(r)}catch(e){}return Jt[e]}function ee(t,e){var n;return t&&((n=s(e)?re(t):ne(t,e))?qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),qt._abbr}function ne(t,e){if(null===e)return delete Jt[t],null;var n,r=Zt;if(e.abbr=t,null!=Jt[t])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=Jt[t]._config;else if(null!=e.parentLocale)if(null!=Jt[e.parentLocale])r=Jt[e.parentLocale]._config;else{if(null==(n=te(e.parentLocale)))return Qt[e.parentLocale]||(Qt[e.parentLocale]=[]),Qt[e.parentLocale].push({name:t,config:e}),null;r=n._config}return Jt[t]=new D(C(r,e)),Qt[t]&&Qt[t].forEach((function(t){ne(t.name,t.config)})),ee(t),Jt[t]}function re(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return qt;if(!a(t)){if(e=te(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a=e&&E(i,n,!0)>=e-1)break;e--}a++}return qt}(t)}function ie(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||11kt(n[0],n[1])?2:n[3]<0||24Pt(n,a,o)?p(t)._overflowWeeks=!0:null!=u?p(t)._overflowWeekday=!0:(s=Ft(n,r,i,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ae(t._a[0],r[0]),(t._dayOfYear>gt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Dt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=r[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Dt:function(t,e,n,r,i,a,o){var s;return t<100&&0<=t?(s=new Date(t+400,e,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,i,a,o),s}).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(p(t).weekdayMismatch=!0)}}var se=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ue=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/Z|[+-]\d\d(?::?\d\d)?/,le=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],fe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],he=/^\/?Date\((\-?\d+)/i;function de(t){var e,n,r,i,a,o,s=t._i,u=se.exec(s)||ue.exec(s);if(u){for(p(t).iso=!0,e=0,n=le.length;en.valueOf():n.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},on.isLocal=function(){return!!this.isValid()&&!this._isUTC},on.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},on.isUtc=Le,on.isUTC=Le,on.zoneAbbr=function(){return this._isUTC?"UTC":""},on.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},on.dates=T("dates accessor is deprecated. Use date instead.",Ke),on.months=T("months accessor is deprecated. Use month instead",Mt),on.years=T("years accessor is deprecated. Use year instead",bt),on.zone=T("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),on.isDSTShifted=T("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),(t=ve(t))._a){var e=t._isUTC?d(t._a):xe(t._a);this._isDSTShifted=this.isValid()&&0f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},Gt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:break;case 1:this.begin("string");break;case 2:this.popState();break;case 3:return"STR";case 4:return 63;case 5:return 72;case 6:return 64;case 7:return 77;case 8:return 65;case 9:return 66;case 10:return 67;case 11:case 12:return t.lex.firstGraph()&&this.begin("dir"),12;case 13:return 26;case 14:return 30;case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:return this.popState(),13;case 25:return 78;case 26:return 86;case 27:return 35;case 28:return 83;case 29:return 34;case 30:return 8;case 31:return 79;case 32:return 97;case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:return 58;case 61:case 62:case 63:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:return 57;case 73:return 39;case 74:return 40;case 75:return 41;case 76:return 42;case 77:return 43;case 78:return 44;case 79:return 45;case 80:return 46;case 81:return 84;case 82:return 87;case 83:return 98;case 84:return 95;case 85:return 88;case 86:case 87:return 96;case 88:return 89;case 89:return 49;case 90:return 69;case 91:return"SEP";case 92:return 68;case 93:return 82;case 94:return 51;case 95:return 50;case 96:return 53;case 97:return 52;case 98:return 93;case 99:return 94;case 100:return 59;case 101:return 37;case 102:return 38;case 103:return 28;case 104:return 29;case 105:return 47;case 106:return 48;case 107:return 104;case 108:return 9;case 109:return 10;case 110:return 11}},rules:[/^(?:%%[^\n]*\n*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*--[x]\s*)/,/^(?:\s*-->\s*)/,/^(?:\s*<-->\s*)/,/^(?:\s*[x]--[x]\s*)/,/^(?:\s*[o]--[o]\s*)/,/^(?:\s*[o]\.-[o]\s*)/,/^(?:\s*<==>\s*)/,/^(?:\s*[o]==[o]\s*)/,/^(?:\s*[x]==[x]\s*)/,/^(?:\s*[x].-[x]\s*)/,/^(?:\s*[x]-\.-[x]\s*)/,/^(?:\s*<\.->\s*)/,/^(?:\s*<-\.->\s*)/,/^(?:\s*[o]-\.-[o]\s*)/,/^(?:\s*--[o]\s*)/,/^(?:\s*---\s*)/,/^(?:\s*-\.-[x]\s*)/,/^(?:\s*-\.->\s*)/,/^(?:\s*-\.-[o]\s*)/,/^(?:\s*-\.-\s*)/,/^(?:\s*.-[x]\s*)/,/^(?:\s*\.->\s*)/,/^(?:\s*\.-[o]\s*)/,/^(?:\s*\.-\s*)/,/^(?:\s*==[x]\s*)/,/^(?:\s*==>\s*)/,/^(?:\s*==[o]\s*)/,/^(?:\s*==[\=]\s*)/,/^(?:\s*<--\s*)/,/^(?:\s*[x]--\s*)/,/^(?:\s*[o]--\s*)/,/^(?:\s*<-\.\s*)/,/^(?:\s*[x]-\.\s*)/,/^(?:\s*[o]-\.\s*)/,/^(?:\s*<==\s*)/,/^(?:\s*[x]==\s*)/,/^(?:\s*[o]==\s*)/,/^(?:\s*--\s*)/,/^(?:\s*-\.\s*)/,/^(?:\s*==\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r|\n|\r\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{vertex:{rules:[],inclusive:!1},dir:{rules:[15,16,17,18,19,20,21,22,23,24],inclusive:!1},string:{rules:[2,3],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,8,9,10,11,12,13,14,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],inclusive:!0}}};function Vt(){this.yy={}}return $t.lexer=Gt,Vt.prototype=$t,$t.Parser=Vt,new Vt}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,8,10,11,12,13,14,15,16,17,19,21],n=[1,9],r=[1,10],i=[1,11],a=[1,12],o=[1,13],s=[1,14],u=[1,15],c=[1,17],l=[1,18],f={trace:function(){},yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,dateFormat:11,inclusiveEndDates:12,axisFormat:13,excludes:14,todayMarker:15,title:16,section:17,clickStatement:18,taskTxt:19,taskData:20,click:21,callbackname:22,callbackargs:23,href:24,clickStatementDebug:25,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",11:"dateFormat",12:"inclusiveEndDates",13:"axisFormat",14:"excludes",15:"todayMarker",16:"title",17:"section",19:"taskTxt",20:"taskData",21:"click",22:"callbackname",23:"callbackargs",24:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[18,2],[18,3],[18,3],[18,4],[18,3],[18,4],[18,2],[25,2],[25,3],[25,3],[25,4],[25,3],[25,4],[25,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:this.$=[];break;case 3:a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 5:this.$=a[s];break;case 6:case 7:this.$=[];break;case 8:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 9:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 10:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 11:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 12:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 13:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 14:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 16:r.addTask(a[s-1],a[s]),this.$="task";break;case 17:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 18:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 19:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 20:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 21:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 22:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 23:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 24:case 30:this.$=a[s-1]+" "+a[s];break;case 25:case 26:case 28:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 27:case 29:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s]}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:r,13:i,14:a,15:o,16:s,17:u,18:16,19:c,21:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:19,11:n,12:r,13:i,14:a,15:o,16:s,17:u,18:16,19:c,21:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),{20:[1,20]},{22:[1,21],24:[1,22]},t(e,[2,4]),t(e,[2,16]),t(e,[2,17],{23:[1,23],24:[1,24]}),t(e,[2,23],{22:[1,25]}),t(e,[2,18],{24:[1,26]}),t(e,[2,19]),t(e,[2,21],{23:[1,27]}),t(e,[2,20]),t(e,[2,22])],defaultActions:{},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},h={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 10;case 1:case 2:case 3:break;case 4:this.begin("href");break;case 5:this.popState();break;case 6:return 24;case 7:this.begin("callbackname");break;case 8:this.popState();break;case 9:this.popState(),this.begin("callbackargs");break;case 10:return 22;case 11:this.popState();break;case 12:return 23;case 13:this.begin("click");break;case 14:this.popState();break;case 15:return 21;case 16:return 4;case 17:return 11;case 18:return 12;case 19:return 13;case 20:return 14;case 21:return 15;case 22:return"date";case 23:return 16;case 24:return 17;case 25:return 19;case 26:return 20;case 27:return":";case 28:return 6;case 29:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{callbackargs:{rules:[11,12],inclusive:!1},callbackname:{rules:[8,9,10],inclusive:!1},href:{rules:[5,6],inclusive:!1},click:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,7,13,16,17,18,19,20,21,22,23,24,25,26,27,28,29],inclusive:!0}}};function d(){this.yy={}}return f.lexer=h,d.prototype=f,f.Parser=d,new d}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,8,10,11,12,13],n=[1,9],r=[1,10],i=[1,11],a={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,title:11,section:12,taskName:13,taskData:14,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NL",11:"title",12:"section",13:"taskName",14:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:this.$=[];break;case 3:a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 5:this.$=a[s];break;case 6:case 7:this.$=[];break;case 8:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 9:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 10:r.addTask(a[s-1],a[s]),this.$="task"}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:r,13:i},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:12,11:n,12:r,13:i},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),t(e,[2,9]),{14:[1,13]},t(e,[2,4]),t(e,[2,10])],defaultActions:{},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},o={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 10;case 1:case 2:case 3:break;case 4:return 4;case 5:return 11;case 6:return 12;case 7:return 13;case 8:return 14;case 9:return":";case 10:return 6;case 11:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11],inclusive:!0}}};function s(){this.yy={}}return a.lexer=o,s.prototype=a,a.Parser=s,new s}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){var r=n(95),i=n(74),a=n(19);t.exports=function(t){return a(t)?r(t):i(t)}},function(t,e,n){var r;if(!r)try{r=n(0)}catch(t){}r||(r=window.d3),t.exports=r},function(t,e,n){var r=n(180),i=n(186);t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},function(t,e,n){var r=n(32),i=n(182),a=n(183),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?i(t):a(t)}},function(t,e){t.exports=function(t){return t}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(28),i=n(9);t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},function(t,e,n){var r=n(12).Symbol;t.exports=r},function(t,e,n){(function(t){var r=n(12),i=n(202),a=e&&!e.nodeType&&e,o=a&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===a?r.Buffer:void 0,u=(s?s.isBuffer:void 0)||i;t.exports=u}).call(this,n(6)(t))},function(t,e,n){var r=n(95),i=n(206),a=n(19);t.exports=function(t){return a(t)?r(t,!0):i(t)}},function(t,e,n){var r=n(211),i=n(69),a=n(212),o=n(104),s=n(213),u=n(28),c=n(93),l=c(r),f=c(i),h=c(a),d=c(o),p=c(s),y=u;(r&&"[object DataView]"!=y(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=y(new i)||a&&"[object Promise]"!=y(a.resolve())||o&&"[object Set]"!=y(new o)||s&&"[object WeakMap]"!=y(new s))&&(y=function(t){var e=u(t),n="[object Object]"==e?t.constructor:void 0,r=n?c(n):"";if(r)switch(r){case l:return"[object DataView]";case f:return"[object Map]";case h:return"[object Promise]";case d:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=y},function(t,e,n){var r=n(28),i=n(16);t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==r(t)}},function(t,e,n){var r;try{r={defaults:n(137),each:n(79),isFunction:n(31),isPlainObject:n(141),pick:n(144),has:n(85),range:n(145),uniqueId:n(146)}}catch(t){}r||(r=window._),t.exports=r},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,13],n=[1,16],r=[1,14],i=[1,15],a=[1,17],o=[1,18],s=[1,20],u=[1,21],c=[1,22],l=[6,8],f=[1,31],h=[1,32],d=[1,33],p=[1,34],y=[1,35],g=[1,36],m=[6,8,14,20,28,31,32,33,34,35,36],v=[6,8,12,14,20,24,28,31,32,33,34,35,36,52,53,54],b=[28,52,53,54],x=[28,35,36,52,53,54],_=[28,31,32,33,34,52,53,54],w=[6,8,14],k=[1,59],E={trace:function(){},yy:{},symbols_:{error:2,mermaidDoc:3,graphConfig:4,CLASS_DIAGRAM:5,NEWLINE:6,statements:7,EOF:8,statement:9,className:10,alphaNumToken:11,GENERICTYPE:12,relationStatement:13,LABEL:14,classStatement:15,methodStatement:16,annotationStatement:17,clickStatement:18,CLASS:19,STRUCT_START:20,members:21,STRUCT_STOP:22,ANNOTATION_START:23,ANNOTATION_END:24,MEMBER:25,SEPARATOR:26,relation:27,STR:28,relationType:29,lineType:30,AGGREGATION:31,EXTENSION:32,COMPOSITION:33,DEPENDENCY:34,LINE:35,DOTTED_LINE:36,CALLBACK:37,LINK:38,commentToken:39,textToken:40,graphCodeTokens:41,textNoTagsToken:42,TAGSTART:43,TAGEND:44,"==":45,"--":46,PCT:47,DEFAULT:48,SPACE:49,MINUS:50,keywords:51,UNICODE_TEXT:52,NUM:53,ALPHA:54,$accept:0,$end:1},terminals_:{2:"error",5:"CLASS_DIAGRAM",6:"NEWLINE",8:"EOF",12:"GENERICTYPE",14:"LABEL",19:"CLASS",20:"STRUCT_START",22:"STRUCT_STOP",23:"ANNOTATION_START",24:"ANNOTATION_END",25:"MEMBER",26:"SEPARATOR",28:"STR",31:"AGGREGATION",32:"EXTENSION",33:"COMPOSITION",34:"DEPENDENCY",35:"LINE",36:"DOTTED_LINE",37:"CALLBACK",38:"LINK",41:"graphCodeTokens",43:"TAGSTART",44:"TAGEND",45:"==",46:"--",47:"PCT",48:"DEFAULT",49:"SPACE",50:"MINUS",51:"keywords",52:"UNICODE_TEXT",53:"NUM",54:"ALPHA"},productions_:[0,[3,1],[4,4],[7,1],[7,2],[7,3],[10,2],[10,1],[10,3],[10,2],[9,1],[9,2],[9,1],[9,1],[9,1],[9,1],[15,2],[15,5],[17,4],[21,1],[21,2],[16,1],[16,2],[16,1],[16,1],[13,3],[13,4],[13,4],[13,5],[27,3],[27,2],[27,2],[27,1],[29,1],[29,1],[29,1],[29,1],[30,1],[30,1],[18,3],[18,4],[18,3],[18,4],[39,1],[39,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[42,1],[42,1],[42,1],[42,1],[11,1],[11,1],[11,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:this.$=a[s-1]+a[s];break;case 7:this.$=a[s];break;case 8:this.$=a[s-2]+"~"+a[s-1]+a[s];break;case 9:this.$=a[s-1]+"~"+a[s];break;case 10:r.addRelation(a[s]);break;case 11:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 16:r.addClass(a[s]);break;case 17:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 18:r.addAnnotation(a[s],a[s-2]);break;case 19:this.$=[a[s]];break;case 20:a[s].push(a[s-1]),this.$=a[s];break;case 21:break;case 22:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 23:case 24:break;case 25:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 26:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 27:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 28:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 29:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 30:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 31:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 32:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 33:this.$=r.relationType.AGGREGATION;break;case 34:this.$=r.relationType.EXTENSION;break;case 35:this.$=r.relationType.COMPOSITION;break;case 36:this.$=r.relationType.DEPENDENCY;break;case 37:this.$=r.lineType.LINE;break;case 38:this.$=r.lineType.DOTTED_LINE;break;case 39:this.$=a[s-2],r.setClickEvent(a[s-1],a[s],void 0);break;case 40:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 41:this.$=a[s-2],r.setLink(a[s-1],a[s],void 0);break;case 42:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s])}},table:[{3:1,4:2,5:[1,3]},{1:[3]},{1:[2,1]},{6:[1,4]},{7:5,9:6,10:12,11:19,13:7,15:8,16:9,17:10,18:11,19:e,23:n,25:r,26:i,37:a,38:o,52:s,53:u,54:c},{8:[1,23]},{6:[1,24],8:[2,3]},t(l,[2,10],{14:[1,25]}),t(l,[2,12]),t(l,[2,13]),t(l,[2,14]),t(l,[2,15]),t(l,[2,21],{27:26,29:29,30:30,14:[1,28],28:[1,27],31:f,32:h,33:d,34:p,35:y,36:g}),{10:37,11:19,52:s,53:u,54:c},t(l,[2,23]),t(l,[2,24]),{11:38,52:s,53:u,54:c},{10:39,11:19,52:s,53:u,54:c},{10:40,11:19,52:s,53:u,54:c},t(m,[2,7],{11:19,10:41,12:[1,42],52:s,53:u,54:c}),t(v,[2,56]),t(v,[2,57]),t(v,[2,58]),{1:[2,2]},{7:43,8:[2,4],9:6,10:12,11:19,13:7,15:8,16:9,17:10,18:11,19:e,23:n,25:r,26:i,37:a,38:o,52:s,53:u,54:c},t(l,[2,11]),{10:44,11:19,28:[1,45],52:s,53:u,54:c},{27:46,29:29,30:30,31:f,32:h,33:d,34:p,35:y,36:g},t(l,[2,22]),{30:47,35:y,36:g},t(b,[2,32],{29:48,31:f,32:h,33:d,34:p}),t(x,[2,33]),t(x,[2,34]),t(x,[2,35]),t(x,[2,36]),t(_,[2,37]),t(_,[2,38]),t(l,[2,16],{20:[1,49]}),{24:[1,50]},{28:[1,51]},{28:[1,52]},t(m,[2,6]),t(m,[2,9],{11:19,10:53,52:s,53:u,54:c}),{8:[2,5]},t(w,[2,25]),{10:54,11:19,52:s,53:u,54:c},{10:55,11:19,28:[1,56],52:s,53:u,54:c},t(b,[2,31],{29:57,31:f,32:h,33:d,34:p}),t(b,[2,30]),{21:58,25:k},{10:60,11:19,52:s,53:u,54:c},t(l,[2,39],{28:[1,61]}),t(l,[2,41],{28:[1,62]}),t(m,[2,8]),t(w,[2,27]),t(w,[2,26]),{10:63,11:19,52:s,53:u,54:c},t(b,[2,29]),{22:[1,64]},{21:65,22:[2,19],25:k},t(l,[2,18]),t(l,[2,40]),t(l,[2,42]),t(w,[2,28]),t(l,[2,17]),{22:[2,20]}],defaultActions:{2:[2,1],23:[2,2],43:[2,5],65:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},A={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:break;case 1:return 6;case 2:break;case 3:return 5;case 4:return this.begin("struct"),20;case 5:return"EOF_IN_STRUCT";case 6:return"OPEN_IN_STRUCT";case 7:return this.popState(),22;case 8:break;case 9:return"MEMBER";case 10:return 19;case 11:return 37;case 12:return 38;case 13:return 23;case 14:return 24;case 15:this.begin("generic");break;case 16:this.popState();break;case 17:return"GENERICTYPE";case 18:this.begin("string");break;case 19:this.popState();break;case 20:return"STR";case 21:case 22:return 32;case 23:case 24:return 34;case 25:return 33;case 26:return 31;case 27:return 35;case 28:return 36;case 29:return 14;case 30:return 50;case 31:return"DOT";case 32:return"PLUS";case 33:return 47;case 34:case 35:return"EQUALS";case 36:return 54;case 37:return"PUNCTUATION";case 38:return 53;case 39:return 52;case 40:return 49;case 41:return 8}},rules:[/^(?:%%[^\n]*\n*)/,/^(?:\n+)/,/^(?:\s+)/,/^(?:classDiagram\b)/,/^(?:[\{])/,/^(?:$)/,/^(?:[\{])/,/^(?:\})/,/^(?:[\n])/,/^(?:[^\{\}\n]*)/,/^(?:class\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::[^\n;]+)/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{string:{rules:[19,20],inclusive:!1},generic:{rules:[16,17],inclusive:!1},struct:{rules:[5,6,7,8,9],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,10,11,12,13,14,15,18,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],inclusive:!0}}};function T(){this.yy={}}return E.lexer=A,T.prototype=E,E.Parser=T,new T}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t){t.exports=JSON.parse('{"name":"mermaid","version":"8.5.1","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build":"webpack --progress --colors -p","postbuild":"documentation build src/mermaidAPI.js --shallow -f md --markdown-toc false -o docs/mermaidAPI.md","build:watch":"yarn build --watch","minify":"minify ./dist/mermaid.js > ./dist/mermaid.min.js","release":"yarn build -p --config webpack.config.prod.babel.js","lint":"eslint src","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack-dev-server --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn release && yarn test && yarn e2e","prepush":"yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","crypto-random-string":"^3.0.1","d3":"^5.7.0","dagre":"^0.8.4","dagre-d3":"^0.6.4","entity-decode":"^2.0.2","graphlib":"^2.1.7","he":"^1.2.0","minify":"^4.1.1","moment-mini":"^2.22.1","scope-css":"^1.2.1"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.8.4","@babel/register":"^7.0.0","@percy/cypress":"*","babel-core":"7.0.0-bridge.0","babel-jest":"^24.9.0","babel-loader":"^8.0.4","coveralls":"^3.0.2","css-loader":"^2.0.1","css-to-string-loader":"^0.1.3","cypress":"4.0.1","documentation":"^12.0.1","eslint":"^6.3.0","eslint-config-prettier":"^6.3.0","eslint-plugin-prettier":"^3.1.0","husky":"^1.2.1","identity-obj-proxy":"^3.0.0","jest":"^24.9.0","jison":"^0.4.18","moment":"^2.23.0","node-sass":"^4.12.0","prettier":"^1.18.2","puppeteer":"^1.17.0","sass-loader":"^7.1.0","start-server-and-test":"^1.10.6","terser-webpack-plugin":"^2.2.2","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.7.0","webpack-cli":"^3.1.2","webpack-dev-server":"^3.4.1","webpack-node-externals":"^1.7.2","yarn-upgrade-all":"^0.5.0"},"files":["dist"],"yarn-upgrade-all":{"ignore":["babel-core"]},"sideEffects":["**/*.css","**/*.scss"]}')},function(t,e,n){var r=n(51),i=n(52);t.exports=function(t,e,n,a){var o=!n;n||(n={});for(var s=-1,u=e.length;++s-1&&t%1==0&&t-1}(s)?s:(n=s.match(a))?(e=n[0],r.test(e)?"about:blank":s):"about:blank"}}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[2,3],n=[1,7],r=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],o=[1,32],s={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:return r.setDirection(a[s-3]),a[s-1];case 4:r.setOptions(a[s-1]),this.$=a[s];break;case 5:a[s-1]+=a[s],this.$=a[s-1];break;case 7:this.$=[];break;case 8:a[s-1].push(a[s]),this.$=a[s-1];break;case 9:this.$=a[s-1];break;case 11:r.commit(a[s]);break;case 12:r.branch(a[s]);break;case 13:r.checkout(a[s]);break;case 14:r.merge(a[s]);break;case 15:r.reset(a[s]);break;case 16:this.$="";break;case 17:this.$=a[s];break;case 18:this.$=a[s-1]+":"+a[s];break;case 19:this.$=a[s-1]+":"+r.count,r.count=0;break;case 20:r.count=0;break;case 21:r.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(r,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},t(i,[2,5]),{7:[1,21]},t(r,[2,8]),{12:[1,22]},t(r,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},t(r,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:o},{12:a,25:33,26:o},{12:[2,18]},{12:a,25:34,26:o},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},u={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 18:this.popState();break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][a-zA-Z0-9_]+)/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function c(){this.yy={}}return s.lexer=u,c.prototype=s,s.Parser=c,new c}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,o){a.length;switch(i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10,12],n={trace:function(){},yy:{},symbols_:{error:2,start:3,pie:4,document:5,EOF:6,line:7,statement:8,NL:9,STR:10,VALUE:11,title:12,$accept:0,$end:1},terminals_:{2:"error",4:"pie",6:"EOF",9:"NL",10:"STR",11:"VALUE",12:"title"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,2],[8,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:break;case 6:r.addSection(a[s-1],r.cleanupValue(a[s]));break;case 7:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8],12:[1,9]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),{11:[1,10]},t(e,[2,7]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:case 1:break;case 2:return 4;case 3:return 9;case 4:return"space";case 5:return 12;case 6:this.begin("string");break;case 7:this.popState();break;case 8:return"STR";case 9:return"VALUE";case 10:return 6}},rules:[/^(?:%%[^\n]*)/i,/^(?:\s+)/i,/^(?:pie\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:title\s[^#\n;]+)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{string:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,9,10],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,12],n=[1,7],r=[1,10],i=[1,11],a=[1,12],o=[1,13],s=[12,19,20],u=[15,16,17,18],c={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,statement:7,entityName:8,relSpec:9,":":10,role:11,ALPHANUM:12,cardinality:13,relType:14,ZERO_OR_ONE:15,ZERO_OR_MORE:16,ONE_OR_MORE:17,ONLY_ONE:18,NON_IDENTIFYING:19,IDENTIFYING:20,STR:21,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",10:":",12:"ALPHANUM",15:"ZERO_OR_ONE",16:"ZERO_OR_MORE",17:"ONE_OR_MORE",18:"ONLY_ONE",19:"NON_IDENTIFYING",20:"IDENTIFYING",21:"STR"},productions_:[0,[3,3],[5,0],[5,2],[7,5],[8,1],[9,3],[13,1],[13,1],[13,1],[13,1],[14,1],[14,1],[11,1],[11,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 4:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 5:this.$=a[s];break;case 6:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 7:this.$=r.Cardinality.ZERO_OR_ONE;break;case 8:this.$=r.Cardinality.ZERO_OR_MORE;break;case 9:this.$=r.Cardinality.ONE_OR_MORE;break;case 10:this.$=r.Cardinality.ONLY_ONE;break;case 11:this.$=r.Identification.NON_IDENTIFYING;break;case 12:this.$=r.Identification.IDENTIFYING;break;case 13:case 14:this.$=a[s]}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,12:n},{1:[2,1]},t(e,[2,3]),{9:8,13:9,15:r,16:i,17:a,18:o},t([10,15,16,17,18],[2,5]),{8:14,12:n},{14:15,19:[1,16],20:[1,17]},t(s,[2,7]),t(s,[2,8]),t(s,[2,9]),t(s,[2,10]),{10:[1,18]},{13:19,15:r,16:i,17:a,18:o},t(u,[2,11]),t(u,[2,12]),{11:20,12:[1,22],21:[1,21]},{12:[2,6]},t(e,[2,4]),t(e,[2,13]),t(e,[2,14])],defaultActions:{4:[2,1],19:[2,6]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:break;case 1:return"SPACE";case 2:this.begin("string");break;case 3:this.popState();break;case 4:return 21;case 5:return 4;case 6:return 15;case 7:return 16;case 8:return 17;case 9:return 18;case 10:return 15;case 11:return 16;case 12:return 17;case 13:return 19;case 14:return 20;case 15:case 16:return 19;case 17:return 12;case 18:return e.yytext[0];case 19:return 6}},rules:[/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:erDiagram\b)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{string:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],inclusive:!0}}};function f(){this.yy={}}return c.lexer=l,f.prototype=c,c.Parser=f,new f}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){"use strict";var r=n(8);t.exports=i;function i(t){this._isDirected=!r.has(t,"directed")||t.directed,this._isMultigraph=!!r.has(t,"multigraph")&&t.multigraph,this._isCompound=!!r.has(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=r.constant(void 0),this._defaultEdgeLabelFn=r.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function a(t,e){t[e]?t[e]++:t[e]=1}function o(t,e){--t[e]||delete t[e]}function s(t,e,n,i){var a=""+e,o=""+n;if(!t&&a>o){var s=a;a=o,o=s}return a+""+o+""+(r.isUndefined(i)?"\0":i)}function u(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function c(t,e){return s(t,e.v,e.w,e.name)}i.prototype._nodeCount=0,i.prototype._edgeCount=0,i.prototype.isDirected=function(){return this._isDirected},i.prototype.isMultigraph=function(){return this._isMultigraph},i.prototype.isCompound=function(){return this._isCompound},i.prototype.setGraph=function(t){return this._label=t,this},i.prototype.graph=function(){return this._label},i.prototype.setDefaultNodeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultNodeLabelFn=t,this},i.prototype.nodeCount=function(){return this._nodeCount},i.prototype.nodes=function(){return r.keys(this._nodes)},i.prototype.sources=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._in[e])}))},i.prototype.sinks=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._out[e])}))},i.prototype.setNodes=function(t,e){var n=arguments,i=this;return r.each(t,(function(t){n.length>1?i.setNode(t,e):i.setNode(t)})),this},i.prototype.setNode=function(t,e){return r.has(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]="\0",this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)},i.prototype.node=function(t){return this._nodes[t]},i.prototype.hasNode=function(t){return r.has(this._nodes,t)},i.prototype.removeNode=function(t){var e=this;if(r.has(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],r.each(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),r.each(r.keys(this._in[t]),n),delete this._in[t],delete this._preds[t],r.each(r.keys(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this},i.prototype.setParent=function(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(r.isUndefined(e))e="\0";else{for(var n=e+="";!r.isUndefined(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this},i.prototype._removeFromParentsChildList=function(t){delete this._children[this._parent[t]][t]},i.prototype.parent=function(t){if(this._isCompound){var e=this._parent[t];if("\0"!==e)return e}},i.prototype.children=function(t){if(r.isUndefined(t)&&(t="\0"),this._isCompound){var e=this._children[t];if(e)return r.keys(e)}else{if("\0"===t)return this.nodes();if(this.hasNode(t))return[]}},i.prototype.predecessors=function(t){var e=this._preds[t];if(e)return r.keys(e)},i.prototype.successors=function(t){var e=this._sucs[t];if(e)return r.keys(e)},i.prototype.neighbors=function(t){var e=this.predecessors(t);if(e)return r.union(e,this.successors(t))},i.prototype.isLeaf=function(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length},i.prototype.filterNodes=function(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;r.each(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),r.each(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};return this._isCompound&&r.each(e.nodes(),(function(t){e.setParent(t,function t(r){var a=n.parent(r);return void 0===a||e.hasNode(a)?(i[r]=a,a):a in i?i[a]:t(a)}(t))})),e},i.prototype.setDefaultEdgeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultEdgeLabelFn=t,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return r.values(this._edgeObjs)},i.prototype.setPath=function(t,e){var n=this,i=arguments;return r.reduce(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this},i.prototype.setEdge=function(){var t,e,n,i,o=!1,c=arguments[0];"object"==typeof c&&null!==c&&"v"in c?(t=c.v,e=c.w,n=c.name,2===arguments.length&&(i=arguments[1],o=!0)):(t=c,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],o=!0)),t=""+t,e=""+e,r.isUndefined(n)||(n=""+n);var l=s(this._isDirected,t,e,n);if(r.has(this._edgeLabels,l))return o&&(this._edgeLabels[l]=i),this;if(!r.isUndefined(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[l]=o?i:this._defaultEdgeLabelFn(t,e,n);var f=u(this._isDirected,t,e,n);return t=f.v,e=f.w,Object.freeze(f),this._edgeObjs[l]=f,a(this._preds[e],t),a(this._sucs[t],e),this._in[e][l]=f,this._out[t][l]=f,this._edgeCount++,this},i.prototype.edge=function(t,e,n){var r=1===arguments.length?c(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return this._edgeLabels[r]},i.prototype.hasEdge=function(t,e,n){var i=1===arguments.length?c(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return r.has(this._edgeLabels,i)},i.prototype.removeEdge=function(t,e,n){var r=1===arguments.length?c(this._isDirected,arguments[0]):s(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],o(this._preds[e],t),o(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this},i.prototype.inEdges=function(t,e){var n=this._in[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.v===e})):i}},i.prototype.outEdges=function(t,e){var n=this._out[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.w===e})):i}},i.prototype.nodeEdges=function(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}},function(t,e,n){var r=n(27)(n(12),"Map");t.exports=r},function(t,e,n){var r=n(187),i=n(194),a=n(196),o=n(197),s=n(198);function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){(function(t){var r=n(92),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i&&r.process,s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=s}).call(this,n(6)(t))},function(t,e,n){var r=n(55),i=n(204),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},function(t,e,n){var r=n(99),i=n(100),a=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return a.call(t,e)})))}:i;t.exports=s},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n0&&a(l)?n>1?t(l,n-1,a,o,s):r(s,l):o||(s[s.length]=l)}return s}},function(t,e,n){var r=n(36);t.exports=function(t,e,n){for(var i=-1,a=t.length;++il))return!1;var h=u.get(t);if(h&&u.get(e))return h==e;var d=-1,p=!0,y=2&n?new r:void 0;for(u.set(t,e),u.set(e,t);++d0&&(a=u.removeMin(),(o=s[a]).distance!==Number.POSITIVE_INFINITY);)r(a).forEach(c);return s}(t,String(e),n||a,r||function(e){return t.outEdges(e)})};var a=r.constant(1)},function(t,e,n){var r=n(8);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map((function(t){return t.key}))},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,a=i.length;return n[t]=a,i.push({key:t,priority:e}),this._decrease(a),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){var e=this._arr,n=2*t,r=n+1,i=t;n>1].priority2?e[2]:void 0;for(c&&a(e[0],e[1],c)&&(r=1);++n1&&o.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,u=Math.sqrt(o*o+s*s);return aMath.abs(o)*c?(s<0&&(c=-c),n=0===s?0:c*o/s,r=c):(o<0&&(u=-u),n=u,r=0===o?0:u*s/o);return{x:i+n,y:a+r}}},function(t,e,n){"use strict";var r=n(154),i=n(155),a=n(156);function o(t,e,n){if(!t)return t;if(!e)return t;"string"==typeof n&&(n={keyframes:n}),n||(n={keyframes:!1}),t=s(t,e+" $1$2");var i=e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");t=(t=(t=(t=t.replace(new RegExp("("+i+")\\s*\\1(?=[\\s\\r\\n,{])","g"),"$1")).replace(new RegExp("("+i+")\\s*:host","g"),"$1")).replace(new RegExp("("+i+")\\s*@","g"),"@")).replace(new RegExp("("+i+")\\s*:root","g"),":root");for(var a,o=[],u=/@keyframes\s+([a-zA-Z0-9_-]+)\s*{/g;null!==(a=u.exec(t));)o.indexOf(a[1])<0&&o.push(a[1]);var c=r(e);return o.forEach((function(e){var r=(!0===n.keyframes?c+"-":"string"==typeof n.keyframes?n.keyframes:"")+e;t=(t=t.replace(new RegExp("(@keyframes\\s+)"+e+"(\\s*{)","g"),"$1"+r+"$2")).replace(new RegExp("(animation(?:-name)?\\s*:[^;]*\\s*)"+e+"([\\s;}])","g"),"$1"+r+"$2")})),t=t.replace(new RegExp("("+i+" )(\\s*(?:to|from|[+-]?(?:(?:\\.\\d+)|(?:\\d+(?:\\.\\d*)?))%))(?=[\\s\\r\\n,{])","g"),"$2")}function s(t,e){var n=[];return t=a(t),t=(t=i.replace(t,!0,n)).replace(/([^\r\n,{}]+)(,(?=[^}]*{)|\s*{)/g,e),t=i.paste(t,n)}t.exports=o,o.replace=s},function(t,e){t.exports=function(t,e){return t.intersect(e)}},function(t,e,n){var r;r=function(){var t=JSON.parse('{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","‘":"\'","’":"\'","“":"\\"","”":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial"}'),e=JSON.parse('{"vi":{"Đ":"D","đ":"d"}}');function n(n,r){if("string"!=typeof n)throw new Error("slugify: string argument expected");var i=e[(r="string"==typeof r?{replacement:r}:r||{}).locale]||{},a=n.split("").reduce((function(e,n){return e+(i[n]||t[n]||n).replace(r.remove||/[^\w\s$*_+~.()'"!\-:@]/g,"")}),"").trim().replace(/[-\s]+/g,r.replacement||"-");return r.lower?a.toLowerCase():a}return n.extend=function(e){for(var n in e)t[n]=e[n]},n},t.exports=r(),t.exports.default=r()},function(t,e,n){ +/*! + * Escaper v2.5.3 + * https://github.com/kobezzza/Escaper + * + * Released under the MIT license + * https://github.com/kobezzza/Escaper/blob/master/LICENSE + * + * Date: Tue, 23 Jan 2018 15:58:45 GMT + */ +!function(t){"use strict";var e,n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=e={VERSION:[2,5,3],content:[],cache:{},snakeskinRgxp:null,symbols:null,replace:M,paste:N},i={'"':!0,"'":!0,"`":!0},a={"/":!0};for(var o in i){if(!i.hasOwnProperty(o))break;a[o]=!0}var s={"//":!0,"//*":!0,"//!":!0,"//#":!0,"//@":!0,"//$":!0},u={"/*":!0,"/**":!0,"/*!":!0,"/*#":!0,"/*@":!0,"/*$":!0},c=[],l={};for(var f in a){if(!a.hasOwnProperty(f))break;c.push(f),l[f]=!0}for(var h in s){if(!s.hasOwnProperty(h))break;c.push(h),l[h]=!0}for(var d in u){if(!u.hasOwnProperty(d))break;c.push(d),l[d]=!0}var p=[],y={g:!0,m:!0,i:!0,y:!0,u:!0};for(var g in y){if(!y.hasOwnProperty(g))break;p.push(g)}var m={"-":!0,"+":!0,"*":!0,"%":!0,"~":!0,">":!0,"<":!0,"^":!0,",":!0,";":!0,"=":!0,"|":!0,"&":!0,"!":!0,"?":!0,":":!0,"(":!0,"{":!0,"[":!0},v={return:!0,yield:!0,await:!0,typeof:!0,void:!0,instanceof:!0,delete:!0,in:!0,new:!0,of:!0};function b(t,e,n){for(var r in t){if(!t.hasOwnProperty(r))break;r in e==0&&(e[r]=n)}}var x=void 0,_=void 0,w=/[^\s/]/,k=/[a-z]/,E=/\s/,A=/[\r\n]/,T=/\${pos}/g,S={object:!0,function:!0};function M(t,r,o,f){x=x||e.symbols||"a-z",_=_||e.snakeskinRgxp||new RegExp("[!$"+x+"_]","i");var h=e.cache,d=e.content,g=Boolean(r&&S[void 0===r?"undefined":n(r)]),M=g?Object(r):{};function O(t){return M["@label"]?M["@label"].replace(T,t):"__ESCAPER_QUOT__"+t+"_"}var N=!1;"boolean"==typeof r&&(N=Boolean(r)),"@comments"in M&&(b(u,M,M["@comments"]),b(s,M,M["@comments"]),delete M["@comments"]),"@strings"in M&&(b(i,M,M["@strings"]),delete M["@strings"]),"@literals"in M&&(b(a,M,M["@literals"]),delete M["@literals"]),"@all"in M&&(b(l,M,M["@all"]),delete M["@all"]);for(var C="",D=-1;++D2&&u[j])&&(M[j]&&(G=t.substring(Y,q+1),-1===M[j]?V="":(V=O(I.length),I.push(G)),t=t.substring(0,Y)+V+t.substring(q+1),q+=V.length-G.length),j=!1);else{if(!P){if("/"===X&&((s[J]||u[J])&&(j=s[Q]||u[Q]?Q:J),j)){Y=q;continue}m[X]||v[W]?(R=!0,W=""):w.test(X)&&(R=!1),k.test(X)?H+=X:(W=H,H="");var K=!1;f&&("|"===X&&_.test(Z)?($=!0,R=!1,K=!0):$&&E.test(X)&&($=!1,R=!0,K=!0)),K||(m[X]?R=!0:w.test(X)&&(R=!1))}if("/"!==P||B||("["===X?z=!0:"]"===X&&(z=!1)),!P&&U&&("}"===X?U--:"{"===X&&U++,U||(X="`")),"`"!==P||B||"${"!==J||(X="`",q++,U++),!l[X]||"/"===X&&!R||P){if(P&&("\\"===X||B))B=!B;else if(l[X]&&P===X&&!B&&("/"!==P||!z)){if("/"===X)for(var tt=-1;++tt-1}},function(t,e,n){var r=n(48);t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},function(t,e,n){var r=n(47);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(47),i=n(69),a=n(70);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a(o)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(31),i=n(184),a=n(9),o=n(93),s=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,l=u.toString,f=c.hasOwnProperty,h=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||i(t))&&(r(t)?h:s).test(o(t))}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(32),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r,i=n(185),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!a&&a in t}},function(t,e,n){var r=n(12)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(188),i=n(47),a=n(69);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},function(t,e,n){var r=n(189),i=n(190),a=n(191),o=n(192),s=n(193);function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(114),i=n(262),a=n(266),o=n(115),s=n(267),u=n(82);t.exports=function(t,e,n){var c=-1,l=i,f=t.length,h=!0,d=[],p=d;if(n)h=!1,l=a;else if(f>=200){var y=e?null:s(t);if(y)return u(y);h=!1,l=o,p=new r}else p=e?[]:d;t:for(;++c-1}},function(t,e,n){var r=n(128),i=n(264),a=n(265);t.exports=function(t,e,n){return e==e?a(t,e,n):r(t,i,n)}},function(t,e){t.exports=function(t){return t!=t}},function(t,e){t.exports=function(t,e,n){for(var r=n-1,i=t.length;++r1||1===e.length&&t.hasEdge(e[0],e[0])}))}},function(t,e,n){var r=n(8);t.exports=function(t,e,n){return function(t,e,n){var r={},i=t.nodes();return i.forEach((function(t){r[t]={},r[t][t]={distance:0},i.forEach((function(e){t!==e&&(r[t][e]={distance:Number.POSITIVE_INFINITY})})),n(t).forEach((function(n){var i=n.v===t?n.w:n.v,a=e(n);r[t][i]={distance:a,predecessor:t}}))})),i.forEach((function(t){var e=r[t];i.forEach((function(n){var a=r[n];i.forEach((function(n){var r=a[t],i=e[n],o=a[n],s=r.distance+i.distance;s0;){if(n=u.removeMin(),r.has(s,n))o.setEdge(n,s[n]);else{if(l)throw new Error("Input graph is not connected: "+t);l=!0}t.nodeEdges(n).forEach(c)}return o}},function(t,e,n){var r;try{r=n(2)}catch(t){}r||(r=window.graphlib),t.exports=r},function(t,e,n){"use strict";var r=n(3),i=n(315),a=n(318),o=n(319),s=n(7).normalizeRanks,u=n(321),c=n(7).removeEmptyRanks,l=n(322),f=n(323),h=n(324),d=n(325),p=n(334),y=n(7),g=n(13).Graph;t.exports=function(t,e){var n=e&&e.debugTiming?y.time:y.notime;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new g({multigraph:!0,compound:!0}),n=T(t.graph());return e.setGraph(r.merge({},v,A(n,m),r.pick(n,b))),r.forEach(t.nodes(),(function(n){var i=T(t.node(n));e.setNode(n,r.defaults(A(i,x),_)),e.setParent(n,t.parent(n))})),r.forEach(t.edges(),(function(n){var i=T(t.edge(n));e.setEdge(n,r.merge({},k,A(i,w),r.pick(i,E)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.forEach(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){r.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){i.run(t)})),e(" nestingGraph.run",(function(){l.run(t)})),e(" rank",(function(){o(y.asNonCompoundGraph(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e:e};y.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){c(t)})),e(" nestingGraph.cleanup",(function(){l.cleanup(t)})),e(" normalizeRanks",(function(){s(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;r.forEach(t.nodes(),(function(n){var i=t.node(n);i.borderTop&&(i.minRank=t.node(i.borderTop).rank,i.maxRank=t.node(i.borderBottom).rank,e=r.max(e,i.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){a.run(t)})),e(" parentDummyChains",(function(){u(t)})),e(" addBorderSegments",(function(){f(t)})),e(" order",(function(){d(t)})),e(" insertSelfEdges",(function(){!function(t){var e=y.buildLayerMatrix(t);r.forEach(e,(function(e){var n=0;r.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,r.forEach(a.selfEdges,(function(e){y.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){h.adjust(t)})),e(" position",(function(){p(t)})),e(" positionSelfEdges",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){r.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),o=t.node(r.last(n.borderLeft)),s=t.node(r.last(n.borderRight));n.width=Math.abs(s.x-o.x),n.height=Math.abs(a.y-i.y),n.x=o.x+n.width/2,n.y=i.y+n.height/2}})),r.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){a.undo(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(r.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){h.undo(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,o=t.graph(),s=o.marginx||0,u=o.marginy||0;function c(t){var r=t.x,o=t.y,s=t.width,u=t.height;e=Math.min(e,r-s/2),n=Math.max(n,r+s/2),i=Math.min(i,o-u/2),a=Math.max(a,o+u/2)}r.forEach(t.nodes(),(function(e){c(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.has(n,"x")&&c(n)})),e-=s,i-=u,r.forEach(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.forEach(t.edges(),(function(n){var a=t.edge(n);r.forEach(a.points,(function(t){t.x-=e,t.y-=i})),r.has(a,"x")&&(a.x-=e),r.has(a,"y")&&(a.y-=i)})),o.width=n-e+s,o.height=a-i+u}(t)})),e(" assignNodeIntersects",(function(){!function(t){r.forEach(t.edges(),(function(e){var n,r,i=t.edge(e),a=t.node(e.v),o=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=o,r=a),i.points.unshift(y.intersectRect(a,n)),i.points.push(y.intersectRect(o,r))}))}(t)})),e(" reversePoints",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){i.undo(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){r.forEach(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,r.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))};var m=["nodesep","edgesep","ranksep","marginx","marginy"],v={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},b=["acyclicer","ranker","rankdir","align"],x=["width","height"],_={width:0,height:0},w=["minlen","weight","width","height","labeloffset"],k={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},E=["labelpos"];function A(t,e){return r.mapValues(r.pick(t,e),Number)}function T(t){var e={};return r.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}},function(t,e,n){var r=n(91);t.exports=function(t){return r(t,5)}},function(t,e,n){var r=n(285)(n(286));t.exports=r},function(t,e,n){var r=n(20),i=n(19),a=n(25);t.exports=function(t){return function(e,n,o){var s=Object(e);if(!i(e)){var u=r(n,3);e=a(e),n=function(t){return u(s[t],t,s)}}var c=t(e,n,o);return c>-1?s[u?e[c]:c]:void 0}}},function(t,e,n){var r=n(128),i=n(20),a=n(287),o=Math.max;t.exports=function(t,e,n){var s=null==t?0:t.length;if(!s)return-1;var u=null==n?0:a(n);return u<0&&(u=o(s+u,0)),r(t,i(e,3),u)}},function(t,e,n){var r=n(138);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(9),i=n(36),a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return NaN;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var n=s.test(t);return n||u.test(t)?c(t.slice(2),n?2:8):o.test(t)?NaN:+t}},function(t,e,n){var r=n(81),i=n(110),a=n(34);t.exports=function(t,e){return null==t?t:r(t,i(e),a)}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){var r=n(52),i=n(80),a=n(20);t.exports=function(t,e){var n={};return e=a(e,3),i(t,(function(t,i,a){r(n,i,e(t,i,a))})),n}},function(t,e,n){var r=n(87),i=n(293),a=n(29);t.exports=function(t){return t&&t.length?r(t,a,i):void 0}},function(t,e){t.exports=function(t,e){return t>e}},function(t,e,n){var r=n(295),i=n(298)((function(t,e,n){r(t,e,n)}));t.exports=i},function(t,e,n){var r=n(46),i=n(140),a=n(81),o=n(296),s=n(9),u=n(34),c=n(142);t.exports=function t(e,n,l,f,h){e!==n&&a(n,(function(a,u){if(h||(h=new r),s(a))o(e,n,u,l,t,f,h);else{var d=f?f(c(e,u),a,u+"",e,n,h):void 0;void 0===d&&(d=a),i(e,u,d)}}),u)}},function(t,e,n){var r=n(140),i=n(97),a=n(106),o=n(98),s=n(107),u=n(41),c=n(4),l=n(129),f=n(33),h=n(31),d=n(9),p=n(141),y=n(42),g=n(142),m=n(297);t.exports=function(t,e,n,v,b,x,_){var w=g(t,n),k=g(e,n),E=_.get(k);if(E)r(t,n,E);else{var A=x?x(w,k,n+"",t,e,_):void 0,T=void 0===A;if(T){var S=c(k),M=!S&&f(k),O=!S&&!M&&y(k);A=k,S||M||O?c(w)?A=w:l(w)?A=o(w):M?(T=!1,A=i(k,!0)):O?(T=!1,A=a(k,!0)):A=[]:p(k)||u(k)?(A=w,u(w)?A=m(w):d(w)&&!h(w)||(A=s(k))):T=!1}T&&(_.set(k,A),b(A,k,v,x,_),_.delete(k)),r(t,n,A)}}},function(t,e,n){var r=n(40),i=n(34);t.exports=function(t){return r(t,i(t))}},function(t,e,n){var r=n(60),i=n(61);t.exports=function(t){return r((function(e,n){var r=-1,a=n.length,o=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&i(n[0],n[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++r1&&o(t,e[0],e[1])?e=[]:n>2&&o(e[0],e[1],e[2])&&(e=[e[0]]),i(t,r(e,1),[])}));t.exports=s},function(t,e,n){var r=n(59),i=n(20),a=n(124),o=n(310),s=n(54),u=n(311),c=n(29);t.exports=function(t,e,n){var l=-1;e=r(e.length?e:[c],s(i));var f=a(t,(function(t,n,i){return{criteria:r(e,(function(e){return e(t)})),index:++l,value:t}}));return o(f,(function(t,e){return u(t,e,n)}))}},function(t,e){t.exports=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}},function(t,e,n){var r=n(312);t.exports=function(t,e,n){for(var i=-1,a=t.criteria,o=e.criteria,s=a.length,u=n.length;++i=u?c:c*("desc"==n[i]?-1:1)}return t.index-e.index}},function(t,e,n){var r=n(36);t.exports=function(t,e){if(t!==e){var n=void 0!==t,i=null===t,a=t==t,o=r(t),s=void 0!==e,u=null===e,c=e==e,l=r(e);if(!u&&!l&&!o&&t>e||o&&s&&c&&!u&&!l||i&&s&&c||!n&&c||!a)return 1;if(!i&&!o&&!l&&t0;--u)if(r=e[u].dequeue()){i=i.concat(s(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return r.flatten(r.map(c,(function(e){return t.outEdges(e.v,e.w)})),!0)};var o=r.constant(1);function s(t,e,n,i,a){var o=a?[]:void 0;return r.forEach(t.inEdges(i.v),(function(r){var i=t.edge(r),s=t.node(r.v);a&&o.push({v:r.v,w:r.w}),s.out-=i,u(e,n,s)})),r.forEach(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,o=t.node(a);o.in-=i,u(e,n,o)})),t.removeNode(i.v),o}function u(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},function(t,e){function n(){var t={};t._next=t._prev=t,this._sentinel=t}function r(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function i(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=n,n.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return r(e),e},n.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&r(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},n.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,i)),n=n._prev;return"["+t.join(", ")+"]"}},function(t,e,n){"use strict";var r=n(3),i=n(7);t.exports={run:function(t){t.graph().dummyChains=[],r.forEach(t.edges(),(function(e){!function(t,e){var n,r,a,o=e.v,s=t.node(o).rank,u=e.w,c=t.node(u).rank,l=e.name,f=t.edge(e),h=f.labelRank;if(c===s+1)return;for(t.removeEdge(e),a=0,++s;su.lim&&(c=u,l=!0);var f=r.filter(e.edges(),(function(e){return l===v(t,t.node(e.v),c)&&l!==v(t,t.node(e.w),c)}));return r.minBy(f,(function(t){return a(e,t)}))}function m(t,e,n,i){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(i.v,i.w,{}),d(t),f(t,e),function(t,e){var n=r.find(t.nodes(),(function(t){return!e.node(t).parent})),i=s(t,n);i=i.slice(1),r.forEach(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function v(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=l,l.initLowLimValues=d,l.initCutValues=f,l.calcCutValue=h,l.leaveEdge=y,l.enterEdge=g,l.exchangeEdges=m},function(t,e,n){var r=n(3);t.exports=function(t){var e=function(t){var e={},n=0;function i(a){var o=n;r.forEach(t.children(a),i),e[a]={low:o,lim:n++}}return r.forEach(t.children(),i),e}(t);r.forEach(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a,o=[],s=[],u=Math.min(e[n].low,e[r].low),c=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),o.push(i)}while(i&&(e[i].low>u||c>e[i].lim));a=i,i=r;for(;(i=t.parent(i))!==a;)s.push(i);return{path:o.concat(s.reverse()),lca:a}}(t,e,i.v,i.w),o=a.path,s=a.lca,u=0,c=o[u],l=!0;n!==i.w;){if(r=t.node(n),l){for(;(c=o[u])!==s&&t.node(c).maxRank=2),s=l.buildLayerMatrix(t);var g=a(t,s);g0;)e%2&&(n+=u[e+1]),u[e=e-1>>1]+=t.weight;c+=t.weight*n}))),c}t.exports=function(t,e){for(var n=0,r=1;r=t.barycenter)&&function(t,e){var n=0,r=0;t.weight&&(n+=t.barycenter*t.weight,r+=t.weight);e.weight&&(n+=e.barycenter*e.weight,r+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/r,t.weight=r,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),r.forEach(a.in.reverse(),n(a)),r.forEach(a.out,i(a))}return r.map(r.filter(e,(function(t){return!t.merged})),(function(t){return r.pick(t,["vs","i","barycenter","weight"])}))}(r.filter(n,(function(t){return!t.indegree})))}},function(t,e,n){var r=n(3),i=n(7);function a(t,e,n){for(var i;e.length&&(i=r.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}t.exports=function(t,e){var n=i.partition(t,(function(t){return r.has(t,"barycenter")})),o=n.lhs,s=r.sortBy(n.rhs,(function(t){return-t.i})),u=[],c=0,l=0,f=0;o.sort((h=!!e,function(t,e){return t.barycentere.barycenter?1:h?e.i-t.i:t.i-e.i})),f=a(u,s,f),r.forEach(o,(function(t){f+=t.vs.length,u.push(t.vs),c+=t.barycenter*t.weight,l+=t.weight,f=a(u,s,f)}));var h;var d={vs:r.flatten(u,!0)};l&&(d.barycenter=c/l,d.weight=l);return d}},function(t,e,n){var r=n(3),i=n(13).Graph;t.exports=function(t,e,n){var a=function(t){var e;for(;t.hasNode(e=r.uniqueId("_root")););return e}(t),o=new i({compound:!0}).setGraph({root:a}).setDefaultNodeLabel((function(e){return t.node(e)}));return r.forEach(t.nodes(),(function(i){var s=t.node(i),u=t.parent(i);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(o.setNode(i),o.setParent(i,u||a),r.forEach(t[n](i),(function(e){var n=e.v===i?e.w:e.v,a=o.edge(n,i),s=r.isUndefined(a)?0:a.weight;o.setEdge(n,i,{weight:t.edge(e).weight+s})})),r.has(s,"minRank")&&o.setNode(i,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))})),o}},function(t,e,n){var r=n(3);t.exports=function(t,e,n){var i,a={};r.forEach(n,(function(n){for(var r,o,s=t.parent(n);s;){if((r=t.parent(s))?(o=a[r],a[r]=s):(o=i,i=s),o&&o!==s)return void e.setEdge(o,s);s=r}}))}},function(t,e,n){"use strict";var r=n(3),i=n(7),a=n(335).positionX;t.exports=function(t){(function(t){var e=i.buildLayerMatrix(t),n=t.graph().ranksep,a=0;r.forEach(e,(function(e){var i=r.max(r.map(e,(function(e){return t.node(e).height})));r.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.asNonCompoundGraph(t)),r.forEach(a(t),(function(e,n){t.node(n).x=e}))}},function(t,e,n){"use strict";var r=n(3),i=n(13).Graph,a=n(7);function o(t,e){var n={};return r.reduce(e,(function(e,i){var a=0,o=0,s=e.length,c=r.last(i);return r.forEach(i,(function(e,l){var f=function(t,e){if(t.node(e).dummy)return r.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),h=f?t.node(f).order:s;(f||e===c)&&(r.forEach(i.slice(o,l+1),(function(e){r.forEach(t.predecessors(e),(function(r){var i=t.node(r),o=i.order;!(os)&&u(n,e,c)}))}))}return r.reduce(e,(function(e,n){var a,o=-1,s=0;return r.forEach(n,(function(r,u){if("border"===t.node(r).dummy){var c=t.predecessors(r);c.length&&(a=t.node(c[0]).order,i(n,s,u,o,a),s=u,o=a)}i(n,s,n.length,a,e.length)})),n})),n}function u(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function c(t,e,n){if(e>n){var i=e;e=n,n=i}return r.has(t[e],n)}function l(t,e,n,i){var a={},o={},s={};return r.forEach(e,(function(t){r.forEach(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),r.forEach(e,(function(t){var e=-1;r.forEach(t,(function(t){var u=i(t);if(u.length)for(var l=((u=r.sortBy(u,(function(t){return s[t]}))).length-1)/2,f=Math.floor(l),h=Math.ceil(l);f<=h;++f){var d=u[f];o[t]===t&&e0}t.exports=function(t,e,r,i){var a,o,s,u,c,l,f,h,d,p,y,g,m;if(a=e.y-t.y,s=t.x-e.x,c=e.x*t.y-t.x*e.y,d=a*r.x+s*r.y+c,p=a*i.x+s*i.y+c,0!==d&&0!==p&&n(d,p))return;if(o=i.y-r.y,u=r.x-i.x,l=i.x*r.y-r.x*i.y,f=o*t.x+u*t.y+l,h=o*e.x+u*e.y+l,0!==f&&0!==h&&n(f,h))return;if(0===(y=a*u-o*s))return;return g=Math.abs(y/2),{x:(m=s*l-u*c)<0?(m-g)/y:(m+g)/y,y:(m=o*c-a*l)<0?(m-g)/y:(m+g)/y}}},function(t,e,n){var r=n(37),i=n(26),a=n(136).layout;t.exports=function(){var t=n(341),e=n(344),i=n(345),c=n(346),l=n(347),f=n(348),h=n(349),d=n(350),p=n(351),y=function(n,y){!function(t){t.nodes().forEach((function(e){var n=t.node(e);r.has(n,"label")||t.children(e).length||(n.label=e),r.has(n,"paddingX")&&r.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),r.has(n,"paddingY")&&r.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),r.has(n,"padding")&&r.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),r.defaults(n,o),r.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),r.has(n,"width")&&(n._prevWidth=n.width),r.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);r.has(n,"label")||(n.label=""),r.defaults(n,s)}))}(y);var g=u(n,"output"),m=u(g,"clusters"),v=u(g,"edgePaths"),b=i(u(g,"edgeLabels"),y),x=t(u(g,"nodes"),y,d);a(y),l(x,y),f(b,y),c(v,y,p);var _=e(m,y);h(_,y),function(t){r.each(t.nodes(),(function(e){var n=t.node(e);r.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,r.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(y)};return y.createNodes=function(e){return arguments.length?(t=e,y):t},y.createClusters=function(t){return arguments.length?(e=t,y):e},y.createEdgeLabels=function(t){return arguments.length?(i=t,y):i},y.createEdgePaths=function(t){return arguments.length?(c=t,y):c},y.shapes=function(t){return arguments.length?(d=t,y):d},y.arrows=function(t){return arguments.length?(p=t,y):p},y};var o={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},s={arrowhead:"normal",curve:i.curveLinear};function u(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},function(t,e,n){"use strict";var r=n(37),i=n(89),a=n(10),o=n(26);t.exports=function(t,e,n){var s,u=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),c=t.selectAll("g.node").data(u,(function(t){return t})).classed("update",!0);c.exit().remove(),c.enter().append("g").attr("class","node").style("opacity",0),(c=t.selectAll("g.node")).each((function(t){var s=e.node(t),u=o.select(this);a.applyClass(u,s.class,(u.classed("update")?"update ":"")+"node"),u.select("g.label").remove();var c=u.append("g").attr("class","label"),l=i(c,s),f=n[s.shape],h=r.pick(l.node().getBBox(),"width","height");s.elem=this,s.id&&u.attr("id",s.id),s.labelId&&c.attr("id",s.labelId),r.has(s,"width")&&(h.width=s.width),r.has(s,"height")&&(h.height=s.height),h.width+=s.paddingLeft+s.paddingRight,h.height+=s.paddingTop+s.paddingBottom,c.attr("transform","translate("+(s.paddingLeft-s.paddingRight)/2+","+(s.paddingTop-s.paddingBottom)/2+")");var d=o.select(this);d.select(".label-container").remove();var p=f(d,h,s).classed("label-container",!0);a.applyStyle(p,s.style);var y=p.node().getBBox();s.width=y.width,s.height=y.height})),s=c.exit?c.exit():c.selectAll(null);return a.applyTransition(s,e).style("opacity",0).remove(),c}},function(t,e,n){var r=n(10);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",r=!1,i=0;i=1&&(r={x:t.x,y:t.y}),a>0&&a<1&&(r={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),r}(t)},L=function(t,e,n){var r;e[0]!==n&&(e=e.reverse()),e.forEach((function(t){T(t,r),r=t}));var i,a=25;r=void 0,e.forEach((function(t){if(r&&!i){var e=T(t,r);if(e=1&&(i={x:t.x,y:t.y}),n>0&&n<1&&(i={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var o=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),u={x:0,y:0};return u.x=Math.sin(s)*o+(e[0].x+i.x)/2,u.y=-Math.cos(s)*o+(e[0].y+i.y)/2,u},F=function(t,e){var n=t.trim();if(n)return"loose"!==e.securityLevel?Object(k.sanitizeUrl)(n):n},I=n(2),P=n.n(I),R=//gi,B=function(t){return t.replace(R,"#br#")},j=function(t){return t.replace(/#br#/g,"
")},Y=function(t){if(!t)return 1;var e=B(t);return(e=e.replace(/\\n/g,"#br#")).split("#br#")},z=function(t,e){var n=t,r=!0;return!e.flowchart||!1!==e.flowchart.htmlLabels&&"false"!==e.flowchart.htmlLabels||(r=!1),"loose"!==e.securityLevel&&r&&(n=(n=(n=B(n)).replace(//g,">")).replace(/=/g,"="),n=j(n)),n},U=R;function $(t){return($="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var G,V=h(),H={},W=[],q=[],X=[],Z={},J={},Q=0,K=!0,tt=[],et=function(t,e,n,r){var i=t,a=e;i[0].match(/\d/)&&(i=""+i),a[0].match(/\d/)&&(a=""+a);var o={start:i,end:a,type:void 0,text:""};void 0!==(r=n.text)&&(o.text=z(r.trim(),V),'"'===o.text[0]&&'"'===o.text[o.text.length-1]&&(o.text=o.text.substring(1,o.text.length-1))),void 0!==n&&(o.type=n.type,o.stroke=n.stroke),W.push(o)},nt=function(t,e){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n=""+n),void 0!==H[n]&&H[n].classes.push(e),void 0!==Z[n]&&Z[n].classes.push(e)}))},rt=function(t,e){t.split(",").forEach((function(t){void 0!==e&&(J[t]=z(e,V))}))},it=function(t){var e=Object(a.select)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=Object(a.select)("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Object(a.select)(t).select("svg").selectAll("g.node").on("mouseover",(function(){var t=Object(a.select)(this);if(null!==t.attr("title")){var n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.html(t.attr("title")).style("left",n.left+(n.right-n.left)/2+"px").style("top",n.top-14+document.body.scrollTop+"px"),t.classed("hover",!0)}})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0),Object(a.select)(this).classed("hover",!1)}))};tt.push(it);var at=function(t){for(var e=0;e/)&&(G="LR"),G.match(/.*v/)&&(G="TB")},setClass:nt,getTooltip:function(t){return J[t]},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e){var n=t;t[0].match(/\d/)&&(n=""+n),"loose"===V.securityLevel&&void 0!==e&&void 0!==H[n]&&tt.push((function(){var t=document.querySelector('[id="'.concat(n,'"]'));null!==t&&t.addEventListener("click",(function(){window[e](n)}),!1)}))}(t,e)})),rt(t,n),nt(t,"clickable")},setLink:function(t,e,n){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n=""+n),void 0!==H[n]&&(H[n].link=F(e,V))})),rt(t,n),nt(t,"clickable")},bindFunctions:function(t){tt.forEach((function(e){e(t)}))},getDirection:function(){return G.trim()},getVertices:function(){return H},getEdges:function(){return W},getClasses:function(){return q},clear:function(){H={},q={},W=[],(tt=[]).push(it),X=[],Z={},Q=0,J=[],K=!0},defaultStyle:function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},addSubGraph:function(t,e,n){var r=t.trim(),i=n;t===n&&n.match(/\s/)&&(r=void 0);var a,o,s,u=[];a=u.concat.apply(u,e),o={boolean:{},number:{},string:{}},s=[],u=a.filter((function(t){var e=$(t);return""!==t.trim()&&(e in o?!o[e].hasOwnProperty(t)&&(o[e][t]=!0):!(s.indexOf(t)>=0)&&s.push(t))}));for(var c=0;c0&&function t(e,n){var r=X[n].nodes;if(!((ot+=1)>2e3)){if(st[ot]=n,X[n].id===e)return{result:!0,count:0};for(var i=0,a=1;i=0){var s=t(e,o);if(s.result)return{result:!0,count:a+s.count};a+=s.count}i+=1}return{result:!1,count:a}}}("none",X.length-1)},getSubGraphs:function(){return X},destructLink:function(t,e){var n,r=function(t){switch(t.trim()){case"--x":return{type:"arrow_cross",stroke:"normal"};case"--\x3e":return{type:"arrow_point",stroke:"normal"};case"<--\x3e":return{type:"double_arrow_point",stroke:"normal"};case"x--x":return{type:"double_arrow_cross",stroke:"normal"};case"o--o":return{type:"double_arrow_circle",stroke:"normal"};case"o.-o":return{type:"double_arrow_circle",stroke:"dotted"};case"<==>":return{type:"double_arrow_point",stroke:"thick"};case"o==o":return{type:"double_arrow_circle",stroke:"thick"};case"x==x":return{type:"double_arrow_cross",stroke:"thick"};case"x.-x":case"x-.-x":return{type:"double_arrow_cross",stroke:"dotted"};case"<.->":case"<-.->":return{type:"double_arrow_point",stroke:"dotted"};case"o-.-o":return{type:"double_arrow_circle",stroke:"dotted"};case"--o":return{type:"arrow_circle",stroke:"normal"};case"---":return{type:"arrow_open",stroke:"normal"};case"-.-x":return{type:"arrow_cross",stroke:"dotted"};case"-.->":return{type:"arrow_point",stroke:"dotted"};case"-.-o":return{type:"arrow_circle",stroke:"dotted"};case"-.-":return{type:"arrow_open",stroke:"dotted"};case".-x":return{type:"arrow_cross",stroke:"dotted"};case".->":return{type:"arrow_point",stroke:"dotted"};case".-o":return{type:"arrow_circle",stroke:"dotted"};case".-":return{type:"arrow_open",stroke:"dotted"};case"==x":return{type:"arrow_cross",stroke:"thick"};case"==>":return{type:"arrow_point",stroke:"thick"};case"==o":return{type:"arrow_circle",stroke:"thick"};case"===":return{type:"arrow_open",stroke:"thick"}}}(t);if(e){if((n=function(t){switch(t.trim()){case"<--":return{type:"arrow_point",stroke:"normal"};case"x--":return{type:"arrow_cross",stroke:"normal"};case"o--":return{type:"arrow_circle",stroke:"normal"};case"<-.":return{type:"arrow_point",stroke:"dotted"};case"x-.":return{type:"arrow_cross",stroke:"dotted"};case"o-.":return{type:"arrow_circle",stroke:"dotted"};case"<==":return{type:"arrow_point",stroke:"thick"};case"x==":return{type:"arrow_cross",stroke:"thick"};case"o==":return{type:"arrow_circle",stroke:"thick"};case"--":return{type:"arrow_open",stroke:"normal"};case"==":return{type:"arrow_open",stroke:"thick"};case"-.":return{type:"arrow_open",stroke:"dotted"}}}(e)).stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===n.type)n.type=r.type;else{if(n.type!==r.type)return{type:"INVALID",stroke:"INVALID"};n.type="double_"+n.type}return"double_arrow"===n.type&&(n.type="double_arrow_point"),n}return r},lex:{firstGraph:function(){return!!K&&(K=!1,!0)}}},ct=n(22),lt=n.n(ct),ft=n(5),ht=n.n(ft),dt=n(44),pt=n.n(dt);function yt(t,e,n){var r=.9*(e.width+e.height),i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],a=Tt(t,r,r,i);return n.intersect=function(t){return ht.a.intersect.polygon(n,i,t)},a}function gt(t,e,n){var r=e.height,i=r/4,a=e.width+2*i,o=[{x:i,y:0},{x:a-i,y:0},{x:a,y:-r/2},{x:a-i,y:-r},{x:i,y:-r},{x:0,y:-r/2}],s=Tt(t,a,r,o);return n.intersect=function(t){return ht.a.intersect.polygon(n,o,t)},s}function mt(t,e,n){var r=e.width,i=e.height,a=[{x:-i/2,y:0},{x:r,y:0},{x:r,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function vt(t,e,n){var r=e.width,i=e.height,a=[{x:-2*i/6,y:0},{x:r-i/6,y:0},{x:r+2*i/6,y:-i},{x:i/6,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function bt(t,e,n){var r=e.width,i=e.height,a=[{x:2*i/6,y:0},{x:r+i/6,y:0},{x:r-2*i/6,y:-i},{x:-i/6,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function xt(t,e,n){var r=e.width,i=e.height,a=[{x:-2*i/6,y:0},{x:r+2*i/6,y:0},{x:r-i/6,y:-i},{x:i/6,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function _t(t,e,n){var r=e.width,i=e.height,a=[{x:i/6,y:0},{x:r-i/6,y:0},{x:r+2*i/6,y:-i},{x:-2*i/6,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function wt(t,e,n){var r=e.width,i=e.height,a=[{x:0,y:0},{x:r+i/2,y:0},{x:r,y:-i/2},{x:r+i/2,y:-i},{x:0,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function kt(t,e,n){var r=e.height,i=e.width+r/4,a=t.insert("rect",":first-child").attr("rx",r/2).attr("ry",r/2).attr("x",-i/2).attr("y",-r/2).attr("width",i).attr("height",r);return n.intersect=function(t){return ht.a.intersect.rect(n,t)},a}function Et(t,e,n){var r=e.width,i=e.height,a=[{x:0,y:0},{x:r,y:0},{x:r,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:r+8,y:0},{x:r+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function At(t,e,n){var r=e.width,i=r/2,a=i/(2.5+r/50),o=e.height+a,s="M 0,"+a+" a "+i+","+a+" 0,0,0 "+r+" 0 a "+i+","+a+" 0,0,0 "+-r+" 0 l 0,"+o+" a "+i+","+a+" 0,0,0 "+r+" 0 l 0,"+-o,u=t.attr("label-offset-y",a).insert("path",":first-child").attr("d",s).attr("transform","translate("+-r/2+","+-(o/2+a)+")");return n.intersect=function(t){var e=ht.a.intersect.rect(n,t),r=e.x-n.x;if(0!=i&&(Math.abs(r)n.height/2-a)){var o=a*a*(1-r*r/(i*i));0!=o&&(o=Math.sqrt(o)),o=a-o,t.y-n.y>0&&(o=-o),e.y+=o}return e},u}function Tt(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+-e/2+","+n/2+")")}var St={addToRender:function(t){t.shapes().question=yt,t.shapes().hexagon=gt,t.shapes().stadium=kt,t.shapes().subroutine=Et,t.shapes().cylinder=At,t.shapes().rect_left_inv_arrow=mt,t.shapes().lean_right=vt,t.shapes().lean_left=bt,t.shapes().trapezoid=xt,t.shapes().inv_trapezoid=_t,t.shapes().rect_right_inv_arrow=wt},addToRenderV2:function(t){t({question:yt}),t({hexagon:gt}),t({stadium:kt}),t({subroutine:Et}),t({cylinder:At}),t({rect_left_inv_arrow:mt}),t({lean_right:vt}),t({lean_left:bt}),t({trapezoid:xt}),t({inv_trapezoid:_t}),t({rect_right_inv_arrow:wt})}},Mt={},Ot=function(t,e,n){var r=Object(a.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=S(i.styles),u=void 0!==i.text?i.text:i.id;if(h().flowchart.htmlLabels){var c={label:u.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")}))};(o=pt()(r,c).node()).parentNode.removeChild(o)}else{var l=document.createElementNS("http://www.w3.org/2000/svg","text");l.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var f=u.split(U),d=0;d"):(s.labelType="text",s.label=o.text.replace(U,"\n"),void 0===o.style&&(s.style=s.style||"stroke: #333; stroke-width: 1.5px;fill:none"),s.labelStyle=s.labelStyle.replace("color:","fill:"))),e.setEdge(o.start,o.end,s,i)}))},Ct=function(t){for(var e=Object.keys(t),n=0;n=0;f--)i=l[f],ut.addVertex(i.id,i.title,"group",void 0,i.classes);var d=ut.getVertices(),p=ut.getEdges(),y=0;for(y=l.length-1;y>=0;y--){i=l[y],Object(a.selectAll)("cluster").append("text");for(var g=0;g/gi):Array.isArray(t)?t:[];for(var a=0;a0)t(a,n,r,i);else{var o=n.node(a);x.info("cp ",a," to ",i," with parent ",e),r.setNode(a,o),x.debug("Setting parent",a,n.parent(a)),i!==n.parent(a)&&r.setParent(a,n.parent(a)),e!==i&&a!==e?(x.debug("Setting parent",a,e),r.setParent(a,e)):(x.info("In copy ",e,"root",i,"data",n.node(e),i),x.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==i,"node!==clusterId",a!==e));var s=n.edges(a);x.debug("Copying Edges",s),s.forEach((function(t){x.info("Edge",t);var a=n.edge(t.v,t.w,t.name);x.info("Edge data",a,i);try{!function(t,e){return x.info("Decendants of ",e," is ",$t[e]),x.info("Edge is ",t),t.v!==e&&(t.w!==e&&($t[e]?(x.info("Here "),$t[e].indexOf(t.v)>=0||(!!Vt(t.v,e)||(!!Vt(t.w,e)||$t[e].indexOf(t.w)>=0))):(x.debug("Tilt, ",e,",not in decendants"),!1)))}(t,i)?x.info("Skipping copy of edge ",t.v,"--\x3e",t.w," rootId: ",i," clusterId:",e):(x.info("Copying as ",t.v,t.w,a,t.name),r.setEdge(t.v,t.w,a,t.name),x.info("newGraph edges ",r.edges(),r.edge(r.edges()[0])))}catch(t){x.error(t)}}))}x.debug("Removing node",a),n.removeNode(a)}))},Wt=function t(e,n){x.trace("Searching",e);var r=n.children(e);if(r.length<1)return x.trace("This is a valid node",e),e;for(var i=0;i ",a),a}},qt=function(t){return Ut[t]&&Ut[t].externalConnections&&Ut[t]?Ut[t].id:t},Xt=function(t,e){!t||e>10?x.debug("Opting out, no graph "):(x.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(x.trace("Cluster identified",e," Replacement id in edges: ",Wt(e,t)),$t[e]=function t(e,n){for(var r=n.children(e),i=[].concat(r),a=0;a0&&(x.debug("Cluster identified",e,$t),r.forEach((function(t){t.v!==e&&t.w!==e&&(Vt(t.v,e)^Vt(t.w,e)&&(x.debug("Edge: ",t," leaves cluster ",e),x.debug("Decendants of ",e,": ",$t[e]),Ut[e].externalConnections=!0))})))})),Zt(t,0),t.edges().forEach((function(e){var n=t.edge(e);x.trace("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),x.trace("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));var r=e.v,i=e.w;x.trace("Fix",Ut,"ids:",e.v,e.w,"Translateing: ",Ut[e.v],Ut[e.w]),(Ut[e.v]||Ut[e.w])&&(x.trace("Fixing and trixing - removing",e.v,e.w,e.name),r=qt(e.v),i=qt(e.w),t.removeEdge(e.v,e.w,e.name),r!==e.v&&(n.fromCluster=e.v),i!==e.w&&(n.toCluster=e.w),x.trace("Replacing with",r,i,e.name),t.setEdge(r,i,n,e.name))})),x.debug("Adjusted Graph",P.a.json.write(t)),x.trace(Ut))},Zt=function t(e,n){if(x.debug("extractor - ",n,P.a.json.write(e),e.children("D")),n>10)x.error("Bailing out");else{for(var r=e.nodes(),i=!1,a=0;a0}if(i){x.debug("Nodes = ",r,n);for(var u=0;u0){x.debug("Cluster without external connections, without a parent and with children",c,n);var l=e.graph(),f=new P.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TB"===l.rankdir?"LR":"TB",nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));x.debug("Old graph before copy",P.a.json.write(e)),Ht(c,e,f,c),e.setNode(c,{clusterNode:!0,id:c,clusterData:Ut[c].clusterData,labelText:Ut[c].labelText,graph:f}),x.debug("New graph after copy",P.a.json.write(f)),x.debug("Old graph after copy",P.a.json.write(e))}else x.debug("Cluster ** ",c," **not meeting the criteria !externalConnections:",!Ut[c].externalConnections," no parent: ",!e.parent(c)," children ",e.children(c)&&e.children(c).length>0,e.children("D"),n),x.debug(Ut);else x.debug("Not a cluster",c,n)}r=e.nodes(),x.debug("New list of nodes",r);for(var h=0;h0}var ee=function(t,e,n,r){var i,a,o,s,u,c,l,f,h,d,p,y,g;if(i=e.y-t.y,o=t.x-e.x,u=e.x*t.y-t.x*e.y,h=i*n.x+o*n.y+u,d=i*r.x+o*r.y+u,!(0!==h&&0!==d&&te(h,d)||(a=r.y-n.y,s=n.x-r.x,c=r.x*n.y-n.x*r.y,l=a*t.x+s*t.y+c,f=a*e.x+s*e.y+c,0!==l&&0!==f&&te(l,f)||0==(p=i*s-a*o))))return y=Math.abs(p/2),{x:(g=o*c-s*u)<0?(g-y)/p:(g+y)/p,y:(g=a*u-i*c)<0?(g-y)/p:(g+y)/p}},ne=function(t,e,n){var r=t.x,i=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)}));for(var u=r-t.width/2-o,c=i-t.height/2-s,l=0;l1&&a.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,u=Math.sqrt(o*o+s*s);return aMath.abs(o)*c?(s<0&&(c=-c),n=0===s?0:c*o/s,r=c):(o<0&&(u=-u),n=u,r=0===o?0:u*s/o),{x:i+n,y:a+r}},ie={node:n.n(Jt).a,circle:Kt,ellipse:Qt,polygon:ne,rect:re},ae=function(t,e,n){var r=t.insert("g").attr("class","node default").attr("id",e.id),i=70,a=10;"LR"===n&&(i=10,a=70);var o=r.append("rect").style("stroke","black").style("fill","black").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return Yt(e,o),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return ie.rect(e,t)},r},oe={question:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding+(i.height+e.padding),o=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}],s=zt(r,a,a,o);return Yt(e,s),e.intersect=function(t){return x.warn("Intersect called"),ie.polygon(e,o,t)},r},rect:function(t,e){var n=jt(t,e,"node "+e.classes),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;x.trace("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("class","basic label-container").attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Yt(e,o),e.intersect=function(t){return ie.rect(e,t)},r},rectWithTitle:function(t,e){var n;n=e.classes?"node "+e.classes:"node default";var r=t.insert("g").attr("class",n).attr("id",e.id),i=r.insert("rect",":first-child"),o=r.insert("line"),s=r.insert("g").attr("class","label"),u=e.labelText.flat();x.info("Label text",u[0]);var c=s.node().appendChild(Bt(u[0],e.labelStyle,!0)),l=u.slice(1,u.length),f=c.getBBox(),h=s.node().appendChild(Bt(l.join("
"),e.labelStyle,!0));x.info(h);var d=e.padding/2;Object(a.select)(h).attr("transform","translate( 0, "+(f.height+d)+")");var p=s.node().getBBox();return s.attr("transform","translate("+-p.width/2+", "+(-p.height/2-d+3)+")"),i.attr("class","outer title-state").attr("x",-p.width/2-d).attr("y",-p.height/2-d).attr("width",p.width+e.padding).attr("height",p.height+e.padding),o.attr("class","divider").attr("x1",-p.width/2-d).attr("x2",p.width/2+d).attr("y1",-p.height/2-d+f.height+d).attr("y2",-p.height/2-d+f.height+d),Yt(e,i),e.intersect=function(t){return ie.rect(e,t)},r},circle:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=n.halfPadding,o=r.insert("circle",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("r",i.width/2+a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Yt(e,o),e.intersect=function(t){return ie.circle(e,e.rx,t)},r},stadium:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.height+e.padding,o=i.width+a/4+e.padding,s=r.insert("rect",":first-child").attr("rx",a/2).attr("ry",a/2).attr("x",-o/2).attr("y",-a/2).attr("width",o).attr("height",a);return Yt(e,s),e.intersect=function(t){return ie.rect(e,t)},r},hexagon:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.height+e.padding,o=a/4,s=i.width+2*o+e.padding,u=zt(r,s,a,[{x:o,y:0},{x:s-o,y:0},{x:s,y:-a/2},{x:s-o,y:-a},{x:o,y:-a},{x:0,y:-a/2}]);return Yt(e,u),e.intersect=function(t){return ie.polygon(e,t)},r},rect_left_inv_arrow:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:-o/2,y:0},{x:a,y:0},{x:a,y:-o},{x:-o/2,y:-o},{x:0,y:-o/2}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},lean_right:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:-2*o/6,y:0},{x:a-o/6,y:0},{x:a+2*o/6,y:-o},{x:o/6,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},lean_left:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:2*o/6,y:0},{x:a+o/6,y:0},{x:a-2*o/6,y:-o},{x:-o/6,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},trapezoid:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:-2*o/6,y:0},{x:a+2*o/6,y:0},{x:a-o/6,y:-o},{x:o/6,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},inv_trapezoid:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:o/6,y:0},{x:a-o/6,y:0},{x:a+2*o/6,y:-o},{x:-2*o/6,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},rect_right_inv_arrow:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:0,y:0},{x:a+o/2,y:0},{x:a,y:-o/2},{x:a+o/2,y:-o},{x:0,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},cylinder:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=a/2,s=o/(2.5+a/50),u=i.height+s+e.padding,c="M 0,"+s+" a "+o+","+s+" 0,0,0 "+a+" 0 a "+o+","+s+" 0,0,0 "+-a+" 0 l 0,"+u+" a "+o+","+s+" 0,0,0 "+a+" 0 l 0,"+-u,l=r.attr("label-offset-y",s).insert("path",":first-child").attr("d",c).attr("transform","translate("+-a/2+","+-(u/2+s)+")");return Yt(e,l),e.intersect=function(t){var n=ie.rect(e,t),r=n.x-e.x;if(0!=o&&(Math.abs(r)e.height/2-s)){var i=s*s*(1-r*r/(o*o));0!=i&&(i=Math.sqrt(i)),i=s-i,t.y-e.y>0&&(i=-i),n.y+=i}return n},r},start:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.id),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Yt(e,r),e.intersect=function(t){return ie.circle(e,7,t)},n},end:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.id),r=n.insert("circle",":first-child"),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Yt(e,i),e.intersect=function(t){return ie.circle(e,7,t)},n},note:function(t,e){var n=jt(t,e,"node "+e.classes),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;x.info("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Yt(e,o),e.intersect=function(t){return ie.rect(e,t)},r},subroutine:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:0,y:0},{x:a,y:0},{x:a,y:-o},{x:0,y:-o},{x:0,y:0},{x:-8,y:0},{x:a+8,y:0},{x:a+8,y:-o},{x:-8,y:-o},{x:-8,y:0}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},fork:ae,join:ae},se={},ue=function(t){var e=se[t.id];x.trace("Transforming node",t,"translate("+(t.x-t.width/2-5)+", "+(t.y-t.height/2-5)+")");t.clusterNode?e.attr("transform","translate("+(t.x-t.width/2-8)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")")},ce={rect:function(t,e){x.trace("Creating subgraph rect for ",e.id,e);var n=t.insert("g").attr("class","cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=i.node().appendChild(Bt(e.labelText,e.labelStyle)).getBBox(),o=0*e.padding,s=o/2;x.trace("Data ",e,JSON.stringify(e)),r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-s).attr("y",e.y-e.height/2-s).attr("width",e.width+o).attr("height",e.height+o),i.attr("transform","translate("+(e.x-a.width/2)+", "+(e.y-e.height/2-e.padding/3+3)+")");var u=r.node().getBBox();return e.width=u.width,e.height=u.height,e.intersect=function(t){return re(e,t)},n},roundedWithTitle:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=n.append("rect"),o=i.node().appendChild(Bt(e.labelText,e.labelStyle)).getBBox(),s=0*e.padding,u=s/2;r.attr("class","outer").attr("x",e.x-e.width/2-u).attr("y",e.y-e.height/2-u).attr("width",e.width+s).attr("height",e.height+s),a.attr("class","inner").attr("x",e.x-e.width/2-u).attr("y",e.y-e.height/2-u+o.height-1).attr("width",e.width+s).attr("height",e.height+s-o.height-3),i.attr("transform","translate("+(e.x-o.width/2)+", "+(e.y-e.height/2-e.padding/3+3)+")");var c=r.node().getBBox();return e.width=c.width,e.height=c.height,e.intersect=function(t){return re(e,t)},n},noteGroup:function(t,e){var n=t.insert("g").attr("class","note-cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return re(e,t)},n},divider:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("class","divider").attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2).attr("width",e.width+i).attr("height",e.height+i);var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return re(e,t)},n}},le={},fe={},he=function(t,e){var n=t.x,r=t.y,i=Math.abs(e.x-n),a=Math.abs(e.y-r),o=t.width/2,s=t.height/2;return i>o||a>s},de=function(t,e,n){x.trace("intersection o:",e," i:",n,t);var r=t.x,i=t.y,a=Math.abs(r-n.x),o=t.width/2,s=n.xMath.abs(r-e.x)*c?(s=h*l/f,{x:n.x0&&x.trace("Recursive edges",n.edge(n.edges()[0]));var u=s.insert("g").attr("class","clusters"),c=s.insert("g").attr("class","edgePaths"),l=s.insert("g").attr("class","edgeLabels"),f=s.insert("g").attr("class","nodes");return n.nodes().forEach((function(e){var a=n.node(e);if(void 0!==i){var s=JSON.parse(JSON.stringify(i.clusterData));x.trace("Setting data for cluster",s),n.setNode(i.id,s),n.setParent(e,i.id,s)}if(x.trace("(Insert) Node "+e+": "+JSON.stringify(n.node(e))),a&&a.clusterNode){x.trace("Cluster identified",e,a,n.node(e));var u=t(f,a.graph,r,n.node(e));Yt(a,u),function(t,e){se[e.id]=t}(u,a),x.warn("Recursive render complete",u,a)}else n.children(e).length>0?(x.trace("Cluster - the non recursive path",e,a.id,a,n),x.trace(Wt(a.id,n)),Ut[a.id]={id:Wt(a.id,n),node:a}):(x.trace("Node - the non recursive path",e,a.id,a),function(t,e,n){se[e.id]=oe[e.shape](t,e,n)}(f,n.node(e),o))})),n.edges().forEach((function(t){var e=n.edge(t.v,t.w,t.name);x.trace("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),x.trace("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(n.edge(t))),x.trace("Fix",Ut,"ids:",t.v,t.w,"Translateing: ",Ut[t.v],Ut[t.w]),function(t,e){var n=Bt(e.label,e.labelStyle),r=t.insert("g").attr("class","edgeLabel"),i=r.insert("g").attr("class","label");i.node().appendChild(n);var a=n.getBBox();i.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),fe[e.id]=r,e.width=a.width,e.height=a.height}(l,e)})),n.edges().forEach((function(t){x.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),x.info("#############################################"),x.info("### Layout ###"),x.info("#############################################"),x.info(n),It.a.layout(n),x.trace("Graph after layout:",P.a.json.write(n)),n.nodes().forEach((function(t){var e=n.node(t);x.trace("Position "+t+": ("+e.x,","+e.y,") width: ",e.width," height: ",e.height),e&&e.clusterNode?ue(e):n.children(t).length>0?(!function(t,e){x.trace("Inserting cluster");var n=e.shape||"rect";le[e.id]=ce[n](t,e)}(u,e),Ut[e.id].node=e):ue(e)})),n.edges().forEach((function(t){var e=n.edge(t);x.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(e),e),function(t,e,n,r,i,o){var s=n.points,u=o.node(e.v),c=o.node(e.w);if(c.intersect&&u.intersect&&((s=s.slice(1,n.points.length-1)).unshift(u.intersect(s[0])),s.push(c.intersect(s[s.length-1]))),n.toCluster){var l;x.trace("edge",n),x.trace("to cluster",r[n.toCluster]),s=[];var f=!1;n.points.forEach((function(t){var e=r[n.toCluster].node;if(he(e,t)||f)f||s.push(t);else{x.trace("inside",n.toCluster,t,l);var i=de(e,l,t);x.trace("intersect",i),s.push(i),f=!0}l=t}))}if(n.fromCluster){x.trace("edge",n),x.trace("from cluster",r[n.toCluster]);for(var d,p=[],y=!1,g=s.length-1;g>=0;g--){var m=s[g],v=r[n.fromCluster].node;if(he(v,m)||y)x.trace("Outside point",m),y||p.unshift(m);else{x.trace("inside",n.toCluster,m);var b=de(v,d,m);p.unshift(b),y=!0}d=m}s=p}var _=s.filter((function(t){return!Number.isNaN(t.y)})),w=Object(a.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),k=t.append("path").attr("d",w(_)).attr("id",n.id).attr("class","transition"+(n.classes?" "+n.classes:"")),E="";switch(h().state.arrowMarkerAbsolute&&(E=(E=(E=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),x.info("arrowType",n.arrowType),n.arrowType){case"arrow_cross":k.attr("marker-end","url("+E+"#"+i+"-crossEnd)");break;case"double_arrow_cross":k.attr("marker-end","url("+E+"#"+i+"-crossEnd)"),k.attr("marker-start","url("+E+"#"+i+"-crossStart)");break;case"arrow_point":k.attr("marker-end","url("+E+"#"+i+"-pointEnd)");break;case"double_arrow_point":k.attr("marker-end","url("+E+"#"+i+"-pointEnd)"),k.attr("marker-start","url("+E+"#"+i+"-pointStart)");break;case"arrow_barb":k.attr("marker-end","url("+E+"#"+i+"-barbEnd)");break;case"double_arrow_barb":k.attr("marker-end","url("+E+"#"+i+"-barnEnd)"),k.attr("marker-start","url("+E+"#"+i+"-barbStart)");break;case"arrow_circle":k.attr("marker-end","url("+E+"#"+i+"-circleEnd)");break;case"double_arrow_circle":k.attr("marker-end","url("+E+"#"+i+"-circleEnd)"),k.attr("marker-start","url("+E+"#"+i+"-circleStart)")}}(c,t,e,Ut,r,n),function(t){(x.info("Moving label",t.id,t.label,fe[t.id]),t.label)&&fe[t.id].attr("transform","translate("+t.x+", "+t.y+")")}(e)})),s},ye=function(t,e,n,r,i){Rt(t,n,r,i),se={},fe={},le={},$t={},Gt={},Ut={},x.warn("Graph before:",P.a.json.write(e)),Xt(e),x.warn("Graph after:",P.a.json.write(e)),x.warn("Graph ever after:",e.graph()),pe(t,e,r)},ge={},me=function(t,e,n){var r=Object(a.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=S(i.styles),u=void 0!==i.text?i.text:i.id;if(h().flowchart.htmlLabels){var c={label:u.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")}))};(o=pt()(r,c).node()).parentNode.removeChild(o)}else{var l=document.createElementNS("http://www.w3.org/2000/svg","text");l.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var f=u.split(U),d=0;d=0;f--)i=l[f],x.info("Subgraph - ",i),ut.addVertex(i.id,i.title,"group",void 0,i.classes);var d=ut.getVertices(),p=ut.getEdges();x.info(p);var y=0;for(y=l.length-1;y>=0;y--){i=l[y],Object(a.selectAll)("cluster").append("text");for(var g=0;g>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},a}}return Le.push({from:t,to:e,message:n,type:r}),!0},je={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23},Ye=function(t,e,n){var r={actor:t,placement:e,message:n},i=[].concat(t,t);Fe.push(r),Le.push({from:i[0],to:i[1],message:n,type:je.NOTE,placement:e})},ze=function(t){Ie=t},Ue={addActor:Re,addMessage:function(t,e,n,r){Le.push({from:t,to:e,message:n,answer:r})},addSignal:Be,enableSequenceNumbers:function(){Pe=!0},showSequenceNumbers:function(){return Pe},getMessages:function(){return Le},getActors:function(){return De},getActor:function(t){return De[t]},getActorKeys:function(){return Object.keys(De)},getTitle:function(){return Ie},clear:function(){De={},Le=[]},LINETYPE:je,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:Ye,setTitle:ze,apply:function t(e){if(e instanceof Array)e.forEach((function(e){t(e)}));else switch(e.type){case"addActor":Re(e.actor,e.actor,e.description);break;case"activeStart":case"activeEnd":Be(e.actor,void 0,void 0,e.signalType);break;case"addNote":Ye(e.actor,e.placement,e.text);break;case"addMessage":Be(e.from,e.to,e.msg,e.signalType);break;case"loopStart":Be(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":Be(void 0,void 0,void 0,e.signalType);break;case"rectStart":Be(void 0,void 0,e.color,e.signalType);break;case"rectEnd":Be(void 0,void 0,void 0,e.signalType);break;case"optStart":Be(void 0,void 0,e.optText,e.signalType);break;case"optEnd":Be(void 0,void 0,void 0,e.signalType);break;case"altStart":case"else":Be(void 0,void 0,e.altText,e.signalType);break;case"altEnd":Be(void 0,void 0,void 0,e.signalType);break;case"setTitle":ze(e.text);break;case"parStart":case"and":Be(void 0,void 0,e.parText,e.signalType);break;case"parEnd":Be(void 0,void 0,void 0,e.signalType)}}};function $e(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);ee&&(n.starty=e-6,e+=12),Me.drawActivation(o,n,e,Ge,qe(t.from.actor).length),Ve.insert(n.startx,e-10,n.stopx,e)}(t,Ve.getVerticalPos());break;case Oe.parser.yy.LINETYPE.LOOP_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin+Ge.boxTextMargin);break;case Oe.parser.yy.LINETYPE.LOOP_END:e=Ve.endLoop(),Me.drawLoop(o,e,"loop",Ge),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.RECT_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(void 0,t.message),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.RECT_END:var u=Ve.endLoop();Me.drawBackgroundRect(o,u),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.OPT_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin+Ge.boxTextMargin);break;case Oe.parser.yy.LINETYPE.OPT_END:e=Ve.endLoop(),Me.drawLoop(o,e,"opt",Ge),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.ALT_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin+Ge.boxTextMargin);break;case Oe.parser.yy.LINETYPE.ALT_ELSE:Ve.bumpVerticalPos(Ge.boxMargin),e=Ve.addSectionToLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.ALT_END:e=Ve.endLoop(),Me.drawLoop(o,e,"alt",Ge),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.PAR_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin+Ge.boxTextMargin);break;case Oe.parser.yy.LINETYPE.PAR_AND:Ve.bumpVerticalPos(Ge.boxMargin),e=Ve.addSectionToLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.PAR_END:e=Ve.endLoop(),Me.drawLoop(o,e,"par",Ge),Ve.bumpVerticalPos(Ge.boxMargin);break;default:try{Ve.bumpVerticalPos(Ge.messageMargin);var c=Xe(t.from),l=Xe(t.to),f=c[0]<=l[0]?1:0,d=c[0]=6&&n.indexOf("weekends")>=0||(n.indexOf(t.format("dddd").toLowerCase())>=0||n.indexOf(t.format(e.trim()))>=0)},_n=function(t,e,n){if(n.length&&!t.manualEndTime){var r=p()(t.startTime,e,!0);r.add(1,"d");var i=p()(t.endTime,e,!0),a=wn(r,i,e,n);t.endTime=i.toDate(),t.renderEndTime=a}},wn=function(t,e,n,r){for(var i=!1,a=null;t<=e;)i||(a=e.toDate()),(i=xn(t,n,r))&&e.add(1,"d"),t.add(1,"d");return a},kn=function(t,e,n){n=n.trim();var r=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==r){var i=null;if(r[1].split(" ").forEach((function(t){var e=Nn(t);void 0!==e&&(i?e.endTime>i.endTime&&(i=e):i=e)})),i)return i.endTime;var a=new Date;return a.setHours(0,0,0,0),a}var o=p()(n,e.trim(),!0);return o.isValid()?o.toDate():(x.debug("Invalid date:"+n),x.debug("With date format:"+e.trim()),new Date)},En=function(t,e){if(null!==t)switch(t[2]){case"s":e.add(t[1],"seconds");break;case"m":e.add(t[1],"minutes");break;case"h":e.add(t[1],"hours");break;case"d":e.add(t[1],"days");break;case"w":e.add(t[1],"weeks")}return e.toDate()},An=function(t,e,n,r){r=r||!1,n=n.trim();var i=p()(n,e.trim(),!0);return i.isValid()?(r&&i.add(1,"d"),i.toDate()):En(/^([\d]+)([wdhms])/.exec(n.trim()),p()(t))},Tn=0,Sn=function(t){return void 0===t?"task"+(Tn+=1):t},Mn=[],On={},Nn=function(t){var e=On[t];return Mn[e]},Cn=function(){for(var t=function(t){var e=Mn[t],n="";switch(Mn[t].raw.startTime.type){case"prevTaskEnd":var r=Nn(e.prevTaskId);e.startTime=r.endTime;break;case"getStartDate":(n=kn(0,cn,Mn[t].raw.startTime.startData))&&(Mn[t].startTime=n)}return Mn[t].startTime&&(Mn[t].endTime=An(Mn[t].startTime,cn,Mn[t].raw.endTime.data,bn),Mn[t].endTime&&(Mn[t].processed=!0,Mn[t].manualEndTime=p()(Mn[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),_n(Mn[t],cn,hn))),Mn[t].processed},e=!0,n=0;n0&&(e=t.classes.join(" "));for(var n=0,r=0;rn-e?n+a+1.5*Rn.leftPadding>c?e+r-5:n+r+5:(n-e)/2+e+r})).attr("y",(function(t,r){return r*e+Rn.barHeight/2+(Rn.fontSize/2-2)+n})).attr("text-height",i).attr("class",(function(t){var e=s(t.startTime),n=s(t.endTime);t.milestone&&(n=e+i);var r=this.getBBox().width,a="";t.classes.length>0&&(a=t.classes.join(" "));for(var o=0,l=0;ln-e?n+r+1.5*Rn.leftPadding>c?a+" taskTextOutsideLeft taskTextOutside"+o+" "+f:a+" taskTextOutsideRight taskTextOutside"+o+" "+f+" width-"+r:a+" taskText taskText"+o+" "+f+" width-"+r}))}(t,i,c,h,r,0,e),function(t,e){for(var n=[],r=0,i=0;i0&&a.setAttribute("dy","1em"),a.textContent=e[i],r.appendChild(a)}return r})).attr("x",10).attr("y",(function(i,a){if(!(a>0))return i[1]*t/2+e;for(var o=0;o0){var r=t.split("~");n=r[0],e=r[1]}return{className:n,type:e}},Hn=function(t){var e=Vn(t);void 0===Un[e.className]&&(Un[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:"classid-"+e.className+"-"+$n},$n++)},Wn=function(t){for(var e=Object.keys(Un),n=0;n>")?r.annotations.push(i.substring(2,i.length-2)):i.indexOf(")")>0?r.methods.push(i):i&&r.members.push(i)}},Xn=function(t,e){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n="classid-"+n),void 0!==Un[n]&&Un[n].cssClasses.push(e)}))},Zn=function(t,e,n){var r=t,i=Wn(r);"loose"===Yn.securityLevel&&void 0!==e&&void 0!==Un[r]&&(n&&(Un[r].tooltip=z(n,Yn)),Gn.push((function(){var t=document.querySelector('[id="'.concat(i,'"]'));null!==t&&t.addEventListener("click",(function(){window[e](i)}),!1)})))},Jn={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},Qn=function(t){var e=Object(a.select)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=Object(a.select)("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Object(a.select)(t).select("svg").selectAll("g.node").on("mouseover",(function(){var t=Object(a.select)(this);if(null!==t.attr("title")){var n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.html(t.attr("title")).style("left",n.left+(n.right-n.left)/2+"px").style("top",n.top-14+document.body.scrollTop+"px"),t.classed("hover",!0)}})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0),Object(a.select)(this).classed("hover",!1)}))};Gn.push(Qn);var Kn={addClass:Hn,bindFunctions:function(t){Gn.forEach((function(e){e(t)}))},clear:function(){zn=[],Un={},(Gn=[]).push(Qn)},getClass:function(t){return Un[t]},getClasses:function(){return Un},addAnnotation:function(t,e){var n=Vn(t).className;Un[n].annotations.push(e)},getRelations:function(){return zn},addRelation:function(t){x.debug("Adding relation: "+JSON.stringify(t)),Hn(t.id1),Hn(t.id2),t.id1=Vn(t.id1).className,t.id2=Vn(t.id2).className,zn.push(t)},addMember:qn,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((function(e){return qn(t,e)})))},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(1).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:Jn,setClickEvent:function(t,e,n){t.split(",").forEach((function(t){Zn(t,e,n)})),Xn(t,"clickable")},setCssClass:Xn,setLink:function(t,e,n){t.split(",").forEach((function(t){var r=t;t[0].match(/\d/)&&(r="classid-"+r),void 0!==Un[r]&&(Un[r].link=F(e,Yn),n&&(Un[r].tooltip=z(n,Yn)))})),Xn(t,"clickable")},lookUpDomId:Wn},tr=n(38),er=n.n(tr),nr=0,rr=function(t){var e=t.match(/^(\+|-|~|#)?(\w+)(~\w+~|\[\])?\s+(\w+)$/),n=t.match(/^(\+|-|~|#)?(\w+)\s?\(\s*(\w+(~\w+~|\[\])?\s*(\w+)?)?\s*\)\s?([*|$])?\s?(\w+(~\w+~|\[\])?)?\s*$/);return e?ir(e):n?ar(n):or(t)},ir=function(t){return{displayText:(t[1]?t[1].trim():"")+(t[2]?t[2].trim():"")+(t[3]?ur(t[3]):"")+" "+(t[4]?t[4].trim():""),cssStyle:""}},ar=function(t){var e=t[1]?t[1].trim():"",n=t[2]?t[2].trim():"",r=t[3]?ur(t[3]):"",i=t[6]?t[6].trim():"";return{displayText:e+n+"("+r+")"+(t[7]?" : "+ur(t[7]).trim():""),cssStyle:cr(i)}},or=function(t){var e="",n="",r="",i=t.indexOf("("),a=t.indexOf(")");if(i>1&&a>i&&a<=t.length){var o=t.match(/(\+|-|~|#)?(\w+)/),s=o[1]?o[1].trim():"",u=o[2],c=t.substring(i+1,a),l=t.substring(a,a+1);n=cr(l),a<(e=s+u+"("+ur(c.trim())+")").length&&""!==(r=t.substring(a+2).trim())&&(r=" : "+ur(r))}else e=ur(t);return{displayText:e+r,cssStyle:n}},sr=function(t,e,n,r){var i=rr(e),a=t.append("tspan").attr("x",r.padding).text(i.displayText);""!==i.cssStyle&&a.attr("style",i.cssStyle),n||a.attr("dy",r.textHeight)},ur=function t(e){var n=e;return-1!=e.indexOf("~")?t(n=(n=n.replace("~","<")).replace("~",">")):n},cr=function(t){switch(t){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}},lr=function(t,e,n){x.info("Rendering class "+e);var r="classGroup ";e.cssClasses.length>0&&(r+=e.cssClasses.join(" "));var i,a=e.id,o={id:a,label:e.id,width:0,height:0},s=t.append("g").attr("id",Wn(a)).attr("class",r);i=e.link?s.append("svg:a").attr("xlink:href",e.link).attr("target","_blank").append("text").attr("y",n.textHeight+n.padding).attr("x",0):s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);var u=!0;e.annotations.forEach((function(t){var e=i.append("tspan").text("«"+t+"»");u||e.attr("dy",n.textHeight),u=!1}));var c=e.id;void 0!==e.type&&""!==e.type&&(c+="<"+e.type+">");var l=i.append("tspan").text(c).attr("class","title");u||l.attr("dy",n.textHeight);var f=i.node().getBBox().height,h=s.append("line").attr("x1",0).attr("y1",n.padding+f+n.dividerMargin/2).attr("y2",n.padding+f+n.dividerMargin/2),d=s.append("text").attr("x",n.padding).attr("y",f+n.dividerMargin+n.textHeight).attr("fill","white").attr("class","classText");u=!0,e.members.forEach((function(t){sr(d,t,u,n),u=!1}));var p=d.node().getBBox(),y=s.append("line").attr("x1",0).attr("y1",n.padding+f+n.dividerMargin+p.height).attr("y2",n.padding+f+n.dividerMargin+p.height),g=s.append("text").attr("x",n.padding).attr("y",f+2*n.dividerMargin+p.height+n.textHeight).attr("fill","white").attr("class","classText");u=!0,e.methods.forEach((function(t){sr(g,t,u,n),u=!1}));var m=s.node().getBBox(),v=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",m.width+2*n.padding).attr("height",m.height+n.padding+.5*n.dividerMargin).node().getBBox().width;return i.node().childNodes.forEach((function(t){t.setAttribute("x",(v-t.getBBox().width)/2)})),e.tooltip&&i.insert("title").text(e.tooltip),h.attr("x2",v),y.attr("x2",v),o.width=v,o.height=m.height+n.padding+.5*n.dividerMargin,o},fr=function(t,e,n,r){var i=function(t){switch(t){case Jn.AGGREGATION:return"aggregation";case Jn.EXTENSION:return"extension";case Jn.COMPOSITION:return"composition";case Jn.DEPENDENCY:return"dependency"}};e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var o,s,u=e.points,c=Object(a.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),l=t.append("path").attr("d",c(u)).attr("id","edge"+nr).attr("class","relation"),f="";r.arrowMarkerAbsolute&&(f=(f=(f=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),1==n.relation.lineType&&l.attr("class","relation dashed-line"),"none"!==n.relation.type1&&l.attr("marker-start","url("+f+"#"+i(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&l.attr("marker-end","url("+f+"#"+i(n.relation.type2)+"End)");var h,d,p,y,g=e.points.length,m=D(e.points);if(o=m.x,s=m.y,g%2!=0&&g>1){var v=L("none"!==n.relation.type1,e.points,e.points[0]),b=L("none"!==n.relation.type2,e.points,e.points[g-1]);x.debug("cardinality_1_point "+JSON.stringify(v)),x.debug("cardinality_2_point "+JSON.stringify(b)),h=v.x,d=v.y,p=b.x,y=b.y}if(void 0!==n.title){var _=t.append("g").attr("class","classLabel"),w=_.append("text").attr("class","label").attr("x",o).attr("y",s).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=w;var k=w.node().getBBox();_.insert("rect",":first-child").attr("class","box").attr("x",k.x-r.padding/2).attr("y",k.y-r.padding/2).attr("width",k.width+r.padding).attr("height",k.height+r.padding)}(x.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1)&&t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",h).attr("y",d).attr("fill","black").attr("font-size","6").text(n.relationTitle1);void 0!==n.relationTitle2&&"none"!==n.relationTitle2&&t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",p).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2);nr++};tr.parser.yy=Kn;var hr={},dr={dividerMargin:10,padding:5,textHeight:10},pr=function(t){for(var e=Object.keys(hr),n=0;n "+t.w+": "+JSON.stringify(i.edge(t))),fr(r,i.edge(t),i.edge(t).relation,dr))}));var f=r.node().getBBox(),h=f.width+40,d=f.height+40;dr.useMaxWidth?(r.attr("width","100%"),r.attr("style","max-width: ".concat(h,"px;"))):(r.attr("height",d),r.attr("width",h));var p="".concat(f.x-20," ").concat(f.y-20," ").concat(h," ").concat(d);x.debug("viewBox ".concat(p)),r.attr("viewBox",p)};function mr(t){return(mr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var vr,br=function(t){return JSON.parse(JSON.stringify(t))},xr=[],_r={root:{relations:[],states:{},documents:{}}},wr=_r.root,kr=0,Er=function(t,e,n,r,i){void 0===wr.states[t]?wr.states[t]={id:t,descriptions:[],type:e,doc:n,note:i}:(wr.states[t].doc||(wr.states[t].doc=n),wr.states[t].type||(wr.states[t].type=e)),r&&(x.info("Adding state ",t,r),"string"==typeof r&&Sr(t,r.trim()),"object"===mr(r)&&r.forEach((function(e){return Sr(t,e.trim())}))),i&&(wr.states[t].note=i)},Ar=function(){wr=(_r={root:{relations:[],states:{},documents:{}}}).root},Tr=function(t,e,n){var r=t,i=e,a="default",o="default";"[*]"===t&&(r="start"+ ++kr,a="start"),"[*]"===e&&(i="end"+kr,o="end"),Er(r,a),Er(i,o),wr.relations.push({id1:r,id2:i,title:n})},Sr=function(t,e){var n=wr.states[t],r=e;":"===r[0]&&(r=r.substr(1).trim()),n.descriptions.push(r)},Mr=0,Or=[],Nr={addState:Er,clear:Ar,getState:function(t){return wr.states[t]},getStates:function(){return wr.states},getRelations:function(){return wr.relations},getClasses:function(){return Or},getDirection:function(){return"TB"},addRelation:Tr,getDividerId:function(){return"divider-id-"+ ++Mr},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){x.info("Documents = ",_r)},getRootDoc:function(){return xr},setRootDoc:function(t){x.info("Setting root doc",t),xr=t},getRootDocV2:function(){return function t(e,n,r){if("relation"===n.stmt)t(e,n.state1,!0),t(e,n.state2,!1);else if("state"===n.stmt&&"[*]"===n.id&&(n.id=r?e.id+"_start":e.id+"_end",n.start=r),n.doc){var i=[],a=0,o=[];for(a=0;a0&&o.length>0){var u={stmt:"state",id:O(),type:"divider",doc:br(o)};i.push(br(u)),n.doc=i}n.doc.forEach((function(e){return t(n,e,!0)}))}}({id:"root"},{id:"root",doc:xr},!0),{id:"root",doc:xr}},extract:function(t){var e;e=t.doc?t.doc:t,x.info(e),Ar(),x.info("Extract",e),e.forEach((function(t){"state"===t.stmt&&Er(t.id,t.type,t.doc,t.description,t.note),"relation"===t.stmt&&Tr(t.state1.id,t.state2.id,t.description)}))},trimColon:function(t){return t&&":"===t[0]?t.substr(1).trim():t.trim()}},Cr=n(17),Dr=n.n(Cr),Lr={},Fr=function(t,e){Lr[t]=e},Ir=function(t,e){var n=t.append("text").attr("x",2*h().state.padding).attr("y",h().state.textHeight+1.3*h().state.padding).attr("font-size",h().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),r=n.height,i=t.append("text").attr("x",h().state.padding).attr("y",r+.4*h().state.padding+h().state.dividerMargin+h().state.textHeight).attr("class","state-description"),a=!0,o=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){var r=t.append("tspan").attr("x",2*h().state.padding).text(e);n||r.attr("dy",h().state.textHeight)}(i,t,o),o=!1),a=!1}));var s=t.append("line").attr("x1",h().state.padding).attr("y1",h().state.padding+r+h().state.dividerMargin/2).attr("y2",h().state.padding+r+h().state.dividerMargin/2).attr("class","descr-divider"),u=i.node().getBBox(),c=Math.max(u.width,n.width);return s.attr("x2",c+3*h().state.padding),t.insert("rect",":first-child").attr("x",h().state.padding).attr("y",h().state.padding).attr("width",c+2*h().state.padding).attr("height",u.height+r+2*h().state.padding).attr("rx",h().state.radius),t},Pr=function(t,e,n){var r,i=h().state.padding,a=2*h().state.padding,o=t.node().getBBox(),s=o.width,u=o.x,c=t.append("text").attr("x",0).attr("y",h().state.titleShift).attr("font-size",h().state.fontSize).attr("class","state-title").text(e.id),l=c.node().getBBox().width+a,f=Math.max(l,s);f===s&&(f+=a);var d=t.node().getBBox();e.doc,r=u-i,l>s&&(r=(s-f)/2+i),Math.abs(u-d.x)s&&(r=u-(l-s)/2);var p=1-h().state.textHeight;return t.insert("rect",":first-child").attr("x",r).attr("y",p).attr("class",n?"alt-composit":"composit").attr("width",f).attr("height",d.height+h().state.textHeight+h().state.titleShift+1).attr("rx","0"),c.attr("x",r+i),l<=s&&c.attr("x",u+(f-a)/2-l/2+i),t.insert("rect",":first-child").attr("x",r).attr("y",h().state.titleShift-h().state.textHeight-h().state.padding).attr("width",f).attr("height",3*h().state.textHeight).attr("rx",h().state.radius),t.insert("rect",":first-child").attr("x",r).attr("y",h().state.titleShift-h().state.textHeight-h().state.padding).attr("width",f).attr("height",d.height+3+2*h().state.textHeight).attr("rx",h().state.radius),t},Rr=function(t,e){e.attr("class","state-note");var n=e.append("rect").attr("x",0).attr("y",h().state.padding),r=function(t,e,n,r){var i=0,a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");var o=t.replace(/\r\n/g,"
"),s=(o=o.replace(/\n/g,"
")).split(U),u=1.25*h().state.noteMargin,c=!0,l=!1,f=void 0;try{for(var d,p=s[Symbol.iterator]();!(c=(d=p.next()).done);c=!0){var y=d.value.trim();if(y.length>0){var g=a.append("tspan");if(g.text(y),0===u)u+=g.node().getBBox().height;i+=u,g.attr("x",e+h().state.noteMargin),g.attr("y",n+i+1.25*h().state.noteMargin)}}}catch(t){l=!0,f=t}finally{try{c||null==p.return||p.return()}finally{if(l)throw f}}return{textWidth:a.node().getBBox().width,textHeight:i}}(t,0,0,e.append("g")),i=r.textWidth,a=r.textHeight;return n.attr("height",a+2*h().state.noteMargin),n.attr("width",i+2*h().state.noteMargin),n},Br=function(t,e){var n=e.id,r={id:n,label:e.id,width:0,height:0},i=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&function(t){t.append("circle").style("stroke","black").style("fill","black").attr("r",h().state.sizeUnit).attr("cx",h().state.padding+h().state.sizeUnit).attr("cy",h().state.padding+h().state.sizeUnit)}(i),"end"===e.type&&function(t){t.append("circle").style("stroke","black").style("fill","white").attr("r",h().state.sizeUnit+h().state.miniPadding).attr("cx",h().state.padding+h().state.sizeUnit+h().state.miniPadding).attr("cy",h().state.padding+h().state.sizeUnit+h().state.miniPadding),t.append("circle").style("stroke","black").style("fill","black").attr("r",h().state.sizeUnit).attr("cx",h().state.padding+h().state.sizeUnit+2).attr("cy",h().state.padding+h().state.sizeUnit+2)}(i),"fork"!==e.type&&"join"!==e.type||function(t,e){var n=h().state.forkWidth,r=h().state.forkHeight;if(e.parentId){var i=n;n=r,r=i}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",h().state.padding).attr("y",h().state.padding)}(i,e),"note"===e.type&&Rr(e.note.text,i),"divider"===e.type&&function(t){t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",h().state.textHeight).attr("class","divider").attr("x2",2*h().state.textHeight).attr("y1",0).attr("y2",0)}(i),"default"===e.type&&0===e.descriptions.length&&function(t,e){var n=t.append("text").attr("x",2*h().state.padding).attr("y",h().state.textHeight+2*h().state.padding).attr("font-size",h().state.fontSize).attr("class","state-title").text(e.id),r=n.node().getBBox();t.insert("rect",":first-child").attr("x",h().state.padding).attr("y",h().state.padding).attr("width",r.width+2*h().state.padding).attr("height",r.height+2*h().state.padding).attr("rx",h().state.radius)}(i,e),"default"===e.type&&e.descriptions.length>0&&Ir(i,e);var a=i.node().getBBox();return r.width=a.width+2*h().state.padding,r.height=a.height+2*h().state.padding,Fr(n,r),r},jr=0;Cr.parser.yy=Nr;var Yr={},zr=function t(e,n,r,i){var o,s=new P.a.Graph({compound:!0,multigraph:!0}),u=!0;for(o=0;o "+t.w+": "+JSON.stringify(s.edge(t))),function(t,e,n){e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var r=e.points,i=Object(a.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),o=t.append("path").attr("d",i(r)).attr("id","edge"+jr).attr("class","transition"),s="";if(h().state.arrowMarkerAbsolute&&(s=(s=(s=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),o.attr("marker-end","url("+s+"#"+function(t){switch(t){case Nr.relationType.AGGREGATION:return"aggregation";case Nr.relationType.EXTENSION:return"extension";case Nr.relationType.COMPOSITION:return"composition";case Nr.relationType.DEPENDENCY:return"dependency"}}(Nr.relationType.DEPENDENCY)+"End)"),void 0!==n.title){for(var u=t.append("g").attr("class","stateLabel"),c=D(e.points),l=c.x,f=c.y,d=Y(n.title),p=0,y=[],g=0,m=0,v=0;v<=d.length;v++){var b=u.append("text").attr("text-anchor","middle").text(d[v]).attr("x",l).attr("y",f+p),_=b.node().getBBox();if(g=Math.max(g,_.width),m=Math.min(m,_.x),x.info(_.x,l,f+p),0===p){var w=b.node().getBBox();p=w.height,x.info("Title height",p,f)}y.push(b)}var k=p*d.length;if(d.length>1){var E=(d.length-1)*p*.5;y.forEach((function(t,e){return t.attr("y",f+e*p-E)})),k=p*d.length}var A=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",l-g/2-h().state.padding/2).attr("y",f-k/2-h().state.padding/2-3.5).attr("width",g+h().state.padding).attr("height",k+h().state.padding),x.info(A)}jr++}(n,s.edge(t),s.edge(t).relation))})),k=w.getBBox();var E={id:r||"root",label:r||"root",width:0,height:0};return E.width=k.width+2*vr.padding,E.height=k.height+2*vr.padding,x.debug("Doc rendered",E,s),E},Ur=function(){},$r=function(t,e){vr=h().state,Cr.parser.yy.clear(),Cr.parser.parse(t),x.debug("Rendering diagram "+t);var n=Object(a.select)("[id='".concat(e,"']"));n.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z"),new P.a.Graph({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));var r=Nr.getRootDoc();zr(r,n,void 0,!1);var i=vr.padding,o=n.node().getBBox(),s=o.width+2*i,u=o.height+2*i;vr.useMaxWidth?(n.attr("width","100%"),n.attr("style","max-width: ".concat(1.75*s,"px;"))):n.attr("width",1.75*s),n.attr("viewBox","".concat(o.x-vr.padding," ").concat(o.y-vr.padding," ")+s+" "+u)},Gr={},Vr={},Hr=function(t,e,n,r){if("root"!==n.id){var i="rect";!0===n.start&&(i="start"),!1===n.start&&(i="end"),"default"!==n.type&&(i=n.type),Vr[n.id]||(Vr[n.id]={id:n.id,shape:i,description:n.id,classes:"statediagram-state"}),n.description&&(Array.isArray(Vr[n.id].description)?(Vr[n.id].shape="rectWithTitle",Vr[n.id].description.push(n.description)):Vr[n.id].description.length>0?(Vr[n.id].shape="rectWithTitle",Vr[n.id].description===n.id?Vr[n.id].description=[n.description]:Vr[n.id].description=[Vr[n.id].description,n.description]):(Vr[n.id].shape="rect",Vr[n.id].description=n.description)),!Vr[n.id].type&&n.doc&&(x.info("Setting cluser for ",n.id),Vr[n.id].type="group",Vr[n.id].shape="divider"===n.type?"divider":"roundedWithTitle",Vr[n.id].classes=Vr[n.id].classes+" "+(r?"statediagram-cluster statediagram-cluster-alt":"statediagram-cluster"));var a={labelStyle:"",shape:Vr[n.id].shape,labelText:Vr[n.id].description,classes:Vr[n.id].classes,style:"",id:n.id,type:Vr[n.id].type,padding:15};if(n.note){var o={labelStyle:"",shape:"note",labelText:n.note.text,classes:"statediagram-note",style:"",id:n.id+"----note",type:Vr[n.id].type,padding:15},s={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:Vr[n.id].classes,style:"",id:n.id+"----parent",type:"group",padding:0};t.setNode(n.id+"----parent",s),t.setNode(o.id,o),t.setNode(n.id,a),t.setParent(n.id,n.id+"----parent"),t.setParent(o.id,n.id+"----parent");var u=n.id,c=o.id;"left of"===n.note.position&&(u=o.id,c=n.id),t.setEdge(u,c,{arrowhead:"none",arrowType:"",style:"fill:none",labelStyle:"",classes:"note-edge",arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text"})}else t.setNode(n.id,a)}e&&"root"!==e.id&&(x.info("Setting node ",n.id," to be child of its parent ",e.id),t.setParent(n.id,e.id)),n.doc&&(x.info("Adding nodes children "),qr(t,n,n.doc,!r))},Wr=0,qr=function(t,e,n,r){x.trace("items",n),n.forEach((function(n){if("state"===n.stmt||"default"===n.stmt)Hr(t,e,n,r);else if("relation"===n.stmt){Hr(t,e,n.state1,r),Hr(t,e,n.state2,r);var i={id:"edge"+Wr,arrowhead:"normal",arrowType:"arrow_barb",style:"fill:none",labelStyle:"",label:n.description,arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text"},a=n.state1.id,o=n.state2.id;t.setEdge(a,o,i,Wr),Wr++}}))},Xr=function(t){for(var e=Object.keys(t),n=0;ne.seq?t:e}),t[0]),n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));var r,i,a,o=[n,e.id,e.seq];for(var s in Kr)Kr[s]===e.id&&o.push(s);if(x.debug(o.join(" ")),Array.isArray(e.parent)){var u=Jr[e.parent[0]];oi(t,e,u),t.push(Jr[e.parent[1]])}else{if(null==e.parent)return;var c=Jr[e.parent];oi(t,e,c)}r=t,i=function(t){return t.id},a=Object.create(null),si(t=r.reduce((function(t,e){var n=i(e);return a[n]||(a[n]=!0,t.push(e)),t}),[]))}var ui,ci=function(){var t=Object.keys(Jr).map((function(t){return Jr[t]}));return t.forEach((function(t){x.debug(t.id)})),t.sort((function(t,e){return e.seq-t.seq})),t},li={setDirection:function(t){ei=t},setOptions:function(t){x.debug("options str",t),t=(t=t&&t.trim())||"{}";try{ai=JSON.parse(t)}catch(t){x.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return ai},commit:function(t){var e={id:ri(),message:t,seq:ni++,parent:null==Qr?null:Qr.id};Qr=e,Jr[e.id]=e,Kr[ti]=e.id,x.debug("in pushCommit "+e.id)},branch:function(t){Kr[t]=null!=Qr?Qr.id:null,x.debug("in createBranch")},merge:function(t){var e=Jr[Kr[ti]],n=Jr[Kr[t]];if(function(t,e){return t.seq>e.seq&&ii(e,t)}(e,n))x.debug("Already merged");else{if(ii(e,n))Kr[ti]=Kr[t],Qr=Jr[Kr[ti]];else{var r={id:ri(),message:"merged branch "+t+" into "+ti,seq:ni++,parent:[null==Qr?null:Qr.id,Kr[t]]};Qr=r,Jr[r.id]=r,Kr[ti]=r.id}x.debug(Kr),x.debug("in mergeBranch")}},checkout:function(t){x.debug("in checkout");var e=Kr[ti=t];Qr=Jr[e]},reset:function(t){x.debug("in reset",t);var e=t.split(":")[0],n=parseInt(t.split(":")[1]),r="HEAD"===e?Qr:Jr[Kr[e]];for(x.debug(r,n);n>0;)if(n--,!(r=Jr[r.parent])){var i="Critical error - unique parent commit not found during reset";throw x.error(i),i}Qr=r,Kr[ti]=r.id},prettyPrint:function(){x.debug(Jr),si([ci()[0]])},clear:function(){Jr={},Kr={master:Qr=null},ti="master",ni=0},getBranchesAsObjArray:function(){var t=[];for(var e in Kr)t.push({name:e,commit:Jr[Kr[e]]});return t},getBranches:function(){return Kr},getCommits:function(){return Jr},getCommitsArray:ci,getCurrentBranch:function(){return ti},getDirection:function(){return ei},getHead:function(){return Qr}},fi=n(64),hi=n.n(fi),di={},pi={nodeSpacing:150,nodeFillColor:"yellow",nodeStrokeWidth:2,nodeStrokeColor:"grey",lineStrokeWidth:4,branchOffset:50,lineColor:"grey",leftMargin:50,branchColors:["#442f74","#983351","#609732","#AA9A39"],nodeRadius:10,nodeLabel:{width:75,height:100,x:-25,y:0}},yi={};function gi(t,e,n,r){var i=A(r,a.curveBasis),o=pi.branchColors[n%pi.branchColors.length],s=Object(a.line)().x((function(t){return Math.round(t.x)})).y((function(t){return Math.round(t.y)})).curve(i);t.append("svg:path").attr("d",s(e)).style("stroke",o).style("stroke-width",pi.lineStrokeWidth).style("fill","none")}function mi(t,e){e=e||t.node().getBBox();var n=t.node().getCTM();return{left:n.e+e.x*n.a,top:n.f+e.y*n.d,width:e.width,height:e.height}}function vi(t,e,n,r,i){x.debug("svgDrawLineForCommits: ",e,n);var a=mi(t.select("#node-"+e+" circle")),o=mi(t.select("#node-"+n+" circle"));switch(r){case"LR":if(a.left-o.left>pi.nodeSpacing){var s={x:a.left-pi.nodeSpacing,y:o.top+o.height/2};gi(t,[s,{x:o.left+o.width,y:o.top+o.height/2}],i,"linear"),gi(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-pi.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-pi.nodeSpacing/2,y:s.y},s],i)}else gi(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-pi.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-pi.nodeSpacing/2,y:o.top+o.height/2},{x:o.left+o.width,y:o.top+o.height/2}],i);break;case"BT":if(o.top-a.top>pi.nodeSpacing){var u={x:o.left+o.width/2,y:a.top+a.height+pi.nodeSpacing};gi(t,[u,{x:o.left+o.width/2,y:o.top}],i,"linear"),gi(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+a.height+pi.nodeSpacing/2},{x:o.left+o.width/2,y:u.y-pi.nodeSpacing/2},u],i)}else gi(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+pi.nodeSpacing/2},{x:o.left+o.width/2,y:o.top-pi.nodeSpacing/2},{x:o.left+o.width/2,y:o.top}],i)}}function bi(t,e){return t.select(e).node().cloneNode(!0)}function xi(t,e,n,r){var i,a=Object.keys(di).length;if("string"==typeof e)do{if(i=di[e],x.debug("in renderCommitHistory",i.id,i.seq),t.select("#node-"+e).size()>0)return;t.append((function(){return bi(t,"#def-commit")})).attr("class","commit").attr("id",(function(){return"node-"+i.id})).attr("transform",(function(){switch(r){case"LR":return"translate("+(i.seq*pi.nodeSpacing+pi.leftMargin)+", "+ui*pi.branchOffset+")";case"BT":return"translate("+(ui*pi.branchOffset+pi.leftMargin)+", "+(a-i.seq)*pi.nodeSpacing+")"}})).attr("fill",pi.nodeFillColor).attr("stroke",pi.nodeStrokeColor).attr("stroke-width",pi.nodeStrokeWidth);var o=void 0;for(var s in n)if(n[s].commit===i){o=n[s];break}o&&(x.debug("found branch ",o.name),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","branch-label").text(o.name+", ")),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-id").text(i.id),""!==i.message&&"BT"===r&&t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-msg").text(", "+i.message),e=i.parent}while(e&&di[e]);Array.isArray(e)&&(x.debug("found merge commmit",e),xi(t,e[0],n,r),ui++,xi(t,e[1],n,r),ui--)}function _i(t,e,n,r){for(r=r||0;e.seq>0&&!e.lineDrawn;)"string"==typeof e.parent?(vi(t,e.id,e.parent,n,r),e.lineDrawn=!0,e=di[e.parent]):Array.isArray(e.parent)&&(vi(t,e.id,e.parent[0],n,r),vi(t,e.id,e.parent[1],n,r+1),_i(t,di[e.parent[1]],n,r+1),e.lineDrawn=!0,e=di[e.parent[0]])}var wi,ki=function(t){yi=t},Ei=function(t,e,n){try{var r=hi.a.parser;r.yy=li,r.yy.clear(),x.debug("in gitgraph renderer",t+"\n","id:",e,n),r.parse(t+"\n"),pi=Object.assign(pi,yi,li.getOptions()),x.debug("effective options",pi);var i=li.getDirection();di=li.getCommits();var o=li.getBranchesAsObjArray();"BT"===i&&(pi.nodeLabel.x=o.length*pi.branchOffset,pi.nodeLabel.width="100%",pi.nodeLabel.y=-2*pi.nodeRadius);var s=Object(a.select)('[id="'.concat(e,'"]'));for(var u in function(t){t.append("defs").append("g").attr("id","def-commit").append("circle").attr("r",pi.nodeRadius).attr("cx",0).attr("cy",0),t.select("#def-commit").append("foreignObject").attr("width",pi.nodeLabel.width).attr("height",pi.nodeLabel.height).attr("x",pi.nodeLabel.x).attr("y",pi.nodeLabel.y).attr("class","node-label").attr("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility").append("p").html("")}(s),ui=1,o){var c=o[u];xi(s,c.commit.id,o,i),_i(s,c.commit,i),ui++}s.attr("height",(function(){return"BT"===i?Object.keys(di).length*pi.nodeSpacing:(o.length+1)*pi.branchOffset}))}catch(t){x.error("Error while rendering gitgraph"),x.error(t.message)}},Ai="",Ti=!1,Si={setMessage:function(t){x.debug("Setting message to: "+t),Ai=t},getMessage:function(){return Ai},setInfo:function(t){Ti=t},getInfo:function(){return Ti}},Mi=n(65),Oi=n.n(Mi),Ni={},Ci=function(t){Object.keys(t).forEach((function(e){Ni[e]=t[e]}))},Di=function(t,e,n){try{var r=Oi.a.parser;r.yy=Si,x.debug("Renering info diagram\n"+t),r.parse(t),x.debug("Parsed info diagram");var i=Object(a.select)("#"+e);i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),i.attr("height",100),i.attr("width",400)}catch(t){x.error("Error while rendering info diagram"),x.error(t.message)}},Li={},Fi="",Ii={addSection:function(t,e){void 0===Li[t]&&(Li[t]=e,x.debug("Added new section :",t))},getSections:function(){return Li},cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){Li={},Fi=""},setTitle:function(t){Fi=t},getTitle:function(){return Fi}},Pi=n(66),Ri=n.n(Pi),Bi={},ji=function(t){Object.keys(t).forEach((function(e){Bi[e]=t[e]}))},Yi=function(t,e){try{var n=Ri.a.parser;n.yy=Ii,x.debug("Rendering info diagram\n"+t),n.yy.clear(),n.parse(t),x.debug("Parsed info diagram");var r=document.getElementById(e);void 0===(wi=r.parentElement.offsetWidth)&&(wi=1200),void 0!==Bi.useWidth&&(wi=Bi.useWidth);r.setAttribute("height","100%"),r.setAttribute("viewBox","0 0 "+wi+" 450");var i=wi,o=Math.min(i,450)/2-40,s=Object(a.select)("#"+e).append("svg").attr("width",i).attr("height",450).append("g").attr("transform","translate("+i/2+",225)"),u=Ii.getSections(),c=0;Object.keys(u).forEach((function(t){c+=u[t]})),x.info(u);var l=Object(a.scaleOrdinal)().domain(u).range(a.schemeSet2),f=Object(a.pie)().value((function(t){return t.value}))(Object(a.entries)(u)),h=Object(a.arc)().innerRadius(0).outerRadius(o);s.selectAll("mySlices").data(f).enter().append("path").attr("d",h).attr("fill",(function(t){return l(t.data.key)})).attr("stroke","black").style("stroke-width","2px").style("opacity",.7),s.selectAll("mySlices").data(f).enter().append("text").text((function(t){return(t.data.value/c*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+h.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice").style("font-size",17),s.append("text").text(n.yy.getTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var d=s.selectAll(".legend").data(l.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*l.domain().length/2)+")"}));d.append("rect").attr("width",18).attr("height",18).style("fill",l).style("stroke",l),d.append("text").attr("x",22).attr("y",14).text((function(t){return t}))}catch(t){x.error("Error while rendering info diagram"),x.error(t.message)}},zi={},Ui=[],$i="",Gi={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},addEntity:function(t){void 0===zi[t]&&(zi[t]=t,x.debug("Added new entity :",t))},getEntities:function(){return zi},addRelationship:function(t,e,n,r){var i={entityA:t,roleA:e,entityB:n,relSpec:r};Ui.push(i),x.debug("Added new relationship :",i)},getRelationships:function(){return Ui},clear:function(){zi={},Ui=[],$i=""},setTitle:function(t){$i=t},getTitle:function(){return $i}},Vi=n(67),Hi=n.n(Vi),Wi={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},qi=Wi,Xi=function(t,e){var n;t.append("defs").append("marker").attr("id",Wi.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",Wi.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Wi.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Wi.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",Wi.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",Wi.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),(n=t.append("defs").append("marker").attr("id",Wi.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),(n=t.append("defs").append("marker").attr("id",Wi.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},Zi={},Ji=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},Qi=0,Ki=function(t){for(var e=Object.keys(t),n=0;n/gi," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.style("text-anchor",e.anchor),void 0!==e.class&&r.attr("class",e.class);var i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(n),r},pa=-1,ya=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},ga=function(){function t(t,e,n,i,a,o,s,u){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("font-color",u).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,u,c){for(var l=u.taskFontSize,f=u.taskFontFamily,h=t.split(//gi),d=0;d3?function(t){var e=Object(a.arc)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("d",e).attr("transform","translate("+s.cx+","+(s.cy+2)+")")}(u):s.score<3?function(t){var e=Object(a.arc)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("d",e).attr("transform","translate("+s.cx+","+(s.cy+7)+")")}(u):function(t){t.append("line").attr("stroke",2).attr("x1",s.cx-5).attr("y1",s.cy+7).attr("x2",s.cx+5).attr("y2",s.cy+7).attr("class","task-line").attr("stroke-width","1px").attr("stroke","#666")}(u);var c=ya();c.x=e.x,c.y=e.y,c.fill=e.fill,c.width=n.width,c.height=n.height,c.class="task",c.rx=3,c.ry=3,fa(i,c);var l=e.x+14;e.people.forEach((function(t){var n=e.actors[t],r={cx:l,cy:e.y,r:7,fill:n,stroke:"#000",title:t};ha(i,r),l+=10})),ga(n)(e.task,i,c.x,c.y,c.width,c.height,{class:"task"},n,e.colour)},_a=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")};ea.parser.yy=la;var wa={leftMargin:150,diagramMarginX:50,diagramMarginY:20,taskMargin:50,width:150,height:50,taskFontSize:14,taskFontFamily:'"Open-Sans", "sans-serif"',boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},ka={};var Ea=wa.leftMargin,Aa={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i,a=this,o=0;this.sequenceItems.forEach((function(s){o++;var u=a.sequenceItems.length-o+1;a.updateVal(s,"starty",e-u*wa.boxMargin,Math.min),a.updateVal(s,"stopy",r+u*wa.boxMargin,Math.max),a.updateVal(Aa.data,"startx",t-u*wa.boxMargin,Math.min),a.updateVal(Aa.data,"stopx",n+u*wa.boxMargin,Math.max),"activation"!==i&&(a.updateVal(s,"startx",t-u*wa.boxMargin,Math.min),a.updateVal(s,"stopx",n+u*wa.boxMargin,Math.max),a.updateVal(Aa.data,"starty",e-u*wa.boxMargin,Math.min),a.updateVal(Aa.data,"stopy",r+u*wa.boxMargin,Math.max))}))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(Aa.data,"startx",i,Math.min),this.updateVal(Aa.data,"starty",o,Math.min),this.updateVal(Aa.data,"stopx",a,Math.max),this.updateVal(Aa.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Ta=wa.sectionFills,Sa=wa.sectionColours,Ma=function(t,e,n){for(var r="",i=n+(2*wa.height+wa.diagramMarginY),a=0,o="#CCC",s="black",u=0;uPa.maxTextSize&&(i="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),void 0!==r)r.innerHTML="",Object(a.select)(r).append("div").attr("id","d"+t).attr("style","font-family: "+Pa.fontFamily).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g");else{var o=document.getElementById(t);o&&o.remove();var c=document.querySelector("#d"+t);c&&(c.innerHTML=""),Object(a.select)("body").append("div").attr("id","d"+t).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}window.txt=i,i=function(t){var e=t;return e=(e=(e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/#\w+;/g,(function(t){var e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"}))}(i);var l=Object(a.select)("#d"+t).node(),f=N(i),h=l.firstChild,d=h.firstChild,p=Da[Pa.theme];if(void 0===p&&(p=""),void 0!==Pa.themeCSS&&(p+="\n".concat(Pa.themeCSS)),void 0!==Pa.fontFamily&&(p+="\n:root { --mermaid-font-family: ".concat(Pa.fontFamily,"}")),void 0!==Pa.altFontFamily&&(p+="\n:root { --mermaid-alt-font-family: ".concat(Pa.altFontFamily,"}")),"flowchart"===f||"flowchart-v2"===f){var y=Dt(i);for(var g in y)p+="\n.".concat(g," > * { ").concat(y[g].styles.join(" !important; ")," !important; }"),y[g].textStyles&&(p+="\n.".concat(g," tspan { ").concat(y[g].textStyles.join(" !important; ")," !important; }"))}var m=document.createElement("style");m.innerHTML=s()(p,"#".concat(t)),h.insertBefore(m,d);var v=document.createElement("style"),b=window.getComputedStyle(h);switch(v.innerHTML="#".concat(t," {\n color: ").concat(b.color,";\n font: ").concat(b.font,";\n }"),h.insertBefore(v,d),f){case"git":Pa.flowchart.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,ki(Pa.git),Ei(i,t,!1);break;case"flowchart":Pa.flowchart.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,Ct(Pa.flowchart),Lt(i,t,!1);break;case"flowchart-v2":Pa.flowchart.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,be(Pa.flowchart),xe(i,t,!1);break;case"sequence":Pa.sequence.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,Pa.sequenceDiagram?(tn(Object.assign(Pa.sequence,Pa.sequenceDiagram)),console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")):tn(Pa.sequence),en(i,t);break;case"gantt":Pa.gantt.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,Bn(Pa.gantt),jn(i,t);break;case"class":Pa.class.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,yr(Pa.class),gr(i,t);break;case"state":Ur(Pa.state),$r(i,t);break;case"stateDiagram":Xr(Pa.state),Zr(i,t);break;case"info":Pa.class.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,Ci(Pa.class),Di(i,t,u.version);break;case"pie":Pa.class.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,ji(Pa.class),Yi(i,t,u.version);break;case"er":Ki(Pa.er),ta(i,t,u.version);break;case"journey":Oa(Pa.journey),Na(i,t,u.version)}Object(a.select)('[id="'.concat(t,'"]')).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");var _=Object(a.select)("#d"+t).node().innerHTML;if(Pa.arrowMarkerAbsolute&&"false"!==Pa.arrowMarkerAbsolute||(_=_.replace(/marker-end="url\(.*?#/g,'marker-end="url(#',"g")),_=function(t){var e=t;return e=(e=(e=e.replace(/fl°°/g,(function(){return"&#"}))).replace(/fl°/g,(function(){return"&"}))).replace(/¶ß/g,(function(){return";"}))}(_),void 0!==n)switch(f){case"flowchart":case"flowchart-v2":n(_,ut.bindFunctions);break;case"gantt":n(_,Fn.bindFunctions);break;case"class":n(_,Kn.bindFunctions);break;default:n(_)}else x.debug("CB = undefined!");var w=Object(a.select)("#d"+t).node();return null!==w&&"function"==typeof w.remove&&Object(a.select)("#d"+t).node().remove(),_},parse:function(t){var e,n=N(t);switch(x.debug("Type "+n),n){case"git":(e=hi.a).parser.yy=li;break;case"flowchart":case"flowchart-v2":ut.clear(),(e=lt.a).parser.yy=ut;break;case"sequence":(e=Ne.a).parser.yy=Ue;break;case"gantt":(e=rn.a).parser.yy=Fn;break;case"class":(e=er.a).parser.yy=Kn;break;case"state":case"stateDiagram":(e=Dr.a).parser.yy=Nr;break;case"info":x.debug("info info info"),(e=Oi.a).parser.yy=Si;break;case"pie":x.debug("pie"),(e=Ri.a).parser.yy=Ii;break;case"er":x.debug("er"),(e=Hi.a).parser.yy=Gi;break;case"journey":x.debug("Journey"),(e=na.a).parser.yy=la}e.parser.yy.parseError=function(t,e){throw{str:t,hash:e}},e.parse(t)},initialize:function(t){x.debug("Initializing mermaidAPI ",u.version),"object"===Ca(t)&&function(t){for(var e=Object.keys(t),n=0;n=2?( +/*! sequence config was passed as #1 */ +void 0!==arguments[0]&&(ja.sequenceConfig=arguments[0]),t=arguments[1]):t=arguments[0],"function"==typeof arguments[arguments.length-1]?(e=arguments[arguments.length-1],x.debug("Callback function found")):void 0!==r.mermaid&&("function"==typeof r.mermaid.callback?(e=r.mermaid.callback,x.debug("Callback function found")):x.debug("No Callback function found")),t=void 0===t?document.querySelectorAll(".mermaid"):"string"==typeof t?document.querySelectorAll(t):t instanceof window.Node?[t]:t,x.debug("Start On Load before: "+ja.startOnLoad),void 0!==ja.startOnLoad&&(x.debug("Start On Load inner: "+ja.startOnLoad),Ra.initialize({startOnLoad:ja.startOnLoad})),void 0!==ja.ganttConfig&&Ra.initialize({gantt:ja.ganttConfig});for(var a=function(r){var a=t[r]; +/*! Check if previously processed */if(a.getAttribute("data-processed"))return"continue";a.setAttribute("data-processed",!0);var o="mermaid-".concat(Date.now());n=i(n=a.innerHTML).trim().replace(//gi,"
"),Ra.render(o,n,(function(t,n){a.innerHTML=t,void 0!==e&&e(o),n&&n(a)}),a)},o=0;o svg { + max-width: 100%; + } + + @import "themes/neutral/index"; + + [theme=dark] & { + @import "themes/dark/index"; + } + + div.mermaidTooltip { + z-index: 50; + } +} diff --git a/themes/LoveIt/assets/lib/mermaid/themes/class.scss b/themes/LoveIt/assets/lib/mermaid/themes/class.scss new file mode 100644 index 00000000..db9a3606 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/class.scss @@ -0,0 +1,91 @@ +g.classGroup text { + fill: $nodeBorder; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); + font-size: 10px; + + .title { + font-weight: bolder; + } +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: $nodeBkg; + stroke: $nodeBorder; +} + +g.classGroup line { + stroke: $nodeBorder; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: $nodeBkg; + opacity: 0.5; +} + +.classLabel .label { + fill: $nodeBorder; + font-size: 10px; +} + +.relation { + stroke: $nodeBorder; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +@mixin composition { + fill: $nodeBorder; + stroke: $nodeBorder; + stroke-width: 1; +} + +#compositionStart { + @include composition; +} + +#compositionEnd { + @include composition; +} + +@mixin aggregation { + fill: $nodeBkg; + stroke: $nodeBorder; + stroke-width: 1; +} + +#aggregationStart { + @include aggregation; +} + +#aggregationEnd { + @include aggregation; +} + +#dependencyStart { + @include composition; +} + +#dependencyEnd { + @include composition; +} + +#extensionStart { + @include composition; +} + +#extensionEnd { + @include composition; +} diff --git a/themes/LoveIt/assets/lib/mermaid/themes/dark/index.scss b/themes/LoveIt/assets/lib/mermaid/themes/dark/index.scss new file mode 100644 index 00000000..c1043f02 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/dark/index.scss @@ -0,0 +1,62 @@ +$mainBkg: #BDD5EA; +$secondBkg: #6D6D65; +$mainContrastColor: lightgrey; +$darkTextColor: #323D47; +$lineColor: $mainContrastColor; +$border1: #81B1DB; +$border2: rgba(255, 255, 255, 0.25); +$arrowheadColor: $mainContrastColor; + +/* Flowchart variables */ + +$nodeBkg: $mainBkg; +$nodeBorder: purple; +$clusterBkg: $secondBkg; +$clusterBorder: $border2; +$defaultLinkColor: $lineColor; +$titleColor: #F9FFFE; +$edgeLabelBackground: #e8e8e8; + +/* Sequence Diagram variables */ + +$actorBorder: $border1; +$actorBkg: $mainBkg; +$actorTextColor: black; +$actorLineColor: $mainContrastColor; +$signalColor: $mainContrastColor; +$signalTextColor: $mainContrastColor; +$labelBoxBkgColor: $actorBkg; +$labelBoxBorderColor: $actorBorder; +$labelTextColor: $darkTextColor; +$loopTextColor: $mainContrastColor; +$noteBorderColor: $border2; +$noteBkgColor: #fff5ad; +$activationBorderColor: #666; +$activationBkgColor: #f4f4f4; +$sequenceNumberColor: white; + +/* Gantt chart variables */ + +$sectionBkgColor: rgba(255, 255, 255, 0.3); +$altSectionBkgColor: white; +$sectionBkgColor2: #EAE8B9; +$taskBorderColor: rgba(255, 255, 255, 0.5); +$taskBkgColor: $mainBkg; +$taskTextColor: $darkTextColor; +$taskTextLightColor: $mainContrastColor; +$taskTextOutsideColor: $taskTextLightColor; +$taskTextClickableColor: #003163; +$activeTaskBorderColor: rgba(255, 255, 255, 0.5); +$activeTaskBkgColor: #81B1DB; +$gridColor: $mainContrastColor; +$doneTaskBkgColor: $mainContrastColor; +$doneTaskBorderColor: grey; +$critBorderColor: #E83737; +$critBkgColor: #E83737; +$taskTextDarkColor: $darkTextColor; +$todayLineColor: #DB5757; + +/* state colors */ +$labelColor: black; + +@import '../mermaid'; diff --git a/themes/LoveIt/assets/lib/mermaid/themes/default/index.scss b/themes/LoveIt/assets/lib/mermaid/themes/default/index.scss new file mode 100644 index 00000000..3ef641b5 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/default/index.scss @@ -0,0 +1,60 @@ +$mainBkg: #ECECFF; +$secondBkg: #ffffde; +$lineColor: #333333; +$border1: #CCCCFF; +$border2: #aaaa33; +$arrowheadColor: #333333; + +/* Flowchart variables */ + +$nodeBkg: $mainBkg; +$nodeBorder: #9370DB; +$clusterBkg: $secondBkg; +$clusterBorder: $border2; +$defaultLinkColor: $lineColor; +$titleColor: #333; +$edgeLabelBackground: #e8e8e8; + +/* Sequence Diagram variables */ + +$actorBorder: $border1; +$actorBkg: $mainBkg; +$actorTextColor: black; +$actorLineColor: grey; +$signalColor: #333; +$signalTextColor: #333; +$labelBoxBkgColor: $actorBkg; +$labelBoxBorderColor: $actorBorder; +$labelTextColor: $actorTextColor; +$loopTextColor: $actorTextColor; +$noteBorderColor: $border2; +$noteBkgColor: #fff5ad; +$activationBorderColor: #666; +$activationBkgColor: #f4f4f4; +$sequenceNumberColor: white; + +/* Gantt chart variables */ + +$sectionBkgColor: rgba(102, 102, 255, 0.49); +$altSectionBkgColor: white; +$sectionBkgColor2: #fff400; +$taskBorderColor: #534fbc; +$taskBkgColor: #8a90dd; +$taskTextLightColor: white; +$taskTextColor: $taskTextLightColor; +$taskTextDarkColor: black; +$taskTextOutsideColor: $taskTextDarkColor; +$taskTextClickableColor: #003163; +$activeTaskBorderColor: #534fbc; +$activeTaskBkgColor: #bfc7ff; +$gridColor: lightgrey; +$doneTaskBkgColor: lightgrey; +$doneTaskBorderColor: grey; +$critBorderColor: #ff8888; +$critBkgColor: red; +$todayLineColor: red; + +/* state colors */ +$labelColor: black; + +@import '../mermaid'; diff --git a/themes/LoveIt/assets/lib/mermaid/themes/flowchart.scss b/themes/LoveIt/assets/lib/mermaid/themes/flowchart.scss new file mode 100644 index 00000000..495826cf --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/flowchart.scss @@ -0,0 +1,68 @@ +.label { + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); + color: #333; +} + +.label text { + fill: #333; +} + +.node rect, +.node circle, +.node ellipse, +.node polygon, +.node path { + fill: $mainBkg; + stroke: $nodeBorder; + stroke-width: 1px; +} + +.node .label { + text-align: center; +} +.node.clickable { + cursor: pointer; +} + +.arrowheadPath { + fill: $arrowheadColor; +} + +.edgePath .path { + stroke: $lineColor; + stroke-width: 1.5px; +} + +.edgeLabel { + background-color: $edgeLabelBackground; + rect { + opacity: 0.5; + } + text-align: center; +} + +.cluster rect { + fill: $secondBkg; + stroke: $clusterBorder; + stroke-width: 1px; +} + +.cluster text { + fill: $titleColor; +} + +div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: $secondBkg; + border: 1px solid $border2; + border-radius: 2px; + pointer-events: none; + z-index: 100; +} diff --git a/themes/LoveIt/assets/lib/mermaid/themes/forest/index.scss b/themes/LoveIt/assets/lib/mermaid/themes/forest/index.scss new file mode 100644 index 00000000..d8d96c92 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/forest/index.scss @@ -0,0 +1,61 @@ +$mainBkg: #cde498; +$secondBkg: #cdffb2; +$lineColor: #1a3318; +$lineColor: green; +$border1: #13540c; +$border2: #6eaa49; +$arrowheadColor: green; + +/* Flowchart variables */ + +$nodeBkg: $mainBkg; +$nodeBorder: $border1; +$clusterBkg: $secondBkg; +$clusterBorder: $border2; +$defaultLinkColor: $lineColor; +$titleColor: #333; +$edgeLabelBackground: #e8e8e8; + +/* Sequence Diagram variables */ + +$actorBorder: $border1; +$actorBkg: $mainBkg; +$actorTextColor: black; +$actorLineColor: grey; +$signalColor: #333; +$signalTextColor: #333; +$labelBoxBkgColor: $actorBkg; +$labelBoxBorderColor: #326932; +$labelTextColor: $actorTextColor; +$loopTextColor: $actorTextColor; +$noteBorderColor: $border2; +$noteBkgColor: #fff5ad; +$activationBorderColor: #666; +$activationBkgColor: #f4f4f4; +$sequenceNumberColor: white; + +/* Gantt chart variables */ + +$sectionBkgColor: #6eaa49; +$altSectionBkgColor: white; +$sectionBkgColor2: #6eaa49; +$taskBorderColor: $border1; +$taskBkgColor: #487e3a; +$taskTextLightColor: white; +$taskTextColor: $taskTextLightColor; +$taskTextDarkColor: black; +$taskTextOutsideColor: $taskTextDarkColor; +$taskTextClickableColor: #003163; +$activeTaskBorderColor: $taskBorderColor; +$activeTaskBkgColor: $mainBkg; +$gridColor: lightgrey; +$doneTaskBkgColor: lightgrey; +$doneTaskBorderColor: grey; +$critBorderColor: #ff8888; +$critBkgColor: red; +$todayLineColor: red; + +/* state colors */ +$labelColor: black; + +@import '../mermaid'; diff --git a/themes/LoveIt/assets/lib/mermaid/themes/gantt.scss b/themes/LoveIt/assets/lib/mermaid/themes/gantt.scss new file mode 100644 index 00000000..a08f54aa --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/gantt.scss @@ -0,0 +1,259 @@ +/** Section styling */ + +.mermaid-main-font { + font-family: "trebuchet ms", verdana, arial; + font-family: var(--mermaid-font-family); +} + +.section { + stroke: none; + opacity: 0.2; +} + +.section0 { + fill: $sectionBkgColor; +} + +.section2 { + fill: $sectionBkgColor2; +} + +.section1, +.section3 { + fill: $altSectionBkgColor; + opacity: 0.2; +} + +.sectionTitle0 { + fill: $titleColor; +} + +.sectionTitle1 { + fill: $titleColor; +} + +.sectionTitle2 { + fill: $titleColor; +} + +.sectionTitle3 { + fill: $titleColor; +} + +.sectionTitle { + text-anchor: start; + font-size: 11px; + text-height: 14px; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); + +} + + +/* Grid and axis */ + +.grid .tick { + stroke: $gridColor; + opacity: 0.8; + shape-rendering: crispEdges; + text { + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); + fill: $taskTextOutsideColor; + } +} + +.grid path { + stroke-width: 0; +} + + +/* Today line */ + +.today { + fill: none; + stroke: $todayLineColor; + stroke-width: 2px; +} + + +/* Task styling */ + +/* Default task */ + +.task { + stroke-width: 2; +} + +.taskText { + text-anchor: middle; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); +} + +.taskText:not([font-size]) { + font-size: 11px; +} + +.taskTextOutsideRight { + fill: $taskTextDarkColor; + text-anchor: start; + font-size: 11px; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); + +} + +.taskTextOutsideLeft { + fill: $taskTextDarkColor; + text-anchor: end; + font-size: 11px; +} + +/* Special case clickable */ +.task.clickable { + cursor: pointer; +} +.taskText.clickable { + cursor: pointer; + fill: $taskTextClickableColor !important; + font-weight: bold; +} + +.taskTextOutsideLeft.clickable { + cursor: pointer; + fill: $taskTextClickableColor !important; + font-weight: bold; +} + +.taskTextOutsideRight.clickable { + cursor: pointer; + fill: $taskTextClickableColor !important; + font-weight: bold; +} + +/* Specific task settings for the sections*/ + +.taskText0, +.taskText1, +.taskText2, +.taskText3 { + fill: $taskTextColor; +} + +.task0, +.task1, +.task2, +.task3 { + fill: $taskBkgColor; + stroke: $taskBorderColor; +} + +.taskTextOutside0, +.taskTextOutside2 +{ + fill: $taskTextOutsideColor !important; +} + +.taskTextOutside1, +.taskTextOutside3 { + fill: $taskTextOutsideColor !important; +} + + +/* Active task */ + +.active0, +.active1, +.active2, +.active3 { + fill: $activeTaskBkgColor; + stroke: $activeTaskBorderColor; +} + +.activeText0, +.activeText1, +.activeText2, +.activeText3 { + fill: $taskTextDarkColor; +} + + +/* Completed task */ + +.done0, +.done1, +.done2, +.done3 { + stroke: $doneTaskBorderColor; + fill: $doneTaskBkgColor; + stroke-width: 2; +} + +.doneText0, +.doneText1, +.doneText2, +.doneText3 { + fill: $taskTextDarkColor; +} + + +/* Tasks on the critical line */ + +.crit0, +.crit1, +.crit2, +.crit3 { + stroke: $critBorderColor; + fill: $critBkgColor; + stroke-width: 2; +} + +.activeCrit0, +.activeCrit1, +.activeCrit2, +.activeCrit3 { + stroke: $critBorderColor; + fill: $activeTaskBkgColor; + stroke-width: 2; +} + +.doneCrit0, +.doneCrit1, +.doneCrit2, +.doneCrit3 { + stroke: $critBorderColor; + fill: $doneTaskBkgColor; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; +} + +.milestone { + transform: rotate(45deg) scale(0.8,0.8); +} + +.milestoneText { + font-style: italic; +} +.doneCritText0, +.doneCritText1, +.doneCritText2, +.doneCritText3 { + fill: $taskTextDarkColor; +} + +.activeCritText0, +.activeCritText1, +.activeCritText2, +.activeCritText3 { + fill: $taskTextDarkColor; +} + +.titleText { + text-anchor: middle; + font-size: 18px; + fill: $taskTextOutsideColor; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); +} diff --git a/themes/LoveIt/assets/lib/mermaid/themes/git.scss b/themes/LoveIt/assets/lib/mermaid/themes/git.scss new file mode 100644 index 00000000..5fa820f6 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/git.scss @@ -0,0 +1,8 @@ +.commit-id, +.commit-msg, +.branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); +} diff --git a/themes/LoveIt/assets/lib/mermaid/themes/mermaid.scss b/themes/LoveIt/assets/lib/mermaid/themes/mermaid.scss new file mode 100644 index 00000000..10e14d3d --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/mermaid.scss @@ -0,0 +1,19 @@ +@import 'flowchart'; +@import 'sequence'; +@import 'gantt'; +@import 'class'; +@import 'git'; +@import 'pie'; +@import 'state'; + +// .composit { +// fill: white; +// border-bottom: 1px +// } + +:root { + --mermaid-font-family: '"trebuchet ms", verdana, arial'; + --mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive; + // --mermaid-alt-font-family: '"Lucida Console", Monaco, monospace'; +} + diff --git a/themes/LoveIt/assets/lib/mermaid/themes/neutral/index.scss b/themes/LoveIt/assets/lib/mermaid/themes/neutral/index.scss new file mode 100644 index 00000000..a0faed70 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/neutral/index.scss @@ -0,0 +1,65 @@ +$mainBkg: #eee; +$contrast: #26a; +$secondBkg: lighten($contrast, 55%); +$lineColor: #666; +$border1: #999; +$border2: $contrast; +$note: #ffa; +$text: #333; +$critical: #d42; +$done: #bbb; +$arrowheadColor: #333333; + +/* Flowchart variables */ + +$nodeBkg: $mainBkg; +$nodeBorder: $border1; +$clusterBkg: $secondBkg; +$clusterBorder: $border2; +$defaultLinkColor: $lineColor; +$titleColor: $text; +$edgeLabelBackground: white; + +/* Sequence Diagram variables */ + +$actorBorder: $border1; +$actorBkg: $mainBkg; +$actorTextColor: $text; +$actorLineColor: $lineColor; +$signalColor: $text; +$signalTextColor: $text; +$labelBoxBkgColor: $actorBkg; +$labelBoxBorderColor: $actorBorder; +$labelTextColor: $text; +$loopTextColor: $text; +$noteBorderColor: darken($note, 60%); +$noteBkgColor: $note; +$activationBorderColor: #666; +$activationBkgColor: #f4f4f4; +$sequenceNumberColor: white; + +/* Gantt chart variables */ + +$sectionBkgColor: lighten($contrast, 30%); +$altSectionBkgColor: white; +$sectionBkgColor2: lighten($contrast, 30%); +$taskBorderColor: darken($contrast, 10%); +$taskBkgColor: $contrast; +$taskTextLightColor: white; +$taskTextColor: $taskTextLightColor; +$taskTextDarkColor: $text; +$taskTextOutsideColor: $taskTextDarkColor; +$taskTextClickableColor: #003163; +$activeTaskBorderColor: $taskBorderColor; +$activeTaskBkgColor: $mainBkg; +$gridColor: lighten($border1, 30%); +$doneTaskBkgColor: $done; +$doneTaskBorderColor: $lineColor; +$critBkgColor: $critical; +$critBorderColor: darken($critBkgColor, 10%); +$todayLineColor: $critBkgColor; + +/* state colors */ +$labelColor: black; + +@import '../mermaid'; diff --git a/themes/LoveIt/assets/lib/mermaid/themes/pie.scss b/themes/LoveIt/assets/lib/mermaid/themes/pie.scss new file mode 100644 index 00000000..48d11509 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/pie.scss @@ -0,0 +1,11 @@ +.pieTitleText { + text-anchor: middle; + font-size: 25px; + fill: $taskTextDarkColor; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); +} +.slice { + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); +} diff --git a/themes/LoveIt/assets/lib/mermaid/themes/sequence.scss b/themes/LoveIt/assets/lib/mermaid/themes/sequence.scss new file mode 100644 index 00000000..9d084de4 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/sequence.scss @@ -0,0 +1,97 @@ +.actor { + stroke: $actorBorder; + fill: $actorBkg; +} + +text.actor { + fill: $actorTextColor; + stroke: none; +} + +.actor-line { + stroke: $actorLineColor; +} + +.messageLine0 { + stroke-width: 1.5; + stroke-dasharray: '2 2'; + stroke: $signalColor; +} + +.messageLine1 { + stroke-width: 1.5; + stroke-dasharray: '2 2'; + stroke: $signalColor; +} + +#arrowhead { + fill: $signalColor; +} + +.sequenceNumber { + fill: $sequenceNumberColor; +} + +#sequencenumber { + fill: $signalColor; +} + +#crosshead path { + fill: $signalColor !important; + stroke: $signalColor !important; +} + +.messageText { + fill: $signalTextColor; + stroke: none; +} + +.labelBox { + stroke: $labelBoxBorderColor; + fill: $labelBoxBkgColor; +} + +.labelText { + fill: $labelTextColor; + stroke: none; +} + +.loopText { + fill: $loopTextColor; + stroke: none; +} + +.loopLine { + stroke-width: 2; + stroke-dasharray: '2 2'; + stroke: $labelBoxBorderColor; +} + +.note { + //stroke: #decc93; + stroke: $noteBorderColor; + fill: $noteBkgColor; +} + +.noteText { + fill: black; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); + font-size: 14px; +} + +.activation0 { + fill: $activationBkgColor; + stroke: $activationBorderColor; +} + +.activation1 { + fill: $activationBkgColor; + stroke: $activationBorderColor; +} + +.activation2 { + fill: $activationBkgColor; + stroke: $activationBorderColor; +} diff --git a/themes/LoveIt/assets/lib/mermaid/themes/state.scss b/themes/LoveIt/assets/lib/mermaid/themes/state.scss new file mode 100644 index 00000000..0fb7c0f8 --- /dev/null +++ b/themes/LoveIt/assets/lib/mermaid/themes/state.scss @@ -0,0 +1,132 @@ +g.stateGroup text { + fill: $nodeBorder; + stroke: none; + font-size: 10px; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); +} +g.stateGroup text { + fill: $nodeBorder; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: $labelColor; +} + +g.stateGroup rect { + fill: $nodeBkg; + stroke: $nodeBorder; +} + +g.stateGroup line { + stroke: $nodeBorder; + stroke-width: 1; +} + +.transition { + stroke: $nodeBorder; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: white; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: $noteBorderColor; + fill: $noteBkgColor; + + text { + fill: black; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: $nodeBkg; + opacity: 0.5; +} + +.stateLabel text { + fill: $labelColor; + font-size: 10px; + font-weight: bold; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); +} + +.node circle.state-start { + fill: black; + stroke: black; +} +.node circle.state-end { + fill: black; + stroke: white; + stroke-width: 1.5 +} +#statediagram-barbEnd { + fill: $nodeBorder +} + +.statediagram-cluster rect { + fill: $nodeBkg; + stroke: $nodeBorder; + stroke-width: 1px; +} +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: $nodeBorder; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: white; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: #e0e0e0; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: #efefef; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: $noteBkgColor; + stroke: $noteBorderColor; + stroke-width: 1px; + rx: 0; + ry: 0; +} diff --git a/themes/LoveIt/assets/lib/meting/Meting.min.js b/themes/LoveIt/assets/lib/meting/Meting.min.js new file mode 100644 index 00000000..72a23a8f --- /dev/null +++ b/themes/LoveIt/assets/lib/meting/Meting.min.js @@ -0,0 +1 @@ +"use strict";function _objectSpread(a){for(var b=1;bb.toUpperCase())}_init(){let a={};for(let b=0;ba.json()).then(a=>this._loadPlayer(a))}_loadPlayer(a){let b={audio:a,mutex:!0,lrcType:this.meta.lrcType||3,storageName:"metingjs"};if(a.length){let a=_objectSpread({},b,this.config);for(let b in a)("true"===a[b]||"false"===a[b])&&(a[b]="true"===a[b]);let c=document.createElement("div");a.container=c,this.appendChild(c),this.aplayer=new APlayer(a)}}}console.log("\n %c MetingJS v2.0.1 %c https://github.com/metowolf/MetingJS \n","color: #fadfa3; background: #030307; padding:5px 0;","background: #fadfa3; padding:5px 0;"),window.customElements&&!window.customElements.get("meting-js")&&(window.MetingJSElement=MetingJSElement,window.customElements.define("meting-js",MetingJSElement)); diff --git a/themes/LoveIt/assets/lib/normalize/normalize.min.css b/themes/LoveIt/assets/lib/normalize/normalize.min.css new file mode 100644 index 00000000..3aa6bcb0 --- /dev/null +++ b/themes/LoveIt/assets/lib/normalize/normalize.min.css @@ -0,0 +1,9 @@ +/** + * Minified by jsDelivr using clean-css v4.2.1. + * Original file: /npm/normalize.css@8.0.1/normalize.css + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none} +/*# sourceMappingURL=/sm/5d8a97cdb40a6c49031b52d63494a6eca084416b5b035e5698fdc5fa0969b2c3.map */ \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/object-fit-images/ofi.min.js b/themes/LoveIt/assets/lib/object-fit-images/ofi.min.js new file mode 100644 index 00000000..83d42a84 --- /dev/null +++ b/themes/LoveIt/assets/lib/object-fit-images/ofi.min.js @@ -0,0 +1,2 @@ +/*! npm.im/object-fit-images 3.2.4 */ +var objectFitImages=function(){"use strict";function t(t,e){return"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='"+t+"' height='"+e+"'%3E%3C/svg%3E"}function e(t){if(t.srcset&&!p&&window.picturefill){var e=window.picturefill._;t[e.ns]&&t[e.ns].evaled||e.fillImg(t,{reselect:!0}),t[e.ns].curSrc||(t[e.ns].supported=!1,e.fillImg(t,{reselect:!0})),t.currentSrc=t[e.ns].curSrc||t.src}}function i(t){for(var e,i=getComputedStyle(t).fontFamily,r={};null!==(e=u.exec(i));)r[e[1]]=e[2];return r}function r(e,i,r){var n=t(i||1,r||0);b.call(e,"src")!==n&&h.call(e,"src",n)}function n(t,e){t.naturalWidth?e(t):setTimeout(n,100,t,e)}function c(t){var c=i(t),o=t[l];if(c["object-fit"]=c["object-fit"]||"fill",!o.img){if("fill"===c["object-fit"])return;if(!o.skipTest&&f&&!c["object-position"])return}if(!o.img){o.img=new Image(t.width,t.height),o.img.srcset=b.call(t,"data-ofi-srcset")||t.srcset,o.img.src=b.call(t,"data-ofi-src")||t.src,h.call(t,"data-ofi-src",t.src),t.srcset&&h.call(t,"data-ofi-srcset",t.srcset),r(t,t.naturalWidth||t.width,t.naturalHeight||t.height),t.srcset&&(t.srcset="");try{s(t)}catch(t){window.console&&console.warn("https://bit.ly/ofi-old-browser")}}e(o.img),t.style.backgroundImage='url("'+(o.img.currentSrc||o.img.src).replace(/"/g,'\\"')+'")',t.style.backgroundPosition=c["object-position"]||"center",t.style.backgroundRepeat="no-repeat",t.style.backgroundOrigin="content-box",/scale-down/.test(c["object-fit"])?n(o.img,function(){o.img.naturalWidth>t.width||o.img.naturalHeight>t.height?t.style.backgroundSize="contain":t.style.backgroundSize="auto"}):t.style.backgroundSize=c["object-fit"].replace("none","auto").replace("fill","100% 100%"),n(o.img,function(e){r(t,e.naturalWidth,e.naturalHeight)})}function s(t){var e={get:function(e){return t[l].img[e?e:"src"]},set:function(e,i){return t[l].img[i?i:"src"]=e,h.call(t,"data-ofi-"+i,e),c(t),e}};Object.defineProperty(t,"src",e),Object.defineProperty(t,"currentSrc",{get:function(){return e.get("currentSrc")}}),Object.defineProperty(t,"srcset",{get:function(){return e.get("srcset")},set:function(t){return e.set(t,"srcset")}})}function o(){function t(t,e){return t[l]&&t[l].img&&("src"===e||"srcset"===e)?t[l].img:t}d||(HTMLImageElement.prototype.getAttribute=function(e){return b.call(t(this,e),e)},HTMLImageElement.prototype.setAttribute=function(e,i){return h.call(t(this,e),e,String(i))})}function a(t,e){var i=!y&&!t;if(e=e||{},t=t||"img",d&&!e.skipTest||!m)return!1;"img"===t?t=document.getElementsByTagName("img"):"string"==typeof t?t=document.querySelectorAll(t):"length"in t||(t=[t]);for(var r=0;r0?"?":"";for(r=0;r1001Tracklists icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/1password.svg b/themes/LoveIt/assets/lib/simple-icons/icons/1password.svg new file mode 100644 index 00000000..f5f53a43 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/1password.svg @@ -0,0 +1 @@ +1Password icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/500px.svg b/themes/LoveIt/assets/lib/simple-icons/icons/500px.svg new file mode 100644 index 00000000..d16cbda8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/500px.svg @@ -0,0 +1 @@ +500px icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/a-frame.svg b/themes/LoveIt/assets/lib/simple-icons/icons/a-frame.svg new file mode 100644 index 00000000..3d980992 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/a-frame.svg @@ -0,0 +1 @@ +A-Frame icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/abbrobotstudio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/abbrobotstudio.svg new file mode 100644 index 00000000..72bde14c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/abbrobotstudio.svg @@ -0,0 +1 @@ +ABB RobotStudio icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/about-dot-me.svg b/themes/LoveIt/assets/lib/simple-icons/icons/about-dot-me.svg new file mode 100644 index 00000000..83f4aa7d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/about-dot-me.svg @@ -0,0 +1 @@ +About.me icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/abstract.svg b/themes/LoveIt/assets/lib/simple-icons/icons/abstract.svg new file mode 100644 index 00000000..210530d6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/abstract.svg @@ -0,0 +1 @@ +Abstract icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/academia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/academia.svg new file mode 100644 index 00000000..148005c8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/academia.svg @@ -0,0 +1 @@ +Academia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/accusoft.svg b/themes/LoveIt/assets/lib/simple-icons/icons/accusoft.svg new file mode 100644 index 00000000..5f0809a3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/accusoft.svg @@ -0,0 +1 @@ +Accusoft icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/acm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/acm.svg new file mode 100644 index 00000000..1fecb3b5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/acm.svg @@ -0,0 +1 @@ +ACM icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/actigraph.svg b/themes/LoveIt/assets/lib/simple-icons/icons/actigraph.svg new file mode 100644 index 00000000..e3e3b5c9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/actigraph.svg @@ -0,0 +1 @@ +ActiGraph icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/activision.svg b/themes/LoveIt/assets/lib/simple-icons/icons/activision.svg new file mode 100644 index 00000000..851c0928 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/activision.svg @@ -0,0 +1 @@ +Activision icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adblock.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adblock.svg new file mode 100644 index 00000000..7e8ffcd2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adblock.svg @@ -0,0 +1 @@ +AdBlock icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adblockplus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adblockplus.svg new file mode 100644 index 00000000..9ad96072 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adblockplus.svg @@ -0,0 +1 @@ +Adblock Plus icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/addthis.svg b/themes/LoveIt/assets/lib/simple-icons/icons/addthis.svg new file mode 100644 index 00000000..ff1c92b2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/addthis.svg @@ -0,0 +1 @@ +AddThis icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adguard.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adguard.svg new file mode 100644 index 00000000..35663b1b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adguard.svg @@ -0,0 +1 @@ +AdGuard icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobe.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobe.svg new file mode 100644 index 00000000..fe233b5a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobe.svg @@ -0,0 +1 @@ +Adobe icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobeacrobatreader.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobeacrobatreader.svg new file mode 100644 index 00000000..86dfb50a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobeacrobatreader.svg @@ -0,0 +1 @@ +Adobe Acrobat Reader icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobeaftereffects.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobeaftereffects.svg new file mode 100644 index 00000000..50499626 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobeaftereffects.svg @@ -0,0 +1 @@ +Adobe After Effects icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobeaudition.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobeaudition.svg new file mode 100644 index 00000000..ffb71627 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobeaudition.svg @@ -0,0 +1 @@ +Adobe Audition icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobecreativecloud.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobecreativecloud.svg new file mode 100644 index 00000000..cbeebe42 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobecreativecloud.svg @@ -0,0 +1 @@ +Adobe Creative Cloud icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobedreamweaver.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobedreamweaver.svg new file mode 100644 index 00000000..fb4ac431 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobedreamweaver.svg @@ -0,0 +1 @@ +Adobe Dreamweaver icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobefonts.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobefonts.svg new file mode 100644 index 00000000..ce0b9070 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobefonts.svg @@ -0,0 +1 @@ +Adobe Fonts icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobeillustrator.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobeillustrator.svg new file mode 100644 index 00000000..5a6b2eb6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobeillustrator.svg @@ -0,0 +1 @@ +Adobe Illustrator icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobeindesign.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobeindesign.svg new file mode 100644 index 00000000..6fda44be --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobeindesign.svg @@ -0,0 +1 @@ +Adobe InDesign icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobelightroomcc.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobelightroomcc.svg new file mode 100644 index 00000000..7a07ffa6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobelightroomcc.svg @@ -0,0 +1 @@ +Adobe Lightroom CC icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobelightroomclassic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobelightroomclassic.svg new file mode 100644 index 00000000..bb5a7b49 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobelightroomclassic.svg @@ -0,0 +1 @@ +Adobe Lightroom Classic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobephonegap.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobephonegap.svg new file mode 100644 index 00000000..e2de7932 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobephonegap.svg @@ -0,0 +1 @@ +Adobe PhoneGap icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobephotoshop.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobephotoshop.svg new file mode 100644 index 00000000..72dc56d0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobephotoshop.svg @@ -0,0 +1 @@ +Adobe Photoshop icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobepremiere.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobepremiere.svg new file mode 100644 index 00000000..091e06bb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobepremiere.svg @@ -0,0 +1 @@ +Adobe Premiere icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobetypekit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobetypekit.svg new file mode 100644 index 00000000..08f41dba --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobetypekit.svg @@ -0,0 +1 @@ +Adobe Typekit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adobexd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adobexd.svg new file mode 100644 index 00000000..13e70257 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adobexd.svg @@ -0,0 +1 @@ +Adobe XD icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/adonisjs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/adonisjs.svg new file mode 100644 index 00000000..be9858a5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/adonisjs.svg @@ -0,0 +1 @@ +AdonisJS icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/aerlingus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/aerlingus.svg new file mode 100644 index 00000000..8eb5c3f4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/aerlingus.svg @@ -0,0 +1 @@ +Aer Lingus icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/affinity.svg b/themes/LoveIt/assets/lib/simple-icons/icons/affinity.svg new file mode 100644 index 00000000..fd038b82 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/affinity.svg @@ -0,0 +1 @@ +Affinity icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/affinitydesigner.svg b/themes/LoveIt/assets/lib/simple-icons/icons/affinitydesigner.svg new file mode 100644 index 00000000..79426dd2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/affinitydesigner.svg @@ -0,0 +1 @@ +Affinity Designer icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/affinityphoto.svg b/themes/LoveIt/assets/lib/simple-icons/icons/affinityphoto.svg new file mode 100644 index 00000000..3ee0276b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/affinityphoto.svg @@ -0,0 +1 @@ +Affinity Photo icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/affinitypublisher.svg b/themes/LoveIt/assets/lib/simple-icons/icons/affinitypublisher.svg new file mode 100644 index 00000000..f8250579 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/affinitypublisher.svg @@ -0,0 +1 @@ +Affinity Publisher icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/aiqfome.svg b/themes/LoveIt/assets/lib/simple-icons/icons/aiqfome.svg new file mode 100644 index 00000000..0659b7e2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/aiqfome.svg @@ -0,0 +1 @@ +Aiqfome icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/airbnb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/airbnb.svg new file mode 100644 index 00000000..53333b00 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/airbnb.svg @@ -0,0 +1 @@ +Airbnb icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/airbus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/airbus.svg new file mode 100644 index 00000000..2ed31c9a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/airbus.svg @@ -0,0 +1 @@ +Airbus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/aircall.svg b/themes/LoveIt/assets/lib/simple-icons/icons/aircall.svg new file mode 100644 index 00000000..a6ad30bd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/aircall.svg @@ -0,0 +1 @@ +Aircall icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/aircanada.svg b/themes/LoveIt/assets/lib/simple-icons/icons/aircanada.svg new file mode 100644 index 00000000..6a546934 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/aircanada.svg @@ -0,0 +1 @@ +Air Canada icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/airfrance.svg b/themes/LoveIt/assets/lib/simple-icons/icons/airfrance.svg new file mode 100644 index 00000000..392e6e05 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/airfrance.svg @@ -0,0 +1 @@ +Air France icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/airplayaudio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/airplayaudio.svg new file mode 100644 index 00000000..c494e5a7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/airplayaudio.svg @@ -0,0 +1 @@ +AirPlay Audio icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/airplayvideo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/airplayvideo.svg new file mode 100644 index 00000000..89da5b98 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/airplayvideo.svg @@ -0,0 +1 @@ +AirPlay Video icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/airtable.svg b/themes/LoveIt/assets/lib/simple-icons/icons/airtable.svg new file mode 100644 index 00000000..3461a7ea --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/airtable.svg @@ -0,0 +1 @@ +Airtable icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/alfaromeo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/alfaromeo.svg new file mode 100644 index 00000000..9bd6d72e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/alfaromeo.svg @@ -0,0 +1 @@ +Alfa Romeo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/algolia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/algolia.svg new file mode 100644 index 00000000..3fb52ebc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/algolia.svg @@ -0,0 +1 @@ +Algolia icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/alipay.svg b/themes/LoveIt/assets/lib/simple-icons/icons/alipay.svg new file mode 100644 index 00000000..8672e45b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/alipay.svg @@ -0,0 +1 @@ +Alipay icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/alliedmodders.svg b/themes/LoveIt/assets/lib/simple-icons/icons/alliedmodders.svg new file mode 100644 index 00000000..fc8884e6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/alliedmodders.svg @@ -0,0 +1 @@ +AlliedModders icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/allocine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/allocine.svg new file mode 100644 index 00000000..30ad1a78 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/allocine.svg @@ -0,0 +1 @@ +AlloCiné icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/alpinelinux.svg b/themes/LoveIt/assets/lib/simple-icons/icons/alpinelinux.svg new file mode 100644 index 00000000..349dd6e7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/alpinelinux.svg @@ -0,0 +1 @@ +Alpine Linux icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/amazon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/amazon.svg new file mode 100644 index 00000000..9b59222d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/amazon.svg @@ -0,0 +1 @@ +Amazon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/amazonalexa.svg b/themes/LoveIt/assets/lib/simple-icons/icons/amazonalexa.svg new file mode 100644 index 00000000..550eda03 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/amazonalexa.svg @@ -0,0 +1 @@ +Amazon Alexa icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/amazonaws.svg b/themes/LoveIt/assets/lib/simple-icons/icons/amazonaws.svg new file mode 100644 index 00000000..a4357c77 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/amazonaws.svg @@ -0,0 +1 @@ +Amazon AWS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/amazonfiretv.svg b/themes/LoveIt/assets/lib/simple-icons/icons/amazonfiretv.svg new file mode 100644 index 00000000..a93bee76 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/amazonfiretv.svg @@ -0,0 +1 @@ +Amazon Fire TV icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/amazonlumberyard.svg b/themes/LoveIt/assets/lib/simple-icons/icons/amazonlumberyard.svg new file mode 100644 index 00000000..4881f054 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/amazonlumberyard.svg @@ -0,0 +1 @@ +Amazon Lumberyard icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/amd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/amd.svg new file mode 100644 index 00000000..1fd97db2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/amd.svg @@ -0,0 +1 @@ +AMD icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/americanairlines.svg b/themes/LoveIt/assets/lib/simple-icons/icons/americanairlines.svg new file mode 100644 index 00000000..079b389e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/americanairlines.svg @@ -0,0 +1 @@ +American Airlines icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/americanexpress.svg b/themes/LoveIt/assets/lib/simple-icons/icons/americanexpress.svg new file mode 100644 index 00000000..e4453a41 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/americanexpress.svg @@ -0,0 +1 @@ +American Express icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/anaconda.svg b/themes/LoveIt/assets/lib/simple-icons/icons/anaconda.svg new file mode 100644 index 00000000..b75181f1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/anaconda.svg @@ -0,0 +1 @@ +Anaconda icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/analogue.svg b/themes/LoveIt/assets/lib/simple-icons/icons/analogue.svg new file mode 100644 index 00000000..b3e56dcb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/analogue.svg @@ -0,0 +1 @@ +Analogue icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/anchor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/anchor.svg new file mode 100644 index 00000000..51e28278 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/anchor.svg @@ -0,0 +1 @@ +Anchor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/andela.svg b/themes/LoveIt/assets/lib/simple-icons/icons/andela.svg new file mode 100644 index 00000000..9b0cdef9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/andela.svg @@ -0,0 +1 @@ +Andela icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/android.svg b/themes/LoveIt/assets/lib/simple-icons/icons/android.svg new file mode 100644 index 00000000..287f7f5b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/android.svg @@ -0,0 +1 @@ +Android icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/androidauto.svg b/themes/LoveIt/assets/lib/simple-icons/icons/androidauto.svg new file mode 100644 index 00000000..9ce0e5f9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/androidauto.svg @@ -0,0 +1 @@ +Android Auto icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/androidstudio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/androidstudio.svg new file mode 100644 index 00000000..3ee70714 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/androidstudio.svg @@ -0,0 +1 @@ +Android Studio icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/angellist.svg b/themes/LoveIt/assets/lib/simple-icons/icons/angellist.svg new file mode 100644 index 00000000..a591fd37 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/angellist.svg @@ -0,0 +1 @@ +AngelList icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/angular.svg b/themes/LoveIt/assets/lib/simple-icons/icons/angular.svg new file mode 100644 index 00000000..3f981544 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/angular.svg @@ -0,0 +1 @@ +Angular icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/angularjs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/angularjs.svg new file mode 100644 index 00000000..cfefd759 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/angularjs.svg @@ -0,0 +1 @@ +AngularJS icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/angularuniversal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/angularuniversal.svg new file mode 100644 index 00000000..55bce85a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/angularuniversal.svg @@ -0,0 +1 @@ +Angular Universal icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ansible.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ansible.svg new file mode 100644 index 00000000..21847331 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ansible.svg @@ -0,0 +1 @@ +Ansible icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/antena3.svg b/themes/LoveIt/assets/lib/simple-icons/icons/antena3.svg new file mode 100644 index 00000000..8d94a560 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/antena3.svg @@ -0,0 +1 @@ +Antena 3 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apache.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apache.svg new file mode 100644 index 00000000..cebe6056 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apache.svg @@ -0,0 +1 @@ +Apache icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apacheairflow.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apacheairflow.svg new file mode 100644 index 00000000..b9198779 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apacheairflow.svg @@ -0,0 +1 @@ +Apache Airflow icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apacheant.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apacheant.svg new file mode 100644 index 00000000..c74ebcb9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apacheant.svg @@ -0,0 +1 @@ +Apache Ant icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachecloudstack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachecloudstack.svg new file mode 100644 index 00000000..a3cac0ee --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachecloudstack.svg @@ -0,0 +1 @@ +Apache CloudStack icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachecordova.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachecordova.svg new file mode 100644 index 00000000..5f64a591 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachecordova.svg @@ -0,0 +1 @@ +Apache Cordova icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachedruid.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachedruid.svg new file mode 100644 index 00000000..54e41eae --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachedruid.svg @@ -0,0 +1 @@ +Apache Druid icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apacheecharts.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apacheecharts.svg new file mode 100644 index 00000000..9f7d0f87 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apacheecharts.svg @@ -0,0 +1 @@ +Apache ECharts icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apacheflink.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apacheflink.svg new file mode 100644 index 00000000..1371ea99 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apacheflink.svg @@ -0,0 +1 @@ +Apache Flink icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachekafka.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachekafka.svg new file mode 100644 index 00000000..63b3f2bb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachekafka.svg @@ -0,0 +1 @@ +Apache Kafka icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachemaven.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachemaven.svg new file mode 100644 index 00000000..1bf7caf9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachemaven.svg @@ -0,0 +1 @@ +Apache Maven icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachenetbeanside.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachenetbeanside.svg new file mode 100644 index 00000000..39e34763 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachenetbeanside.svg @@ -0,0 +1 @@ +Apache NetBeans IDE icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apacheopenoffice.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apacheopenoffice.svg new file mode 100644 index 00000000..82fdfb9c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apacheopenoffice.svg @@ -0,0 +1 @@ +Apache OpenOffice icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachepulsar.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachepulsar.svg new file mode 100644 index 00000000..420afe4f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachepulsar.svg @@ -0,0 +1 @@ +Apache Pulsar icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apacherocketmq.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apacherocketmq.svg new file mode 100644 index 00000000..4a2514e8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apacherocketmq.svg @@ -0,0 +1 @@ +Apache RocketMQ icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachesolr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachesolr.svg new file mode 100644 index 00000000..fe5b1c37 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachesolr.svg @@ -0,0 +1 @@ +Apache Solr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apachespark.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apachespark.svg new file mode 100644 index 00000000..5c438b1b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apachespark.svg @@ -0,0 +1 @@ +Apache Spark icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apollographql.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apollographql.svg new file mode 100644 index 00000000..f441720d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apollographql.svg @@ -0,0 +1 @@ +Apollo GraphQL icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/apple.svg b/themes/LoveIt/assets/lib/simple-icons/icons/apple.svg new file mode 100644 index 00000000..796443d4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/apple.svg @@ -0,0 +1 @@ +Apple icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/applemusic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/applemusic.svg new file mode 100644 index 00000000..4afbe2da --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/applemusic.svg @@ -0,0 +1 @@ +Apple Music icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/applepay.svg b/themes/LoveIt/assets/lib/simple-icons/icons/applepay.svg new file mode 100644 index 00000000..a9586044 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/applepay.svg @@ -0,0 +1 @@ +Apple Pay icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/applepodcasts.svg b/themes/LoveIt/assets/lib/simple-icons/icons/applepodcasts.svg new file mode 100644 index 00000000..d52fe035 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/applepodcasts.svg @@ -0,0 +1 @@ +Apple Podcasts icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/appletv.svg b/themes/LoveIt/assets/lib/simple-icons/icons/appletv.svg new file mode 100644 index 00000000..5c9c3e0e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/appletv.svg @@ -0,0 +1 @@ +Apple TV icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/appsignal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/appsignal.svg new file mode 100644 index 00000000..b3c0f462 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/appsignal.svg @@ -0,0 +1 @@ +AppSignal icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/appstore.svg b/themes/LoveIt/assets/lib/simple-icons/icons/appstore.svg new file mode 100644 index 00000000..06290752 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/appstore.svg @@ -0,0 +1 @@ +App Store icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/appveyor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/appveyor.svg new file mode 100644 index 00000000..f8acfe34 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/appveyor.svg @@ -0,0 +1 @@ +AppVeyor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/aral.svg b/themes/LoveIt/assets/lib/simple-icons/icons/aral.svg new file mode 100644 index 00000000..9b8c400a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/aral.svg @@ -0,0 +1 @@ +ARAL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/archicad.svg b/themes/LoveIt/assets/lib/simple-icons/icons/archicad.svg new file mode 100644 index 00000000..aa469a5c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/archicad.svg @@ -0,0 +1 @@ +ARCHICAD icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/archiveofourown.svg b/themes/LoveIt/assets/lib/simple-icons/icons/archiveofourown.svg new file mode 100644 index 00000000..768e5ca0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/archiveofourown.svg @@ -0,0 +1 @@ +Archive of Our Own icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/archlinux.svg b/themes/LoveIt/assets/lib/simple-icons/icons/archlinux.svg new file mode 100644 index 00000000..ca74a55b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/archlinux.svg @@ -0,0 +1 @@ +Arch Linux icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ardour.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ardour.svg new file mode 100644 index 00000000..d6af113d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ardour.svg @@ -0,0 +1 @@ +Ardour icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/arduino.svg b/themes/LoveIt/assets/lib/simple-icons/icons/arduino.svg new file mode 100644 index 00000000..f277633d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/arduino.svg @@ -0,0 +1 @@ +Arduino icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/artstation.svg b/themes/LoveIt/assets/lib/simple-icons/icons/artstation.svg new file mode 100644 index 00000000..a1bebf9c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/artstation.svg @@ -0,0 +1 @@ +ArtStation icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/arxiv.svg b/themes/LoveIt/assets/lib/simple-icons/icons/arxiv.svg new file mode 100644 index 00000000..45bdf4d7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/arxiv.svg @@ -0,0 +1 @@ +arXiv icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/asana.svg b/themes/LoveIt/assets/lib/simple-icons/icons/asana.svg new file mode 100644 index 00000000..012aacc9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/asana.svg @@ -0,0 +1 @@ +Asana icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/asciidoctor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/asciidoctor.svg new file mode 100644 index 00000000..63d8d4c2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/asciidoctor.svg @@ -0,0 +1 @@ +Asciidoctor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/asciinema.svg b/themes/LoveIt/assets/lib/simple-icons/icons/asciinema.svg new file mode 100644 index 00000000..3adc56b2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/asciinema.svg @@ -0,0 +1 @@ +asciinema icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/askfm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/askfm.svg new file mode 100644 index 00000000..bb44605e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/askfm.svg @@ -0,0 +1 @@ +ASKfm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/asus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/asus.svg new file mode 100644 index 00000000..7227c2dd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/asus.svg @@ -0,0 +1 @@ +ASUS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/at-and-t.svg b/themes/LoveIt/assets/lib/simple-icons/icons/at-and-t.svg new file mode 100644 index 00000000..9616ac69 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/at-and-t.svg @@ -0,0 +1 @@ +AT&T icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/atari.svg b/themes/LoveIt/assets/lib/simple-icons/icons/atari.svg new file mode 100644 index 00000000..8f83f91f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/atari.svg @@ -0,0 +1 @@ +Atari icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/atlassian.svg b/themes/LoveIt/assets/lib/simple-icons/icons/atlassian.svg new file mode 100644 index 00000000..6e46f575 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/atlassian.svg @@ -0,0 +1 @@ +Atlassian icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/atom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/atom.svg new file mode 100644 index 00000000..c684ad3e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/atom.svg @@ -0,0 +1 @@ +Atom icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/audacity.svg b/themes/LoveIt/assets/lib/simple-icons/icons/audacity.svg new file mode 100644 index 00000000..641ed5a4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/audacity.svg @@ -0,0 +1 @@ +Audacity icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/audi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/audi.svg new file mode 100644 index 00000000..3c37409f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/audi.svg @@ -0,0 +1 @@ +Audi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/audible.svg b/themes/LoveIt/assets/lib/simple-icons/icons/audible.svg new file mode 100644 index 00000000..0c59b03c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/audible.svg @@ -0,0 +1 @@ +Audible icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/audio-technica.svg b/themes/LoveIt/assets/lib/simple-icons/icons/audio-technica.svg new file mode 100644 index 00000000..f70a155a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/audio-technica.svg @@ -0,0 +1 @@ +Audio-Technica icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/audioboom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/audioboom.svg new file mode 100644 index 00000000..1d3da499 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/audioboom.svg @@ -0,0 +1 @@ +Audioboom icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/audiomack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/audiomack.svg new file mode 100644 index 00000000..33f4093a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/audiomack.svg @@ -0,0 +1 @@ +Audiomack icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/aurelia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/aurelia.svg new file mode 100644 index 00000000..eb092a43 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/aurelia.svg @@ -0,0 +1 @@ +Aurelia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/auth0.svg b/themes/LoveIt/assets/lib/simple-icons/icons/auth0.svg new file mode 100644 index 00000000..82576cbf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/auth0.svg @@ -0,0 +1 @@ +Auth0 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/authy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/authy.svg new file mode 100644 index 00000000..e5381463 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/authy.svg @@ -0,0 +1 @@ +Authy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/autodesk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/autodesk.svg new file mode 100644 index 00000000..b8d19658 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/autodesk.svg @@ -0,0 +1 @@ +Autodesk icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/automatic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/automatic.svg new file mode 100644 index 00000000..66ac2c68 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/automatic.svg @@ -0,0 +1 @@ +Automatic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/autotask.svg b/themes/LoveIt/assets/lib/simple-icons/icons/autotask.svg new file mode 100644 index 00000000..a104fc5a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/autotask.svg @@ -0,0 +1 @@ +Autotask icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/aventrix.svg b/themes/LoveIt/assets/lib/simple-icons/icons/aventrix.svg new file mode 100644 index 00000000..4f36d68c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/aventrix.svg @@ -0,0 +1 @@ +Aventrix icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/awesomelists.svg b/themes/LoveIt/assets/lib/simple-icons/icons/awesomelists.svg new file mode 100644 index 00000000..86372189 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/awesomelists.svg @@ -0,0 +1 @@ +Awesome Lists icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/awesomewm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/awesomewm.svg new file mode 100644 index 00000000..9a922ec6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/awesomewm.svg @@ -0,0 +1 @@ +awesomeWM icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/azureartifacts.svg b/themes/LoveIt/assets/lib/simple-icons/icons/azureartifacts.svg new file mode 100644 index 00000000..5a50ec20 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/azureartifacts.svg @@ -0,0 +1 @@ +Azure Artifacts icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/azuredevops.svg b/themes/LoveIt/assets/lib/simple-icons/icons/azuredevops.svg new file mode 100644 index 00000000..1ac6c8ec --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/azuredevops.svg @@ -0,0 +1 @@ +Azure DevOps icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/azurefunctions.svg b/themes/LoveIt/assets/lib/simple-icons/icons/azurefunctions.svg new file mode 100644 index 00000000..89409d33 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/azurefunctions.svg @@ -0,0 +1 @@ +Azure Functions icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/azurepipelines.svg b/themes/LoveIt/assets/lib/simple-icons/icons/azurepipelines.svg new file mode 100644 index 00000000..83454b23 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/azurepipelines.svg @@ -0,0 +1 @@ +Azure Pipelines icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/babel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/babel.svg new file mode 100644 index 00000000..dcf133a9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/babel.svg @@ -0,0 +1 @@ +Babel icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/badgr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/badgr.svg new file mode 100644 index 00000000..7fb69d42 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/badgr.svg @@ -0,0 +1 @@ +Badgr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/badoo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/badoo.svg new file mode 100644 index 00000000..8be30ce9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/badoo.svg @@ -0,0 +1 @@ +Badoo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/baidu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/baidu.svg new file mode 100644 index 00000000..ac5684ab --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/baidu.svg @@ -0,0 +1 @@ +Baidu icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bamboo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bamboo.svg new file mode 100644 index 00000000..a6bfd6d6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bamboo.svg @@ -0,0 +1 @@ +Bamboo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bancontact.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bancontact.svg new file mode 100644 index 00000000..f38db889 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bancontact.svg @@ -0,0 +1 @@ +Bancontact icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bandcamp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bandcamp.svg new file mode 100644 index 00000000..74312662 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bandcamp.svg @@ -0,0 +1 @@ +Bandcamp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bandlab.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bandlab.svg new file mode 100644 index 00000000..aae4f9a7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bandlab.svg @@ -0,0 +1 @@ +BandLab icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bandsintown.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bandsintown.svg new file mode 100644 index 00000000..25f5deef --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bandsintown.svg @@ -0,0 +1 @@ +Bandsintown icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/basecamp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/basecamp.svg new file mode 100644 index 00000000..46d42718 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/basecamp.svg @@ -0,0 +1 @@ +Basecamp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bathasu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bathasu.svg new file mode 100644 index 00000000..087fe1aa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bathasu.svg @@ -0,0 +1 @@ +Bath ASU icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/battle-dot-net.svg b/themes/LoveIt/assets/lib/simple-icons/icons/battle-dot-net.svg new file mode 100644 index 00000000..a89d414d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/battle-dot-net.svg @@ -0,0 +1 @@ +Battle.net icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bbciplayer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bbciplayer.svg new file mode 100644 index 00000000..738fc790 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bbciplayer.svg @@ -0,0 +1 @@ +BBC iPlayer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/beatport.svg b/themes/LoveIt/assets/lib/simple-icons/icons/beatport.svg new file mode 100644 index 00000000..711725e6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/beatport.svg @@ -0,0 +1 @@ +Beatport icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/beats.svg b/themes/LoveIt/assets/lib/simple-icons/icons/beats.svg new file mode 100644 index 00000000..d0248bcc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/beats.svg @@ -0,0 +1 @@ +Beats icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/beatsbydre.svg b/themes/LoveIt/assets/lib/simple-icons/icons/beatsbydre.svg new file mode 100644 index 00000000..0223d48f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/beatsbydre.svg @@ -0,0 +1 @@ +Beats by Dre icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/behance.svg b/themes/LoveIt/assets/lib/simple-icons/icons/behance.svg new file mode 100644 index 00000000..7483fdb3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/behance.svg @@ -0,0 +1 @@ +Behance icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/beijingsubway.svg b/themes/LoveIt/assets/lib/simple-icons/icons/beijingsubway.svg new file mode 100644 index 00000000..02cdb87b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/beijingsubway.svg @@ -0,0 +1 @@ +Beijing Subway icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bentley.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bentley.svg new file mode 100644 index 00000000..cbbe29b1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bentley.svg @@ -0,0 +1 @@ +Bentley icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bigcartel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bigcartel.svg new file mode 100644 index 00000000..12abeb97 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bigcartel.svg @@ -0,0 +1 @@ +Big Cartel icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bing.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bing.svg new file mode 100644 index 00000000..472bd0b3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bing.svg @@ -0,0 +1 @@ +Bing icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bit.svg new file mode 100644 index 00000000..c06dfc65 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bit.svg @@ -0,0 +1 @@ +Bit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bitbucket.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bitbucket.svg new file mode 100644 index 00000000..df3b42f2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bitbucket.svg @@ -0,0 +1 @@ +Bitbucket icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bitcoin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bitcoin.svg new file mode 100644 index 00000000..91e76a97 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bitcoin.svg @@ -0,0 +1 @@ +Bitcoin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bitdefender.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bitdefender.svg new file mode 100644 index 00000000..b0b42007 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bitdefender.svg @@ -0,0 +1 @@ +Bitdefender icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bitly.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bitly.svg new file mode 100644 index 00000000..3f5c8550 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bitly.svg @@ -0,0 +1 @@ +Bitly icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bitrise.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bitrise.svg new file mode 100644 index 00000000..e50652dc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bitrise.svg @@ -0,0 +1 @@ +Bitrise icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bitwarden.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bitwarden.svg new file mode 100644 index 00000000..9e26f262 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bitwarden.svg @@ -0,0 +1 @@ +Bitwarden icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/blackberry.svg b/themes/LoveIt/assets/lib/simple-icons/icons/blackberry.svg new file mode 100644 index 00000000..0106e431 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/blackberry.svg @@ -0,0 +1 @@ +Blackberry icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/blender.svg b/themes/LoveIt/assets/lib/simple-icons/icons/blender.svg new file mode 100644 index 00000000..09c2ffe6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/blender.svg @@ -0,0 +1 @@ +Blender icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/blogger.svg b/themes/LoveIt/assets/lib/simple-icons/icons/blogger.svg new file mode 100644 index 00000000..12d7a7d8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/blogger.svg @@ -0,0 +1 @@ +Blogger icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bloglovin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bloglovin.svg new file mode 100644 index 00000000..c99d05db --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bloglovin.svg @@ -0,0 +1 @@ +Bloglovin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bluetooth.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bluetooth.svg new file mode 100644 index 00000000..3978e9a8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bluetooth.svg @@ -0,0 +1 @@ +Bluetooth icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bmcsoftware.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bmcsoftware.svg new file mode 100644 index 00000000..e5425e14 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bmcsoftware.svg @@ -0,0 +1 @@ +BMC Software icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bmw.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bmw.svg new file mode 100644 index 00000000..9c4deae3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bmw.svg @@ -0,0 +1 @@ +BMW icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/boeing.svg b/themes/LoveIt/assets/lib/simple-icons/icons/boeing.svg new file mode 100644 index 00000000..126d0c3c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/boeing.svg @@ -0,0 +1 @@ +Boeing icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/boost.svg b/themes/LoveIt/assets/lib/simple-icons/icons/boost.svg new file mode 100644 index 00000000..4ecb0dea --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/boost.svg @@ -0,0 +1 @@ +Boost icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bootstrap.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bootstrap.svg new file mode 100644 index 00000000..f4b0492d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bootstrap.svg @@ -0,0 +1 @@ +Bootstrap icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bosch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bosch.svg new file mode 100644 index 00000000..23cc122c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bosch.svg @@ -0,0 +1 @@ +Bosch icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bose.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bose.svg new file mode 100644 index 00000000..6e6a23d7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bose.svg @@ -0,0 +1 @@ +Bose icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bower.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bower.svg new file mode 100644 index 00000000..e6d0d5c2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bower.svg @@ -0,0 +1 @@ +Bower icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/box.svg b/themes/LoveIt/assets/lib/simple-icons/icons/box.svg new file mode 100644 index 00000000..a0bba61d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/box.svg @@ -0,0 +1 @@ +Box icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/brand-dot-ai.svg b/themes/LoveIt/assets/lib/simple-icons/icons/brand-dot-ai.svg new file mode 100644 index 00000000..257038e2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/brand-dot-ai.svg @@ -0,0 +1 @@ +Brand.ai icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/brandfolder.svg b/themes/LoveIt/assets/lib/simple-icons/icons/brandfolder.svg new file mode 100644 index 00000000..2a115ac2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/brandfolder.svg @@ -0,0 +1 @@ +Brandfolder icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/brave.svg b/themes/LoveIt/assets/lib/simple-icons/icons/brave.svg new file mode 100644 index 00000000..f65e4c3d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/brave.svg @@ -0,0 +1 @@ +Brave icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/breaker.svg b/themes/LoveIt/assets/lib/simple-icons/icons/breaker.svg new file mode 100644 index 00000000..15892995 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/breaker.svg @@ -0,0 +1 @@ +Breaker icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/broadcom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/broadcom.svg new file mode 100644 index 00000000..4ef2a6b5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/broadcom.svg @@ -0,0 +1 @@ +Broadcom icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bt.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bt.svg new file mode 100644 index 00000000..c94a6e46 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bt.svg @@ -0,0 +1 @@ +BT icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/buddy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/buddy.svg new file mode 100644 index 00000000..a6fedbd2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/buddy.svg @@ -0,0 +1 @@ +Buddy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/buffer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/buffer.svg new file mode 100644 index 00000000..f8182be4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/buffer.svg @@ -0,0 +1 @@ +Buffer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bugatti.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bugatti.svg new file mode 100644 index 00000000..84727bef --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bugatti.svg @@ -0,0 +1 @@ +Bugatti icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bugsnag.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bugsnag.svg new file mode 100644 index 00000000..3f2242b5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bugsnag.svg @@ -0,0 +1 @@ +Bugsnag icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/bulma.svg b/themes/LoveIt/assets/lib/simple-icons/icons/bulma.svg new file mode 100644 index 00000000..66f0ebe6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/bulma.svg @@ -0,0 +1 @@ +Bulma icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/buymeacoffee.svg b/themes/LoveIt/assets/lib/simple-icons/icons/buymeacoffee.svg new file mode 100644 index 00000000..5826a3e6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/buymeacoffee.svg @@ -0,0 +1 @@ +Buy Me A Coffee icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/buzzfeed.svg b/themes/LoveIt/assets/lib/simple-icons/icons/buzzfeed.svg new file mode 100644 index 00000000..d9364c3f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/buzzfeed.svg @@ -0,0 +1 @@ +BuzzFeed icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/byte.svg b/themes/LoveIt/assets/lib/simple-icons/icons/byte.svg new file mode 100644 index 00000000..c8905195 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/byte.svg @@ -0,0 +1 @@ +byte icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/c.svg b/themes/LoveIt/assets/lib/simple-icons/icons/c.svg new file mode 100644 index 00000000..f885ab27 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/c.svg @@ -0,0 +1 @@ +C icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cairometro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cairometro.svg new file mode 100644 index 00000000..bc8edcb5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cairometro.svg @@ -0,0 +1 @@ +Cairo Metro icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cakephp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cakephp.svg new file mode 100644 index 00000000..388f1381 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cakephp.svg @@ -0,0 +1 @@ +CakePHP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/campaignmonitor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/campaignmonitor.svg new file mode 100644 index 00000000..1d2d8af6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/campaignmonitor.svg @@ -0,0 +1 @@ +Campaign Monitor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/canva.svg b/themes/LoveIt/assets/lib/simple-icons/icons/canva.svg new file mode 100644 index 00000000..4972a5cb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/canva.svg @@ -0,0 +1 @@ +Canva icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/carthrottle.svg b/themes/LoveIt/assets/lib/simple-icons/icons/carthrottle.svg new file mode 100644 index 00000000..1f0b3ffa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/carthrottle.svg @@ -0,0 +1 @@ +Car Throttle icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cashapp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cashapp.svg new file mode 100644 index 00000000..ce7a4314 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cashapp.svg @@ -0,0 +1 @@ +Cash App icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cassandra.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cassandra.svg new file mode 100644 index 00000000..ae79760a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cassandra.svg @@ -0,0 +1 @@ +Cassandra icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/castbox.svg b/themes/LoveIt/assets/lib/simple-icons/icons/castbox.svg new file mode 100644 index 00000000..878b10ac --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/castbox.svg @@ -0,0 +1 @@ +Castbox icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/castorama.svg b/themes/LoveIt/assets/lib/simple-icons/icons/castorama.svg new file mode 100644 index 00000000..39d3c6d2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/castorama.svg @@ -0,0 +1 @@ +Castorama icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/castro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/castro.svg new file mode 100644 index 00000000..5a921184 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/castro.svg @@ -0,0 +1 @@ +Castro icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/caterpillar.svg b/themes/LoveIt/assets/lib/simple-icons/icons/caterpillar.svg new file mode 100644 index 00000000..9c60539d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/caterpillar.svg @@ -0,0 +1 @@ +Caterpillar icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cdprojekt.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cdprojekt.svg new file mode 100644 index 00000000..dd45c399 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cdprojekt.svg @@ -0,0 +1 @@ +CD Projekt icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/celery.svg b/themes/LoveIt/assets/lib/simple-icons/icons/celery.svg new file mode 100644 index 00000000..91e3af81 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/celery.svg @@ -0,0 +1 @@ +Celery icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/centos.svg b/themes/LoveIt/assets/lib/simple-icons/icons/centos.svg new file mode 100644 index 00000000..9253069e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/centos.svg @@ -0,0 +1 @@ +CentOS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cesium.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cesium.svg new file mode 100644 index 00000000..42746c48 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cesium.svg @@ -0,0 +1 @@ +Cesium icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cevo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cevo.svg new file mode 100644 index 00000000..4be66f0f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cevo.svg @@ -0,0 +1 @@ +CEVO icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/chartmogul.svg b/themes/LoveIt/assets/lib/simple-icons/icons/chartmogul.svg new file mode 100644 index 00000000..a270b9ae --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/chartmogul.svg @@ -0,0 +1 @@ +ChartMogul icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/chase.svg b/themes/LoveIt/assets/lib/simple-icons/icons/chase.svg new file mode 100644 index 00000000..0ba212fa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/chase.svg @@ -0,0 +1 @@ +Chase icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/checkmarx.svg b/themes/LoveIt/assets/lib/simple-icons/icons/checkmarx.svg new file mode 100644 index 00000000..48df0fdd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/checkmarx.svg @@ -0,0 +1 @@ +Checkmarx icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/chef.svg b/themes/LoveIt/assets/lib/simple-icons/icons/chef.svg new file mode 100644 index 00000000..e94c9cbc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/chef.svg @@ -0,0 +1 @@ +Chef icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/chocolatey.svg b/themes/LoveIt/assets/lib/simple-icons/icons/chocolatey.svg new file mode 100644 index 00000000..d143ebe1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/chocolatey.svg @@ -0,0 +1 @@ +Chocolatey icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/chupachups.svg b/themes/LoveIt/assets/lib/simple-icons/icons/chupachups.svg new file mode 100644 index 00000000..ba6e3468 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/chupachups.svg @@ -0,0 +1 @@ +Chupa Chups icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cinema4d.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cinema4d.svg new file mode 100644 index 00000000..06da8bad --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cinema4d.svg @@ -0,0 +1 @@ +Cinema 4D icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/circle.svg b/themes/LoveIt/assets/lib/simple-icons/icons/circle.svg new file mode 100644 index 00000000..b9586b08 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/circle.svg @@ -0,0 +1 @@ +Circle icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/circleci.svg b/themes/LoveIt/assets/lib/simple-icons/icons/circleci.svg new file mode 100644 index 00000000..6e894e8f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/circleci.svg @@ -0,0 +1 @@ +CircleCI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cirrusci.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cirrusci.svg new file mode 100644 index 00000000..a17e8a13 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cirrusci.svg @@ -0,0 +1 @@ +Cirrus CI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cisco.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cisco.svg new file mode 100644 index 00000000..17358f1e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cisco.svg @@ -0,0 +1 @@ +Cisco icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/citrix.svg b/themes/LoveIt/assets/lib/simple-icons/icons/citrix.svg new file mode 100644 index 00000000..e69627de --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/citrix.svg @@ -0,0 +1 @@ +Citrix icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/citroen.svg b/themes/LoveIt/assets/lib/simple-icons/icons/citroen.svg new file mode 100644 index 00000000..dcfd99d1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/citroen.svg @@ -0,0 +1 @@ +Citroën icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/civicrm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/civicrm.svg new file mode 100644 index 00000000..f6fdc477 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/civicrm.svg @@ -0,0 +1 @@ +CiviCRM icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/claris.svg b/themes/LoveIt/assets/lib/simple-icons/icons/claris.svg new file mode 100644 index 00000000..b7311244 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/claris.svg @@ -0,0 +1 @@ +Claris icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cliqz.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cliqz.svg new file mode 100644 index 00000000..f219b2c6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cliqz.svg @@ -0,0 +1 @@ +Cliqz icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/clockify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/clockify.svg new file mode 100644 index 00000000..b7c4d546 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/clockify.svg @@ -0,0 +1 @@ +Clockify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/clojure.svg b/themes/LoveIt/assets/lib/simple-icons/icons/clojure.svg new file mode 100644 index 00000000..3c077364 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/clojure.svg @@ -0,0 +1 @@ +Clojure icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cloudbees.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cloudbees.svg new file mode 100644 index 00000000..52ca703c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cloudbees.svg @@ -0,0 +1 @@ +CloudBees icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cloudcannon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cloudcannon.svg new file mode 100644 index 00000000..d5c033d6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cloudcannon.svg @@ -0,0 +1 @@ +CloudCannon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cloudflare.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cloudflare.svg new file mode 100644 index 00000000..49011800 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cloudflare.svg @@ -0,0 +1 @@ +Cloudflare icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cloudsmith.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cloudsmith.svg new file mode 100644 index 00000000..683caade --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cloudsmith.svg @@ -0,0 +1 @@ +Cloudsmith icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/clyp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/clyp.svg new file mode 100644 index 00000000..d4a6ae4a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/clyp.svg @@ -0,0 +1 @@ +Clyp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cmake.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cmake.svg new file mode 100644 index 00000000..f55f1c70 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cmake.svg @@ -0,0 +1 @@ +CMake icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cnn.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cnn.svg new file mode 100644 index 00000000..5eccff4b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cnn.svg @@ -0,0 +1 @@ +CNN icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/co-op.svg b/themes/LoveIt/assets/lib/simple-icons/icons/co-op.svg new file mode 100644 index 00000000..3e32d71f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/co-op.svg @@ -0,0 +1 @@ +Co-op icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cocoapods.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cocoapods.svg new file mode 100644 index 00000000..56f0a0cd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cocoapods.svg @@ -0,0 +1 @@ +CocoaPods icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/coda.svg b/themes/LoveIt/assets/lib/simple-icons/icons/coda.svg new file mode 100644 index 00000000..ff916e60 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/coda.svg @@ -0,0 +1 @@ +Coda icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codacy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codacy.svg new file mode 100644 index 00000000..6791c456 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codacy.svg @@ -0,0 +1 @@ +Codacy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codecademy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codecademy.svg new file mode 100644 index 00000000..3c7a96dd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codecademy.svg @@ -0,0 +1 @@ +Codecademy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codechef.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codechef.svg new file mode 100644 index 00000000..2edc49b2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codechef.svg @@ -0,0 +1 @@ +CodeChef icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codeclimate.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codeclimate.svg new file mode 100644 index 00000000..1450c0f1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codeclimate.svg @@ -0,0 +1 @@ +Code Climate icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codecov.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codecov.svg new file mode 100644 index 00000000..9d36a21a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codecov.svg @@ -0,0 +1 @@ +Codecov icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codefactor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codefactor.svg new file mode 100644 index 00000000..35da0e2b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codefactor.svg @@ -0,0 +1 @@ +CodeFactor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codeforces.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codeforces.svg new file mode 100644 index 00000000..08038bf4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codeforces.svg @@ -0,0 +1 @@ +Codeforces icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codeigniter.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codeigniter.svg new file mode 100644 index 00000000..a36f1f44 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codeigniter.svg @@ -0,0 +1 @@ +CodeIgniter icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codepen.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codepen.svg new file mode 100644 index 00000000..4822430e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codepen.svg @@ -0,0 +1 @@ +CodePen icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codersrank.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codersrank.svg new file mode 100644 index 00000000..6eb493ad --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codersrank.svg @@ -0,0 +1 @@ +CodersRank icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/coderwall.svg b/themes/LoveIt/assets/lib/simple-icons/icons/coderwall.svg new file mode 100644 index 00000000..1976a818 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/coderwall.svg @@ -0,0 +1 @@ +Coderwall icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codesandbox.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codesandbox.svg new file mode 100644 index 00000000..e99071d7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codesandbox.svg @@ -0,0 +1 @@ +CodeSandbox icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codeship.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codeship.svg new file mode 100644 index 00000000..75867ffb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codeship.svg @@ -0,0 +1 @@ +Codeship icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codewars.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codewars.svg new file mode 100644 index 00000000..ff4ae98f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codewars.svg @@ -0,0 +1 @@ +Codewars icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/codio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/codio.svg new file mode 100644 index 00000000..76102f9d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/codio.svg @@ -0,0 +1 @@ +Codio icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/coffeescript.svg b/themes/LoveIt/assets/lib/simple-icons/icons/coffeescript.svg new file mode 100644 index 00000000..d02d45cf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/coffeescript.svg @@ -0,0 +1 @@ +CoffeeScript icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/coinbase.svg b/themes/LoveIt/assets/lib/simple-icons/icons/coinbase.svg new file mode 100644 index 00000000..5047c436 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/coinbase.svg @@ -0,0 +1 @@ +Coinbase icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/commonworkflowlanguage.svg b/themes/LoveIt/assets/lib/simple-icons/icons/commonworkflowlanguage.svg new file mode 100644 index 00000000..b806b3e5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/commonworkflowlanguage.svg @@ -0,0 +1 @@ +Common Workflow Language icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/composer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/composer.svg new file mode 100644 index 00000000..b11849e8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/composer.svg @@ -0,0 +1 @@ +Composer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/compropago.svg b/themes/LoveIt/assets/lib/simple-icons/icons/compropago.svg new file mode 100644 index 00000000..224e234b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/compropago.svg @@ -0,0 +1 @@ +ComproPago icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/concourse.svg b/themes/LoveIt/assets/lib/simple-icons/icons/concourse.svg new file mode 100644 index 00000000..0bcef4d6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/concourse.svg @@ -0,0 +1 @@ +Concourse icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/conda-forge.svg b/themes/LoveIt/assets/lib/simple-icons/icons/conda-forge.svg new file mode 100644 index 00000000..f058664c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/conda-forge.svg @@ -0,0 +1 @@ +Conda-Forge icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/conekta.svg b/themes/LoveIt/assets/lib/simple-icons/icons/conekta.svg new file mode 100644 index 00000000..d1b9e461 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/conekta.svg @@ -0,0 +1 @@ +Conekta icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/confluence.svg b/themes/LoveIt/assets/lib/simple-icons/icons/confluence.svg new file mode 100644 index 00000000..c5dcde6b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/confluence.svg @@ -0,0 +1 @@ +Confluence icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/contactlesspayment.svg b/themes/LoveIt/assets/lib/simple-icons/icons/contactlesspayment.svg new file mode 100644 index 00000000..17cc15d1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/contactlesspayment.svg @@ -0,0 +1 @@ +Contactless Payment icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/convertio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/convertio.svg new file mode 100644 index 00000000..36394fef --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/convertio.svg @@ -0,0 +1 @@ +Convertio icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/coronaengine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/coronaengine.svg new file mode 100644 index 00000000..995202f3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/coronaengine.svg @@ -0,0 +1 @@ +Corona Engine icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/coronarenderer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/coronarenderer.svg new file mode 100644 index 00000000..bcb86725 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/coronarenderer.svg @@ -0,0 +1 @@ +Corona Renderer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/counter-strike.svg b/themes/LoveIt/assets/lib/simple-icons/icons/counter-strike.svg new file mode 100644 index 00000000..8d755a38 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/counter-strike.svg @@ -0,0 +1 @@ +Counter-Strike icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/coursera.svg b/themes/LoveIt/assets/lib/simple-icons/icons/coursera.svg new file mode 100644 index 00000000..644189b9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/coursera.svg @@ -0,0 +1 @@ +Coursera icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/coveralls.svg b/themes/LoveIt/assets/lib/simple-icons/icons/coveralls.svg new file mode 100644 index 00000000..c030f30b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/coveralls.svg @@ -0,0 +1 @@ +Coveralls icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cpanel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cpanel.svg new file mode 100644 index 00000000..cc92f1d1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cpanel.svg @@ -0,0 +1 @@ +cPanel icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cplusplus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cplusplus.svg new file mode 100644 index 00000000..c46aaa86 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cplusplus.svg @@ -0,0 +1 @@ +C++ icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/craftcms.svg b/themes/LoveIt/assets/lib/simple-icons/icons/craftcms.svg new file mode 100644 index 00000000..912828ac --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/craftcms.svg @@ -0,0 +1 @@ +Craft CMS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/creativecommons.svg b/themes/LoveIt/assets/lib/simple-icons/icons/creativecommons.svg new file mode 100644 index 00000000..c9cc3e95 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/creativecommons.svg @@ -0,0 +1 @@ +Creative Commons icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/crehana.svg b/themes/LoveIt/assets/lib/simple-icons/icons/crehana.svg new file mode 100644 index 00000000..c4fad6e9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/crehana.svg @@ -0,0 +1 @@ +Crehana icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/crunchbase.svg b/themes/LoveIt/assets/lib/simple-icons/icons/crunchbase.svg new file mode 100644 index 00000000..6344737c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/crunchbase.svg @@ -0,0 +1 @@ +Crunchbase icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/crunchyroll.svg b/themes/LoveIt/assets/lib/simple-icons/icons/crunchyroll.svg new file mode 100644 index 00000000..059127b4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/crunchyroll.svg @@ -0,0 +1 @@ +Crunchyroll icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/cryengine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/cryengine.svg new file mode 100644 index 00000000..2b1b9318 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/cryengine.svg @@ -0,0 +1 @@ +CRYENGINE icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/csharp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/csharp.svg new file mode 100644 index 00000000..4de9730f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/csharp.svg @@ -0,0 +1 @@ +C Sharp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/css3.svg b/themes/LoveIt/assets/lib/simple-icons/icons/css3.svg new file mode 100644 index 00000000..2f54be88 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/css3.svg @@ -0,0 +1 @@ +CSS3 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/csswizardry.svg b/themes/LoveIt/assets/lib/simple-icons/icons/csswizardry.svg new file mode 100644 index 00000000..9ac81149 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/csswizardry.svg @@ -0,0 +1 @@ +CSS Wizardry icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/curl.svg b/themes/LoveIt/assets/lib/simple-icons/icons/curl.svg new file mode 100644 index 00000000..057da8ff --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/curl.svg @@ -0,0 +1 @@ +curl icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/d3-dot-js.svg b/themes/LoveIt/assets/lib/simple-icons/icons/d3-dot-js.svg new file mode 100644 index 00000000..0ea59ad3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/d3-dot-js.svg @@ -0,0 +1 @@ +D3.js icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/daf.svg b/themes/LoveIt/assets/lib/simple-icons/icons/daf.svg new file mode 100644 index 00000000..eff55c15 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/daf.svg @@ -0,0 +1 @@ +DAF icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dailymotion.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dailymotion.svg new file mode 100644 index 00000000..fc166672 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dailymotion.svg @@ -0,0 +1 @@ +Dailymotion icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dart.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dart.svg new file mode 100644 index 00000000..9df69e82 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dart.svg @@ -0,0 +1 @@ +Dart icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/daserste.svg b/themes/LoveIt/assets/lib/simple-icons/icons/daserste.svg new file mode 100644 index 00000000..e3ac4a9d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/daserste.svg @@ -0,0 +1 @@ +Das Erste icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dash.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dash.svg new file mode 100644 index 00000000..f7efabd3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dash.svg @@ -0,0 +1 @@ +Dash icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dashlane.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dashlane.svg new file mode 100644 index 00000000..4429ce83 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dashlane.svg @@ -0,0 +1 @@ +Dashlane icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dassaultsystemes.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dassaultsystemes.svg new file mode 100644 index 00000000..919c0a44 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dassaultsystemes.svg @@ -0,0 +1 @@ +Dassault Systèmes icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/datacamp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/datacamp.svg new file mode 100644 index 00000000..d78b4a7d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/datacamp.svg @@ -0,0 +1 @@ +DataCamp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/datadog.svg b/themes/LoveIt/assets/lib/simple-icons/icons/datadog.svg new file mode 100644 index 00000000..3b07e060 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/datadog.svg @@ -0,0 +1 @@ +Datadog icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dazn.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dazn.svg new file mode 100644 index 00000000..5e5d8507 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dazn.svg @@ -0,0 +1 @@ +DAZN icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dblp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dblp.svg new file mode 100644 index 00000000..1b049384 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dblp.svg @@ -0,0 +1 @@ +dblp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dcentertainment.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dcentertainment.svg new file mode 100644 index 00000000..926ff15e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dcentertainment.svg @@ -0,0 +1 @@ +DC Entertainment icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/debian.svg b/themes/LoveIt/assets/lib/simple-icons/icons/debian.svg new file mode 100644 index 00000000..4fbd8a2a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/debian.svg @@ -0,0 +1 @@ +Debian icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/deepin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/deepin.svg new file mode 100644 index 00000000..eea4cf9a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/deepin.svg @@ -0,0 +1 @@ +deepin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/deezer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/deezer.svg new file mode 100644 index 00000000..26763458 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/deezer.svg @@ -0,0 +1 @@ +Deezer icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/delicious.svg b/themes/LoveIt/assets/lib/simple-icons/icons/delicious.svg new file mode 100644 index 00000000..f79ffa4f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/delicious.svg @@ -0,0 +1 @@ +Delicious icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/deliveroo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/deliveroo.svg new file mode 100644 index 00000000..cf1674fc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/deliveroo.svg @@ -0,0 +1 @@ +Deliveroo icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dell.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dell.svg new file mode 100644 index 00000000..a1fa1e8a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dell.svg @@ -0,0 +1 @@ +Dell icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/deno.svg b/themes/LoveIt/assets/lib/simple-icons/icons/deno.svg new file mode 100644 index 00000000..5e34505e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/deno.svg @@ -0,0 +1 @@ +Deno icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dependabot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dependabot.svg new file mode 100644 index 00000000..bfaca4b2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dependabot.svg @@ -0,0 +1 @@ +Dependabot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/designernews.svg b/themes/LoveIt/assets/lib/simple-icons/icons/designernews.svg new file mode 100644 index 00000000..52c9c20b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/designernews.svg @@ -0,0 +1 @@ +Designer News icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dev-dot-to.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dev-dot-to.svg new file mode 100644 index 00000000..2743eaad --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dev-dot-to.svg @@ -0,0 +1 @@ +dev.to icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/deviantart.svg b/themes/LoveIt/assets/lib/simple-icons/icons/deviantart.svg new file mode 100644 index 00000000..1988745a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/deviantart.svg @@ -0,0 +1 @@ +DeviantArt icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/devrant.svg b/themes/LoveIt/assets/lib/simple-icons/icons/devrant.svg new file mode 100644 index 00000000..ce337f64 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/devrant.svg @@ -0,0 +1 @@ +devRant icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/diaspora.svg b/themes/LoveIt/assets/lib/simple-icons/icons/diaspora.svg new file mode 100644 index 00000000..1619934e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/diaspora.svg @@ -0,0 +1 @@ +Diaspora icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/digg.svg b/themes/LoveIt/assets/lib/simple-icons/icons/digg.svg new file mode 100644 index 00000000..f97d283b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/digg.svg @@ -0,0 +1 @@ +Digg icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/digitalocean.svg b/themes/LoveIt/assets/lib/simple-icons/icons/digitalocean.svg new file mode 100644 index 00000000..cb31cc91 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/digitalocean.svg @@ -0,0 +1 @@ +DigitalOcean icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dior.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dior.svg new file mode 100644 index 00000000..5abade20 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dior.svg @@ -0,0 +1 @@ +Dior icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/directus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/directus.svg new file mode 100644 index 00000000..0bc43cfa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/directus.svg @@ -0,0 +1 @@ +Directus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/discogs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/discogs.svg new file mode 100644 index 00000000..657ec5f3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/discogs.svg @@ -0,0 +1 @@ +Discogs icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/discord.svg b/themes/LoveIt/assets/lib/simple-icons/icons/discord.svg new file mode 100644 index 00000000..85d98498 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/discord.svg @@ -0,0 +1 @@ +Discord icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/discourse.svg b/themes/LoveIt/assets/lib/simple-icons/icons/discourse.svg new file mode 100644 index 00000000..17a09925 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/discourse.svg @@ -0,0 +1 @@ +Discourse icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/discover.svg b/themes/LoveIt/assets/lib/simple-icons/icons/discover.svg new file mode 100644 index 00000000..3c4fc36b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/discover.svg @@ -0,0 +1 @@ +Discover icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/disqus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/disqus.svg new file mode 100644 index 00000000..3d5f58ce --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/disqus.svg @@ -0,0 +1 @@ +Disqus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/disroot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/disroot.svg new file mode 100644 index 00000000..c6d81d09 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/disroot.svg @@ -0,0 +1 @@ +Disroot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/django.svg b/themes/LoveIt/assets/lib/simple-icons/icons/django.svg new file mode 100755 index 00000000..7d68b796 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/django.svg @@ -0,0 +1 @@ +Django icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dlna.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dlna.svg new file mode 100644 index 00000000..8a6d9524 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dlna.svg @@ -0,0 +1 @@ +DLNA icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/docker.svg b/themes/LoveIt/assets/lib/simple-icons/icons/docker.svg new file mode 100644 index 00000000..576c90cc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/docker.svg @@ -0,0 +1 @@ +Docker icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/docusign.svg b/themes/LoveIt/assets/lib/simple-icons/icons/docusign.svg new file mode 100644 index 00000000..d6d90ba5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/docusign.svg @@ -0,0 +1 @@ +DocuSign icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dolby.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dolby.svg new file mode 100644 index 00000000..6cbac373 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dolby.svg @@ -0,0 +1 @@ +Dolby icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dot-net.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dot-net.svg new file mode 100644 index 00000000..e2bef9aa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dot-net.svg @@ -0,0 +1 @@ +.NET icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/douban.svg b/themes/LoveIt/assets/lib/simple-icons/icons/douban.svg new file mode 100644 index 00000000..9f1e838c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/douban.svg @@ -0,0 +1 @@ +Douban icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/draugiem-dot-lv.svg b/themes/LoveIt/assets/lib/simple-icons/icons/draugiem-dot-lv.svg new file mode 100644 index 00000000..35c34588 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/draugiem-dot-lv.svg @@ -0,0 +1 @@ +Draugiem.lv icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dribbble.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dribbble.svg new file mode 100644 index 00000000..e7bdffa4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dribbble.svg @@ -0,0 +1 @@ +Dribbble icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/drone.svg b/themes/LoveIt/assets/lib/simple-icons/icons/drone.svg new file mode 100644 index 00000000..ec17181e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/drone.svg @@ -0,0 +1 @@ +Drone icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dropbox.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dropbox.svg new file mode 100644 index 00000000..6a879c82 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dropbox.svg @@ -0,0 +1 @@ +Dropbox icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/drupal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/drupal.svg new file mode 100644 index 00000000..50877ded --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/drupal.svg @@ -0,0 +1 @@ +Drupal icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dsautomobiles.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dsautomobiles.svg new file mode 100644 index 00000000..bf406e27 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dsautomobiles.svg @@ -0,0 +1 @@ +DS Automobiles icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dtube.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dtube.svg new file mode 100644 index 00000000..4258e52c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dtube.svg @@ -0,0 +1 @@ +DTube icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/duckduckgo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/duckduckgo.svg new file mode 100644 index 00000000..e0f1f11d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/duckduckgo.svg @@ -0,0 +1 @@ +DuckDuckGo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dunked.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dunked.svg new file mode 100644 index 00000000..74e30431 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dunked.svg @@ -0,0 +1 @@ +Dunked icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/duolingo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/duolingo.svg new file mode 100644 index 00000000..e0caad6b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/duolingo.svg @@ -0,0 +1 @@ +Duolingo icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dynamics365.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dynamics365.svg new file mode 100644 index 00000000..149d8b2f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dynamics365.svg @@ -0,0 +1 @@ +Dynamics 365 icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/dynatrace.svg b/themes/LoveIt/assets/lib/simple-icons/icons/dynatrace.svg new file mode 100644 index 00000000..a30e18fa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/dynatrace.svg @@ -0,0 +1 @@ +Dynatrace icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ea.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ea.svg new file mode 100644 index 00000000..31e28827 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ea.svg @@ -0,0 +1 @@ +EA icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/easyjet.svg b/themes/LoveIt/assets/lib/simple-icons/icons/easyjet.svg new file mode 100644 index 00000000..eded9a22 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/easyjet.svg @@ -0,0 +1 @@ +easyJet icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ebay.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ebay.svg new file mode 100644 index 00000000..2489b748 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ebay.svg @@ -0,0 +1 @@ +eBay icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/eclipseide.svg b/themes/LoveIt/assets/lib/simple-icons/icons/eclipseide.svg new file mode 100644 index 00000000..3dc22063 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/eclipseide.svg @@ -0,0 +1 @@ +Eclipse IDE icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/eclipsemosquitto.svg b/themes/LoveIt/assets/lib/simple-icons/icons/eclipsemosquitto.svg new file mode 100644 index 00000000..502cf86d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/eclipsemosquitto.svg @@ -0,0 +1 @@ +Eclipse Mosquitto icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/egnyte.svg b/themes/LoveIt/assets/lib/simple-icons/icons/egnyte.svg new file mode 100644 index 00000000..68663800 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/egnyte.svg @@ -0,0 +1 @@ +Egnyte icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/elastic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/elastic.svg new file mode 100644 index 00000000..addb9677 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/elastic.svg @@ -0,0 +1 @@ +Elastic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/elasticcloud.svg b/themes/LoveIt/assets/lib/simple-icons/icons/elasticcloud.svg new file mode 100644 index 00000000..b314221e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/elasticcloud.svg @@ -0,0 +1 @@ +Elastic Cloud icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/elasticsearch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/elasticsearch.svg new file mode 100644 index 00000000..ebab5bec --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/elasticsearch.svg @@ -0,0 +1 @@ +Elasticsearch icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/elasticstack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/elasticstack.svg new file mode 100644 index 00000000..00acdee3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/elasticstack.svg @@ -0,0 +1 @@ +Elastic Stack icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/electron.svg b/themes/LoveIt/assets/lib/simple-icons/icons/electron.svg new file mode 100644 index 00000000..b37fa6c5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/electron.svg @@ -0,0 +1 @@ +Electron icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/elementary.svg b/themes/LoveIt/assets/lib/simple-icons/icons/elementary.svg new file mode 100644 index 00000000..3ccd1ca8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/elementary.svg @@ -0,0 +1 @@ +elementary icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/eleventy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/eleventy.svg new file mode 100644 index 00000000..ec80c3af --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/eleventy.svg @@ -0,0 +1 @@ +Eleventy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/elixir.svg b/themes/LoveIt/assets/lib/simple-icons/icons/elixir.svg new file mode 100644 index 00000000..5dd4d56c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/elixir.svg @@ -0,0 +1 @@ +Elixir icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ello.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ello.svg new file mode 100644 index 00000000..4912ac26 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ello.svg @@ -0,0 +1 @@ +Ello icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/elm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/elm.svg new file mode 100644 index 00000000..ce42ca63 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/elm.svg @@ -0,0 +1 @@ +Elm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/elsevier.svg b/themes/LoveIt/assets/lib/simple-icons/icons/elsevier.svg new file mode 100644 index 00000000..5e0ff9f4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/elsevier.svg @@ -0,0 +1 @@ +Elsevier icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/embarcadero.svg b/themes/LoveIt/assets/lib/simple-icons/icons/embarcadero.svg new file mode 100644 index 00000000..7a99106b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/embarcadero.svg @@ -0,0 +1 @@ +Embarcadero icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ember-dot-js.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ember-dot-js.svg new file mode 100644 index 00000000..b17d638a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ember-dot-js.svg @@ -0,0 +1 @@ +Ember.js icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/emby.svg b/themes/LoveIt/assets/lib/simple-icons/icons/emby.svg new file mode 100644 index 00000000..5bc6492b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/emby.svg @@ -0,0 +1 @@ +Emby icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/emlakjet.svg b/themes/LoveIt/assets/lib/simple-icons/icons/emlakjet.svg new file mode 100644 index 00000000..e15b651a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/emlakjet.svg @@ -0,0 +1 @@ +Emlakjet icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/empirekred.svg b/themes/LoveIt/assets/lib/simple-icons/icons/empirekred.svg new file mode 100644 index 00000000..c4425c54 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/empirekred.svg @@ -0,0 +1 @@ +Empire Kred icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/envato.svg b/themes/LoveIt/assets/lib/simple-icons/icons/envato.svg new file mode 100644 index 00000000..3b6e4ed4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/envato.svg @@ -0,0 +1 @@ +Envato icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/epel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/epel.svg new file mode 100644 index 00000000..65f71e6f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/epel.svg @@ -0,0 +1 @@ +EPEL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/epicgames.svg b/themes/LoveIt/assets/lib/simple-icons/icons/epicgames.svg new file mode 100644 index 00000000..fff100e6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/epicgames.svg @@ -0,0 +1 @@ +Epic Games icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/epson.svg b/themes/LoveIt/assets/lib/simple-icons/icons/epson.svg new file mode 100644 index 00000000..81477ef1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/epson.svg @@ -0,0 +1 @@ +Epson icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/esea.svg b/themes/LoveIt/assets/lib/simple-icons/icons/esea.svg new file mode 100644 index 00000000..71775eee --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/esea.svg @@ -0,0 +1 @@ +ESEA icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/eslgaming.svg b/themes/LoveIt/assets/lib/simple-icons/icons/eslgaming.svg new file mode 100644 index 00000000..13ad7053 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/eslgaming.svg @@ -0,0 +1 @@ +ESLGaming icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/eslint.svg b/themes/LoveIt/assets/lib/simple-icons/icons/eslint.svg new file mode 100644 index 00000000..bd643258 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/eslint.svg @@ -0,0 +1 @@ +ESLint icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ethereum.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ethereum.svg new file mode 100644 index 00000000..32bc66ae --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ethereum.svg @@ -0,0 +1 @@ +Ethereum icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/etsy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/etsy.svg new file mode 100644 index 00000000..6f860fd3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/etsy.svg @@ -0,0 +1 @@ +Etsy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/eventbrite.svg b/themes/LoveIt/assets/lib/simple-icons/icons/eventbrite.svg new file mode 100644 index 00000000..19a5cc9d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/eventbrite.svg @@ -0,0 +1 @@ +Eventbrite icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/eventstore.svg b/themes/LoveIt/assets/lib/simple-icons/icons/eventstore.svg new file mode 100644 index 00000000..64a4fd5f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/eventstore.svg @@ -0,0 +1 @@ +Event Store icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/evernote.svg b/themes/LoveIt/assets/lib/simple-icons/icons/evernote.svg new file mode 100644 index 00000000..4b0d304c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/evernote.svg @@ -0,0 +1 @@ +Evernote icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/everplaces.svg b/themes/LoveIt/assets/lib/simple-icons/icons/everplaces.svg new file mode 100644 index 00000000..a0c50bde --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/everplaces.svg @@ -0,0 +1 @@ +Everplaces icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/evry.svg b/themes/LoveIt/assets/lib/simple-icons/icons/evry.svg new file mode 100644 index 00000000..a0ea2e48 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/evry.svg @@ -0,0 +1 @@ +EVRY icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/exercism.svg b/themes/LoveIt/assets/lib/simple-icons/icons/exercism.svg new file mode 100644 index 00000000..38ca5475 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/exercism.svg @@ -0,0 +1 @@ +Exercism icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/expertsexchange.svg b/themes/LoveIt/assets/lib/simple-icons/icons/expertsexchange.svg new file mode 100644 index 00000000..37db5c8f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/expertsexchange.svg @@ -0,0 +1 @@ +Experts Exchange icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/expo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/expo.svg new file mode 100644 index 00000000..80036846 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/expo.svg @@ -0,0 +1 @@ +Expo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/eyeem.svg b/themes/LoveIt/assets/lib/simple-icons/icons/eyeem.svg new file mode 100644 index 00000000..7ce4f828 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/eyeem.svg @@ -0,0 +1 @@ +EyeEm icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/f-droid.svg b/themes/LoveIt/assets/lib/simple-icons/icons/f-droid.svg new file mode 100644 index 00000000..69d4db43 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/f-droid.svg @@ -0,0 +1 @@ +F-Droid icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/f-secure.svg b/themes/LoveIt/assets/lib/simple-icons/icons/f-secure.svg new file mode 100644 index 00000000..ed83471a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/f-secure.svg @@ -0,0 +1 @@ +F-Secure icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/facebook.svg b/themes/LoveIt/assets/lib/simple-icons/icons/facebook.svg new file mode 100644 index 00000000..d775b289 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/facebook.svg @@ -0,0 +1 @@ +Facebook icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/facebooklive.svg b/themes/LoveIt/assets/lib/simple-icons/icons/facebooklive.svg new file mode 100644 index 00000000..557e22da --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/facebooklive.svg @@ -0,0 +1 @@ +Facebook Live icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/faceit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/faceit.svg new file mode 100644 index 00000000..2d965c47 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/faceit.svg @@ -0,0 +1 @@ +FACEIT icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fandango.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fandango.svg new file mode 100644 index 00000000..0787a72c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fandango.svg @@ -0,0 +1 @@ +Fandango icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fandom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fandom.svg new file mode 100644 index 00000000..893205e7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fandom.svg @@ -0,0 +1 @@ +Fandom icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/farfetch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/farfetch.svg new file mode 100644 index 00000000..afc3e652 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/farfetch.svg @@ -0,0 +1 @@ +Farfetch icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fastify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fastify.svg new file mode 100644 index 00000000..001dc37f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fastify.svg @@ -0,0 +1 @@ +Fastify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fastly.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fastly.svg new file mode 100644 index 00000000..057e243b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fastly.svg @@ -0,0 +1 @@ +Fastly icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/favro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/favro.svg new file mode 100644 index 00000000..8765d827 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/favro.svg @@ -0,0 +1 @@ +Favro icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/feathub.svg b/themes/LoveIt/assets/lib/simple-icons/icons/feathub.svg new file mode 100644 index 00000000..23c7f334 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/feathub.svg @@ -0,0 +1 @@ +FeatHub icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fedora.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fedora.svg new file mode 100644 index 00000000..8606a736 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fedora.svg @@ -0,0 +1 @@ +Fedora icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fedramp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fedramp.svg new file mode 100644 index 00000000..d899e386 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fedramp.svg @@ -0,0 +1 @@ +FedRAMP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/feedly.svg b/themes/LoveIt/assets/lib/simple-icons/icons/feedly.svg new file mode 100644 index 00000000..dd3d19b0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/feedly.svg @@ -0,0 +1 @@ +Feedly icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ferrari.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ferrari.svg new file mode 100644 index 00000000..ef79b832 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ferrari.svg @@ -0,0 +1 @@ +Ferrari icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ferrarin-dot-v-dot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ferrarin-dot-v-dot.svg new file mode 100644 index 00000000..3a546515 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ferrarin-dot-v-dot.svg @@ -0,0 +1 @@ +Ferrari N.V. icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fiat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fiat.svg new file mode 100644 index 00000000..09e1e349 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fiat.svg @@ -0,0 +1 @@ +Fiat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fidoalliance.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fidoalliance.svg new file mode 100644 index 00000000..0c0df9c7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fidoalliance.svg @@ -0,0 +1 @@ +Fido Alliance icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fifa.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fifa.svg new file mode 100644 index 00000000..ed45d78e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fifa.svg @@ -0,0 +1 @@ +FIFA icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/figma.svg b/themes/LoveIt/assets/lib/simple-icons/icons/figma.svg new file mode 100644 index 00000000..9b054099 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/figma.svg @@ -0,0 +1 @@ +Figma icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/figshare.svg b/themes/LoveIt/assets/lib/simple-icons/icons/figshare.svg new file mode 100644 index 00000000..ceceb243 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/figshare.svg @@ -0,0 +1 @@ +figshare icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fila.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fila.svg new file mode 100644 index 00000000..be103c66 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fila.svg @@ -0,0 +1 @@ +Fila icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/filezilla.svg b/themes/LoveIt/assets/lib/simple-icons/icons/filezilla.svg new file mode 100644 index 00000000..cf04f9d8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/filezilla.svg @@ -0,0 +1 @@ +FileZilla icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/firebase.svg b/themes/LoveIt/assets/lib/simple-icons/icons/firebase.svg new file mode 100644 index 00000000..1da51b18 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/firebase.svg @@ -0,0 +1 @@ +Firebase icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/first.svg b/themes/LoveIt/assets/lib/simple-icons/icons/first.svg new file mode 100644 index 00000000..d147a01e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/first.svg @@ -0,0 +1 @@ +FIRST icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fitbit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fitbit.svg new file mode 100644 index 00000000..6a8a66fe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fitbit.svg @@ -0,0 +1 @@ +Fitbit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fite.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fite.svg new file mode 100644 index 00000000..e6221fbf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fite.svg @@ -0,0 +1 @@ +FITE icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fiverr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fiverr.svg new file mode 100644 index 00000000..ffb447dd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fiverr.svg @@ -0,0 +1 @@ +Fiverr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/flask.svg b/themes/LoveIt/assets/lib/simple-icons/icons/flask.svg new file mode 100644 index 00000000..13404941 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/flask.svg @@ -0,0 +1 @@ +Flask icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/flathub.svg b/themes/LoveIt/assets/lib/simple-icons/icons/flathub.svg new file mode 100644 index 00000000..1efc9b09 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/flathub.svg @@ -0,0 +1 @@ +Flathub icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/flattr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/flattr.svg new file mode 100644 index 00000000..22575609 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/flattr.svg @@ -0,0 +1 @@ +Flattr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/flickr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/flickr.svg new file mode 100644 index 00000000..9ff16905 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/flickr.svg @@ -0,0 +1 @@ +Flickr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/flipboard.svg b/themes/LoveIt/assets/lib/simple-icons/icons/flipboard.svg new file mode 100644 index 00000000..2fc65b4a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/flipboard.svg @@ -0,0 +1 @@ +Flipboard icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/floatplane.svg b/themes/LoveIt/assets/lib/simple-icons/icons/floatplane.svg new file mode 100644 index 00000000..54d3af18 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/floatplane.svg @@ -0,0 +1 @@ +Floatplane icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/flood.svg b/themes/LoveIt/assets/lib/simple-icons/icons/flood.svg new file mode 100644 index 00000000..bddde490 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/flood.svg @@ -0,0 +1 @@ +Flood icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fluentd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fluentd.svg new file mode 100644 index 00000000..0556c211 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fluentd.svg @@ -0,0 +1 @@ +Fluentd icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/flutter.svg b/themes/LoveIt/assets/lib/simple-icons/icons/flutter.svg new file mode 100644 index 00000000..c9857495 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/flutter.svg @@ -0,0 +1 @@ +Flutter icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fnac.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fnac.svg new file mode 100644 index 00000000..88407390 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fnac.svg @@ -0,0 +1 @@ +Fnac icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fontawesome.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fontawesome.svg new file mode 100644 index 00000000..0712d0a8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fontawesome.svg @@ -0,0 +1 @@ +Font Awesome icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ford.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ford.svg new file mode 100644 index 00000000..bc4371af --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ford.svg @@ -0,0 +1 @@ +Ford icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/formstack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/formstack.svg new file mode 100644 index 00000000..6b5c6ae3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/formstack.svg @@ -0,0 +1 @@ +Formstack icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fortinet.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fortinet.svg new file mode 100644 index 00000000..a813f57a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fortinet.svg @@ -0,0 +1 @@ +Fortinet icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fossa.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fossa.svg new file mode 100644 index 00000000..8bb15df5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fossa.svg @@ -0,0 +1 @@ +Fossa icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fossilscm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fossilscm.svg new file mode 100644 index 00000000..df4342de --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fossilscm.svg @@ -0,0 +1 @@ +Fossil SCM icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/foursquare.svg b/themes/LoveIt/assets/lib/simple-icons/icons/foursquare.svg new file mode 100644 index 00000000..40f52ba2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/foursquare.svg @@ -0,0 +1 @@ +Foursquare icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/framer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/framer.svg new file mode 100644 index 00000000..5265d918 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/framer.svg @@ -0,0 +1 @@ +Framer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/freebsd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/freebsd.svg new file mode 100644 index 00000000..a87bb26d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/freebsd.svg @@ -0,0 +1 @@ +FreeBSD icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/freecodecamp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/freecodecamp.svg new file mode 100644 index 00000000..bf6836cb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/freecodecamp.svg @@ -0,0 +1 @@ +freeCodeCamp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/freedesktop-dot-org.svg b/themes/LoveIt/assets/lib/simple-icons/icons/freedesktop-dot-org.svg new file mode 100644 index 00000000..1077e24c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/freedesktop-dot-org.svg @@ -0,0 +1 @@ +freedesktop.org icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/freelancer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/freelancer.svg new file mode 100644 index 00000000..ace3a6c7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/freelancer.svg @@ -0,0 +1 @@ +Freelancer icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fujifilm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fujifilm.svg new file mode 100644 index 00000000..e97e61ed --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fujifilm.svg @@ -0,0 +1 @@ +Fujifilm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/fujitsu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/fujitsu.svg new file mode 100644 index 00000000..b06341cc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/fujitsu.svg @@ -0,0 +1 @@ +Fujitsu icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/furaffinity.svg b/themes/LoveIt/assets/lib/simple-icons/icons/furaffinity.svg new file mode 100644 index 00000000..54f3710d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/furaffinity.svg @@ -0,0 +1 @@ +Fur Affinity icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/furrynetwork.svg b/themes/LoveIt/assets/lib/simple-icons/icons/furrynetwork.svg new file mode 100644 index 00000000..1509f6a9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/furrynetwork.svg @@ -0,0 +1 @@ +Furry Network icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/garmin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/garmin.svg new file mode 100644 index 00000000..71b97b3c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/garmin.svg @@ -0,0 +1 @@ +Garmin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gatling.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gatling.svg new file mode 100644 index 00000000..f68f29e7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gatling.svg @@ -0,0 +1 @@ +Gatling icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gatsby.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gatsby.svg new file mode 100644 index 00000000..021f42fc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gatsby.svg @@ -0,0 +1 @@ +Gatsby icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gauges.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gauges.svg new file mode 100644 index 00000000..6a7e03dd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gauges.svg @@ -0,0 +1 @@ +Gauges icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/generalmotors.svg b/themes/LoveIt/assets/lib/simple-icons/icons/generalmotors.svg new file mode 100644 index 00000000..38836b0d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/generalmotors.svg @@ -0,0 +1 @@ +General Motors icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/genius.svg b/themes/LoveIt/assets/lib/simple-icons/icons/genius.svg new file mode 100644 index 00000000..dbabb937 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/genius.svg @@ -0,0 +1 @@ +Genius icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gentoo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gentoo.svg new file mode 100644 index 00000000..ee254286 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gentoo.svg @@ -0,0 +1 @@ +Gentoo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/geocaching.svg b/themes/LoveIt/assets/lib/simple-icons/icons/geocaching.svg new file mode 100644 index 00000000..dfac9326 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/geocaching.svg @@ -0,0 +1 @@ +Geocaching icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gerrit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gerrit.svg new file mode 100644 index 00000000..d9b9bdf4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gerrit.svg @@ -0,0 +1 @@ +Gerrit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ghost.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ghost.svg new file mode 100644 index 00000000..6bbee8e5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ghost.svg @@ -0,0 +1 @@ +Ghost icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ghostery.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ghostery.svg new file mode 100644 index 00000000..04160fcb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ghostery.svg @@ -0,0 +1 @@ +Ghostery icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gimp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gimp.svg new file mode 100644 index 00000000..2b2eb8e0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gimp.svg @@ -0,0 +1 @@ +GIMP icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/git.svg b/themes/LoveIt/assets/lib/simple-icons/icons/git.svg new file mode 100644 index 00000000..f795f637 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/git.svg @@ -0,0 +1 @@ +Git icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gitea.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gitea.svg new file mode 100644 index 00000000..0fd0e0b0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gitea.svg @@ -0,0 +1 @@ +Gitea icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/github.svg b/themes/LoveIt/assets/lib/simple-icons/icons/github.svg new file mode 100644 index 00000000..38997125 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/github.svg @@ -0,0 +1 @@ +GitHub icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/githubactions.svg b/themes/LoveIt/assets/lib/simple-icons/icons/githubactions.svg new file mode 100644 index 00000000..3dfaf369 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/githubactions.svg @@ -0,0 +1 @@ +GitHub Actions icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gitkraken.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gitkraken.svg new file mode 100644 index 00000000..77f8ea4f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gitkraken.svg @@ -0,0 +1 @@ +GitKraken icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gitlab.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gitlab.svg new file mode 100644 index 00000000..53dfcb0f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gitlab.svg @@ -0,0 +1 @@ +GitLab icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gitpod.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gitpod.svg new file mode 100644 index 00000000..8331c331 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gitpod.svg @@ -0,0 +1 @@ +Gitpod icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gitter.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gitter.svg new file mode 100644 index 00000000..dadb9a1e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gitter.svg @@ -0,0 +1 @@ +Gitter icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/glassdoor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/glassdoor.svg new file mode 100644 index 00000000..04ef0c3c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/glassdoor.svg @@ -0,0 +1 @@ +Glassdoor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/glitch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/glitch.svg new file mode 100644 index 00000000..9fd484e5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/glitch.svg @@ -0,0 +1 @@ +Glitch icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gmail.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gmail.svg new file mode 100644 index 00000000..d6ef11e3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gmail.svg @@ -0,0 +1 @@ +Gmail icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gnome.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gnome.svg new file mode 100644 index 00000000..0aea3d65 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gnome.svg @@ -0,0 +1 @@ +GNOME icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gnu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gnu.svg new file mode 100644 index 00000000..b60a005b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gnu.svg @@ -0,0 +1 @@ +GNU icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gnubash.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gnubash.svg new file mode 100644 index 00000000..2f42d3f1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gnubash.svg @@ -0,0 +1 @@ +GNU Bash icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gnuemacs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gnuemacs.svg new file mode 100644 index 00000000..5ec1c06d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gnuemacs.svg @@ -0,0 +1 @@ +GNU Emacs icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gnuicecat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gnuicecat.svg new file mode 100644 index 00000000..cde6bb51 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gnuicecat.svg @@ -0,0 +1 @@ +GNU IceCat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gnuprivacyguard.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gnuprivacyguard.svg new file mode 100644 index 00000000..afc1a6c0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gnuprivacyguard.svg @@ -0,0 +1 @@ +GNU Privacy Guard icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gnusocial.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gnusocial.svg new file mode 100644 index 00000000..315149b4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gnusocial.svg @@ -0,0 +1 @@ +GNU social icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/go.svg b/themes/LoveIt/assets/lib/simple-icons/icons/go.svg new file mode 100644 index 00000000..eef44ec5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/go.svg @@ -0,0 +1 @@ +Go icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/godotengine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/godotengine.svg new file mode 100644 index 00000000..87304b22 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/godotengine.svg @@ -0,0 +1 @@ +Godot Engine icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gofundme.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gofundme.svg new file mode 100644 index 00000000..99e50574 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gofundme.svg @@ -0,0 +1 @@ +GoFundMe icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gog-dot-com.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gog-dot-com.svg new file mode 100644 index 00000000..5a605b88 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gog-dot-com.svg @@ -0,0 +1 @@ +GOG.com icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/goldenline.svg b/themes/LoveIt/assets/lib/simple-icons/icons/goldenline.svg new file mode 100644 index 00000000..df920ddf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/goldenline.svg @@ -0,0 +1 @@ +GoldenLine icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/goodreads.svg b/themes/LoveIt/assets/lib/simple-icons/icons/goodreads.svg new file mode 100644 index 00000000..9866db05 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/goodreads.svg @@ -0,0 +1 @@ +Goodreads icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/google.svg b/themes/LoveIt/assets/lib/simple-icons/icons/google.svg new file mode 100644 index 00000000..f394f811 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/google.svg @@ -0,0 +1 @@ +Google icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googleads.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googleads.svg new file mode 100644 index 00000000..930b6c54 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googleads.svg @@ -0,0 +1 @@ +Google Ads icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googleadsense.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googleadsense.svg new file mode 100644 index 00000000..04404c7e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googleadsense.svg @@ -0,0 +1 @@ +Google AdSense icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googleanalytics.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googleanalytics.svg new file mode 100644 index 00000000..171ea24e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googleanalytics.svg @@ -0,0 +1 @@ +Google Analytics icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googleassistant.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googleassistant.svg new file mode 100644 index 00000000..b5d4fcd4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googleassistant.svg @@ -0,0 +1 @@ +Google Assistant icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlecalendar.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlecalendar.svg new file mode 100644 index 00000000..8e8d488a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlecalendar.svg @@ -0,0 +1 @@ +Google Calendar icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlecardboard.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlecardboard.svg new file mode 100644 index 00000000..e82dbd82 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlecardboard.svg @@ -0,0 +1 @@ +Google Cardboard icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlecast.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlecast.svg new file mode 100644 index 00000000..e422cb6a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlecast.svg @@ -0,0 +1 @@ +Google Cast icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlechrome.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlechrome.svg new file mode 100644 index 00000000..dd142ed1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlechrome.svg @@ -0,0 +1 @@ +Google Chrome icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googleclassroom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googleclassroom.svg new file mode 100644 index 00000000..86d38820 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googleclassroom.svg @@ -0,0 +1 @@ +Google Classroom icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlecloud.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlecloud.svg new file mode 100644 index 00000000..17d6a4f6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlecloud.svg @@ -0,0 +1 @@ +Google Cloud icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googledrive.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googledrive.svg new file mode 100644 index 00000000..046f9b9a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googledrive.svg @@ -0,0 +1 @@ +Google Drive icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googleearth.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googleearth.svg new file mode 100644 index 00000000..2cee60e5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googleearth.svg @@ -0,0 +1 @@ +Google Earth icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlefit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlefit.svg new file mode 100644 index 00000000..741fac1d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlefit.svg @@ -0,0 +1 @@ +Google Fit icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlehangouts.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlehangouts.svg new file mode 100644 index 00000000..0ee1ed52 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlehangouts.svg @@ -0,0 +1 @@ +Google Hangouts icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlehangoutschat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlehangoutschat.svg new file mode 100644 index 00000000..9e6fc6d3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlehangoutschat.svg @@ -0,0 +1 @@ +Google Hangouts Chat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlehangoutsmeet.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlehangoutsmeet.svg new file mode 100644 index 00000000..87f003b6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlehangoutsmeet.svg @@ -0,0 +1 @@ +Google Hangouts Meet icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlekeep.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlekeep.svg new file mode 100644 index 00000000..8e5d5ddd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlekeep.svg @@ -0,0 +1 @@ +Google Keep icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlelens.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlelens.svg new file mode 100644 index 00000000..e8969132 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlelens.svg @@ -0,0 +1 @@ +Google Lens icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlemaps.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlemaps.svg new file mode 100644 index 00000000..5847b406 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlemaps.svg @@ -0,0 +1 @@ +Google Maps icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlemessages.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlemessages.svg new file mode 100644 index 00000000..ea95a5ea --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlemessages.svg @@ -0,0 +1 @@ +Google Messages icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlemybusiness.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlemybusiness.svg new file mode 100644 index 00000000..e823c221 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlemybusiness.svg @@ -0,0 +1 @@ +Google My Business icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlenearby.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlenearby.svg new file mode 100644 index 00000000..2f1412b3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlenearby.svg @@ -0,0 +1 @@ +Google Nearby icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlepay.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlepay.svg new file mode 100644 index 00000000..e50088e3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlepay.svg @@ -0,0 +1 @@ +Google Pay icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googleplay.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googleplay.svg new file mode 100644 index 00000000..b1bf771b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googleplay.svg @@ -0,0 +1 @@ +Google Play icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlepodcasts.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlepodcasts.svg new file mode 100644 index 00000000..1c2b84a0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlepodcasts.svg @@ -0,0 +1 @@ +Google Podcasts icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlescholar.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlescholar.svg new file mode 100644 index 00000000..b96eea8c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlescholar.svg @@ -0,0 +1 @@ +Google Scholar icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlesearchconsole.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlesearchconsole.svg new file mode 100644 index 00000000..75558ab9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlesearchconsole.svg @@ -0,0 +1 @@ +Google Search Console icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlesheets.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlesheets.svg new file mode 100644 index 00000000..0e3bb46c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlesheets.svg @@ -0,0 +1 @@ +Google Sheets icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googlestreetview.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googlestreetview.svg new file mode 100644 index 00000000..729d4df1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googlestreetview.svg @@ -0,0 +1 @@ +Google Street View icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googletagmanager.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googletagmanager.svg new file mode 100644 index 00000000..82b3a98e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googletagmanager.svg @@ -0,0 +1 @@ +Google Tag Manager icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/googletranslate.svg b/themes/LoveIt/assets/lib/simple-icons/icons/googletranslate.svg new file mode 100644 index 00000000..a2327434 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/googletranslate.svg @@ -0,0 +1 @@ +Google Translate icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gov-dot-uk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gov-dot-uk.svg new file mode 100644 index 00000000..334e4895 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gov-dot-uk.svg @@ -0,0 +1 @@ +GOV.UK icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gradle.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gradle.svg new file mode 100644 index 00000000..ccef3e60 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gradle.svg @@ -0,0 +1 @@ +Gradle icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/grafana.svg b/themes/LoveIt/assets/lib/simple-icons/icons/grafana.svg new file mode 100644 index 00000000..6be83c95 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/grafana.svg @@ -0,0 +1 @@ +Grafana icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/graphcool.svg b/themes/LoveIt/assets/lib/simple-icons/icons/graphcool.svg new file mode 100644 index 00000000..54f34667 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/graphcool.svg @@ -0,0 +1 @@ +Graphcool icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/graphql.svg b/themes/LoveIt/assets/lib/simple-icons/icons/graphql.svg new file mode 100644 index 00000000..8c919678 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/graphql.svg @@ -0,0 +1 @@ +GraphQL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/grav.svg b/themes/LoveIt/assets/lib/simple-icons/icons/grav.svg new file mode 100644 index 00000000..61d7e507 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/grav.svg @@ -0,0 +1 @@ +Grav icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gravatar.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gravatar.svg new file mode 100644 index 00000000..75a401bf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gravatar.svg @@ -0,0 +1 @@ +Gravatar icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/greenkeeper.svg b/themes/LoveIt/assets/lib/simple-icons/icons/greenkeeper.svg new file mode 100644 index 00000000..d591e576 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/greenkeeper.svg @@ -0,0 +1 @@ +Greenkeeper icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/greensock.svg b/themes/LoveIt/assets/lib/simple-icons/icons/greensock.svg new file mode 100644 index 00000000..4a625175 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/greensock.svg @@ -0,0 +1 @@ +GreenSock icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/groovy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/groovy.svg new file mode 100644 index 00000000..b8489f2e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/groovy.svg @@ -0,0 +1 @@ +Groovy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/groupon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/groupon.svg new file mode 100644 index 00000000..10621966 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/groupon.svg @@ -0,0 +1 @@ +Groupon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/grunt.svg b/themes/LoveIt/assets/lib/simple-icons/icons/grunt.svg new file mode 100644 index 00000000..93d19307 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/grunt.svg @@ -0,0 +1 @@ +Grunt icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/guangzhoumetro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/guangzhoumetro.svg new file mode 100644 index 00000000..e47a6b5f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/guangzhoumetro.svg @@ -0,0 +1 @@ +Guangzhou Metro icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gulp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gulp.svg new file mode 100644 index 00000000..cfc65ced --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gulp.svg @@ -0,0 +1 @@ +gulp icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gumroad.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gumroad.svg new file mode 100644 index 00000000..ca99e4e0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gumroad.svg @@ -0,0 +1 @@ +Gumroad icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gumtree.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gumtree.svg new file mode 100644 index 00000000..e681cfc8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gumtree.svg @@ -0,0 +1 @@ +Gumtree icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/gutenberg.svg b/themes/LoveIt/assets/lib/simple-icons/icons/gutenberg.svg new file mode 100644 index 00000000..6ca5980e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/gutenberg.svg @@ -0,0 +1 @@ +Gutenberg icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/habr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/habr.svg new file mode 100644 index 00000000..f747803f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/habr.svg @@ -0,0 +1 @@ +Habr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hackaday.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hackaday.svg new file mode 100644 index 00000000..e1241493 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hackaday.svg @@ -0,0 +1 @@ +Hackaday icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hackerearth.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hackerearth.svg new file mode 100644 index 00000000..2d654f32 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hackerearth.svg @@ -0,0 +1 @@ +HackerEarth icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hackerone.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hackerone.svg new file mode 100644 index 00000000..e6ce31e1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hackerone.svg @@ -0,0 +1 @@ +HackerOne icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hackerrank.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hackerrank.svg new file mode 100644 index 00000000..1ae527dd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hackerrank.svg @@ -0,0 +1 @@ +HackerRank icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hackhands.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hackhands.svg new file mode 100644 index 00000000..4afe1302 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hackhands.svg @@ -0,0 +1 @@ +HackHands icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hackster.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hackster.svg new file mode 100644 index 00000000..69b7e35f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hackster.svg @@ -0,0 +1 @@ +Hackster icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/happycow.svg b/themes/LoveIt/assets/lib/simple-icons/icons/happycow.svg new file mode 100644 index 00000000..b9dca4e4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/happycow.svg @@ -0,0 +1 @@ +HappyCow icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/harbor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/harbor.svg new file mode 100644 index 00000000..875a818e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/harbor.svg @@ -0,0 +1 @@ +Harbor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hashnode.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hashnode.svg new file mode 100644 index 00000000..9e42ea54 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hashnode.svg @@ -0,0 +1 @@ +Hashnode icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/haskell.svg b/themes/LoveIt/assets/lib/simple-icons/icons/haskell.svg new file mode 100644 index 00000000..c35c010d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/haskell.svg @@ -0,0 +1 @@ +Haskell icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hatenabookmark.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hatenabookmark.svg new file mode 100644 index 00000000..8d23fe76 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hatenabookmark.svg @@ -0,0 +1 @@ +Hatena Bookmark icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/haveibeenpwned.svg b/themes/LoveIt/assets/lib/simple-icons/icons/haveibeenpwned.svg new file mode 100644 index 00000000..c0af23f3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/haveibeenpwned.svg @@ -0,0 +1 @@ +haveibeenpwned icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/haxe.svg b/themes/LoveIt/assets/lib/simple-icons/icons/haxe.svg new file mode 100644 index 00000000..c29ffd8f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/haxe.svg @@ -0,0 +1 @@ +Haxe icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hbo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hbo.svg new file mode 100644 index 00000000..429783f5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hbo.svg @@ -0,0 +1 @@ +HBO icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hellofresh.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hellofresh.svg new file mode 100644 index 00000000..59025d53 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hellofresh.svg @@ -0,0 +1 @@ +HelloFresh icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hellyhansen.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hellyhansen.svg new file mode 100644 index 00000000..604f1a66 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hellyhansen.svg @@ -0,0 +1 @@ +Helly Hansen icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/helm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/helm.svg new file mode 100644 index 00000000..0b5c4e89 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/helm.svg @@ -0,0 +1 @@ +Helm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/here.svg b/themes/LoveIt/assets/lib/simple-icons/icons/here.svg new file mode 100644 index 00000000..aa3645fd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/here.svg @@ -0,0 +1 @@ +HERE icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/heroku.svg b/themes/LoveIt/assets/lib/simple-icons/icons/heroku.svg new file mode 100644 index 00000000..2430e474 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/heroku.svg @@ -0,0 +1 @@ +Heroku icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hexo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hexo.svg new file mode 100644 index 00000000..b8aa62f0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hexo.svg @@ -0,0 +1 @@ +Hexo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/highly.svg b/themes/LoveIt/assets/lib/simple-icons/icons/highly.svg new file mode 100644 index 00000000..8bb97e71 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/highly.svg @@ -0,0 +1 @@ +Highly icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hilton.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hilton.svg new file mode 100644 index 00000000..6c2a38a4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hilton.svg @@ -0,0 +1 @@ +Hilton icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hipchat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hipchat.svg new file mode 100644 index 00000000..22ccf54b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hipchat.svg @@ -0,0 +1 @@ +HipChat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hitachi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hitachi.svg new file mode 100644 index 00000000..a40dba50 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hitachi.svg @@ -0,0 +1 @@ +Hitachi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hive.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hive.svg new file mode 100644 index 00000000..c4ed8601 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hive.svg @@ -0,0 +1 @@ +Hive icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hockeyapp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hockeyapp.svg new file mode 100644 index 00000000..c7dd0072 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hockeyapp.svg @@ -0,0 +1 @@ +HockeyApp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/homeassistant.svg b/themes/LoveIt/assets/lib/simple-icons/icons/homeassistant.svg new file mode 100644 index 00000000..8513241e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/homeassistant.svg @@ -0,0 +1 @@ +Home Assistant icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/homify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/homify.svg new file mode 100644 index 00000000..586cc809 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/homify.svg @@ -0,0 +1 @@ +homify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/honda.svg b/themes/LoveIt/assets/lib/simple-icons/icons/honda.svg new file mode 100644 index 00000000..85d79e3a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/honda.svg @@ -0,0 +1 @@ +Honda icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hootsuite.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hootsuite.svg new file mode 100644 index 00000000..b8d79d42 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hootsuite.svg @@ -0,0 +1 @@ +Hootsuite icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hotels-dot-com.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hotels-dot-com.svg new file mode 100644 index 00000000..195fe54f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hotels-dot-com.svg @@ -0,0 +1 @@ +Hotels.com icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/houdini.svg b/themes/LoveIt/assets/lib/simple-icons/icons/houdini.svg new file mode 100644 index 00000000..1d593dec --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/houdini.svg @@ -0,0 +1 @@ +Houdini icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/houzz.svg b/themes/LoveIt/assets/lib/simple-icons/icons/houzz.svg new file mode 100644 index 00000000..d2b68df4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/houzz.svg @@ -0,0 +1 @@ +Houzz icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hp.svg new file mode 100644 index 00000000..47867a64 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hp.svg @@ -0,0 +1 @@ +HP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/html5.svg b/themes/LoveIt/assets/lib/simple-icons/icons/html5.svg new file mode 100644 index 00000000..27c1d292 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/html5.svg @@ -0,0 +1 @@ +HTML5 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/htmlacademy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/htmlacademy.svg new file mode 100644 index 00000000..035b073d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/htmlacademy.svg @@ -0,0 +1 @@ +HTML Academy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/huawei.svg b/themes/LoveIt/assets/lib/simple-icons/icons/huawei.svg new file mode 100644 index 00000000..bf6cec21 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/huawei.svg @@ -0,0 +1 @@ +Huawei icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hubspot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hubspot.svg new file mode 100644 index 00000000..eaa10848 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hubspot.svg @@ -0,0 +1 @@ +HubSpot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hugo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hugo.svg new file mode 100644 index 00000000..dfb18f0e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hugo.svg @@ -0,0 +1 @@ +Hugo icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hulu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hulu.svg new file mode 100644 index 00000000..a4db4fe6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hulu.svg @@ -0,0 +1 @@ +Hulu icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/humblebundle.svg b/themes/LoveIt/assets/lib/simple-icons/icons/humblebundle.svg new file mode 100644 index 00000000..54dc15a9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/humblebundle.svg @@ -0,0 +1 @@ +Humble Bundle icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hurriyetemlak.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hurriyetemlak.svg new file mode 100644 index 00000000..9860af50 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hurriyetemlak.svg @@ -0,0 +1 @@ +Hurriyetemlak icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/husqvarna.svg b/themes/LoveIt/assets/lib/simple-icons/icons/husqvarna.svg new file mode 100644 index 00000000..5a8cb880 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/husqvarna.svg @@ -0,0 +1 @@ +Husqvarna icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hypothesis.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hypothesis.svg new file mode 100644 index 00000000..a30bc12c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hypothesis.svg @@ -0,0 +1 @@ +Hypothesis icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/hyundai.svg b/themes/LoveIt/assets/lib/simple-icons/icons/hyundai.svg new file mode 100644 index 00000000..379d29e2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/hyundai.svg @@ -0,0 +1 @@ +Hyundai icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/iata.svg b/themes/LoveIt/assets/lib/simple-icons/icons/iata.svg new file mode 100644 index 00000000..a4fcba14 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/iata.svg @@ -0,0 +1 @@ +Iata icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ibeacon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ibeacon.svg new file mode 100644 index 00000000..f33fddbe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ibeacon.svg @@ -0,0 +1 @@ +iBeacon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ibm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ibm.svg new file mode 100644 index 00000000..0da23ee4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ibm.svg @@ -0,0 +1 @@ +IBM icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/icloud.svg b/themes/LoveIt/assets/lib/simple-icons/icons/icloud.svg new file mode 100644 index 00000000..d0fd35bc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/icloud.svg @@ -0,0 +1 @@ +iCloud icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/icomoon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/icomoon.svg new file mode 100644 index 00000000..0e62ab89 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/icomoon.svg @@ -0,0 +1 @@ +IcoMoon icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/icon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/icon.svg new file mode 100644 index 00000000..40a8d8b9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/icon.svg @@ -0,0 +1 @@ +ICON icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/iconify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/iconify.svg new file mode 100644 index 00000000..6bc17aa4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/iconify.svg @@ -0,0 +1 @@ +Iconify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/iconjar.svg b/themes/LoveIt/assets/lib/simple-icons/icons/iconjar.svg new file mode 100644 index 00000000..bf7c9900 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/iconjar.svg @@ -0,0 +1 @@ +IconJar icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/icq.svg b/themes/LoveIt/assets/lib/simple-icons/icons/icq.svg new file mode 100644 index 00000000..0b7d22a6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/icq.svg @@ -0,0 +1 @@ +ICQ icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ideal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ideal.svg new file mode 100644 index 00000000..a9d0e60b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ideal.svg @@ -0,0 +1 @@ +iDEAL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ifixit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ifixit.svg new file mode 100644 index 00000000..8a09c879 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ifixit.svg @@ -0,0 +1 @@ +iFixit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ifood.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ifood.svg new file mode 100644 index 00000000..5e289b7c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ifood.svg @@ -0,0 +1 @@ +iFood icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/imdb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/imdb.svg new file mode 100644 index 00000000..57c46f09 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/imdb.svg @@ -0,0 +1 @@ +IMDb icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/imgur.svg b/themes/LoveIt/assets/lib/simple-icons/icons/imgur.svg new file mode 100644 index 00000000..1fedce13 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/imgur.svg @@ -0,0 +1 @@ +Imgur icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/indeed.svg b/themes/LoveIt/assets/lib/simple-icons/icons/indeed.svg new file mode 100644 index 00000000..b7638dfb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/indeed.svg @@ -0,0 +1 @@ +Indeed icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/influxdb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/influxdb.svg new file mode 100644 index 00000000..f78bf6e0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/influxdb.svg @@ -0,0 +1 @@ +InfluxDB icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/inkscape.svg b/themes/LoveIt/assets/lib/simple-icons/icons/inkscape.svg new file mode 100644 index 00000000..707ae0d4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/inkscape.svg @@ -0,0 +1 @@ +Inkscape icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/insomnia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/insomnia.svg new file mode 100644 index 00000000..5769d706 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/insomnia.svg @@ -0,0 +1 @@ +Insomnia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/instacart.svg b/themes/LoveIt/assets/lib/simple-icons/icons/instacart.svg new file mode 100644 index 00000000..eda8789e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/instacart.svg @@ -0,0 +1 @@ +Instacart icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/instagram.svg b/themes/LoveIt/assets/lib/simple-icons/icons/instagram.svg new file mode 100644 index 00000000..e0b8ffd7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/instagram.svg @@ -0,0 +1 @@ +Instagram icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/instapaper.svg b/themes/LoveIt/assets/lib/simple-icons/icons/instapaper.svg new file mode 100644 index 00000000..955a780b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/instapaper.svg @@ -0,0 +1 @@ +Instapaper icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/intel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/intel.svg new file mode 100644 index 00000000..ecc5d226 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/intel.svg @@ -0,0 +1 @@ +Intel icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/intellijidea.svg b/themes/LoveIt/assets/lib/simple-icons/icons/intellijidea.svg new file mode 100644 index 00000000..691b45d3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/intellijidea.svg @@ -0,0 +1 @@ +IntelliJ IDEA icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/intercom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/intercom.svg new file mode 100644 index 00000000..a5547f1f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/intercom.svg @@ -0,0 +1 @@ +Intercom icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/internetarchive.svg b/themes/LoveIt/assets/lib/simple-icons/icons/internetarchive.svg new file mode 100644 index 00000000..dab99c2b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/internetarchive.svg @@ -0,0 +1 @@ +Internet Archive icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/internetexplorer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/internetexplorer.svg new file mode 100644 index 00000000..57903476 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/internetexplorer.svg @@ -0,0 +1 @@ +Internet Explorer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/invision.svg b/themes/LoveIt/assets/lib/simple-icons/icons/invision.svg new file mode 100644 index 00000000..27a99513 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/invision.svg @@ -0,0 +1 @@ +InVision icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/invoiceninja.svg b/themes/LoveIt/assets/lib/simple-icons/icons/invoiceninja.svg new file mode 100644 index 00000000..735ac9b1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/invoiceninja.svg @@ -0,0 +1 @@ +Invoice Ninja icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/iobroker.svg b/themes/LoveIt/assets/lib/simple-icons/icons/iobroker.svg new file mode 100644 index 00000000..850146b1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/iobroker.svg @@ -0,0 +1 @@ +ioBroker icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ionic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ionic.svg new file mode 100644 index 00000000..b5855ec4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ionic.svg @@ -0,0 +1 @@ +Ionic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ios.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ios.svg new file mode 100644 index 00000000..b8b421f6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ios.svg @@ -0,0 +1 @@ +iOS icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ipfs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ipfs.svg new file mode 100644 index 00000000..6a8add97 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ipfs.svg @@ -0,0 +1 @@ +IPFS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/issuu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/issuu.svg new file mode 100644 index 00000000..8a921b72 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/issuu.svg @@ -0,0 +1 @@ +Issuu icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/itch-dot-io.svg b/themes/LoveIt/assets/lib/simple-icons/icons/itch-dot-io.svg new file mode 100644 index 00000000..0892fccb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/itch-dot-io.svg @@ -0,0 +1 @@ +Itch.io icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/itunes.svg b/themes/LoveIt/assets/lib/simple-icons/icons/itunes.svg new file mode 100644 index 00000000..a49aa204 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/itunes.svg @@ -0,0 +1 @@ +iTunes icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/iveco.svg b/themes/LoveIt/assets/lib/simple-icons/icons/iveco.svg new file mode 100644 index 00000000..7df59ee1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/iveco.svg @@ -0,0 +1 @@ +IVECO icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jabber.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jabber.svg new file mode 100644 index 00000000..f99e961e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jabber.svg @@ -0,0 +1 @@ +Jabber icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jameson.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jameson.svg new file mode 100644 index 00000000..5a0fdb39 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jameson.svg @@ -0,0 +1 @@ +Jameson icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/java.svg b/themes/LoveIt/assets/lib/simple-icons/icons/java.svg new file mode 100644 index 00000000..26fb365f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/java.svg @@ -0,0 +1 @@ +Java icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/javascript.svg b/themes/LoveIt/assets/lib/simple-icons/icons/javascript.svg new file mode 100644 index 00000000..aa284118 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/javascript.svg @@ -0,0 +1 @@ +JavaScript icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jcb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jcb.svg new file mode 100644 index 00000000..01ce57fe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jcb.svg @@ -0,0 +1 @@ +JCB icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jeep.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jeep.svg new file mode 100644 index 00000000..ed7bd87e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jeep.svg @@ -0,0 +1 @@ +Jeep icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jekyll.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jekyll.svg new file mode 100644 index 00000000..4e13fa04 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jekyll.svg @@ -0,0 +1 @@ +Jekyll icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jenkins.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jenkins.svg new file mode 100644 index 00000000..0e2c5e9f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jenkins.svg @@ -0,0 +1 @@ +Jenkins icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jenkinsx.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jenkinsx.svg new file mode 100644 index 00000000..a7cc9264 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jenkinsx.svg @@ -0,0 +1 @@ +Jenkins X icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jest.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jest.svg new file mode 100644 index 00000000..ea2bdf76 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jest.svg @@ -0,0 +1 @@ +Jest icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jet.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jet.svg new file mode 100644 index 00000000..3c5c6970 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jet.svg @@ -0,0 +1 @@ +JET icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jetbrains.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jetbrains.svg new file mode 100644 index 00000000..a3bd661e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jetbrains.svg @@ -0,0 +1 @@ +JetBrains icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jinja.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jinja.svg new file mode 100644 index 00000000..f517b5ff --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jinja.svg @@ -0,0 +1 @@ +Jinja icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jira.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jira.svg new file mode 100644 index 00000000..5fa09ad3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jira.svg @@ -0,0 +1 @@ +Jira icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/johndeere.svg b/themes/LoveIt/assets/lib/simple-icons/icons/johndeere.svg new file mode 100644 index 00000000..f028146c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/johndeere.svg @@ -0,0 +1 @@ +John Deere icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/joomla.svg b/themes/LoveIt/assets/lib/simple-icons/icons/joomla.svg new file mode 100644 index 00000000..758c1d26 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/joomla.svg @@ -0,0 +1 @@ +Joomla icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jquery.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jquery.svg new file mode 100644 index 00000000..5d119030 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jquery.svg @@ -0,0 +1 @@ +jQuery icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jrgroup.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jrgroup.svg new file mode 100644 index 00000000..d3f37974 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jrgroup.svg @@ -0,0 +1 @@ +JR Group icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jsdelivr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jsdelivr.svg new file mode 100644 index 00000000..eb72be13 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jsdelivr.svg @@ -0,0 +1 @@ +jsDelivr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jsfiddle.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jsfiddle.svg new file mode 100644 index 00000000..3ca23818 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jsfiddle.svg @@ -0,0 +1 @@ +JSFiddle icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/json.svg b/themes/LoveIt/assets/lib/simple-icons/icons/json.svg new file mode 100644 index 00000000..9f248ac7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/json.svg @@ -0,0 +1 @@ +JSON icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jsonwebtokens.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jsonwebtokens.svg new file mode 100644 index 00000000..0b122632 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jsonwebtokens.svg @@ -0,0 +1 @@ +JSON Web Tokens icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/jupyter.svg b/themes/LoveIt/assets/lib/simple-icons/icons/jupyter.svg new file mode 100644 index 00000000..cec19cf0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/jupyter.svg @@ -0,0 +1 @@ +Jupyter icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/justeat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/justeat.svg new file mode 100644 index 00000000..41efe8ae --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/justeat.svg @@ -0,0 +1 @@ +Just Eat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/justgiving.svg b/themes/LoveIt/assets/lib/simple-icons/icons/justgiving.svg new file mode 100644 index 00000000..62f7d51d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/justgiving.svg @@ -0,0 +1 @@ +JustGiving icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kaggle.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kaggle.svg new file mode 100644 index 00000000..0280a1fe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kaggle.svg @@ -0,0 +1 @@ +Kaggle icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kaios.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kaios.svg new file mode 100644 index 00000000..ed71eb60 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kaios.svg @@ -0,0 +1 @@ +KaiOS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kaspersky.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kaspersky.svg new file mode 100644 index 00000000..0f806b05 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kaspersky.svg @@ -0,0 +1 @@ +Kaspersky icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/katana.svg b/themes/LoveIt/assets/lib/simple-icons/icons/katana.svg new file mode 100644 index 00000000..b79e9768 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/katana.svg @@ -0,0 +1 @@ +Katana icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kde.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kde.svg new file mode 100644 index 00000000..306db765 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kde.svg @@ -0,0 +1 @@ +KDE icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/keepassxc.svg b/themes/LoveIt/assets/lib/simple-icons/icons/keepassxc.svg new file mode 100644 index 00000000..df3a3d3a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/keepassxc.svg @@ -0,0 +1 @@ +KeePassXC icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kentico.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kentico.svg new file mode 100644 index 00000000..18410ab4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kentico.svg @@ -0,0 +1 @@ +Kentico icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/keras.svg b/themes/LoveIt/assets/lib/simple-icons/icons/keras.svg new file mode 100644 index 00000000..9cc0f958 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/keras.svg @@ -0,0 +1 @@ +Keras icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/keybase.svg b/themes/LoveIt/assets/lib/simple-icons/icons/keybase.svg new file mode 100644 index 00000000..0709ece0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/keybase.svg @@ -0,0 +1 @@ +Keybase icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/keycdn.svg b/themes/LoveIt/assets/lib/simple-icons/icons/keycdn.svg new file mode 100644 index 00000000..74595953 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/keycdn.svg @@ -0,0 +1 @@ +KeyCDN icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/khanacademy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/khanacademy.svg new file mode 100644 index 00000000..b74edd3a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/khanacademy.svg @@ -0,0 +1 @@ +Khan Academy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/khronosgroup.svg b/themes/LoveIt/assets/lib/simple-icons/icons/khronosgroup.svg new file mode 100644 index 00000000..357852cc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/khronosgroup.svg @@ -0,0 +1 @@ +Khronos Group icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kia.svg new file mode 100644 index 00000000..cefdc2e2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kia.svg @@ -0,0 +1 @@ +Kia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kibana.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kibana.svg new file mode 100644 index 00000000..ae93b744 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kibana.svg @@ -0,0 +1 @@ +Kibana icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kickstarter.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kickstarter.svg new file mode 100644 index 00000000..aaead595 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kickstarter.svg @@ -0,0 +1 @@ +Kickstarter icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kik.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kik.svg new file mode 100644 index 00000000..8e55c2d0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kik.svg @@ -0,0 +1 @@ +Kik icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kirby.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kirby.svg new file mode 100644 index 00000000..48daac12 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kirby.svg @@ -0,0 +1 @@ +Kirby icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/klm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/klm.svg new file mode 100644 index 00000000..37bfcdad --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/klm.svg @@ -0,0 +1 @@ +KLM icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/klout.svg b/themes/LoveIt/assets/lib/simple-icons/icons/klout.svg new file mode 100644 index 00000000..eb4c24d2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/klout.svg @@ -0,0 +1 @@ +Klout icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/known.svg b/themes/LoveIt/assets/lib/simple-icons/icons/known.svg new file mode 100644 index 00000000..d6c59dd2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/known.svg @@ -0,0 +1 @@ +Known icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ko-fi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ko-fi.svg new file mode 100644 index 00000000..c335a1a4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ko-fi.svg @@ -0,0 +1 @@ +Ko-fi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kodi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kodi.svg new file mode 100644 index 00000000..7716b8d3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kodi.svg @@ -0,0 +1 @@ +Kodi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/koding.svg b/themes/LoveIt/assets/lib/simple-icons/icons/koding.svg new file mode 100644 index 00000000..4173e95c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/koding.svg @@ -0,0 +1 @@ +Koding icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kofax.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kofax.svg new file mode 100644 index 00000000..782fd84f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kofax.svg @@ -0,0 +1 @@ +Kofax icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kotlin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kotlin.svg new file mode 100644 index 00000000..ac00bbe4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kotlin.svg @@ -0,0 +1 @@ +Kotlin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/krita.svg b/themes/LoveIt/assets/lib/simple-icons/icons/krita.svg new file mode 100644 index 00000000..7e43a30d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/krita.svg @@ -0,0 +1 @@ +Krita icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kubernetes.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kubernetes.svg new file mode 100644 index 00000000..3e8f13fd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kubernetes.svg @@ -0,0 +1 @@ +Kubernetes icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/kyocera.svg b/themes/LoveIt/assets/lib/simple-icons/icons/kyocera.svg new file mode 100644 index 00000000..77bc7a0d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/kyocera.svg @@ -0,0 +1 @@ +Kyocera icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/labview.svg b/themes/LoveIt/assets/lib/simple-icons/icons/labview.svg new file mode 100644 index 00000000..3d8bd99a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/labview.svg @@ -0,0 +1 @@ +LabVIEW icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lamborghini.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lamborghini.svg new file mode 100644 index 00000000..3a78f7ed --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lamborghini.svg @@ -0,0 +1 @@ +Lamborghini icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/laravel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/laravel.svg new file mode 100644 index 00000000..a523b552 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/laravel.svg @@ -0,0 +1 @@ +Laravel icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/laravelhorizon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/laravelhorizon.svg new file mode 100644 index 00000000..a088dd7c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/laravelhorizon.svg @@ -0,0 +1 @@ +Laravel Horizon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/laravelnova.svg b/themes/LoveIt/assets/lib/simple-icons/icons/laravelnova.svg new file mode 100644 index 00000000..a70c001b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/laravelnova.svg @@ -0,0 +1 @@ +Laravel Nova icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/last-dot-fm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/last-dot-fm.svg new file mode 100644 index 00000000..beeb3e05 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/last-dot-fm.svg @@ -0,0 +1 @@ +Last.fm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lastpass.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lastpass.svg new file mode 100644 index 00000000..75b6de27 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lastpass.svg @@ -0,0 +1 @@ +LastPass icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/latex.svg b/themes/LoveIt/assets/lib/simple-icons/icons/latex.svg new file mode 100644 index 00000000..f482fe42 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/latex.svg @@ -0,0 +1 @@ +LaTeX icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/launchpad.svg b/themes/LoveIt/assets/lib/simple-icons/icons/launchpad.svg new file mode 100644 index 00000000..f9581856 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/launchpad.svg @@ -0,0 +1 @@ +Launchpad icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/leaflet.svg b/themes/LoveIt/assets/lib/simple-icons/icons/leaflet.svg new file mode 100644 index 00000000..50c561db --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/leaflet.svg @@ -0,0 +1 @@ +Leaflet icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/leetcode.svg b/themes/LoveIt/assets/lib/simple-icons/icons/leetcode.svg new file mode 100644 index 00000000..0d738d1a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/leetcode.svg @@ -0,0 +1 @@ +LeetCode icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lenovo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lenovo.svg new file mode 100644 index 00000000..8ecb1b4e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lenovo.svg @@ -0,0 +1 @@ +Lenovo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/letsencrypt.svg b/themes/LoveIt/assets/lib/simple-icons/icons/letsencrypt.svg new file mode 100644 index 00000000..f9d4b3d9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/letsencrypt.svg @@ -0,0 +1 @@ +Let's Encrypt icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/letterboxd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/letterboxd.svg new file mode 100644 index 00000000..539e1e74 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/letterboxd.svg @@ -0,0 +1 @@ +Letterboxd icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lg.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lg.svg new file mode 100644 index 00000000..3a2eeafe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lg.svg @@ -0,0 +1 @@ +LG icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lgtm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lgtm.svg new file mode 100644 index 00000000..f1247f67 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lgtm.svg @@ -0,0 +1 @@ +LGTM icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/liberapay.svg b/themes/LoveIt/assets/lib/simple-icons/icons/liberapay.svg new file mode 100644 index 00000000..a6c7cd87 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/liberapay.svg @@ -0,0 +1 @@ +Liberapay icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/librarything.svg b/themes/LoveIt/assets/lib/simple-icons/icons/librarything.svg new file mode 100644 index 00000000..9044a73e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/librarything.svg @@ -0,0 +1 @@ +LibraryThing icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/libreoffice.svg b/themes/LoveIt/assets/lib/simple-icons/icons/libreoffice.svg new file mode 100644 index 00000000..2672e573 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/libreoffice.svg @@ -0,0 +1 @@ +LibreOffice icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/libuv.svg b/themes/LoveIt/assets/lib/simple-icons/icons/libuv.svg new file mode 100644 index 00000000..7ada0f67 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/libuv.svg @@ -0,0 +1 @@ +libuv icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lighthouse.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lighthouse.svg new file mode 100644 index 00000000..77bf2e10 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lighthouse.svg @@ -0,0 +1 @@ +Lighthouse icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/line.svg b/themes/LoveIt/assets/lib/simple-icons/icons/line.svg new file mode 100644 index 00000000..a4f374ee --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/line.svg @@ -0,0 +1 @@ +Line icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lineageos.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lineageos.svg new file mode 100644 index 00000000..141084e9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lineageos.svg @@ -0,0 +1 @@ +LineageOS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/linewebtoon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/linewebtoon.svg new file mode 100644 index 00000000..31eadd3a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/linewebtoon.svg @@ -0,0 +1 @@ +LINE WEBTOON icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/linkedin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/linkedin.svg new file mode 100644 index 00000000..3dc9f68a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/linkedin.svg @@ -0,0 +1 @@ +LinkedIn icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/linode.svg b/themes/LoveIt/assets/lib/simple-icons/icons/linode.svg new file mode 100644 index 00000000..543ce1d6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/linode.svg @@ -0,0 +1 @@ +Linode icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/linux.svg b/themes/LoveIt/assets/lib/simple-icons/icons/linux.svg new file mode 100644 index 00000000..3e1ee6b2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/linux.svg @@ -0,0 +1 @@ +Linux icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/linuxfoundation.svg b/themes/LoveIt/assets/lib/simple-icons/icons/linuxfoundation.svg new file mode 100644 index 00000000..19c23a5a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/linuxfoundation.svg @@ -0,0 +1 @@ +Linux Foundation icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/linuxmint.svg b/themes/LoveIt/assets/lib/simple-icons/icons/linuxmint.svg new file mode 100644 index 00000000..16250efb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/linuxmint.svg @@ -0,0 +1 @@ +Linux Mint icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/litecoin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/litecoin.svg new file mode 100644 index 00000000..9adc2746 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/litecoin.svg @@ -0,0 +1 @@ +Litecoin icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/livejournal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/livejournal.svg new file mode 100644 index 00000000..50bffcb5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/livejournal.svg @@ -0,0 +1 @@ +LiveJournal icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/livestream.svg b/themes/LoveIt/assets/lib/simple-icons/icons/livestream.svg new file mode 100644 index 00000000..82a534fe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/livestream.svg @@ -0,0 +1 @@ +Livestream icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/llvm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/llvm.svg new file mode 100644 index 00000000..7aac058a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/llvm.svg @@ -0,0 +1 @@ +LLVM icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lmms.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lmms.svg new file mode 100644 index 00000000..babac8c0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lmms.svg @@ -0,0 +1 @@ +LMMS icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/logitech.svg b/themes/LoveIt/assets/lib/simple-icons/icons/logitech.svg new file mode 100644 index 00000000..edf6acda --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/logitech.svg @@ -0,0 +1 @@ +Logitech icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/logmein.svg b/themes/LoveIt/assets/lib/simple-icons/icons/logmein.svg new file mode 100644 index 00000000..1f8e3ebd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/logmein.svg @@ -0,0 +1 @@ +LogMeIn icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/logstash.svg b/themes/LoveIt/assets/lib/simple-icons/icons/logstash.svg new file mode 100644 index 00000000..4d432cd2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/logstash.svg @@ -0,0 +1 @@ +Logstash icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/loom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/loom.svg new file mode 100644 index 00000000..a8c39ea4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/loom.svg @@ -0,0 +1 @@ +Loom icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/loop.svg b/themes/LoveIt/assets/lib/simple-icons/icons/loop.svg new file mode 100644 index 00000000..fd213471 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/loop.svg @@ -0,0 +1 @@ +Loop icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lua.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lua.svg new file mode 100644 index 00000000..a18fc819 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lua.svg @@ -0,0 +1 @@ +Lua icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lubuntu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lubuntu.svg new file mode 100644 index 00000000..c669830f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lubuntu.svg @@ -0,0 +1 @@ +Lubuntu icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lufthansa.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lufthansa.svg new file mode 100644 index 00000000..85858224 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lufthansa.svg @@ -0,0 +1 @@ +Lufthansa icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lumen.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lumen.svg new file mode 100644 index 00000000..e0e1ed4a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lumen.svg @@ -0,0 +1 @@ +Lumen icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/lyft.svg b/themes/LoveIt/assets/lib/simple-icons/icons/lyft.svg new file mode 100644 index 00000000..533ea151 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/lyft.svg @@ -0,0 +1 @@ +Lyft icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/maas.svg b/themes/LoveIt/assets/lib/simple-icons/icons/maas.svg new file mode 100644 index 00000000..adf08cf9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/maas.svg @@ -0,0 +1 @@ +MAAS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/macys.svg b/themes/LoveIt/assets/lib/simple-icons/icons/macys.svg new file mode 100644 index 00000000..30b4faec --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/macys.svg @@ -0,0 +1 @@ +Macy’s icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/magento.svg b/themes/LoveIt/assets/lib/simple-icons/icons/magento.svg new file mode 100644 index 00000000..fe656cb9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/magento.svg @@ -0,0 +1 @@ +Magento icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/magisk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/magisk.svg new file mode 100644 index 00000000..d789a69d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/magisk.svg @@ -0,0 +1 @@ +Magisk icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mail-dot-ru.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mail-dot-ru.svg new file mode 100644 index 00000000..aa7342df --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mail-dot-ru.svg @@ -0,0 +1 @@ +Mail.Ru icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mailchimp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mailchimp.svg new file mode 100644 index 00000000..620d2c30 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mailchimp.svg @@ -0,0 +1 @@ +MailChimp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/makerbot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/makerbot.svg new file mode 100644 index 00000000..c8b2b709 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/makerbot.svg @@ -0,0 +1 @@ +MakerBot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/man.svg b/themes/LoveIt/assets/lib/simple-icons/icons/man.svg new file mode 100644 index 00000000..f6393235 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/man.svg @@ -0,0 +1 @@ +MAN icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/manageiq.svg b/themes/LoveIt/assets/lib/simple-icons/icons/manageiq.svg new file mode 100644 index 00000000..baa5dba1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/manageiq.svg @@ -0,0 +1 @@ +ManageIQ icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/manjaro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/manjaro.svg new file mode 100644 index 00000000..12497044 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/manjaro.svg @@ -0,0 +1 @@ +Manjaro icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mapbox.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mapbox.svg new file mode 100644 index 00000000..ac17d798 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mapbox.svg @@ -0,0 +1 @@ +Mapbox icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mariadb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mariadb.svg new file mode 100644 index 00000000..c52dafbc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mariadb.svg @@ -0,0 +1 @@ +MariaDB icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mariadbfoundation.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mariadbfoundation.svg new file mode 100644 index 00000000..5267f0f2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mariadbfoundation.svg @@ -0,0 +1 @@ +MariaDB Foundation icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/markdown.svg b/themes/LoveIt/assets/lib/simple-icons/icons/markdown.svg new file mode 100644 index 00000000..3009973d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/markdown.svg @@ -0,0 +1 @@ +Markdown icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/marketo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/marketo.svg new file mode 100644 index 00000000..e2171036 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/marketo.svg @@ -0,0 +1 @@ +Marketo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/marriott.svg b/themes/LoveIt/assets/lib/simple-icons/icons/marriott.svg new file mode 100644 index 00000000..bb86fe24 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/marriott.svg @@ -0,0 +1 @@ +Marriott icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/maserati.svg b/themes/LoveIt/assets/lib/simple-icons/icons/maserati.svg new file mode 100644 index 00000000..458c6123 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/maserati.svg @@ -0,0 +1 @@ +Maserati icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mastercard.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mastercard.svg new file mode 100644 index 00000000..2f8fb99f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mastercard.svg @@ -0,0 +1 @@ +MasterCard icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mastodon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mastodon.svg new file mode 100644 index 00000000..79e1d804 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mastodon.svg @@ -0,0 +1 @@ +Mastodon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/material-ui.svg b/themes/LoveIt/assets/lib/simple-icons/icons/material-ui.svg new file mode 100644 index 00000000..a7c4b31e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/material-ui.svg @@ -0,0 +1 @@ +Material-UI icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/materialdesign.svg b/themes/LoveIt/assets/lib/simple-icons/icons/materialdesign.svg new file mode 100644 index 00000000..3d0011a7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/materialdesign.svg @@ -0,0 +1 @@ +Material Design icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/materialdesignicons.svg b/themes/LoveIt/assets/lib/simple-icons/icons/materialdesignicons.svg new file mode 100644 index 00000000..244d1ebd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/materialdesignicons.svg @@ -0,0 +1 @@ +Material Design Icons icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mathworks.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mathworks.svg new file mode 100644 index 00000000..f26ab3de --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mathworks.svg @@ -0,0 +1 @@ +Mathworks icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/matrix.svg b/themes/LoveIt/assets/lib/simple-icons/icons/matrix.svg new file mode 100644 index 00000000..9fa60239 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/matrix.svg @@ -0,0 +1 @@ +Matrix icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mattermost.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mattermost.svg new file mode 100644 index 00000000..e9f1d9e5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mattermost.svg @@ -0,0 +1 @@ +Mattermost icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/matternet.svg b/themes/LoveIt/assets/lib/simple-icons/icons/matternet.svg new file mode 100644 index 00000000..ef608d62 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/matternet.svg @@ -0,0 +1 @@ +Matternet icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mazda.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mazda.svg new file mode 100644 index 00000000..b2a8855e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mazda.svg @@ -0,0 +1 @@ +Mazda icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mcafee.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mcafee.svg new file mode 100644 index 00000000..9281b3bd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mcafee.svg @@ -0,0 +1 @@ +McAfee icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mcdonalds.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mcdonalds.svg new file mode 100644 index 00000000..6c24399b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mcdonalds.svg @@ -0,0 +1 @@ +McDonald's icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mdnwebdocs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mdnwebdocs.svg new file mode 100644 index 00000000..24f6f55b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mdnwebdocs.svg @@ -0,0 +1 @@ +MDN Web Docs icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mediafire.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mediafire.svg new file mode 100644 index 00000000..354da62b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mediafire.svg @@ -0,0 +1 @@ +MediaFire icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mediatemple.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mediatemple.svg new file mode 100644 index 00000000..fdbbe98e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mediatemple.svg @@ -0,0 +1 @@ +MediaTemple icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/medium.svg b/themes/LoveIt/assets/lib/simple-icons/icons/medium.svg new file mode 100644 index 00000000..6258a31b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/medium.svg @@ -0,0 +1 @@ +Medium icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/meetup.svg b/themes/LoveIt/assets/lib/simple-icons/icons/meetup.svg new file mode 100644 index 00000000..19a0c5ca --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/meetup.svg @@ -0,0 +1 @@ +Meetup icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mega.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mega.svg new file mode 100644 index 00000000..6e182eba --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mega.svg @@ -0,0 +1 @@ +MEGA icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mendeley.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mendeley.svg new file mode 100644 index 00000000..8864d04d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mendeley.svg @@ -0,0 +1 @@ +Mendeley icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mercedes.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mercedes.svg new file mode 100644 index 00000000..b6c41581 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mercedes.svg @@ -0,0 +1 @@ +Mercedes icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/messenger.svg b/themes/LoveIt/assets/lib/simple-icons/icons/messenger.svg new file mode 100644 index 00000000..55b32472 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/messenger.svg @@ -0,0 +1 @@ +Messenger icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/meteor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/meteor.svg new file mode 100644 index 00000000..4b18d39c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/meteor.svg @@ -0,0 +1 @@ +Meteor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/metrodeparis.svg b/themes/LoveIt/assets/lib/simple-icons/icons/metrodeparis.svg new file mode 100644 index 00000000..0fcf8690 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/metrodeparis.svg @@ -0,0 +1 @@ +Métro de Paris icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/micro-dot-blog.svg b/themes/LoveIt/assets/lib/simple-icons/icons/micro-dot-blog.svg new file mode 100644 index 00000000..b050ebd7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/micro-dot-blog.svg @@ -0,0 +1 @@ +Micro.blog icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microbit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microbit.svg new file mode 100644 index 00000000..b5c5ba15 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microbit.svg @@ -0,0 +1 @@ +micro:bit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microgenetics.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microgenetics.svg new file mode 100644 index 00000000..4b4ccad2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microgenetics.svg @@ -0,0 +1 @@ +Microgenetics icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoft.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoft.svg new file mode 100644 index 00000000..e0e09e9d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoft.svg @@ -0,0 +1 @@ +Microsoft icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftacademic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftacademic.svg new file mode 100644 index 00000000..fcc1d15c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftacademic.svg @@ -0,0 +1 @@ +Microsoft Academic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftaccess.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftaccess.svg new file mode 100644 index 00000000..612690c3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftaccess.svg @@ -0,0 +1 @@ +Microsoft Access icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftazure.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftazure.svg new file mode 100644 index 00000000..d6d0d2c9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftazure.svg @@ -0,0 +1 @@ +Microsoft Azure icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftedge.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftedge.svg new file mode 100644 index 00000000..49a45124 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftedge.svg @@ -0,0 +1 @@ +Microsoft Edge icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftexcel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftexcel.svg new file mode 100644 index 00000000..9185e954 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftexcel.svg @@ -0,0 +1 @@ +Microsoft Excel icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftexchange.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftexchange.svg new file mode 100644 index 00000000..a230e472 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftexchange.svg @@ -0,0 +1 @@ +Microsoft Exchange icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftoffice.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftoffice.svg new file mode 100644 index 00000000..8911b005 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftoffice.svg @@ -0,0 +1 @@ +Microsoft Office icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftonedrive.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftonedrive.svg new file mode 100644 index 00000000..ce95fda0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftonedrive.svg @@ -0,0 +1 @@ +Microsoft OneDrive icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftonenote.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftonenote.svg new file mode 100644 index 00000000..ba4fd48d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftonenote.svg @@ -0,0 +1 @@ +Microsoft OneNote icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftoutlook.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftoutlook.svg new file mode 100644 index 00000000..3b090a42 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftoutlook.svg @@ -0,0 +1 @@ +Microsoft Outlook icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftpowerpoint.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftpowerpoint.svg new file mode 100644 index 00000000..7fba1249 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftpowerpoint.svg @@ -0,0 +1 @@ +Microsoft PowerPoint icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftsharepoint.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftsharepoint.svg new file mode 100644 index 00000000..2b02ccae --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftsharepoint.svg @@ -0,0 +1 @@ +Microsoft SharePoint icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftsqlserver.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftsqlserver.svg new file mode 100644 index 00000000..83fd1adc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftsqlserver.svg @@ -0,0 +1 @@ +Microsoft SQL Server icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftteams.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftteams.svg new file mode 100644 index 00000000..602c8041 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftteams.svg @@ -0,0 +1 @@ +Microsoft Teams icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftvisio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftvisio.svg new file mode 100644 index 00000000..aa2c90cb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftvisio.svg @@ -0,0 +1 @@ +Microsoft Visio icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microsoftword.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftword.svg new file mode 100644 index 00000000..d51f089e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microsoftword.svg @@ -0,0 +1 @@ +Microsoft Word icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/microstrategy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/microstrategy.svg new file mode 100644 index 00000000..40a5f3c2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/microstrategy.svg @@ -0,0 +1 @@ +MicroStrategy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/midi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/midi.svg new file mode 100644 index 00000000..73f13b22 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/midi.svg @@ -0,0 +1 @@ +MIDI icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/minds.svg b/themes/LoveIt/assets/lib/simple-icons/icons/minds.svg new file mode 100644 index 00000000..4928e31e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/minds.svg @@ -0,0 +1 @@ +Minds icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/minetest.svg b/themes/LoveIt/assets/lib/simple-icons/icons/minetest.svg new file mode 100644 index 00000000..9107497f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/minetest.svg @@ -0,0 +1 @@ +Minetest icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/minutemailer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/minutemailer.svg new file mode 100644 index 00000000..4b6c5189 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/minutemailer.svg @@ -0,0 +1 @@ +Minutemailer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mitsubishi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mitsubishi.svg new file mode 100644 index 00000000..7984e870 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mitsubishi.svg @@ -0,0 +1 @@ +Mitsubishi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mix.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mix.svg new file mode 100644 index 00000000..74c39b01 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mix.svg @@ -0,0 +1 @@ +Mix icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mixcloud.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mixcloud.svg new file mode 100644 index 00000000..3adfe69f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mixcloud.svg @@ -0,0 +1 @@ +Mixcloud icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mixer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mixer.svg new file mode 100644 index 00000000..3fabe216 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mixer.svg @@ -0,0 +1 @@ +Mixer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mocha.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mocha.svg new file mode 100644 index 00000000..5b2cfbd7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mocha.svg @@ -0,0 +1 @@ +Mocha icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mojang.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mojang.svg new file mode 100644 index 00000000..579d55dd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mojang.svg @@ -0,0 +1 @@ +Mojang icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/moleculer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/moleculer.svg new file mode 100644 index 00000000..d1b12bd7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/moleculer.svg @@ -0,0 +1 @@ +Moleculer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/monero.svg b/themes/LoveIt/assets/lib/simple-icons/icons/monero.svg new file mode 100644 index 00000000..3e7f1f66 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/monero.svg @@ -0,0 +1 @@ +Monero icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mongodb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mongodb.svg new file mode 100644 index 00000000..0f595f10 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mongodb.svg @@ -0,0 +1 @@ +MongoDB icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/monkeytie.svg b/themes/LoveIt/assets/lib/simple-icons/icons/monkeytie.svg new file mode 100644 index 00000000..20356ab2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/monkeytie.svg @@ -0,0 +1 @@ +Monkey tie icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/monogram.svg b/themes/LoveIt/assets/lib/simple-icons/icons/monogram.svg new file mode 100644 index 00000000..8d2a4342 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/monogram.svg @@ -0,0 +1 @@ +Monogram icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/monster.svg b/themes/LoveIt/assets/lib/simple-icons/icons/monster.svg new file mode 100644 index 00000000..304e57f4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/monster.svg @@ -0,0 +1 @@ +Monster icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/monzo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/monzo.svg new file mode 100644 index 00000000..71be16fe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/monzo.svg @@ -0,0 +1 @@ +Monzo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/moo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/moo.svg new file mode 100644 index 00000000..1922a13d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/moo.svg @@ -0,0 +1 @@ +Moo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/moscowmetro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/moscowmetro.svg new file mode 100644 index 00000000..86ce57fa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/moscowmetro.svg @@ -0,0 +1 @@ +Moscow Metro icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mozilla.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mozilla.svg new file mode 100644 index 00000000..4006ed1b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mozilla.svg @@ -0,0 +1 @@ +Mozilla icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mozillafirefox.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mozillafirefox.svg new file mode 100644 index 00000000..3762246e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mozillafirefox.svg @@ -0,0 +1 @@ +Mozilla Firefox icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mozillathunderbird.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mozillathunderbird.svg new file mode 100644 index 00000000..b1f9c1e3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mozillathunderbird.svg @@ -0,0 +1 @@ +Mozilla Thunderbird icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mta.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mta.svg new file mode 100644 index 00000000..7500b0eb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mta.svg @@ -0,0 +1 @@ +MTA icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mtr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mtr.svg new file mode 100644 index 00000000..2938717d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mtr.svg @@ -0,0 +1 @@ +MTR icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/musescore.svg b/themes/LoveIt/assets/lib/simple-icons/icons/musescore.svg new file mode 100644 index 00000000..07282067 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/musescore.svg @@ -0,0 +1 @@ +MuseScore icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/musicbrainz.svg b/themes/LoveIt/assets/lib/simple-icons/icons/musicbrainz.svg new file mode 100644 index 00000000..1fab3358 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/musicbrainz.svg @@ -0,0 +1 @@ +MusicBrainz icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mxlinux.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mxlinux.svg new file mode 100644 index 00000000..adcd8b67 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mxlinux.svg @@ -0,0 +1 @@ +MX Linux icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/myspace.svg b/themes/LoveIt/assets/lib/simple-icons/icons/myspace.svg new file mode 100644 index 00000000..b919c086 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/myspace.svg @@ -0,0 +1 @@ +Myspace icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/mysql.svg b/themes/LoveIt/assets/lib/simple-icons/icons/mysql.svg new file mode 100644 index 00000000..5ac2cadf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/mysql.svg @@ -0,0 +1 @@ +MySQL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nativescript.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nativescript.svg new file mode 100644 index 00000000..b920ac56 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nativescript.svg @@ -0,0 +1 @@ +NativeScript icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nbb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nbb.svg new file mode 100644 index 00000000..4d1e4ac4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nbb.svg @@ -0,0 +1 @@ +NBB icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ndr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ndr.svg new file mode 100644 index 00000000..f4b18687 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ndr.svg @@ -0,0 +1 @@ +NDR icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nec.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nec.svg new file mode 100644 index 00000000..51011af3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nec.svg @@ -0,0 +1 @@ +NEC icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/neo4j.svg b/themes/LoveIt/assets/lib/simple-icons/icons/neo4j.svg new file mode 100644 index 00000000..72293715 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/neo4j.svg @@ -0,0 +1 @@ +Neo4j icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/neovim.svg b/themes/LoveIt/assets/lib/simple-icons/icons/neovim.svg new file mode 100644 index 00000000..7f7ef426 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/neovim.svg @@ -0,0 +1 @@ +Neovim icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/netapp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/netapp.svg new file mode 100644 index 00000000..b7fa0fe6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/netapp.svg @@ -0,0 +1 @@ +NetApp icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/netflix.svg b/themes/LoveIt/assets/lib/simple-icons/icons/netflix.svg new file mode 100644 index 00000000..0592aedf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/netflix.svg @@ -0,0 +1 @@ +Netflix icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/netlify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/netlify.svg new file mode 100644 index 00000000..18b7bd35 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/netlify.svg @@ -0,0 +1 @@ +Netlify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/newrelic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/newrelic.svg new file mode 100644 index 00000000..56f2d0ab --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/newrelic.svg @@ -0,0 +1 @@ +New Relic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/newyorktimes.svg b/themes/LoveIt/assets/lib/simple-icons/icons/newyorktimes.svg new file mode 100644 index 00000000..31fd9936 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/newyorktimes.svg @@ -0,0 +1 @@ +New York Times icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/next-dot-js.svg b/themes/LoveIt/assets/lib/simple-icons/icons/next-dot-js.svg new file mode 100644 index 00000000..162293ae --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/next-dot-js.svg @@ -0,0 +1 @@ +Next.js icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nextcloud.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nextcloud.svg new file mode 100644 index 00000000..c5fec3f2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nextcloud.svg @@ -0,0 +1 @@ +Nextcloud icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nextdoor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nextdoor.svg new file mode 100644 index 00000000..28785894 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nextdoor.svg @@ -0,0 +1 @@ +Nextdoor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nfc.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nfc.svg new file mode 100644 index 00000000..6fa0f4f2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nfc.svg @@ -0,0 +1 @@ +NFC icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nginx.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nginx.svg new file mode 100644 index 00000000..f8d56fac --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nginx.svg @@ -0,0 +1 @@ +NGINX icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/niconico.svg b/themes/LoveIt/assets/lib/simple-icons/icons/niconico.svg new file mode 100644 index 00000000..d2dc25b1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/niconico.svg @@ -0,0 +1 @@ +niconico icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nim.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nim.svg new file mode 100644 index 00000000..7acc57d4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nim.svg @@ -0,0 +1 @@ +Nim icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nintendo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nintendo.svg new file mode 100644 index 00000000..ed09f42d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nintendo.svg @@ -0,0 +1 @@ +Nintendo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nintendo3ds.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nintendo3ds.svg new file mode 100644 index 00000000..c2ea5fd2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nintendo3ds.svg @@ -0,0 +1 @@ +Nintendo 3DS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nintendogamecube.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nintendogamecube.svg new file mode 100644 index 00000000..6fff0b8c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nintendogamecube.svg @@ -0,0 +1 @@ +Nintendo GameCube icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nintendonetwork.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nintendonetwork.svg new file mode 100644 index 00000000..4b4f8459 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nintendonetwork.svg @@ -0,0 +1 @@ +Nintendo Network icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nintendoswitch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nintendoswitch.svg new file mode 100644 index 00000000..98ba8d51 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nintendoswitch.svg @@ -0,0 +1 @@ +Nintendo Switch icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nissan.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nissan.svg new file mode 100644 index 00000000..f45c0c3b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nissan.svg @@ -0,0 +1 @@ +Nissan icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nixos.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nixos.svg new file mode 100644 index 00000000..64431f2e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nixos.svg @@ -0,0 +1 @@ +NixOS icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/node-dot-js.svg b/themes/LoveIt/assets/lib/simple-icons/icons/node-dot-js.svg new file mode 100644 index 00000000..d8e43252 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/node-dot-js.svg @@ -0,0 +1 @@ +Node.js icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/node-red.svg b/themes/LoveIt/assets/lib/simple-icons/icons/node-red.svg new file mode 100644 index 00000000..3c2aecd1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/node-red.svg @@ -0,0 +1 @@ +Node-RED icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nodemon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nodemon.svg new file mode 100644 index 00000000..c2f2e663 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nodemon.svg @@ -0,0 +1 @@ +Nodemon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nokia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nokia.svg new file mode 100644 index 00000000..aea4968d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nokia.svg @@ -0,0 +1 @@ +Nokia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/notion.svg b/themes/LoveIt/assets/lib/simple-icons/icons/notion.svg new file mode 100644 index 00000000..2e29096f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/notion.svg @@ -0,0 +1 @@ +Notion icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/notist.svg b/themes/LoveIt/assets/lib/simple-icons/icons/notist.svg new file mode 100644 index 00000000..6a622829 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/notist.svg @@ -0,0 +1 @@ +Notist icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/npm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/npm.svg new file mode 100644 index 00000000..22897615 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/npm.svg @@ -0,0 +1 @@ +NPM icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nucleo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nucleo.svg new file mode 100644 index 00000000..0331623c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nucleo.svg @@ -0,0 +1 @@ +Nucleo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nuget.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nuget.svg new file mode 100644 index 00000000..b9872791 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nuget.svg @@ -0,0 +1 @@ +NuGet icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nuke.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nuke.svg new file mode 100644 index 00000000..e9cc6916 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nuke.svg @@ -0,0 +1 @@ +Nuke icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nutanix.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nutanix.svg new file mode 100644 index 00000000..0918fbfb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nutanix.svg @@ -0,0 +1 @@ +Nutanix icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nuxt-dot-js.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nuxt-dot-js.svg new file mode 100644 index 00000000..aa67e30a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nuxt-dot-js.svg @@ -0,0 +1 @@ +Nuxt.js icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/nvidia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/nvidia.svg new file mode 100644 index 00000000..81968a10 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/nvidia.svg @@ -0,0 +1 @@ +NVIDIA icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/obsstudio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/obsstudio.svg new file mode 100644 index 00000000..0eedefe7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/obsstudio.svg @@ -0,0 +1 @@ +OBS Studio icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ocaml.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ocaml.svg new file mode 100644 index 00000000..2c3c47e7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ocaml.svg @@ -0,0 +1 @@ +OCaml icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/octave.svg b/themes/LoveIt/assets/lib/simple-icons/icons/octave.svg new file mode 100644 index 00000000..f1ddb870 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/octave.svg @@ -0,0 +1 @@ +Octave icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/octopusdeploy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/octopusdeploy.svg new file mode 100644 index 00000000..c81e03e8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/octopusdeploy.svg @@ -0,0 +1 @@ +Octopus Deploy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/oculus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/oculus.svg new file mode 100644 index 00000000..3acc89bd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/oculus.svg @@ -0,0 +1 @@ +Oculus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/odnoklassniki.svg b/themes/LoveIt/assets/lib/simple-icons/icons/odnoklassniki.svg new file mode 100644 index 00000000..020c6bed --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/odnoklassniki.svg @@ -0,0 +1 @@ +Odnoklassniki icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/oneplus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/oneplus.svg new file mode 100644 index 00000000..94a9a00d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/oneplus.svg @@ -0,0 +1 @@ +OnePlus icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/onstar.svg b/themes/LoveIt/assets/lib/simple-icons/icons/onstar.svg new file mode 100644 index 00000000..25aadd81 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/onstar.svg @@ -0,0 +1 @@ +OnStar icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opel.svg new file mode 100644 index 00000000..3f0721b4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opel.svg @@ -0,0 +1 @@ +Opel icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openaccess.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openaccess.svg new file mode 100644 index 00000000..3ce92476 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openaccess.svg @@ -0,0 +1 @@ +Open Access icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openapiinitiative.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openapiinitiative.svg new file mode 100644 index 00000000..bfad2e19 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openapiinitiative.svg @@ -0,0 +1 @@ +OpenAPI Initiative icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openbadges.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openbadges.svg new file mode 100644 index 00000000..3b8f892e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openbadges.svg @@ -0,0 +1 @@ +Open Badges icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openbsd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openbsd.svg new file mode 100644 index 00000000..c47dec9e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openbsd.svg @@ -0,0 +1 @@ +OpenBSD icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opencollective.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opencollective.svg new file mode 100644 index 00000000..1cdef842 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opencollective.svg @@ -0,0 +1 @@ +Open Collective icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opencontainersinitiative.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opencontainersinitiative.svg new file mode 100644 index 00000000..1dee4e85 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opencontainersinitiative.svg @@ -0,0 +1 @@ +Open Containers Initiative icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opengl.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opengl.svg new file mode 100644 index 00000000..d5759f33 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opengl.svg @@ -0,0 +1 @@ +OpenGL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openid.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openid.svg new file mode 100644 index 00000000..e304a6b1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openid.svg @@ -0,0 +1 @@ +OpenID icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opensourceinitiative.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opensourceinitiative.svg new file mode 100644 index 00000000..ca38e8f0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opensourceinitiative.svg @@ -0,0 +1 @@ +Open Source Initiative icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openssl.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openssl.svg new file mode 100644 index 00000000..7ca2a1fe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openssl.svg @@ -0,0 +1 @@ +OpenSSL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openstack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openstack.svg new file mode 100644 index 00000000..83755312 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openstack.svg @@ -0,0 +1 @@ +OpenStack icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openstreetmap.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openstreetmap.svg new file mode 100644 index 00000000..fa326771 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openstreetmap.svg @@ -0,0 +1 @@ +OpenStreetMap icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opensuse.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opensuse.svg new file mode 100644 index 00000000..948fa93b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opensuse.svg @@ -0,0 +1 @@ +openSUSE icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/openvpn.svg b/themes/LoveIt/assets/lib/simple-icons/icons/openvpn.svg new file mode 100644 index 00000000..a464dd2f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/openvpn.svg @@ -0,0 +1 @@ +OpenVPN icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opera.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opera.svg new file mode 100644 index 00000000..1729ce9a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opera.svg @@ -0,0 +1 @@ +Opera icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opsgenie.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opsgenie.svg new file mode 100644 index 00000000..1ece5a94 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opsgenie.svg @@ -0,0 +1 @@ +Opsgenie icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/opslevel.svg b/themes/LoveIt/assets/lib/simple-icons/icons/opslevel.svg new file mode 100644 index 00000000..d2c7b6f1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/opslevel.svg @@ -0,0 +1 @@ +OpsLevel icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/oracle.svg b/themes/LoveIt/assets/lib/simple-icons/icons/oracle.svg new file mode 100644 index 00000000..6ff7fb3c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/oracle.svg @@ -0,0 +1 @@ +Oracle icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/orcid.svg b/themes/LoveIt/assets/lib/simple-icons/icons/orcid.svg new file mode 100644 index 00000000..4ce63494 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/orcid.svg @@ -0,0 +1 @@ +ORCID icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/origin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/origin.svg new file mode 100644 index 00000000..91ce771a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/origin.svg @@ -0,0 +1 @@ +Origin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/oshkosh.svg b/themes/LoveIt/assets/lib/simple-icons/icons/oshkosh.svg new file mode 100644 index 00000000..e1b51cb5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/oshkosh.svg @@ -0,0 +1 @@ +Oshkosh icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/osmc.svg b/themes/LoveIt/assets/lib/simple-icons/icons/osmc.svg new file mode 100644 index 00000000..7f23ed7a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/osmc.svg @@ -0,0 +1 @@ +OSMC icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/overcast.svg b/themes/LoveIt/assets/lib/simple-icons/icons/overcast.svg new file mode 100644 index 00000000..a842c2b6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/overcast.svg @@ -0,0 +1 @@ +Overcast icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/overleaf.svg b/themes/LoveIt/assets/lib/simple-icons/icons/overleaf.svg new file mode 100644 index 00000000..17e7fcfb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/overleaf.svg @@ -0,0 +1 @@ +Overleaf icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ovh.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ovh.svg new file mode 100644 index 00000000..6bbac5d2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ovh.svg @@ -0,0 +1 @@ +OVH icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pagekit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pagekit.svg new file mode 100755 index 00000000..d7bfec9d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pagekit.svg @@ -0,0 +1 @@ +Pagekit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pagerduty.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pagerduty.svg new file mode 100644 index 00000000..e28e95d4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pagerduty.svg @@ -0,0 +1 @@ +PagerDuty icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pagseguro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pagseguro.svg new file mode 100644 index 00000000..5ff5d088 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pagseguro.svg @@ -0,0 +1 @@ +PagSeguro icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/palantir.svg b/themes/LoveIt/assets/lib/simple-icons/icons/palantir.svg new file mode 100644 index 00000000..d7b03a8e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/palantir.svg @@ -0,0 +1 @@ +Palantir icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/paloaltosoftware.svg b/themes/LoveIt/assets/lib/simple-icons/icons/paloaltosoftware.svg new file mode 100644 index 00000000..84013643 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/paloaltosoftware.svg @@ -0,0 +1 @@ +Palo Alto Software icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pandas.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pandas.svg new file mode 100644 index 00000000..2f517342 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pandas.svg @@ -0,0 +1 @@ +pandas icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pandora.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pandora.svg new file mode 100644 index 00000000..661cabb9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pandora.svg @@ -0,0 +1 @@ +Pandora icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pantheon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pantheon.svg new file mode 100644 index 00000000..d770cc90 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pantheon.svg @@ -0,0 +1 @@ +Pantheon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/paritysubstrate.svg b/themes/LoveIt/assets/lib/simple-icons/icons/paritysubstrate.svg new file mode 100644 index 00000000..e1d61c0d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/paritysubstrate.svg @@ -0,0 +1 @@ +Parity Substrate icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/parse-dot-ly.svg b/themes/LoveIt/assets/lib/simple-icons/icons/parse-dot-ly.svg new file mode 100644 index 00000000..176e566f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/parse-dot-ly.svg @@ -0,0 +1 @@ +Parse.ly icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pastebin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pastebin.svg new file mode 100644 index 00000000..0f6fa289 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pastebin.svg @@ -0,0 +1 @@ +Pastebin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/patreon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/patreon.svg new file mode 100644 index 00000000..47cab8e3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/patreon.svg @@ -0,0 +1 @@ +Patreon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/paypal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/paypal.svg new file mode 100644 index 00000000..57e55602 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/paypal.svg @@ -0,0 +1 @@ +PayPal icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/peertube.svg b/themes/LoveIt/assets/lib/simple-icons/icons/peertube.svg new file mode 100644 index 00000000..7c1fd36f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/peertube.svg @@ -0,0 +1 @@ +PeerTube icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pepsi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pepsi.svg new file mode 100644 index 00000000..e92210a6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pepsi.svg @@ -0,0 +1 @@ +Pepsi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/periscope.svg b/themes/LoveIt/assets/lib/simple-icons/icons/periscope.svg new file mode 100644 index 00000000..6f396c72 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/periscope.svg @@ -0,0 +1 @@ +Periscope icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/perl.svg b/themes/LoveIt/assets/lib/simple-icons/icons/perl.svg new file mode 100644 index 00000000..9f50d8a8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/perl.svg @@ -0,0 +1 @@ +Perl icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/peugeot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/peugeot.svg new file mode 100644 index 00000000..3cefe5e5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/peugeot.svg @@ -0,0 +1 @@ +Peugeot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pexels.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pexels.svg new file mode 100644 index 00000000..928b980f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pexels.svg @@ -0,0 +1 @@ +Pexels icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/phabricator.svg b/themes/LoveIt/assets/lib/simple-icons/icons/phabricator.svg new file mode 100644 index 00000000..13c945dc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/phabricator.svg @@ -0,0 +1 @@ +Phabricator icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/photocrowd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/photocrowd.svg new file mode 100644 index 00000000..86a68633 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/photocrowd.svg @@ -0,0 +1 @@ +Photocrowd icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/php.svg b/themes/LoveIt/assets/lib/simple-icons/icons/php.svg new file mode 100644 index 00000000..4201eece --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/php.svg @@ -0,0 +1 @@ +PHP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pi-hole.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pi-hole.svg new file mode 100644 index 00000000..cd4691cf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pi-hole.svg @@ -0,0 +1 @@ +Pi-hole icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/picarto-dot-tv.svg b/themes/LoveIt/assets/lib/simple-icons/icons/picarto-dot-tv.svg new file mode 100644 index 00000000..37479f7f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/picarto-dot-tv.svg @@ -0,0 +1 @@ +Picarto.TV icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pinboard.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pinboard.svg new file mode 100644 index 00000000..ea05b9f7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pinboard.svg @@ -0,0 +1 @@ +Pinboard icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pingdom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pingdom.svg new file mode 100644 index 00000000..a45fc526 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pingdom.svg @@ -0,0 +1 @@ +Pingdom icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pingup.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pingup.svg new file mode 100644 index 00000000..8828f5c4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pingup.svg @@ -0,0 +1 @@ +Pingup icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pinterest.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pinterest.svg new file mode 100644 index 00000000..ad07407d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pinterest.svg @@ -0,0 +1 @@ +Pinterest icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pivotaltracker.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pivotaltracker.svg new file mode 100644 index 00000000..943c6fab --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pivotaltracker.svg @@ -0,0 +1 @@ +Pivotal Tracker icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/piwigo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/piwigo.svg new file mode 100644 index 00000000..61935738 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/piwigo.svg @@ -0,0 +1 @@ +Piwigo icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pixabay.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pixabay.svg new file mode 100644 index 00000000..1a2ff94d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pixabay.svg @@ -0,0 +1 @@ +Pixabay icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pixiv.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pixiv.svg new file mode 100644 index 00000000..2ef7e9cb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pixiv.svg @@ -0,0 +1 @@ +pixiv icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pjsip.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pjsip.svg new file mode 100644 index 00000000..8054244c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pjsip.svg @@ -0,0 +1 @@ +PJSIP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/plangrid.svg b/themes/LoveIt/assets/lib/simple-icons/icons/plangrid.svg new file mode 100644 index 00000000..101936c8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/plangrid.svg @@ -0,0 +1 @@ +PlanGrid icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/platzi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/platzi.svg new file mode 100644 index 00000000..ce58a30e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/platzi.svg @@ -0,0 +1 @@ +Platzi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/player-dot-me.svg b/themes/LoveIt/assets/lib/simple-icons/icons/player-dot-me.svg new file mode 100755 index 00000000..b809ef25 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/player-dot-me.svg @@ -0,0 +1 @@ +Player.me icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/playerfm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/playerfm.svg new file mode 100644 index 00000000..361a339a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/playerfm.svg @@ -0,0 +1 @@ +Player FM icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/playstation.svg b/themes/LoveIt/assets/lib/simple-icons/icons/playstation.svg new file mode 100644 index 00000000..3970243e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/playstation.svg @@ -0,0 +1 @@ +PlayStation icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/playstation2.svg b/themes/LoveIt/assets/lib/simple-icons/icons/playstation2.svg new file mode 100644 index 00000000..9f265209 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/playstation2.svg @@ -0,0 +1 @@ +PlayStation 2 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/playstation3.svg b/themes/LoveIt/assets/lib/simple-icons/icons/playstation3.svg new file mode 100644 index 00000000..1b47124d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/playstation3.svg @@ -0,0 +1 @@ +PlayStation 3 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/playstation4.svg b/themes/LoveIt/assets/lib/simple-icons/icons/playstation4.svg new file mode 100644 index 00000000..0656dafe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/playstation4.svg @@ -0,0 +1 @@ +PlayStation 4 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/playstationvita.svg b/themes/LoveIt/assets/lib/simple-icons/icons/playstationvita.svg new file mode 100644 index 00000000..90dc77f4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/playstationvita.svg @@ -0,0 +1 @@ +PlayStation Vita icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pleroma.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pleroma.svg new file mode 100644 index 00000000..c919df99 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pleroma.svg @@ -0,0 +1 @@ +Pleroma icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/plesk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/plesk.svg new file mode 100644 index 00000000..88a6cbe4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/plesk.svg @@ -0,0 +1 @@ +Plesk icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/plex.svg b/themes/LoveIt/assets/lib/simple-icons/icons/plex.svg new file mode 100644 index 00000000..d79adcfe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/plex.svg @@ -0,0 +1 @@ +Plex icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pluralsight.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pluralsight.svg new file mode 100644 index 00000000..49278652 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pluralsight.svg @@ -0,0 +1 @@ +Pluralsight icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/plurk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/plurk.svg new file mode 100644 index 00000000..d871b989 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/plurk.svg @@ -0,0 +1 @@ +Plurk icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pluscodes.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pluscodes.svg new file mode 100644 index 00000000..0315ab0e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pluscodes.svg @@ -0,0 +1 @@ +Plus Codes icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pocket.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pocket.svg new file mode 100644 index 00000000..873d0914 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pocket.svg @@ -0,0 +1 @@ +Pocket icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pocketcasts.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pocketcasts.svg new file mode 100644 index 00000000..e2ed016e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pocketcasts.svg @@ -0,0 +1 @@ +Pocket Casts icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pokemon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pokemon.svg new file mode 100644 index 00000000..60251a9d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pokemon.svg @@ -0,0 +1 @@ +Pokémon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/poly.svg b/themes/LoveIt/assets/lib/simple-icons/icons/poly.svg new file mode 100644 index 00000000..6cec1652 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/poly.svg @@ -0,0 +1 @@ +Poly icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/polymerproject.svg b/themes/LoveIt/assets/lib/simple-icons/icons/polymerproject.svg new file mode 100644 index 00000000..41ddc0b0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/polymerproject.svg @@ -0,0 +1 @@ +Polymer Project icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/porsche.svg b/themes/LoveIt/assets/lib/simple-icons/icons/porsche.svg new file mode 100644 index 00000000..2e2a822c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/porsche.svg @@ -0,0 +1 @@ +Porsche icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/postcss.svg b/themes/LoveIt/assets/lib/simple-icons/icons/postcss.svg new file mode 100644 index 00000000..736ae883 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/postcss.svg @@ -0,0 +1 @@ +PostCSS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/postgresql.svg b/themes/LoveIt/assets/lib/simple-icons/icons/postgresql.svg new file mode 100644 index 00000000..b102a0e8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/postgresql.svg @@ -0,0 +1 @@ +PostgreSQL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/postman.svg b/themes/LoveIt/assets/lib/simple-icons/icons/postman.svg new file mode 100644 index 00000000..9eb4e7f4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/postman.svg @@ -0,0 +1 @@ +Postman icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/postwoman.svg b/themes/LoveIt/assets/lib/simple-icons/icons/postwoman.svg new file mode 100644 index 00000000..74332ed8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/postwoman.svg @@ -0,0 +1 @@ +Postwoman icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/powerbi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/powerbi.svg new file mode 100644 index 00000000..f750ee78 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/powerbi.svg @@ -0,0 +1 @@ +Power BI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/powers.svg b/themes/LoveIt/assets/lib/simple-icons/icons/powers.svg new file mode 100644 index 00000000..baf25520 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/powers.svg @@ -0,0 +1 @@ +POWERS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/powershell.svg b/themes/LoveIt/assets/lib/simple-icons/icons/powershell.svg new file mode 100644 index 00000000..69e0186a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/powershell.svg @@ -0,0 +1 @@ +PowerShell icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pr-dot-co.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pr-dot-co.svg new file mode 100644 index 00000000..c7f62ab7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pr-dot-co.svg @@ -0,0 +1 @@ +pr.co icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pre-commit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pre-commit.svg new file mode 100644 index 00000000..1d1edce7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pre-commit.svg @@ -0,0 +1 @@ +pre-commit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/prestashop.svg b/themes/LoveIt/assets/lib/simple-icons/icons/prestashop.svg new file mode 100644 index 00000000..14e56341 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/prestashop.svg @@ -0,0 +1 @@ +PrestaShop icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/prettier.svg b/themes/LoveIt/assets/lib/simple-icons/icons/prettier.svg new file mode 100644 index 00000000..018b3859 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/prettier.svg @@ -0,0 +1 @@ +Prettier icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/prezi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/prezi.svg new file mode 100644 index 00000000..701ce45a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/prezi.svg @@ -0,0 +1 @@ +Prezi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/prismic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/prismic.svg new file mode 100644 index 00000000..7b6533b3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/prismic.svg @@ -0,0 +1 @@ +Prismic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/probot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/probot.svg new file mode 100644 index 00000000..44bd341c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/probot.svg @@ -0,0 +1 @@ +Probot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/processwire.svg b/themes/LoveIt/assets/lib/simple-icons/icons/processwire.svg new file mode 100644 index 00000000..a99b2924 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/processwire.svg @@ -0,0 +1 @@ +ProcessWire icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/producthunt.svg b/themes/LoveIt/assets/lib/simple-icons/icons/producthunt.svg new file mode 100644 index 00000000..117c904c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/producthunt.svg @@ -0,0 +1 @@ +Product Hunt icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/prometheus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/prometheus.svg new file mode 100644 index 00000000..c24e16a7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/prometheus.svg @@ -0,0 +1 @@ +Prometheus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/prosieben.svg b/themes/LoveIt/assets/lib/simple-icons/icons/prosieben.svg new file mode 100644 index 00000000..c789f33a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/prosieben.svg @@ -0,0 +1 @@ +ProSieben icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/proto-dot-io.svg b/themes/LoveIt/assets/lib/simple-icons/icons/proto-dot-io.svg new file mode 100644 index 00000000..93b9e014 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/proto-dot-io.svg @@ -0,0 +1 @@ +Proto.io icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/protocols-dot-io.svg b/themes/LoveIt/assets/lib/simple-icons/icons/protocols-dot-io.svg new file mode 100644 index 00000000..780e15db --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/protocols-dot-io.svg @@ -0,0 +1 @@ +protocols.io icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/protonmail.svg b/themes/LoveIt/assets/lib/simple-icons/icons/protonmail.svg new file mode 100644 index 00000000..0acad388 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/protonmail.svg @@ -0,0 +1 @@ +ProtonMail icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/proxmox.svg b/themes/LoveIt/assets/lib/simple-icons/icons/proxmox.svg new file mode 100644 index 00000000..2e75aed1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/proxmox.svg @@ -0,0 +1 @@ +Proxmox icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/publons.svg b/themes/LoveIt/assets/lib/simple-icons/icons/publons.svg new file mode 100644 index 00000000..90e9ef6e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/publons.svg @@ -0,0 +1 @@ +Publons icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/puppet.svg b/themes/LoveIt/assets/lib/simple-icons/icons/puppet.svg new file mode 100644 index 00000000..2e9c8164 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/puppet.svg @@ -0,0 +1 @@ +Puppet icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/purescript.svg b/themes/LoveIt/assets/lib/simple-icons/icons/purescript.svg new file mode 100644 index 00000000..28aba902 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/purescript.svg @@ -0,0 +1 @@ +PureScript icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pypi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pypi.svg new file mode 100644 index 00000000..e519fa5d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pypi.svg @@ -0,0 +1 @@ +PyPI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/python.svg b/themes/LoveIt/assets/lib/simple-icons/icons/python.svg new file mode 100644 index 00000000..fafe048c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/python.svg @@ -0,0 +1 @@ +Python icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pytorch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pytorch.svg new file mode 100644 index 00000000..2c1bc2c2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pytorch.svg @@ -0,0 +1 @@ +PyTorch icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/pyup.svg b/themes/LoveIt/assets/lib/simple-icons/icons/pyup.svg new file mode 100644 index 00000000..f9d87a12 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/pyup.svg @@ -0,0 +1 @@ +PyUp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qantas.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qantas.svg new file mode 100644 index 00000000..a7a5db3b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qantas.svg @@ -0,0 +1 @@ +Qantas icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qemu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qemu.svg new file mode 100644 index 00000000..14e6c87d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qemu.svg @@ -0,0 +1 @@ +QEMU icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qgis.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qgis.svg new file mode 100644 index 00000000..2626b490 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qgis.svg @@ -0,0 +1 @@ +Qgis icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qi.svg new file mode 100644 index 00000000..61eec24b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qi.svg @@ -0,0 +1 @@ +Qi icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qiita.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qiita.svg new file mode 100644 index 00000000..a78c4aaf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qiita.svg @@ -0,0 +1 @@ +Qiita icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qiwi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qiwi.svg new file mode 100644 index 00000000..36463c49 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qiwi.svg @@ -0,0 +1 @@ +QIWI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qualcomm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qualcomm.svg new file mode 100644 index 00000000..7bb36d01 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qualcomm.svg @@ -0,0 +1 @@ +Qualcomm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qualtrics.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qualtrics.svg new file mode 100644 index 00000000..59223e12 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qualtrics.svg @@ -0,0 +1 @@ +Qualtrics icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/quantcast.svg b/themes/LoveIt/assets/lib/simple-icons/icons/quantcast.svg new file mode 100644 index 00000000..812820de --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/quantcast.svg @@ -0,0 +1 @@ +Quantcast icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/quantopian.svg b/themes/LoveIt/assets/lib/simple-icons/icons/quantopian.svg new file mode 100644 index 00000000..2f6a8c09 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/quantopian.svg @@ -0,0 +1 @@ +Quantopian icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/quarkus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/quarkus.svg new file mode 100644 index 00000000..3960ba32 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/quarkus.svg @@ -0,0 +1 @@ +Quarkus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/quest.svg b/themes/LoveIt/assets/lib/simple-icons/icons/quest.svg new file mode 100644 index 00000000..e87a22c6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/quest.svg @@ -0,0 +1 @@ +Quest icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/quicktime.svg b/themes/LoveIt/assets/lib/simple-icons/icons/quicktime.svg new file mode 100644 index 00000000..6041ddf9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/quicktime.svg @@ -0,0 +1 @@ +QuickTime icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/quip.svg b/themes/LoveIt/assets/lib/simple-icons/icons/quip.svg new file mode 100644 index 00000000..5838c08a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/quip.svg @@ -0,0 +1 @@ +Quip icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/quora.svg b/themes/LoveIt/assets/lib/simple-icons/icons/quora.svg new file mode 100644 index 00000000..ea177650 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/quora.svg @@ -0,0 +1 @@ +Quora icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qwiklabs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qwiklabs.svg new file mode 100644 index 00000000..a4b23998 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qwiklabs.svg @@ -0,0 +1 @@ +Qwiklabs icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/qzone.svg b/themes/LoveIt/assets/lib/simple-icons/icons/qzone.svg new file mode 100644 index 00000000..084c5f83 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/qzone.svg @@ -0,0 +1 @@ +Qzone icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/r.svg b/themes/LoveIt/assets/lib/simple-icons/icons/r.svg new file mode 100644 index 00000000..10954fcc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/r.svg @@ -0,0 +1 @@ +R icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rabbitmq.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rabbitmq.svg new file mode 100644 index 00000000..1b45ad74 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rabbitmq.svg @@ -0,0 +1 @@ +RabbitMQ icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/radiopublic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/radiopublic.svg new file mode 100644 index 00000000..c45eb515 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/radiopublic.svg @@ -0,0 +1 @@ +RadioPublic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rails.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rails.svg new file mode 100644 index 00000000..12e02e17 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rails.svg @@ -0,0 +1 @@ +Rails icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rancher.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rancher.svg new file mode 100644 index 00000000..addde9c6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rancher.svg @@ -0,0 +1 @@ +Rancher icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/raspberrypi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/raspberrypi.svg new file mode 100644 index 00000000..825a2174 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/raspberrypi.svg @@ -0,0 +1 @@ +Raspberry Pi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/react.svg b/themes/LoveIt/assets/lib/simple-icons/icons/react.svg new file mode 100644 index 00000000..5f98d088 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/react.svg @@ -0,0 +1 @@ +React icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/reactos.svg b/themes/LoveIt/assets/lib/simple-icons/icons/reactos.svg new file mode 100644 index 00000000..f2bdc5b5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/reactos.svg @@ -0,0 +1 @@ +ReactOS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/reactrouter.svg b/themes/LoveIt/assets/lib/simple-icons/icons/reactrouter.svg new file mode 100644 index 00000000..7f232752 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/reactrouter.svg @@ -0,0 +1 @@ +React Router icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/readthedocs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/readthedocs.svg new file mode 100644 index 00000000..2c87339a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/readthedocs.svg @@ -0,0 +1 @@ +Read the Docs icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/realm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/realm.svg new file mode 100644 index 00000000..d23862e0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/realm.svg @@ -0,0 +1 @@ +Realm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/reason.svg b/themes/LoveIt/assets/lib/simple-icons/icons/reason.svg new file mode 100644 index 00000000..98397844 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/reason.svg @@ -0,0 +1 @@ +Reason icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/reasonstudios.svg b/themes/LoveIt/assets/lib/simple-icons/icons/reasonstudios.svg new file mode 100644 index 00000000..ea3429ad --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/reasonstudios.svg @@ -0,0 +1 @@ +Reason Studios icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/redbubble.svg b/themes/LoveIt/assets/lib/simple-icons/icons/redbubble.svg new file mode 100644 index 00000000..12a1ff55 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/redbubble.svg @@ -0,0 +1 @@ +Redbubble icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/reddit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/reddit.svg new file mode 100644 index 00000000..01ed4a29 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/reddit.svg @@ -0,0 +1 @@ +Reddit icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/redhat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/redhat.svg new file mode 100644 index 00000000..55db6c64 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/redhat.svg @@ -0,0 +1 @@ +Red Hat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/redhatopenshift.svg b/themes/LoveIt/assets/lib/simple-icons/icons/redhatopenshift.svg new file mode 100644 index 00000000..e08716e2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/redhatopenshift.svg @@ -0,0 +1 @@ +Red Hat Open Shift icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/redis.svg b/themes/LoveIt/assets/lib/simple-icons/icons/redis.svg new file mode 100644 index 00000000..7376520c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/redis.svg @@ -0,0 +1 @@ +Redis icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/redux.svg b/themes/LoveIt/assets/lib/simple-icons/icons/redux.svg new file mode 100644 index 00000000..8277976f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/redux.svg @@ -0,0 +1 @@ +Redux icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/renault.svg b/themes/LoveIt/assets/lib/simple-icons/icons/renault.svg new file mode 100644 index 00000000..4668ff2d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/renault.svg @@ -0,0 +1 @@ +Renault icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/renren.svg b/themes/LoveIt/assets/lib/simple-icons/icons/renren.svg new file mode 100644 index 00000000..b2044a3f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/renren.svg @@ -0,0 +1 @@ +Renren icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/repl-dot-it.svg b/themes/LoveIt/assets/lib/simple-icons/icons/repl-dot-it.svg new file mode 100644 index 00000000..3fc18f79 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/repl-dot-it.svg @@ -0,0 +1 @@ +repl.it icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/researchgate.svg b/themes/LoveIt/assets/lib/simple-icons/icons/researchgate.svg new file mode 100644 index 00000000..97937d11 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/researchgate.svg @@ -0,0 +1 @@ +ResearchGate icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/retroarch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/retroarch.svg new file mode 100644 index 00000000..3b7c7315 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/retroarch.svg @@ -0,0 +1 @@ +RetroArch icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/retropie.svg b/themes/LoveIt/assets/lib/simple-icons/icons/retropie.svg new file mode 100644 index 00000000..4c4f1fd4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/retropie.svg @@ -0,0 +1 @@ +RetroPie icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/reverbnation.svg b/themes/LoveIt/assets/lib/simple-icons/icons/reverbnation.svg new file mode 100644 index 00000000..cf18148c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/reverbnation.svg @@ -0,0 +1 @@ +ReverbNation icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rhinoceros.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rhinoceros.svg new file mode 100644 index 00000000..462a26ab --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rhinoceros.svg @@ -0,0 +1 @@ +Rhinoceros icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/riot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/riot.svg new file mode 100644 index 00000000..bed5c8ac --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/riot.svg @@ -0,0 +1 @@ +Riot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/riotgames.svg b/themes/LoveIt/assets/lib/simple-icons/icons/riotgames.svg new file mode 100644 index 00000000..dedfe333 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/riotgames.svg @@ -0,0 +1 @@ +Riot Games icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ripple.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ripple.svg new file mode 100644 index 00000000..ecb6fc86 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ripple.svg @@ -0,0 +1 @@ +Ripple icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/riseup.svg b/themes/LoveIt/assets/lib/simple-icons/icons/riseup.svg new file mode 100644 index 00000000..092cc254 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/riseup.svg @@ -0,0 +1 @@ +Riseup icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/roku.svg b/themes/LoveIt/assets/lib/simple-icons/icons/roku.svg new file mode 100644 index 00000000..8f22631b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/roku.svg @@ -0,0 +1 @@ +Roku icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rollup-dot-js.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rollup-dot-js.svg new file mode 100644 index 00000000..d943c69c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rollup-dot-js.svg @@ -0,0 +1 @@ +rollup.js icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/roots.svg b/themes/LoveIt/assets/lib/simple-icons/icons/roots.svg new file mode 100644 index 00000000..3aea3419 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/roots.svg @@ -0,0 +1 @@ +Roots icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/roundcube.svg b/themes/LoveIt/assets/lib/simple-icons/icons/roundcube.svg new file mode 100644 index 00000000..4703a589 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/roundcube.svg @@ -0,0 +1 @@ +Roundcube icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rss.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rss.svg new file mode 100644 index 00000000..1428e1a1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rss.svg @@ -0,0 +1 @@ +RSS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rstudio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rstudio.svg new file mode 100644 index 00000000..635acf74 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rstudio.svg @@ -0,0 +1 @@ +RStudio icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rtlzwei.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rtlzwei.svg new file mode 100644 index 00000000..4b6480a8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rtlzwei.svg @@ -0,0 +1 @@ +RTLZWEI icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ruby.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ruby.svg new file mode 100644 index 00000000..45530b82 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ruby.svg @@ -0,0 +1 @@ +Ruby icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rubygems.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rubygems.svg new file mode 100644 index 00000000..3420b4bb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rubygems.svg @@ -0,0 +1 @@ +RubyGems icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/runkeeper.svg b/themes/LoveIt/assets/lib/simple-icons/icons/runkeeper.svg new file mode 100644 index 00000000..850c3c36 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/runkeeper.svg @@ -0,0 +1 @@ +Runkeeper icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/runkit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/runkit.svg new file mode 100644 index 00000000..577f3bdb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/runkit.svg @@ -0,0 +1 @@ +RunKit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/rust.svg b/themes/LoveIt/assets/lib/simple-icons/icons/rust.svg new file mode 100644 index 00000000..b500bbd9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/rust.svg @@ -0,0 +1 @@ +Rust icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ryanair.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ryanair.svg new file mode 100644 index 00000000..d8d5db2b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ryanair.svg @@ -0,0 +1 @@ +Ryanair icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/safari.svg b/themes/LoveIt/assets/lib/simple-icons/icons/safari.svg new file mode 100644 index 00000000..a1ea2317 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/safari.svg @@ -0,0 +1 @@ +Safari icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sahibinden.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sahibinden.svg new file mode 100644 index 00000000..cb2d608d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sahibinden.svg @@ -0,0 +1 @@ +Sahibinden icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/salesforce.svg b/themes/LoveIt/assets/lib/simple-icons/icons/salesforce.svg new file mode 100644 index 00000000..70000589 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/salesforce.svg @@ -0,0 +1 @@ +Salesforce icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/saltstack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/saltstack.svg new file mode 100644 index 00000000..de65cff6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/saltstack.svg @@ -0,0 +1 @@ +SaltStack icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/samsung.svg b/themes/LoveIt/assets/lib/simple-icons/icons/samsung.svg new file mode 100644 index 00000000..b1406819 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/samsung.svg @@ -0,0 +1 @@ +Samsung icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/samsungpay.svg b/themes/LoveIt/assets/lib/simple-icons/icons/samsungpay.svg new file mode 100644 index 00000000..4e4b804e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/samsungpay.svg @@ -0,0 +1 @@ +Samsung Pay icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sap.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sap.svg new file mode 100644 index 00000000..b6a120bc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sap.svg @@ -0,0 +1 @@ +SAP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sass.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sass.svg new file mode 100644 index 00000000..e2647c92 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sass.svg @@ -0,0 +1 @@ +Sass icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sat-dot-1.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sat-dot-1.svg new file mode 100644 index 00000000..58743260 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sat-dot-1.svg @@ -0,0 +1 @@ +Sat.1 icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/saucelabs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/saucelabs.svg new file mode 100644 index 00000000..daa7e8bc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/saucelabs.svg @@ -0,0 +1 @@ +Sauce Labs icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/scala.svg b/themes/LoveIt/assets/lib/simple-icons/icons/scala.svg new file mode 100644 index 00000000..769a3ee5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/scala.svg @@ -0,0 +1 @@ +Scala icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/scaleway.svg b/themes/LoveIt/assets/lib/simple-icons/icons/scaleway.svg new file mode 100644 index 00000000..aa0005db --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/scaleway.svg @@ -0,0 +1 @@ +Scaleway icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/scania.svg b/themes/LoveIt/assets/lib/simple-icons/icons/scania.svg new file mode 100644 index 00000000..68c127c0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/scania.svg @@ -0,0 +1 @@ +Scania icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/scopus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/scopus.svg new file mode 100644 index 00000000..59369d1a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/scopus.svg @@ -0,0 +1 @@ +Scopus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/scribd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/scribd.svg new file mode 100644 index 00000000..f6d1c701 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/scribd.svg @@ -0,0 +1 @@ +Scribd icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/scrutinizerci.svg b/themes/LoveIt/assets/lib/simple-icons/icons/scrutinizerci.svg new file mode 100644 index 00000000..367cfb50 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/scrutinizerci.svg @@ -0,0 +1 @@ +Scrutinizer CI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/seagate.svg b/themes/LoveIt/assets/lib/simple-icons/icons/seagate.svg new file mode 100644 index 00000000..a5832d32 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/seagate.svg @@ -0,0 +1 @@ +Seagate icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/seat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/seat.svg new file mode 100644 index 00000000..4e4c01e4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/seat.svg @@ -0,0 +1 @@ +SEAT icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sega.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sega.svg new file mode 100644 index 00000000..6b9049fe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sega.svg @@ -0,0 +1 @@ +Sega icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sellfy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sellfy.svg new file mode 100644 index 00000000..66f36350 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sellfy.svg @@ -0,0 +1 @@ +Sellfy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/semanticweb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/semanticweb.svg new file mode 100644 index 00000000..827995d5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/semanticweb.svg @@ -0,0 +1 @@ +Semantic Web icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/semaphoreci.svg b/themes/LoveIt/assets/lib/simple-icons/icons/semaphoreci.svg new file mode 100644 index 00000000..1bd2f267 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/semaphoreci.svg @@ -0,0 +1 @@ +Semaphore CI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sencha.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sencha.svg new file mode 100644 index 00000000..3331f5b3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sencha.svg @@ -0,0 +1 @@ +Sencha icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sensu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sensu.svg new file mode 100644 index 00000000..360a683c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sensu.svg @@ -0,0 +1 @@ +Sensu icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sentry.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sentry.svg new file mode 100644 index 00000000..f64db6c7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sentry.svg @@ -0,0 +1 @@ +Sentry icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/serverfault.svg b/themes/LoveIt/assets/lib/simple-icons/icons/serverfault.svg new file mode 100644 index 00000000..81a0bbd6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/serverfault.svg @@ -0,0 +1 @@ +Server Fault icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/serverless.svg b/themes/LoveIt/assets/lib/simple-icons/icons/serverless.svg new file mode 100644 index 00000000..bddce962 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/serverless.svg @@ -0,0 +1 @@ +Serverless icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/shanghaimetro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/shanghaimetro.svg new file mode 100644 index 00000000..bda77cfd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/shanghaimetro.svg @@ -0,0 +1 @@ +Shanghai Metro icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/shazam.svg b/themes/LoveIt/assets/lib/simple-icons/icons/shazam.svg new file mode 100644 index 00000000..6db55c20 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/shazam.svg @@ -0,0 +1 @@ +Shazam icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/shell.svg b/themes/LoveIt/assets/lib/simple-icons/icons/shell.svg new file mode 100644 index 00000000..bbfe9dbe --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/shell.svg @@ -0,0 +1 @@ +Shell icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/shopify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/shopify.svg new file mode 100644 index 00000000..5b028264 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/shopify.svg @@ -0,0 +1 @@ +Shopify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/shopware.svg b/themes/LoveIt/assets/lib/simple-icons/icons/shopware.svg new file mode 100644 index 00000000..d15d8552 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/shopware.svg @@ -0,0 +1 @@ +Shopware icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/showpad.svg b/themes/LoveIt/assets/lib/simple-icons/icons/showpad.svg new file mode 100644 index 00000000..d839f4ab --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/showpad.svg @@ -0,0 +1 @@ +Showpad icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/siemens.svg b/themes/LoveIt/assets/lib/simple-icons/icons/siemens.svg new file mode 100644 index 00000000..8f3fe2ec --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/siemens.svg @@ -0,0 +1 @@ +Siemens icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/signal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/signal.svg new file mode 100644 index 00000000..fb701794 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/signal.svg @@ -0,0 +1 @@ +Signal icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/simpleicons.svg b/themes/LoveIt/assets/lib/simple-icons/icons/simpleicons.svg new file mode 100644 index 00000000..ec6667f8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/simpleicons.svg @@ -0,0 +1 @@ +Simple Icons icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sinaweibo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sinaweibo.svg new file mode 100644 index 00000000..0a04c706 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sinaweibo.svg @@ -0,0 +1 @@ +Sina Weibo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sitepoint.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sitepoint.svg new file mode 100644 index 00000000..ae222a9c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sitepoint.svg @@ -0,0 +1 @@ +SitePoint icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sketch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sketch.svg new file mode 100644 index 00000000..2080efdb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sketch.svg @@ -0,0 +1 @@ +Sketch icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/skillshare.svg b/themes/LoveIt/assets/lib/simple-icons/icons/skillshare.svg new file mode 100644 index 00000000..496d22d1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/skillshare.svg @@ -0,0 +1 @@ +Skillshare icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/skoda.svg b/themes/LoveIt/assets/lib/simple-icons/icons/skoda.svg new file mode 100644 index 00000000..c2642b4a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/skoda.svg @@ -0,0 +1 @@ +ŠKODA icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/skyliner.svg b/themes/LoveIt/assets/lib/simple-icons/icons/skyliner.svg new file mode 100644 index 00000000..899e7099 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/skyliner.svg @@ -0,0 +1 @@ +Skyliner icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/skype.svg b/themes/LoveIt/assets/lib/simple-icons/icons/skype.svg new file mode 100644 index 00000000..f82379bb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/skype.svg @@ -0,0 +1 @@ +Skype icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/skypeforbusiness.svg b/themes/LoveIt/assets/lib/simple-icons/icons/skypeforbusiness.svg new file mode 100644 index 00000000..aef7bf55 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/skypeforbusiness.svg @@ -0,0 +1 @@ +Skype for Business icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/slack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/slack.svg new file mode 100644 index 00000000..dbdf352b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/slack.svg @@ -0,0 +1 @@ +Slack icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/slackware.svg b/themes/LoveIt/assets/lib/simple-icons/icons/slackware.svg new file mode 100644 index 00000000..c2da04b4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/slackware.svg @@ -0,0 +1 @@ +Slackware icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/slashdot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/slashdot.svg new file mode 100644 index 00000000..09e84589 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/slashdot.svg @@ -0,0 +1 @@ +Slashdot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/slickpic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/slickpic.svg new file mode 100644 index 00000000..3c40eca6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/slickpic.svg @@ -0,0 +1 @@ +SlickPic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/slides.svg b/themes/LoveIt/assets/lib/simple-icons/icons/slides.svg new file mode 100644 index 00000000..2a80463c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/slides.svg @@ -0,0 +1 @@ +Slides icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/slideshare.svg b/themes/LoveIt/assets/lib/simple-icons/icons/slideshare.svg new file mode 100644 index 00000000..d1c70375 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/slideshare.svg @@ -0,0 +1 @@ +SlideShare icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/smart.svg b/themes/LoveIt/assets/lib/simple-icons/icons/smart.svg new file mode 100644 index 00000000..c2f06b8e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/smart.svg @@ -0,0 +1 @@ +smart icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/smartthings.svg b/themes/LoveIt/assets/lib/simple-icons/icons/smartthings.svg new file mode 100644 index 00000000..5289713f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/smartthings.svg @@ -0,0 +1 @@ +SmartThings icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/smashingmagazine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/smashingmagazine.svg new file mode 100644 index 00000000..58b0c2d1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/smashingmagazine.svg @@ -0,0 +1 @@ +Smashing Magazine icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/smugmug.svg b/themes/LoveIt/assets/lib/simple-icons/icons/smugmug.svg new file mode 100644 index 00000000..9176b95f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/smugmug.svg @@ -0,0 +1 @@ +SmugMug icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/snapchat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/snapchat.svg new file mode 100644 index 00000000..0a01ff77 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/snapchat.svg @@ -0,0 +1 @@ +Snapchat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/snapcraft.svg b/themes/LoveIt/assets/lib/simple-icons/icons/snapcraft.svg new file mode 100644 index 00000000..c97819e3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/snapcraft.svg @@ -0,0 +1 @@ +Snapcraft icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/snyk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/snyk.svg new file mode 100644 index 00000000..76920160 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/snyk.svg @@ -0,0 +1 @@ +Snyk icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/society6.svg b/themes/LoveIt/assets/lib/simple-icons/icons/society6.svg new file mode 100644 index 00000000..76a299ed --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/society6.svg @@ -0,0 +1 @@ +Society6 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/socket-dot-io.svg b/themes/LoveIt/assets/lib/simple-icons/icons/socket-dot-io.svg new file mode 100644 index 00000000..29a09b52 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/socket-dot-io.svg @@ -0,0 +1 @@ +Socket.io icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sogou.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sogou.svg new file mode 100644 index 00000000..4b5a5638 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sogou.svg @@ -0,0 +1 @@ +Sogou icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/solus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/solus.svg new file mode 100644 index 00000000..7f79d282 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/solus.svg @@ -0,0 +1 @@ +Solus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sonarcloud.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sonarcloud.svg new file mode 100644 index 00000000..cda076d4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sonarcloud.svg @@ -0,0 +1 @@ +SonarCloud icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sonarlint.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sonarlint.svg new file mode 100644 index 00000000..60654c21 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sonarlint.svg @@ -0,0 +1 @@ +SonarLint icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sonarqube.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sonarqube.svg new file mode 100644 index 00000000..486eed8d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sonarqube.svg @@ -0,0 +1 @@ +SonarQube icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sonarsource.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sonarsource.svg new file mode 100644 index 00000000..db9831b2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sonarsource.svg @@ -0,0 +1 @@ +SonarSource icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/songkick.svg b/themes/LoveIt/assets/lib/simple-icons/icons/songkick.svg new file mode 100644 index 00000000..f86c2ec0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/songkick.svg @@ -0,0 +1 @@ +Songkick icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sonicwall.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sonicwall.svg new file mode 100644 index 00000000..6f5fea12 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sonicwall.svg @@ -0,0 +1 @@ +SonicWall icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sonos.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sonos.svg new file mode 100644 index 00000000..019cfca8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sonos.svg @@ -0,0 +1 @@ +Sonos icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/soundcloud.svg b/themes/LoveIt/assets/lib/simple-icons/icons/soundcloud.svg new file mode 100644 index 00000000..04dc4969 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/soundcloud.svg @@ -0,0 +1 @@ +SoundCloud icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sourceengine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sourceengine.svg new file mode 100644 index 00000000..bf734d3c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sourceengine.svg @@ -0,0 +1 @@ +Source Engine icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sourceforge.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sourceforge.svg new file mode 100644 index 00000000..97a71dd9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sourceforge.svg @@ -0,0 +1 @@ +SourceForge icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sourcegraph.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sourcegraph.svg new file mode 100644 index 00000000..bef45ddc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sourcegraph.svg @@ -0,0 +1 @@ +Sourcegraph icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spacemacs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spacemacs.svg new file mode 100644 index 00000000..a301c6c9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spacemacs.svg @@ -0,0 +1 @@ +Spacemacs icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spacex.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spacex.svg new file mode 100644 index 00000000..bc85c646 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spacex.svg @@ -0,0 +1 @@ +SpaceX icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sparkfun.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sparkfun.svg new file mode 100644 index 00000000..af50d2b7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sparkfun.svg @@ -0,0 +1 @@ +SparkFun icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sparkpost.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sparkpost.svg new file mode 100644 index 00000000..fc593817 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sparkpost.svg @@ -0,0 +1 @@ +SparkPost icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spdx.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spdx.svg new file mode 100644 index 00000000..a4bab39a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spdx.svg @@ -0,0 +1 @@ +SPDX icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/speakerdeck.svg b/themes/LoveIt/assets/lib/simple-icons/icons/speakerdeck.svg new file mode 100644 index 00000000..e7dff03b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/speakerdeck.svg @@ -0,0 +1 @@ +Speaker Deck icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spectrum.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spectrum.svg new file mode 100644 index 00000000..f55e4b95 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spectrum.svg @@ -0,0 +1 @@ +Spectrum icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spinnaker.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spinnaker.svg new file mode 100644 index 00000000..3bc02c0b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spinnaker.svg @@ -0,0 +1 @@ +Spinnaker icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spinrilla.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spinrilla.svg new file mode 100644 index 00000000..c4c27cec --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spinrilla.svg @@ -0,0 +1 @@ +Spinrilla icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/splunk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/splunk.svg new file mode 100644 index 00000000..aabe42ea --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/splunk.svg @@ -0,0 +1 @@ +Splunk icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spotify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spotify.svg new file mode 100644 index 00000000..aca3621c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spotify.svg @@ -0,0 +1 @@ +Spotify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spotlight.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spotlight.svg new file mode 100644 index 00000000..9d71aea5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spotlight.svg @@ -0,0 +1 @@ +Spotlight icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spreaker.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spreaker.svg new file mode 100644 index 00000000..80e20287 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spreaker.svg @@ -0,0 +1 @@ +Spreaker icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/spring.svg b/themes/LoveIt/assets/lib/simple-icons/icons/spring.svg new file mode 100644 index 00000000..9798dab4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/spring.svg @@ -0,0 +1 @@ +Spring icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sprint.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sprint.svg new file mode 100644 index 00000000..e9142b32 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sprint.svg @@ -0,0 +1 @@ +Sprint icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sqlite.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sqlite.svg new file mode 100644 index 00000000..7fde5f0b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sqlite.svg @@ -0,0 +1 @@ +SQLite icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/square.svg b/themes/LoveIt/assets/lib/simple-icons/icons/square.svg new file mode 100644 index 00000000..5f752c16 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/square.svg @@ -0,0 +1 @@ +Square icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/squareenix.svg b/themes/LoveIt/assets/lib/simple-icons/icons/squareenix.svg new file mode 100644 index 00000000..0a7cbc97 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/squareenix.svg @@ -0,0 +1 @@ +Square Enix icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/squarespace.svg b/themes/LoveIt/assets/lib/simple-icons/icons/squarespace.svg new file mode 100644 index 00000000..fe15d6e6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/squarespace.svg @@ -0,0 +1 @@ +Squarespace icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ssrn.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ssrn.svg new file mode 100644 index 00000000..0061f97e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ssrn.svg @@ -0,0 +1 @@ +SSRN icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stackbit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stackbit.svg new file mode 100644 index 00000000..46c871a7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stackbit.svg @@ -0,0 +1 @@ +Stackbit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stackexchange.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stackexchange.svg new file mode 100644 index 00000000..eed94d4b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stackexchange.svg @@ -0,0 +1 @@ +Stack Exchange icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stackoverflow.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stackoverflow.svg new file mode 100644 index 00000000..40de6d8a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stackoverflow.svg @@ -0,0 +1 @@ +Stack Overflow icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stackpath.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stackpath.svg new file mode 100644 index 00000000..f1bcd4a5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stackpath.svg @@ -0,0 +1 @@ +StackPath icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stackshare.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stackshare.svg new file mode 100644 index 00000000..406756ea --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stackshare.svg @@ -0,0 +1 @@ +StackShare icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stadia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stadia.svg new file mode 100644 index 00000000..51fb893c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stadia.svg @@ -0,0 +1 @@ +Stadia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/staffbase.svg b/themes/LoveIt/assets/lib/simple-icons/icons/staffbase.svg new file mode 100644 index 00000000..c8a3e9c9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/staffbase.svg @@ -0,0 +1 @@ +Staffbase icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/statamic.svg b/themes/LoveIt/assets/lib/simple-icons/icons/statamic.svg new file mode 100644 index 00000000..aef04db9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/statamic.svg @@ -0,0 +1 @@ +Statamic icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/staticman.svg b/themes/LoveIt/assets/lib/simple-icons/icons/staticman.svg new file mode 100644 index 00000000..c98f0fb4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/staticman.svg @@ -0,0 +1 @@ +Staticman icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/statuspage.svg b/themes/LoveIt/assets/lib/simple-icons/icons/statuspage.svg new file mode 100644 index 00000000..548b60da --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/statuspage.svg @@ -0,0 +1 @@ +Statuspage icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/steam.svg b/themes/LoveIt/assets/lib/simple-icons/icons/steam.svg new file mode 100644 index 00000000..1a66672c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/steam.svg @@ -0,0 +1 @@ +Steam icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/steamworks.svg b/themes/LoveIt/assets/lib/simple-icons/icons/steamworks.svg new file mode 100644 index 00000000..770d52c9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/steamworks.svg @@ -0,0 +1 @@ +Steamworks icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/steem.svg b/themes/LoveIt/assets/lib/simple-icons/icons/steem.svg new file mode 100644 index 00000000..cd1f93c2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/steem.svg @@ -0,0 +1 @@ +Steem icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/steemit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/steemit.svg new file mode 100644 index 00000000..a94d4f38 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/steemit.svg @@ -0,0 +1 @@ +Steemit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/steinberg.svg b/themes/LoveIt/assets/lib/simple-icons/icons/steinberg.svg new file mode 100644 index 00000000..03c73402 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/steinberg.svg @@ -0,0 +1 @@ +Steinberg icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stellar.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stellar.svg new file mode 100644 index 00000000..fbea48df --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stellar.svg @@ -0,0 +1 @@ +Stellar icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stencyl.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stencyl.svg new file mode 100644 index 00000000..cd8b90d7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stencyl.svg @@ -0,0 +1 @@ +Stencyl icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stitcher.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stitcher.svg new file mode 100644 index 00000000..36756c6c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stitcher.svg @@ -0,0 +1 @@ +Stitcher icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/storify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/storify.svg new file mode 100644 index 00000000..6af7de88 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/storify.svg @@ -0,0 +1 @@ +Storify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/storybook.svg b/themes/LoveIt/assets/lib/simple-icons/icons/storybook.svg new file mode 100644 index 00000000..bbe944ce --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/storybook.svg @@ -0,0 +1 @@ +Storybook icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/strapi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/strapi.svg new file mode 100644 index 00000000..2d2ac2b0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/strapi.svg @@ -0,0 +1 @@ +Strapi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/strava.svg b/themes/LoveIt/assets/lib/simple-icons/icons/strava.svg new file mode 100644 index 00000000..3172153b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/strava.svg @@ -0,0 +1 @@ +Strava icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stripe.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stripe.svg new file mode 100644 index 00000000..02cb0902 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stripe.svg @@ -0,0 +1 @@ +Stripe icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/strongswan.svg b/themes/LoveIt/assets/lib/simple-icons/icons/strongswan.svg new file mode 100644 index 00000000..80ab2b91 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/strongswan.svg @@ -0,0 +1 @@ +strongSwan icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stubhub.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stubhub.svg new file mode 100644 index 00000000..1d41edb3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stubhub.svg @@ -0,0 +1 @@ +StubHub icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/styled-components.svg b/themes/LoveIt/assets/lib/simple-icons/icons/styled-components.svg new file mode 100644 index 00000000..28dd269e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/styled-components.svg @@ -0,0 +1 @@ +styled-components icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/styleshare.svg b/themes/LoveIt/assets/lib/simple-icons/icons/styleshare.svg new file mode 100644 index 00000000..715df271 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/styleshare.svg @@ -0,0 +1 @@ +StyleShare icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/stylus.svg b/themes/LoveIt/assets/lib/simple-icons/icons/stylus.svg new file mode 100644 index 00000000..30c8b54f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/stylus.svg @@ -0,0 +1 @@ +Stylus icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/subaru.svg b/themes/LoveIt/assets/lib/simple-icons/icons/subaru.svg new file mode 100644 index 00000000..262aaf84 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/subaru.svg @@ -0,0 +1 @@ +Subaru icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/sublimetext.svg b/themes/LoveIt/assets/lib/simple-icons/icons/sublimetext.svg new file mode 100644 index 00000000..54a16fa0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/sublimetext.svg @@ -0,0 +1 @@ +Sublime Text icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/subversion.svg b/themes/LoveIt/assets/lib/simple-icons/icons/subversion.svg new file mode 100644 index 00000000..d0874d10 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/subversion.svg @@ -0,0 +1 @@ +Subversion icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/superuser.svg b/themes/LoveIt/assets/lib/simple-icons/icons/superuser.svg new file mode 100644 index 00000000..f5eb75e6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/superuser.svg @@ -0,0 +1 @@ +Super User icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/suzuki.svg b/themes/LoveIt/assets/lib/simple-icons/icons/suzuki.svg new file mode 100644 index 00000000..afe927a8 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/suzuki.svg @@ -0,0 +1 @@ +Suzuki icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/svelte.svg b/themes/LoveIt/assets/lib/simple-icons/icons/svelte.svg new file mode 100644 index 00000000..ce6a37d0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/svelte.svg @@ -0,0 +1 @@ +Svelte icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/svg.svg b/themes/LoveIt/assets/lib/simple-icons/icons/svg.svg new file mode 100644 index 00000000..7fe4377d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/svg.svg @@ -0,0 +1 @@ +SVG icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/svgo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/svgo.svg new file mode 100644 index 00000000..75bb0480 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/svgo.svg @@ -0,0 +1 @@ +SVGO icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/swagger.svg b/themes/LoveIt/assets/lib/simple-icons/icons/swagger.svg new file mode 100644 index 00000000..97acf09b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/swagger.svg @@ -0,0 +1 @@ +Swagger icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/swarm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/swarm.svg new file mode 100644 index 00000000..548dbe69 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/swarm.svg @@ -0,0 +1 @@ +Swarm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/swift.svg b/themes/LoveIt/assets/lib/simple-icons/icons/swift.svg new file mode 100644 index 00000000..2e3703fa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/swift.svg @@ -0,0 +1 @@ +Swift icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/symantec.svg b/themes/LoveIt/assets/lib/simple-icons/icons/symantec.svg new file mode 100644 index 00000000..deafa341 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/symantec.svg @@ -0,0 +1 @@ +Symantec icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/symfony.svg b/themes/LoveIt/assets/lib/simple-icons/icons/symfony.svg new file mode 100644 index 00000000..a3995a56 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/symfony.svg @@ -0,0 +1 @@ +Symfony icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/symphony.svg b/themes/LoveIt/assets/lib/simple-icons/icons/symphony.svg new file mode 100644 index 00000000..6276ea07 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/symphony.svg @@ -0,0 +1 @@ +Symphony icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/synology.svg b/themes/LoveIt/assets/lib/simple-icons/icons/synology.svg new file mode 100644 index 00000000..5b9685d5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/synology.svg @@ -0,0 +1 @@ +Synology icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/t-mobile.svg b/themes/LoveIt/assets/lib/simple-icons/icons/t-mobile.svg new file mode 100644 index 00000000..d6c86844 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/t-mobile.svg @@ -0,0 +1 @@ +T-Mobile icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tableau.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tableau.svg new file mode 100644 index 00000000..6d902e67 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tableau.svg @@ -0,0 +1 @@ +Tableau icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tails.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tails.svg new file mode 100644 index 00000000..5b389981 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tails.svg @@ -0,0 +1 @@ +Tails icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tailwindcss.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tailwindcss.svg new file mode 100644 index 00000000..41e1ccc2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tailwindcss.svg @@ -0,0 +1 @@ +Tailwind CSS icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/talend.svg b/themes/LoveIt/assets/lib/simple-icons/icons/talend.svg new file mode 100644 index 00000000..df97508d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/talend.svg @@ -0,0 +1 @@ +Talend icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tapas.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tapas.svg new file mode 100644 index 00000000..35728019 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tapas.svg @@ -0,0 +1 @@ +Tapas icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tata.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tata.svg new file mode 100644 index 00000000..c099ca7c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tata.svg @@ -0,0 +1 @@ +Tata icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/teamspeak.svg b/themes/LoveIt/assets/lib/simple-icons/icons/teamspeak.svg new file mode 100644 index 00000000..c96a8142 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/teamspeak.svg @@ -0,0 +1 @@ +TeamSpeak icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/teamviewer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/teamviewer.svg new file mode 100644 index 00000000..0716db34 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/teamviewer.svg @@ -0,0 +1 @@ +TeamViewer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ted.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ted.svg new file mode 100644 index 00000000..520defa6 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ted.svg @@ -0,0 +1 @@ +TED icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/teespring.svg b/themes/LoveIt/assets/lib/simple-icons/icons/teespring.svg new file mode 100644 index 00000000..a141099b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/teespring.svg @@ -0,0 +1 @@ +Teespring icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tele5.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tele5.svg new file mode 100644 index 00000000..68799e01 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tele5.svg @@ -0,0 +1 @@ +TELE5 icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/telegram.svg b/themes/LoveIt/assets/lib/simple-icons/icons/telegram.svg new file mode 100644 index 00000000..24e14e5a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/telegram.svg @@ -0,0 +1 @@ +Telegram icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tencentqq.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tencentqq.svg new file mode 100644 index 00000000..db1de521 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tencentqq.svg @@ -0,0 +1 @@ +Tencent QQ icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tencentweibo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tencentweibo.svg new file mode 100755 index 00000000..be1bb084 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tencentweibo.svg @@ -0,0 +1 @@ +Tencent Weibo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tensorflow.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tensorflow.svg new file mode 100644 index 00000000..a149d938 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tensorflow.svg @@ -0,0 +1 @@ +TensorFlow icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/teradata.svg b/themes/LoveIt/assets/lib/simple-icons/icons/teradata.svg new file mode 100644 index 00000000..ebf3f42c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/teradata.svg @@ -0,0 +1 @@ +Teradata icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/terraform.svg b/themes/LoveIt/assets/lib/simple-icons/icons/terraform.svg new file mode 100644 index 00000000..b79b2c94 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/terraform.svg @@ -0,0 +1 @@ +Terraform icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tesla.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tesla.svg new file mode 100644 index 00000000..52a05846 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tesla.svg @@ -0,0 +1 @@ +Tesla icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/themighty.svg b/themes/LoveIt/assets/lib/simple-icons/icons/themighty.svg new file mode 100644 index 00000000..beeef19f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/themighty.svg @@ -0,0 +1 @@ +The Mighty icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/themoviedatabase.svg b/themes/LoveIt/assets/lib/simple-icons/icons/themoviedatabase.svg new file mode 100644 index 00000000..6de2fbcd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/themoviedatabase.svg @@ -0,0 +1 @@ +The Movie Database icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/theregister.svg b/themes/LoveIt/assets/lib/simple-icons/icons/theregister.svg new file mode 100644 index 00000000..4942792a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/theregister.svg @@ -0,0 +1 @@ +The Register icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/thewashingtonpost.svg b/themes/LoveIt/assets/lib/simple-icons/icons/thewashingtonpost.svg new file mode 100644 index 00000000..415a11c1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/thewashingtonpost.svg @@ -0,0 +1 @@ +The Washington Post icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/threema.svg b/themes/LoveIt/assets/lib/simple-icons/icons/threema.svg new file mode 100644 index 00000000..41a75d1d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/threema.svg @@ -0,0 +1 @@ +Threema icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tidal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tidal.svg new file mode 100644 index 00000000..c73fb89d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tidal.svg @@ -0,0 +1 @@ +Tidal icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tide.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tide.svg new file mode 100644 index 00000000..2182d2f0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tide.svg @@ -0,0 +1 @@ +Tide icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tiktok.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tiktok.svg new file mode 100644 index 00000000..5ae6b2e3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tiktok.svg @@ -0,0 +1 @@ +Tik Tok icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/timescale.svg b/themes/LoveIt/assets/lib/simple-icons/icons/timescale.svg new file mode 100644 index 00000000..3b4f8718 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/timescale.svg @@ -0,0 +1 @@ +Timescale icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tinder.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tinder.svg new file mode 100644 index 00000000..133fd01d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tinder.svg @@ -0,0 +1 @@ +Tinder icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/todoist.svg b/themes/LoveIt/assets/lib/simple-icons/icons/todoist.svg new file mode 100644 index 00000000..7e6070c5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/todoist.svg @@ -0,0 +1 @@ +Todoist icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/toggl.svg b/themes/LoveIt/assets/lib/simple-icons/icons/toggl.svg new file mode 100644 index 00000000..065ea577 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/toggl.svg @@ -0,0 +1 @@ +Toggl icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tomorrowland.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tomorrowland.svg new file mode 100644 index 00000000..513c94cd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tomorrowland.svg @@ -0,0 +1 @@ +Tomorrowland icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/topcoder.svg b/themes/LoveIt/assets/lib/simple-icons/icons/topcoder.svg new file mode 100644 index 00000000..542446d1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/topcoder.svg @@ -0,0 +1 @@ +Topcoder icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/toptal.svg b/themes/LoveIt/assets/lib/simple-icons/icons/toptal.svg new file mode 100644 index 00000000..778a1997 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/toptal.svg @@ -0,0 +1 @@ +Toptal icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tor.svg new file mode 100644 index 00000000..6e28fc4d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tor.svg @@ -0,0 +1 @@ +Tor icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/toshiba.svg b/themes/LoveIt/assets/lib/simple-icons/icons/toshiba.svg new file mode 100644 index 00000000..5d214528 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/toshiba.svg @@ -0,0 +1 @@ +Toshiba icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/toyota.svg b/themes/LoveIt/assets/lib/simple-icons/icons/toyota.svg new file mode 100644 index 00000000..e5f2b007 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/toyota.svg @@ -0,0 +1 @@ +Toyota icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/trainerroad.svg b/themes/LoveIt/assets/lib/simple-icons/icons/trainerroad.svg new file mode 100644 index 00000000..af00f29c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/trainerroad.svg @@ -0,0 +1 @@ +TrainerRoad icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/trakt.svg b/themes/LoveIt/assets/lib/simple-icons/icons/trakt.svg new file mode 100644 index 00000000..1aa2da2c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/trakt.svg @@ -0,0 +1 @@ +Trakt icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/transportforireland.svg b/themes/LoveIt/assets/lib/simple-icons/icons/transportforireland.svg new file mode 100644 index 00000000..9be5f9a0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/transportforireland.svg @@ -0,0 +1 @@ +Transport for Ireland icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/transportforlondon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/transportforlondon.svg new file mode 100644 index 00000000..c1b5e809 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/transportforlondon.svg @@ -0,0 +1 @@ +Transport for London icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/travisci.svg b/themes/LoveIt/assets/lib/simple-icons/icons/travisci.svg new file mode 100644 index 00000000..be43793a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/travisci.svg @@ -0,0 +1 @@ +Travis CI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/treehouse.svg b/themes/LoveIt/assets/lib/simple-icons/icons/treehouse.svg new file mode 100644 index 00000000..9d803201 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/treehouse.svg @@ -0,0 +1 @@ +Treehouse icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/trello.svg b/themes/LoveIt/assets/lib/simple-icons/icons/trello.svg new file mode 100644 index 00000000..7bd8dc81 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/trello.svg @@ -0,0 +1 @@ +Trello icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/trendmicro.svg b/themes/LoveIt/assets/lib/simple-icons/icons/trendmicro.svg new file mode 100644 index 00000000..59aef0da --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/trendmicro.svg @@ -0,0 +1 @@ +Trend Micro icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tripadvisor.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tripadvisor.svg new file mode 100644 index 00000000..62ea1be1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tripadvisor.svg @@ -0,0 +1 @@ +Tripadvisor icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/trulia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/trulia.svg new file mode 100644 index 00000000..a85db1fa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/trulia.svg @@ -0,0 +1 @@ +Trulia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/trustpilot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/trustpilot.svg new file mode 100644 index 00000000..4942d6fa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/trustpilot.svg @@ -0,0 +1 @@ +Trustpilot icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tryitonline.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tryitonline.svg new file mode 100644 index 00000000..2101c676 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tryitonline.svg @@ -0,0 +1 @@ +Try It Online icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tui.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tui.svg new file mode 100644 index 00000000..34c1f680 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tui.svg @@ -0,0 +1 @@ +TUI icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/tumblr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/tumblr.svg new file mode 100644 index 00000000..46811dde --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/tumblr.svg @@ -0,0 +1 @@ +Tumblr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/turkishairlines.svg b/themes/LoveIt/assets/lib/simple-icons/icons/turkishairlines.svg new file mode 100644 index 00000000..67220493 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/turkishairlines.svg @@ -0,0 +1 @@ +Turkish Airlines icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/twilio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/twilio.svg new file mode 100644 index 00000000..028d4d39 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/twilio.svg @@ -0,0 +1 @@ +Twilio icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/twitch.svg b/themes/LoveIt/assets/lib/simple-icons/icons/twitch.svg new file mode 100644 index 00000000..b4ff31f2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/twitch.svg @@ -0,0 +1 @@ +Twitch icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/twitter.svg b/themes/LoveIt/assets/lib/simple-icons/icons/twitter.svg new file mode 100644 index 00000000..af5b7c34 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/twitter.svg @@ -0,0 +1 @@ +Twitter icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/twoo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/twoo.svg new file mode 100644 index 00000000..6dded592 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/twoo.svg @@ -0,0 +1 @@ +Twoo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/typescript.svg b/themes/LoveIt/assets/lib/simple-icons/icons/typescript.svg new file mode 100644 index 00000000..a99640bc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/typescript.svg @@ -0,0 +1 @@ +TypeScript icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/typo3.svg b/themes/LoveIt/assets/lib/simple-icons/icons/typo3.svg new file mode 100644 index 00000000..1addd98f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/typo3.svg @@ -0,0 +1 @@ +TYPO3 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/uber.svg b/themes/LoveIt/assets/lib/simple-icons/icons/uber.svg new file mode 100644 index 00000000..6e978f64 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/uber.svg @@ -0,0 +1 @@ +Uber icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ubereats.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ubereats.svg new file mode 100644 index 00000000..d109190b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ubereats.svg @@ -0,0 +1 @@ +Uber Eats icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ubisoft.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ubisoft.svg new file mode 100644 index 00000000..5a5d2ee5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ubisoft.svg @@ -0,0 +1 @@ +Ubisoft icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ublockorigin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ublockorigin.svg new file mode 100644 index 00000000..0cf35f73 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ublockorigin.svg @@ -0,0 +1 @@ +uBlock Origin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ubuntu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ubuntu.svg new file mode 100644 index 00000000..a7092e60 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ubuntu.svg @@ -0,0 +1 @@ +Ubuntu icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/udacity.svg b/themes/LoveIt/assets/lib/simple-icons/icons/udacity.svg new file mode 100644 index 00000000..956d66f0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/udacity.svg @@ -0,0 +1 @@ +Udacity icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/udemy.svg b/themes/LoveIt/assets/lib/simple-icons/icons/udemy.svg new file mode 100644 index 00000000..3a75935b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/udemy.svg @@ -0,0 +1 @@ +Udemy icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/uikit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/uikit.svg new file mode 100755 index 00000000..3122d678 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/uikit.svg @@ -0,0 +1 @@ +UIkit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ulule.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ulule.svg new file mode 100644 index 00000000..1809e7cc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ulule.svg @@ -0,0 +1 @@ +Ulule icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/umbraco.svg b/themes/LoveIt/assets/lib/simple-icons/icons/umbraco.svg new file mode 100644 index 00000000..a2265fe1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/umbraco.svg @@ -0,0 +1 @@ +Umbraco icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/unicode.svg b/themes/LoveIt/assets/lib/simple-icons/icons/unicode.svg new file mode 100644 index 00000000..8584008e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/unicode.svg @@ -0,0 +1 @@ +Unicode icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/unitedairlines.svg b/themes/LoveIt/assets/lib/simple-icons/icons/unitedairlines.svg new file mode 100644 index 00000000..9319bc62 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/unitedairlines.svg @@ -0,0 +1 @@ +United Airlines icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/unity.svg b/themes/LoveIt/assets/lib/simple-icons/icons/unity.svg new file mode 100644 index 00000000..781b2d1b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/unity.svg @@ -0,0 +1 @@ +Unity icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/unrealengine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/unrealengine.svg new file mode 100644 index 00000000..7e23f2ff --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/unrealengine.svg @@ -0,0 +1 @@ +Unreal Engine icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/unsplash.svg b/themes/LoveIt/assets/lib/simple-icons/icons/unsplash.svg new file mode 100644 index 00000000..c0c9e552 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/unsplash.svg @@ -0,0 +1 @@ +Unsplash icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/untangle.svg b/themes/LoveIt/assets/lib/simple-icons/icons/untangle.svg new file mode 100644 index 00000000..ec7537ef --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/untangle.svg @@ -0,0 +1 @@ +Untangle icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/untappd.svg b/themes/LoveIt/assets/lib/simple-icons/icons/untappd.svg new file mode 100644 index 00000000..cccaee8f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/untappd.svg @@ -0,0 +1 @@ +Untappd icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/uplabs.svg b/themes/LoveIt/assets/lib/simple-icons/icons/uplabs.svg new file mode 100644 index 00000000..87596164 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/uplabs.svg @@ -0,0 +1 @@ +UpLabs icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/uploaded.svg b/themes/LoveIt/assets/lib/simple-icons/icons/uploaded.svg new file mode 100644 index 00000000..b62084ee --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/uploaded.svg @@ -0,0 +1 @@ +Uploaded icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/upwork.svg b/themes/LoveIt/assets/lib/simple-icons/icons/upwork.svg new file mode 100644 index 00000000..0ca6209d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/upwork.svg @@ -0,0 +1 @@ +Upwork icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/v.svg b/themes/LoveIt/assets/lib/simple-icons/icons/v.svg new file mode 100644 index 00000000..f56a1313 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/v.svg @@ -0,0 +1 @@ +V icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/v8.svg b/themes/LoveIt/assets/lib/simple-icons/icons/v8.svg new file mode 100644 index 00000000..36eef48d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/v8.svg @@ -0,0 +1 @@ +V8 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vagrant.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vagrant.svg new file mode 100644 index 00000000..042879a0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vagrant.svg @@ -0,0 +1 @@ +Vagrant icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/valve.svg b/themes/LoveIt/assets/lib/simple-icons/icons/valve.svg new file mode 100644 index 00000000..3e86801c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/valve.svg @@ -0,0 +1 @@ +Valve icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vauxhall.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vauxhall.svg new file mode 100644 index 00000000..240b0982 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vauxhall.svg @@ -0,0 +1 @@ +Vauxhall icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vbulletin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vbulletin.svg new file mode 100644 index 00000000..193fe3b5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vbulletin.svg @@ -0,0 +1 @@ +vBulletin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/veeam.svg b/themes/LoveIt/assets/lib/simple-icons/icons/veeam.svg new file mode 100644 index 00000000..468581ad --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/veeam.svg @@ -0,0 +1 @@ +Veeam icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/venmo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/venmo.svg new file mode 100644 index 00000000..8c8419c7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/venmo.svg @@ -0,0 +1 @@ +Venmo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/veritas.svg b/themes/LoveIt/assets/lib/simple-icons/icons/veritas.svg new file mode 100644 index 00000000..5596e905 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/veritas.svg @@ -0,0 +1 @@ +Veritas icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/verizon.svg b/themes/LoveIt/assets/lib/simple-icons/icons/verizon.svg new file mode 100644 index 00000000..d007db50 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/verizon.svg @@ -0,0 +1 @@ +Verizon icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/viadeo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/viadeo.svg new file mode 100644 index 00000000..0817ce91 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/viadeo.svg @@ -0,0 +1 @@ +Viadeo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/viber.svg b/themes/LoveIt/assets/lib/simple-icons/icons/viber.svg new file mode 100644 index 00000000..3343924e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/viber.svg @@ -0,0 +1 @@ +Viber icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vim.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vim.svg new file mode 100644 index 00000000..1a08ed51 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vim.svg @@ -0,0 +1 @@ +Vim icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vimeo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vimeo.svg new file mode 100644 index 00000000..23b888e5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vimeo.svg @@ -0,0 +1 @@ +Vimeo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vine.svg new file mode 100644 index 00000000..c99b8775 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vine.svg @@ -0,0 +1 @@ +Vine icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/virb.svg b/themes/LoveIt/assets/lib/simple-icons/icons/virb.svg new file mode 100644 index 00000000..fe186ce1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/virb.svg @@ -0,0 +1 @@ +Virb icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/visa.svg b/themes/LoveIt/assets/lib/simple-icons/icons/visa.svg new file mode 100644 index 00000000..793113e7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/visa.svg @@ -0,0 +1 @@ +Visa icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/visualstudio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/visualstudio.svg new file mode 100644 index 00000000..7338e385 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/visualstudio.svg @@ -0,0 +1 @@ +Visual Studio icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/visualstudiocode.svg b/themes/LoveIt/assets/lib/simple-icons/icons/visualstudiocode.svg new file mode 100644 index 00000000..f091d172 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/visualstudiocode.svg @@ -0,0 +1 @@ +Visual Studio Code icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vivaldi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vivaldi.svg new file mode 100644 index 00000000..d459ce28 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vivaldi.svg @@ -0,0 +1 @@ +Vivaldi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vivino.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vivino.svg new file mode 100644 index 00000000..1b2eea01 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vivino.svg @@ -0,0 +1 @@ +Vivino icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vk.svg new file mode 100644 index 00000000..7f0ad25d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vk.svg @@ -0,0 +1 @@ +VK icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vlcmediaplayer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vlcmediaplayer.svg new file mode 100644 index 00000000..2d386a64 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vlcmediaplayer.svg @@ -0,0 +1 @@ +VLC media player icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vmware.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vmware.svg new file mode 100644 index 00000000..07ee62b5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vmware.svg @@ -0,0 +1 @@ +VMware icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vodafone.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vodafone.svg new file mode 100644 index 00000000..693d2f1a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vodafone.svg @@ -0,0 +1 @@ +Vodafone icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/volkswagen.svg b/themes/LoveIt/assets/lib/simple-icons/icons/volkswagen.svg new file mode 100644 index 00000000..64006d71 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/volkswagen.svg @@ -0,0 +1 @@ +Volkswagen icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/volvo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/volvo.svg new file mode 100644 index 00000000..10f06446 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/volvo.svg @@ -0,0 +1 @@ +Volvo icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vsco.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vsco.svg new file mode 100644 index 00000000..3107cf7a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vsco.svg @@ -0,0 +1 @@ +VSCO icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vue-dot-js.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vue-dot-js.svg new file mode 100644 index 00000000..6604fd28 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vue-dot-js.svg @@ -0,0 +1 @@ +Vue.js icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vuetify.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vuetify.svg new file mode 100644 index 00000000..a146dd5b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vuetify.svg @@ -0,0 +1 @@ +Vuetify icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vulkan.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vulkan.svg new file mode 100644 index 00000000..99c14183 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vulkan.svg @@ -0,0 +1 @@ +Vulkan icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/vultr.svg b/themes/LoveIt/assets/lib/simple-icons/icons/vultr.svg new file mode 100644 index 00000000..1a9b8d5a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/vultr.svg @@ -0,0 +1 @@ +Vultr icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/w3c.svg b/themes/LoveIt/assets/lib/simple-icons/icons/w3c.svg new file mode 100644 index 00000000..8fb231aa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/w3c.svg @@ -0,0 +1 @@ +W3C icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/warnerbros-dot.svg b/themes/LoveIt/assets/lib/simple-icons/icons/warnerbros-dot.svg new file mode 100644 index 00000000..668eb2cc --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/warnerbros-dot.svg @@ -0,0 +1 @@ +Warner Bros. icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wattpad.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wattpad.svg new file mode 100644 index 00000000..e5a642c3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wattpad.svg @@ -0,0 +1 @@ +Wattpad icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/waze.svg b/themes/LoveIt/assets/lib/simple-icons/icons/waze.svg new file mode 100644 index 00000000..a7b4c399 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/waze.svg @@ -0,0 +1 @@ +Waze icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wearos.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wearos.svg new file mode 100644 index 00000000..9c4db74f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wearos.svg @@ -0,0 +1 @@ +Wear OS icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/weasyl.svg b/themes/LoveIt/assets/lib/simple-icons/icons/weasyl.svg new file mode 100644 index 00000000..7fcb484a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/weasyl.svg @@ -0,0 +1 @@ +Weasyl icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webassembly.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webassembly.svg new file mode 100644 index 00000000..f220d68a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webassembly.svg @@ -0,0 +1 @@ +WebAssembly icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webauthn.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webauthn.svg new file mode 100644 index 00000000..81385546 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webauthn.svg @@ -0,0 +1 @@ +WebAuthn icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webcomponents-dot-org.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webcomponents-dot-org.svg new file mode 100644 index 00000000..eb14b05c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webcomponents-dot-org.svg @@ -0,0 +1 @@ +webcomponents.org icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webgl.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webgl.svg new file mode 100644 index 00000000..9c9bcb92 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webgl.svg @@ -0,0 +1 @@ +WebGL icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webmin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webmin.svg new file mode 100644 index 00000000..c3348cd3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webmin.svg @@ -0,0 +1 @@ +Webmin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webmoney.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webmoney.svg new file mode 100644 index 00000000..a3c91c62 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webmoney.svg @@ -0,0 +1 @@ +WebMoney icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webpack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webpack.svg new file mode 100644 index 00000000..14b857fd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webpack.svg @@ -0,0 +1 @@ +Webpack icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webrtc.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webrtc.svg new file mode 100644 index 00000000..701b9bb4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webrtc.svg @@ -0,0 +1 @@ +WebRTC icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/webstorm.svg b/themes/LoveIt/assets/lib/simple-icons/icons/webstorm.svg new file mode 100644 index 00000000..9a3c0434 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/webstorm.svg @@ -0,0 +1 @@ +WebStorm icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wechat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wechat.svg new file mode 100644 index 00000000..3f23e0e5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wechat.svg @@ -0,0 +1 @@ +WeChat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wemo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wemo.svg new file mode 100644 index 00000000..cfbda2c0 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wemo.svg @@ -0,0 +1 @@ +WEMO icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/whatsapp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/whatsapp.svg new file mode 100644 index 00000000..83c7bebf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/whatsapp.svg @@ -0,0 +1 @@ +WhatsApp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wheniwork.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wheniwork.svg new file mode 100644 index 00000000..c4c31162 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wheniwork.svg @@ -0,0 +1 @@ +When I Work icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/whitesource.svg b/themes/LoveIt/assets/lib/simple-icons/icons/whitesource.svg new file mode 100644 index 00000000..55af3f37 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/whitesource.svg @@ -0,0 +1 @@ +WhiteSource icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wii.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wii.svg new file mode 100644 index 00000000..8e89b306 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wii.svg @@ -0,0 +1 @@ +Wii icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wiiu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wiiu.svg new file mode 100644 index 00000000..750cfc75 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wiiu.svg @@ -0,0 +1 @@ +Wii U icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wikimediacommons.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wikimediacommons.svg new file mode 100644 index 00000000..6657dc0b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wikimediacommons.svg @@ -0,0 +1 @@ +Wikimedia Commons icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wikipedia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wikipedia.svg new file mode 100644 index 00000000..2f971ff7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wikipedia.svg @@ -0,0 +1 @@ +Wikipedia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/windows.svg b/themes/LoveIt/assets/lib/simple-icons/icons/windows.svg new file mode 100644 index 00000000..3e6c955d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/windows.svg @@ -0,0 +1 @@ +Windows icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/windows95.svg b/themes/LoveIt/assets/lib/simple-icons/icons/windows95.svg new file mode 100644 index 00000000..99b59d28 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/windows95.svg @@ -0,0 +1 @@ +Windows 95 icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/windowsxp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/windowsxp.svg new file mode 100644 index 00000000..4369b7fa --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/windowsxp.svg @@ -0,0 +1 @@ +Windows XP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wire.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wire.svg new file mode 100644 index 00000000..1387b6f3 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wire.svg @@ -0,0 +1 @@ +Wire icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wireguard.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wireguard.svg new file mode 100644 index 00000000..fac39dda --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wireguard.svg @@ -0,0 +1 @@ +WireGuard icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wish.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wish.svg new file mode 100644 index 00000000..df5d2c8d --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wish.svg @@ -0,0 +1 @@ +Wish icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wistia.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wistia.svg new file mode 100644 index 00000000..c5a7121e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wistia.svg @@ -0,0 +1 @@ +Wistia icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wix.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wix.svg new file mode 100644 index 00000000..ca640c3a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wix.svg @@ -0,0 +1 @@ +Wix icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wizzair.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wizzair.svg new file mode 100644 index 00000000..63123571 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wizzair.svg @@ -0,0 +1 @@ +Wizz Air icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wolfram.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wolfram.svg new file mode 100644 index 00000000..72fef38b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wolfram.svg @@ -0,0 +1 @@ +Wolfram icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wolframlanguage.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wolframlanguage.svg new file mode 100644 index 00000000..6dbdd8c1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wolframlanguage.svg @@ -0,0 +1 @@ +Wolfram Language icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wolframmathematica.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wolframmathematica.svg new file mode 100644 index 00000000..2be76cf4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wolframmathematica.svg @@ -0,0 +1 @@ +Wolfram Mathematica icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/woo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/woo.svg new file mode 100644 index 00000000..e3085fc1 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/woo.svg @@ -0,0 +1 @@ +Woo icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/woocommerce.svg b/themes/LoveIt/assets/lib/simple-icons/icons/woocommerce.svg new file mode 100644 index 00000000..9e33a0b4 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/woocommerce.svg @@ -0,0 +1 @@ +WooCommerce icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wordpress.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wordpress.svg new file mode 100644 index 00000000..41a187ee --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wordpress.svg @@ -0,0 +1 @@ +WordPress icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/workplace.svg b/themes/LoveIt/assets/lib/simple-icons/icons/workplace.svg new file mode 100644 index 00000000..ec00be20 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/workplace.svg @@ -0,0 +1 @@ +Workplace icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/worldhealthorganization.svg b/themes/LoveIt/assets/lib/simple-icons/icons/worldhealthorganization.svg new file mode 100644 index 00000000..6d25ba71 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/worldhealthorganization.svg @@ -0,0 +1 @@ +World Health Organization icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wpengine.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wpengine.svg new file mode 100644 index 00000000..6d623038 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wpengine.svg @@ -0,0 +1 @@ +WP Engine icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wprocket.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wprocket.svg new file mode 100644 index 00000000..145d7e94 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wprocket.svg @@ -0,0 +1 @@ +WP Rocket icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/write-dot-as.svg b/themes/LoveIt/assets/lib/simple-icons/icons/write-dot-as.svg new file mode 100644 index 00000000..2dd5f386 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/write-dot-as.svg @@ -0,0 +1 @@ +write.as icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/wwe.svg b/themes/LoveIt/assets/lib/simple-icons/icons/wwe.svg new file mode 100644 index 00000000..38886753 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/wwe.svg @@ -0,0 +1 @@ +WWE icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/x-dot-org.svg b/themes/LoveIt/assets/lib/simple-icons/icons/x-dot-org.svg new file mode 100644 index 00000000..57e1d41f --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/x-dot-org.svg @@ -0,0 +1 @@ +X.Org icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/x-pack.svg b/themes/LoveIt/assets/lib/simple-icons/icons/x-pack.svg new file mode 100644 index 00000000..d92b500b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/x-pack.svg @@ -0,0 +1 @@ +X-Pack icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xamarin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xamarin.svg new file mode 100644 index 00000000..39667695 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xamarin.svg @@ -0,0 +1 @@ +Xamarin icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xaml.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xaml.svg new file mode 100644 index 00000000..ef39a59b --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xaml.svg @@ -0,0 +1 @@ +XAML icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xampp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xampp.svg new file mode 100644 index 00000000..e2d1d1d7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xampp.svg @@ -0,0 +1 @@ +XAMPP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xbox.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xbox.svg new file mode 100644 index 00000000..e70af1cf --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xbox.svg @@ -0,0 +1 @@ +Xbox icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xcode.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xcode.svg new file mode 100644 index 00000000..bfdab404 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xcode.svg @@ -0,0 +1 @@ +Xcode icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xdadevelopers.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xdadevelopers.svg new file mode 100644 index 00000000..47b33a34 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xdadevelopers.svg @@ -0,0 +1 @@ +XDA Developers icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xero.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xero.svg new file mode 100644 index 00000000..d6097798 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xero.svg @@ -0,0 +1 @@ +Xero icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xfce.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xfce.svg new file mode 100644 index 00000000..e8d7db9c --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xfce.svg @@ -0,0 +1 @@ +XFCE icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xiaomi.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xiaomi.svg new file mode 100644 index 00000000..5523d2df --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xiaomi.svg @@ -0,0 +1 @@ +Xiaomi icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xing.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xing.svg new file mode 100644 index 00000000..0f53c796 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xing.svg @@ -0,0 +1 @@ +Xing icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xmpp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xmpp.svg new file mode 100644 index 00000000..ec4a18f5 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xmpp.svg @@ -0,0 +1 @@ +XMPP icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xrp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xrp.svg new file mode 100644 index 00000000..9335c3e9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xrp.svg @@ -0,0 +1 @@ +XRP icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/xsplit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/xsplit.svg new file mode 100644 index 00000000..6bf7bbf2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/xsplit.svg @@ -0,0 +1 @@ +XSplit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/yahoo.svg b/themes/LoveIt/assets/lib/simple-icons/icons/yahoo.svg new file mode 100644 index 00000000..b1066409 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/yahoo.svg @@ -0,0 +1 @@ +Yahoo! icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/yamahacorporation.svg b/themes/LoveIt/assets/lib/simple-icons/icons/yamahacorporation.svg new file mode 100644 index 00000000..0c6c26db --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/yamahacorporation.svg @@ -0,0 +1 @@ +Yamaha Corporation icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/yamahamotorcorporation.svg b/themes/LoveIt/assets/lib/simple-icons/icons/yamahamotorcorporation.svg new file mode 100644 index 00000000..e3f91135 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/yamahamotorcorporation.svg @@ -0,0 +1 @@ +Yamaha Motor Corporation icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/yammer.svg b/themes/LoveIt/assets/lib/simple-icons/icons/yammer.svg new file mode 100644 index 00000000..57c05524 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/yammer.svg @@ -0,0 +1 @@ +Yammer icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/yandex.svg b/themes/LoveIt/assets/lib/simple-icons/icons/yandex.svg new file mode 100644 index 00000000..d3d2f8e7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/yandex.svg @@ -0,0 +1 @@ +Yandex icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/yarn.svg b/themes/LoveIt/assets/lib/simple-icons/icons/yarn.svg new file mode 100644 index 00000000..79d00a18 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/yarn.svg @@ -0,0 +1 @@ +Yarn icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/ycombinator.svg b/themes/LoveIt/assets/lib/simple-icons/icons/ycombinator.svg new file mode 100644 index 00000000..aa8ad877 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/ycombinator.svg @@ -0,0 +1 @@ +Y Combinator icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/yelp.svg b/themes/LoveIt/assets/lib/simple-icons/icons/yelp.svg new file mode 100644 index 00000000..02b7bbf9 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/yelp.svg @@ -0,0 +1 @@ +Yelp icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/yoast.svg b/themes/LoveIt/assets/lib/simple-icons/icons/yoast.svg new file mode 100644 index 00000000..20da11d2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/yoast.svg @@ -0,0 +1 @@ +Yoast icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/youtube.svg b/themes/LoveIt/assets/lib/simple-icons/icons/youtube.svg new file mode 100644 index 00000000..6aca43ca --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/youtube.svg @@ -0,0 +1 @@ +YouTube icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/youtubegaming.svg b/themes/LoveIt/assets/lib/simple-icons/icons/youtubegaming.svg new file mode 100644 index 00000000..d230e76e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/youtubegaming.svg @@ -0,0 +1 @@ +YouTube Gaming icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/youtubestudio.svg b/themes/LoveIt/assets/lib/simple-icons/icons/youtubestudio.svg new file mode 100644 index 00000000..d9c8c69e --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/youtubestudio.svg @@ -0,0 +1 @@ +YouTube Studio icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/youtubetv.svg b/themes/LoveIt/assets/lib/simple-icons/icons/youtubetv.svg new file mode 100644 index 00000000..ef229089 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/youtubetv.svg @@ -0,0 +1 @@ +YouTube TV icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/z-wave.svg b/themes/LoveIt/assets/lib/simple-icons/icons/z-wave.svg new file mode 100644 index 00000000..b85a7679 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/z-wave.svg @@ -0,0 +1 @@ +Z-Wave icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zalando.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zalando.svg new file mode 100644 index 00000000..f2fd9a77 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zalando.svg @@ -0,0 +1 @@ +Zalando icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zapier.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zapier.svg new file mode 100644 index 00000000..78cd5ee7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zapier.svg @@ -0,0 +1 @@ +Zapier icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zdf.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zdf.svg new file mode 100644 index 00000000..81334479 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zdf.svg @@ -0,0 +1 @@ +ZDF icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zeit.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zeit.svg new file mode 100644 index 00000000..0f053168 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zeit.svg @@ -0,0 +1 @@ +Zeit icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zend.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zend.svg new file mode 100644 index 00000000..48167cd7 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zend.svg @@ -0,0 +1 @@ +Zend icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zendesk.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zendesk.svg new file mode 100644 index 00000000..abf2ea14 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zendesk.svg @@ -0,0 +1 @@ +Zendesk icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zendframework.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zendframework.svg new file mode 100644 index 00000000..00fadb18 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zendframework.svg @@ -0,0 +1 @@ +Zend Framework icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zeromq.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zeromq.svg new file mode 100644 index 00000000..4ecfb078 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zeromq.svg @@ -0,0 +1 @@ +ZeroMQ icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zerply.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zerply.svg new file mode 100644 index 00000000..0cae2235 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zerply.svg @@ -0,0 +1 @@ +Zerply icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zhihu.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zhihu.svg new file mode 100644 index 00000000..fbe9dadb --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zhihu.svg @@ -0,0 +1 @@ +Zhihu icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zigbee.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zigbee.svg new file mode 100644 index 00000000..69cb6a04 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zigbee.svg @@ -0,0 +1 @@ +Zigbee icon diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zillow.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zillow.svg new file mode 100644 index 00000000..e516ca9a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zillow.svg @@ -0,0 +1 @@ +Zillow icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zingat.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zingat.svg new file mode 100644 index 00000000..d56f20bd --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zingat.svg @@ -0,0 +1 @@ +Zingat icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zoom.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zoom.svg new file mode 100644 index 00000000..ad787b3a --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zoom.svg @@ -0,0 +1 @@ +Zoom icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zorin.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zorin.svg new file mode 100644 index 00000000..6c03d6f2 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zorin.svg @@ -0,0 +1 @@ +Zorin icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/simple-icons/icons/zulip.svg b/themes/LoveIt/assets/lib/simple-icons/icons/zulip.svg new file mode 100644 index 00000000..6ea3ee99 --- /dev/null +++ b/themes/LoveIt/assets/lib/simple-icons/icons/zulip.svg @@ -0,0 +1 @@ +Zulip icon \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/smooth-scroll/smooth-scroll.min.js b/themes/LoveIt/assets/lib/smooth-scroll/smooth-scroll.min.js new file mode 100644 index 00000000..0d172caa --- /dev/null +++ b/themes/LoveIt/assets/lib/smooth-scroll/smooth-scroll.min.js @@ -0,0 +1,2 @@ +/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */ +!(function(e,t){"function"==typeof define&&define.amd?define([],(function(){return t(e)})):"object"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)})("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,(function(C){"use strict";var w={ignore:"[data-scroll-ignore]",header:null,topOnEmptyHash:!0,speed:500,speedAsDuration:!1,durationMax:null,durationMin:null,clip:!0,offset:0,easing:"easeInOutCubic",customEasing:null,updateURL:!0,popstate:!0,emitEvents:!0},L=function(){var n={};return Array.prototype.forEach.call(arguments,(function(e){for(var t in e){if(!e.hasOwnProperty(t))return;n[t]=e[t]}})),n},r=function(e){"#"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),o=n.length,a=-1,r="",i=n.charCodeAt(0);++ao.durationMax?o.durationMax:o.durationMin&&u=v)return A.cancelScroll(!0),x(a,t,s),Q("scrollStop",i,a,r),!(M=l=null)})(f,g)||(M=C.requestAnimationFrame(b),l=e)};0===C.pageYOffset&&C.scrollTo(0,0),m=a,h=i,s||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:m.id},document.title,m===document.documentElement?"#top":"#"+m.id),"matchMedia"in C&&C.matchMedia("(prefers-reduced-motion)").matches?x(a,Math.floor(g),!1):(Q("scrollStart",i,a,r),A.cancelScroll(!0),C.requestAnimationFrame(b))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&"closest"in e.target&&(a=e.target.closest(o))&&"a"===a.tagName.toLowerCase()&&!e.target.closest(O.ignore)&&a.hostname===C.location.hostname&&a.pathname===C.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if("#"===t){if(!O.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||"#top"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=C.location.hash;t=t||"",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||C.pageYOffset},document.title,t||C.location.href)}})(O),A.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(O)){var t=history.state.anchor;"string"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||A.animateScroll(t,null,{updateURL:!1})}};A.destroy=function(){O&&(document.removeEventListener("click",t,!1),C.removeEventListener("popstate",n,!1),A.cancelScroll(),M=I=a=O=null)};return (function(){if(!("querySelector"in document&&"addEventListener"in C&&"requestAnimationFrame"in C&&"closest"in C.Element.prototype))throw"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.";A.destroy(),O=L(w,e||{}),I=O.header?document.querySelector(O.header):null,document.addEventListener("click",t,!1),O.updateURL&&O.popstate&&C.addEventListener("popstate",n,!1)})(),A}})); \ No newline at end of file diff --git a/themes/LoveIt/assets/lib/twemoji/twemoji.min.js b/themes/LoveIt/assets/lib/twemoji/twemoji.min.js new file mode 100644 index 00000000..93a52a89 --- /dev/null +++ b/themes/LoveIt/assets/lib/twemoji/twemoji.min.js @@ -0,0 +1,2 @@ +/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */ +var twemoji=function(){"use strict";var twemoji={base:"https://twemoji.maxcdn.com/v/13.0.0/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this)}},parse:parse,replace:replace,test:test},escaper={"&":"&","<":"<",">":">","'":"'",'"':"""},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udeeb\udeec\udef4-\udefc\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78\udd7a-\uddb4\uddb7\uddba\uddbc-\uddcb\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7a\ude80-\ude86\ude90-\udea8\udeb0-\udeb6\udec0-\udec2\uded0-\uded6]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return"".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode)}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText)}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true))}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname])}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img)}if(!img)fragment.appendChild(createText(rawText,false));img=null}if(modified){if(i")}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how}}return(typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i (https://macarthur.me) + * Version: v7.0.4 + * License: GPL-2.0 + * URL: https://typeitjs.com + */ +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n=n||self).TypeIt=t()}(this,(function(){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(t)}var t={strings:[],speed:100,cursor:!0,cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,lifeLike:!0,breakLines:!0,startDelay:250,startDelete:!1,nextStringDelay:750,loop:!1,loopDelay:750,html:!0,waitUntilVisible:!1,beforeString:function(){},afterString:function(){},beforeStep:function(){},afterStep:function(){},afterComplete:function(){}},e=function(n){return n.map((function(n){return void 0===n[1]&&n.push(null),void 0===n[2]&&n.push({}),n}))},r=function(n,t){return Object.assign({},n,t)},i=function(n){return Array.isArray(n)},o=function(n,t){return n[2]=r(n[2],t)||t,n},u=function(n,t){return i(n[0])?n.map((function(n){return o(n,t)})):o(n,t)},c=function(n,t,e,r){r=r||!1,e=e||{};var o=!i(n),c=n.length;return(n=o?new Array(n).fill(0):n).map((function(n,i){if(o)return t;var a=[t,n,e];return r&&(0===i&&(a=u(a,{isFirst:!0})),i+1===c&&(a=u(a,{isLast:!0}))),a}))};function a(n){this.insert=function(n,e){t.splice(n,0,e)},this.add=function(n,u,a){return n=i(n)?n:[n,null],a=a||!1,u=u||1,i(n[0])||(n=c(u,n)),n=e(n).map((function(n){return n[2]=r(n[2],{id:o}),o++,n})),t=a?n.concat(t):t.concat(n),this},this.set=function(n,e){t[n]=e},this.reset=function(){t=t.map((function(n){return n[2].executed=!1,n}))},this.getItems=function(){return(t=e(t)).filter((function(n){return!n[2].executed}))},this.setMeta=function(n,e){var i=t.findIndex((function(t){return t[2].id===n}));t[i][2]=r(t[i][2],e)};var t=[],o=0;this.add(n)}var f=function(n){return Array.from(n)},s=function(n){var t=[];return t.concat.apply(t,n)},l=function(n){var t=document.implementation.createHTMLDocument("");return t.body.innerHTML=n,t.body},d=function n(t,e,r){e=e||null,r=void 0!==r&&r;var i=f(t.childNodes).map((function(t){return 3===(e=t).nodeType||"BR"===e.tagName?t:n(t);var e}));return i=s(i),e&&(i=i.filter((function(n){return!e.contains(n)}))),r?i.reverse():i},p=function(n){return"BODY"===n.tagName},h=function(n,t){t=t||null;var e=n instanceof HTMLElement;return{node:t,isTopLevelText:(!t||p(t.parentNode))&&!e,isHTMLElement:e,content:n}};function v(n){var t,e=l(n);return t=d(e).map((function(n){return n.nodeValue?f(n.nodeValue).map((function(t){return h(t,n)})):h(n)})),s(t)}function y(n,t){return(t=void 0===t||t)?v(n):f(n).map((function(n){return h(n)}))}var m=function(n){return document.createElement(n)},g=function(n,t){var e=m("style");e.id=t||"",e.appendChild(document.createTextNode(n)),document.head.appendChild(e)},b=function(n){return i(n)||(n=[n/2,n/2]),{before:n[0],after:n[1],total:n[0]+n[1]}},S=function(n,t){return Math.abs(Math.random()*(n+t-(n-t))+(n-t))};var N=function(n){return["textarea","input"].indexOf(n.tagName.toLowerCase())>-1},T=function(n,t){var e=t.querySelectorAll("*");return[t].concat(f(e).reverse()).find((function(t){return t.cloneNode().outerHTML===n.outerHTML}))},L=function(n,t,e,r){e=e||null;var i=t.isHTMLElement,o=i?t.content:document.createTextNode(t.content);if(N(n))n.value="".concat(n.value).concat(t.content);else{if(!t.isTopLevelText&&!i){var u=t.node.parentNode,c=T(u.cloneNode(),n);if(function(n,t){if(!n)return!1;var e=n.nextSibling;return!e||e.isEqualNode(t)}(c,e))n=c;else if((o=u.cloneNode()).innerText=t.content,!p(u.parentNode)){for(var a=u.parentNode,f=a.cloneNode(),s=T(f,n);!s&&!p(a);)f.innerHTML=o.outerHTML,o=f,f=a.parentNode.cloneNode(),a=a.parentNode,s=T(f,n);n=s||n}}var l=d(n,e,!0)[r-1],h=l?l.parentNode:n;h.insertBefore(o,h.contains(e)?e:null)}},M=function(n){var t;return null==n||null===(t=n.parentNode)||void 0===t?void 0:t.removeChild(n)};var x=function(n,t,e){var r,i="string"==typeof n,o=!1,u=-1*n;return i&&(u=(r="END"===n.toUpperCase())?-1:1,o=r?t+u>0:t+u-1&&i[o]&&(r.style[o]=i[o]);return r.style.cssText};function D(n,t,e){return e?t?t(n):n:(n&&n.then||(n=Promise.resolve(n)),t?n.then(t):n)}function H(n){return function(){for(var t=[],e=0;et.length?t.length:i)-1];(n=o?o.parentNode:n).insertBefore(e,o||null)}}(W,z(),fn,_),A((function(){if(r.isString&&r.canKeepMoving)return C(n(r.numberOfSteps>0?"START":"END"))}),(function(){return t()}))})),Z[0])}))},K=function(n){return new Promise((function(t){q((function(){return L(W,n,fn,_),t()}),Z[0])}))},Q=H((function(n){en=r(en,n)})),Y=H((function(){X?W.value="":z().forEach((function(n){M(n)}))})),G=function n(t){return t=!0===t,new Promise((function(e){q(H((function(){var r=!1,i=z();return i.length&&(X?W.value=W.value.slice(0,-1):M(i[_])),f(W.querySelectorAll("*")).forEach((function(n){if(!n.innerHTML&&"BR"!==n.tagName){for(var t=n;1===t.parentNode.childNodes.length&&t.parentNode.childNodes[0].isEqualNode(t);)t=t.parentNode;M(t)}})),A((function(){if(t&&i.length-1>0)return D(n(!0),(function(){return r=!0,e()}))}),(function(n){return r?n:e()}))})),Z[1])}))};this.break=function(n){return p([K,h(m("BR"))],1,n)},this.delete=function(n,t){var e=T(t);return p([e[0]].concat([].concat(Array(Math.abs(n)||1)).fill().map((function(){return[G,!n,nn]})),[e[1]]),1,t)},this.empty=function(){return p(Y,1,arguments)},this.exec=function(n,t){var e=T(t);return p([e[0],[n,null],e[1]],1,t)},this.move=function(n,t){var e=x(n,_,z()),r=T(t),i=e.isString?n:Math.sign(n);return p([r[0]].concat([].concat(Array(Math.abs(n)||1)).fill().map((function(){return[F,i,nn]})),[r[1]]),1,t)},this.options=function(n){return p([Q,n],1,n)},this.pause=function(n,t){return p([U,n],1,t)},this.type=function(n,t){var e=T(t),r=y(n,en.html),i=[e[0]].concat(c(r,K,nn,!0),[e[1]]);return p(i,1,t)},this.is=function(n){return tn[n]},this.destroy=function(n){n=void 0===n||n,$.forEach((function(n){clearTimeout(n)})),$=[],n&&M(fn),tn.destroyed=!0},this.freeze=function(){tn.frozen=!0},this.unfreeze=function(){tn.frozen=!1,V()},this.reset=function(){for(var n in!this.is("destroyed")&&this.destroy(),an.reset(),_=0,tn)tn[n]=!1;return X?W.value="":W.innerHTML="",this},this.go=function(){return tn.started?this:(I(),en.waitUntilVisible?(function(n,t){new IntersectionObserver((function(e,r){e.forEach((function(e){e.isIntersecting&&(t(),r.unobserve(n))}))}),{threshold:1}).observe(n)}(W,V.bind(this)),this):(V(),this))},this.getQueue=function(){return an},this.getOptions=function(){return en},this.getElement=function(){return W};var J,W="string"==typeof(J=e)?document.querySelector(J):J,X=N(W),Z=[],$=[],_=0,nn={freezeCursor:!0},tn={started:!1,completed:!1,frozen:!1,destroyed:!1},en=r(t,o);en=r(en,{html:!X&&en.html,nextStringDelay:b(en.nextStringDelay),loopDelay:b(en.loopDelay)});var rn,on,un,cn=Math.random().toString().substring(2,9),an=new a([U,en.startDelay]);W.setAttribute("data-typeit-id",cn),g("[data-typeit-id]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}[data-typeit-id]"),en.strings=(un=en.strings,rn=i(un)?un:[un],(on=function(n){return n.innerHTML.replace(/<\!--.*?-->/g,"").trim()}(W))?(W.innerHTML="",en.startDelete?(v(on).forEach((function(n){L(W,n,fn,_)})),an.add([G,!0]),B(1),rn):[on.trim()].concat(rn)):rn);var fn=function(){if(X||!en.cursor)return null;var n=m("span");return n.innerHTML=l(en.cursorChar).innerHTML,n.className="ti-cursor",n.style.cssText="display:inline;".concat(w(W)),n}();en.strings.length&&function(){var n=en.strings.filter((function(n){return!!n}));n.forEach((function(t,e){var r=y(t,en.html);an.add(c(r,K,nn,!0));var i=an.getItems().length;if(e+1!==n.length){if(en.breakLines){var o=h(m("BR"));return an.add([K,o,nn]),void B(i)}an.add(c(r,G,nn)),B(i,t.length)}}))}()}})); diff --git a/themes/LoveIt/assets/lib/valine/Valine.min.js b/themes/LoveIt/assets/lib/valine/Valine.min.js new file mode 100755 index 00000000..aebb9620 --- /dev/null +++ b/themes/LoveIt/assets/lib/valine/Valine.min.js @@ -0,0 +1,26 @@ +/*! + * Valine v1.4.14 + * (c) 2017-2020 xCss + * Released under the GPL-2.0 License. + * Last Update: 2020/4/26 下午8:39:08 + */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Valine=t():e.Valine=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=63)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(38),a=r(i),s=n(28),l=r(s),c=n(27),u=r(c),d=n(42),p=r(d),f=document,h=navigator,v=/[&<>"'`\\]/g,g=RegExp(v.source),m=/&(?:amp|lt|gt|quot|#39|#x60|#x5c);/g,y=RegExp(m.source),b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","\\":"\"},w={};for(var x in b)w[b[x]]=x;var k=null;Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var n,r;if(null==this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=0;r=200&&o<300?e.success&&e.success(JSON.parse(r.responseText)):e.fail&&e.fail(o)}},"GET"==e.type?(r.open("GET",e.url+"?"+t,e.async),r.send(null)):"POST"==e.type&&(r.open("POST",e.url,e.async),void 0==e.contentType||null==e.contentType?r.send(t):(r.setRequestHeader("Content-Type",e.contentType),r.send(JSON.stringify(e.data)))),n=setTimeout(function(e){clearTimeout(n),r.abort()},e.timeout)}}),t.default=l.default},function(e,t,n){"use strict";var r=TypeError,o=Object.getOwnPropertyDescriptor;if(o)try{o({},"")}catch(e){o=null}var i,a,s=function(){throw new r},l=o?function(){try{return arguments.callee,s}catch(e){try{return o(arguments,"callee").get}catch(e){return s}}}():s,c=n(47)(),u=Object.getPrototypeOf||function(e){return e.__proto__},d=i?u(i):void 0,p=a?u(a):void 0,f=a?a():void 0,h="undefined"==typeof Uint8Array?void 0:u(Uint8Array),v={"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayBufferPrototype%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer.prototype,"%ArrayIteratorPrototype%":c?u([][Symbol.iterator]()):void 0,"%ArrayPrototype%":Array.prototype,"%ArrayProto_entries%":Array.prototype.entries,"%ArrayProto_forEach%":Array.prototype.forEach,"%ArrayProto_keys%":Array.prototype.keys,"%ArrayProto_values%":Array.prototype.values,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":void 0,"%AsyncFunctionPrototype%":void 0,"%AsyncGenerator%":a?u(f):void 0,"%AsyncGeneratorFunction%":p,"%AsyncGeneratorPrototype%":p?p.prototype:void 0,"%AsyncIteratorPrototype%":f&&c&&Symbol.asyncIterator?f[Symbol.asyncIterator]():void 0,"%Atomics%":"undefined"==typeof Atomics?void 0:Atomics,"%Boolean%":Boolean,"%BooleanPrototype%":Boolean.prototype,"%DataView%":"undefined"==typeof DataView?void 0:DataView,"%DataViewPrototype%":"undefined"==typeof DataView?void 0:DataView.prototype,"%Date%":Date,"%DatePrototype%":Date.prototype,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%ErrorPrototype%":Error.prototype,"%eval%":eval,"%EvalError%":EvalError,"%EvalErrorPrototype%":EvalError.prototype,"%Float32Array%":"undefined"==typeof Float32Array?void 0:Float32Array,"%Float32ArrayPrototype%":"undefined"==typeof Float32Array?void 0:Float32Array.prototype,"%Float64Array%":"undefined"==typeof Float64Array?void 0:Float64Array,"%Float64ArrayPrototype%":"undefined"==typeof Float64Array?void 0:Float64Array.prototype,"%Function%":Function,"%FunctionPrototype%":Function.prototype,"%Generator%":i?u(i()):void 0,"%GeneratorFunction%":d,"%GeneratorPrototype%":d?d.prototype:void 0,"%Int8Array%":"undefined"==typeof Int8Array?void 0:Int8Array,"%Int8ArrayPrototype%":"undefined"==typeof Int8Array?void 0:Int8Array.prototype,"%Int16Array%":"undefined"==typeof Int16Array?void 0:Int16Array,"%Int16ArrayPrototype%":"undefined"==typeof Int16Array?void 0:Int8Array.prototype,"%Int32Array%":"undefined"==typeof Int32Array?void 0:Int32Array,"%Int32ArrayPrototype%":"undefined"==typeof Int32Array?void 0:Int32Array.prototype,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":c?u(u([][Symbol.iterator]())):void 0,"%JSON%":"object"==typeof JSON?JSON:void 0,"%JSONParse%":"object"==typeof JSON?JSON.parse:void 0,"%Map%":"undefined"==typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&c?u((new Map)[Symbol.iterator]()):void 0,"%MapPrototype%":"undefined"==typeof Map?void 0:Map.prototype,"%Math%":Math,"%Number%":Number,"%NumberPrototype%":Number.prototype,"%Object%":Object,"%ObjectPrototype%":Object.prototype,"%ObjProto_toString%":Object.prototype.toString,"%ObjProto_valueOf%":Object.prototype.valueOf,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?void 0:Promise,"%PromisePrototype%":"undefined"==typeof Promise?void 0:Promise.prototype,"%PromiseProto_then%":"undefined"==typeof Promise?void 0:Promise.prototype.then,"%Promise_all%":"undefined"==typeof Promise?void 0:Promise.all,"%Promise_reject%":"undefined"==typeof Promise?void 0:Promise.reject,"%Promise_resolve%":"undefined"==typeof Promise?void 0:Promise.resolve,"%Proxy%":"undefined"==typeof Proxy?void 0:Proxy,"%RangeError%":RangeError,"%RangeErrorPrototype%":RangeError.prototype,"%ReferenceError%":ReferenceError,"%ReferenceErrorPrototype%":ReferenceError.prototype,"%Reflect%":"undefined"==typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%RegExpPrototype%":RegExp.prototype,"%Set%":"undefined"==typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&c?u((new Set)[Symbol.iterator]()):void 0,"%SetPrototype%":"undefined"==typeof Set?void 0:Set.prototype,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%SharedArrayBufferPrototype%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer.prototype,"%String%":String,"%StringIteratorPrototype%":c?u(""[Symbol.iterator]()):void 0,"%StringPrototype%":String.prototype,"%Symbol%":c?Symbol:void 0,"%SymbolPrototype%":c?Symbol.prototype:void 0,"%SyntaxError%":SyntaxError,"%SyntaxErrorPrototype%":SyntaxError.prototype,"%ThrowTypeError%":l,"%TypedArray%":h,"%TypedArrayPrototype%":h?h.prototype:void 0,"%TypeError%":r,"%TypeErrorPrototype%":r.prototype,"%Uint8Array%":"undefined"==typeof Uint8Array?void 0:Uint8Array,"%Uint8ArrayPrototype%":"undefined"==typeof Uint8Array?void 0:Uint8Array.prototype,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint8ClampedArrayPrototype%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray.prototype,"%Uint16Array%":"undefined"==typeof Uint16Array?void 0:Uint16Array,"%Uint16ArrayPrototype%":"undefined"==typeof Uint16Array?void 0:Uint16Array.prototype,"%Uint32Array%":"undefined"==typeof Uint32Array?void 0:Uint32Array,"%Uint32ArrayPrototype%":"undefined"==typeof Uint32Array?void 0:Uint32Array.prototype,"%URIError%":URIError,"%URIErrorPrototype%":URIError.prototype,"%WeakMap%":"undefined"==typeof WeakMap?void 0:WeakMap,"%WeakMapPrototype%":"undefined"==typeof WeakMap?void 0:WeakMap.prototype,"%WeakSet%":"undefined"==typeof WeakSet?void 0:WeakSet,"%WeakSetPrototype%":"undefined"==typeof WeakSet?void 0:WeakSet.prototype},g=n(4),m=g.call(Function.call,String.prototype.replace),y=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,b=/\\(\\)?/g,w=function(e){var t=[];return m(e,y,function(e,n,r,o){t[t.length]=r?m(o,b,"$1"):n||e}),t},x=function(e,t){if(!(e in v))throw new SyntaxError("intrinsic "+e+" does not exist!");if(void 0===v[e]&&!t)throw new r("intrinsic "+e+" exists, but is not available. Please file an issue!");return v[e]};e.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new TypeError('"allowMissing" argument must be a boolean');for(var n=w(e),i=x("%"+(n.length>0?n[0]:"")+"%",t),a=1;a=n.length){var s=o(i,n[a]);if(!(t||n[a]in i))throw new r("base intrinsic for "+e+" exists, but the property is not available.");i=s?s.get||s.value:i[n[a]]}else i=i[n[a]];return i}},function(e,t,n){"use strict";t.__esModule=!0;t.DEFAULT_EMOJI_CDN="//img.t.sinajs.cn/t4/appstyle/expression/ext/normal/",t.DB_NAME="Comment",t.defaultConfig={lang:"zh-CN",langMode:null,appId:"",appKey:"",clazzName:"Comment",meta:["nick","mail","link"],path:location.pathname,placeholder:"Just Go Go",pageSize:10,recordIP:!0,serverURLs:"",visitor:!1,emojiCDN:"",emojiMaps:void 0,enableQQ:!1,requiredFields:[]},t.defaultMeta=["nick","mail","link"],t.QQCacheKey="_v_Cache_Q",t.MetaCacheKey="_v_Cache_Meta",t.RandomStr=(Date.now()+Math.round(1e3*Math.random())).toString(32),t.VERSION="1.4.14"},function(e,t,n){function r(e,t){return new i(t).process(e)}var o=n(7),i=n(29);t=e.exports=r,t.FilterCSS=i;for(var a in o)t[a]=o[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t,n){"use strict";var r=n(32);e.exports=Function.prototype.bind||r},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n':""}};t.default=o},function(e,t){function n(){var e={};return e["align-content"]=!1,e["align-items"]=!1,e["align-self"]=!1,e["alignment-adjust"]=!1,e["alignment-baseline"]=!1,e.all=!1,e["anchor-point"]=!1,e.animation=!1,e["animation-delay"]=!1,e["animation-direction"]=!1,e["animation-duration"]=!1,e["animation-fill-mode"]=!1,e["animation-iteration-count"]=!1,e["animation-name"]=!1,e["animation-play-state"]=!1,e["animation-timing-function"]=!1,e.azimuth=!1,e["backface-visibility"]=!1,e.background=!0,e["background-attachment"]=!0,e["background-clip"]=!0,e["background-color"]=!0,e["background-image"]=!0,e["background-origin"]=!0,e["background-position"]=!0,e["background-repeat"]=!0,e["background-size"]=!0,e["baseline-shift"]=!1,e.binding=!1,e.bleed=!1,e["bookmark-label"]=!1,e["bookmark-level"]=!1,e["bookmark-state"]=!1,e.border=!0,e["border-bottom"]=!0,e["border-bottom-color"]=!0,e["border-bottom-left-radius"]=!0,e["border-bottom-right-radius"]=!0,e["border-bottom-style"]=!0,e["border-bottom-width"]=!0,e["border-collapse"]=!0,e["border-color"]=!0,e["border-image"]=!0,e["border-image-outset"]=!0,e["border-image-repeat"]=!0,e["border-image-slice"]=!0,e["border-image-source"]=!0,e["border-image-width"]=!0,e["border-left"]=!0,e["border-left-color"]=!0,e["border-left-style"]=!0,e["border-left-width"]=!0,e["border-radius"]=!0,e["border-right"]=!0,e["border-right-color"]=!0,e["border-right-style"]=!0,e["border-right-width"]=!0,e["border-spacing"]=!0,e["border-style"]=!0,e["border-top"]=!0,e["border-top-color"]=!0,e["border-top-left-radius"]=!0,e["border-top-right-radius"]=!0,e["border-top-style"]=!0,e["border-top-width"]=!0,e["border-width"]=!0,e.bottom=!1,e["box-decoration-break"]=!0,e["box-shadow"]=!0,e["box-sizing"]=!0,e["box-snap"]=!0,e["box-suppress"]=!0,e["break-after"]=!0,e["break-before"]=!0,e["break-inside"]=!0,e["caption-side"]=!1,e.chains=!1,e.clear=!0,e.clip=!1,e["clip-path"]=!1,e["clip-rule"]=!1,e.color=!0,e["color-interpolation-filters"]=!0,e["column-count"]=!1,e["column-fill"]=!1,e["column-gap"]=!1,e["column-rule"]=!1,e["column-rule-color"]=!1,e["column-rule-style"]=!1,e["column-rule-width"]=!1,e["column-span"]=!1,e["column-width"]=!1,e.columns=!1,e.contain=!1,e.content=!1,e["counter-increment"]=!1,e["counter-reset"]=!1,e["counter-set"]=!1,e.crop=!1,e.cue=!1,e["cue-after"]=!1,e["cue-before"]=!1,e.cursor=!1,e.direction=!1,e.display=!0,e["display-inside"]=!0,e["display-list"]=!0,e["display-outside"]=!0,e["dominant-baseline"]=!1,e.elevation=!1,e["empty-cells"]=!1,e.filter=!1,e.flex=!1,e["flex-basis"]=!1,e["flex-direction"]=!1,e["flex-flow"]=!1,e["flex-grow"]=!1,e["flex-shrink"]=!1,e["flex-wrap"]=!1,e.float=!1,e["float-offset"]=!1,e["flood-color"]=!1,e["flood-opacity"]=!1,e["flow-from"]=!1,e["flow-into"]=!1,e.font=!0,e["font-family"]=!0,e["font-feature-settings"]=!0,e["font-kerning"]=!0,e["font-language-override"]=!0,e["font-size"]=!0,e["font-size-adjust"]=!0,e["font-stretch"]=!0,e["font-style"]=!0,e["font-synthesis"]=!0,e["font-variant"]=!0,e["font-variant-alternates"]=!0,e["font-variant-caps"]=!0,e["font-variant-east-asian"]=!0,e["font-variant-ligatures"]=!0,e["font-variant-numeric"]=!0,e["font-variant-position"]=!0,e["font-weight"]=!0,e.grid=!1,e["grid-area"]=!1,e["grid-auto-columns"]=!1,e["grid-auto-flow"]=!1,e["grid-auto-rows"]=!1,e["grid-column"]=!1,e["grid-column-end"]=!1,e["grid-column-start"]=!1,e["grid-row"]=!1,e["grid-row-end"]=!1,e["grid-row-start"]=!1,e["grid-template"]=!1,e["grid-template-areas"]=!1,e["grid-template-columns"]=!1,e["grid-template-rows"]=!1,e["hanging-punctuation"]=!1,e.height=!0,e.hyphens=!1,e.icon=!1,e["image-orientation"]=!1,e["image-resolution"]=!1,e["ime-mode"]=!1,e["initial-letters"]=!1,e["inline-box-align"]=!1,e["justify-content"]=!1,e["justify-items"]=!1,e["justify-self"]=!1,e.left=!1,e["letter-spacing"]=!0,e["lighting-color"]=!0,e["line-box-contain"]=!1,e["line-break"]=!1,e["line-grid"]=!1,e["line-height"]=!1,e["line-snap"]=!1,e["line-stacking"]=!1,e["line-stacking-ruby"]=!1,e["line-stacking-shift"]=!1,e["line-stacking-strategy"]=!1,e["list-style"]=!0,e["list-style-image"]=!0,e["list-style-position"]=!0,e["list-style-type"]=!0,e.margin=!0,e["margin-bottom"]=!0,e["margin-left"]=!0,e["margin-right"]=!0,e["margin-top"]=!0,e["marker-offset"]=!1,e["marker-side"]=!1,e.marks=!1,e.mask=!1,e["mask-box"]=!1,e["mask-box-outset"]=!1,e["mask-box-repeat"]=!1,e["mask-box-slice"]=!1,e["mask-box-source"]=!1,e["mask-box-width"]=!1,e["mask-clip"]=!1,e["mask-image"]=!1,e["mask-origin"]=!1,e["mask-position"]=!1,e["mask-repeat"]=!1,e["mask-size"]=!1,e["mask-source-type"]=!1,e["mask-type"]=!1,e["max-height"]=!0,e["max-lines"]=!1,e["max-width"]=!0,e["min-height"]=!0,e["min-width"]=!0,e["move-to"]=!1,e["nav-down"]=!1,e["nav-index"]=!1,e["nav-left"]=!1,e["nav-right"]=!1,e["nav-up"]=!1,e["object-fit"]=!1,e["object-position"]=!1,e.opacity=!1,e.order=!1,e.orphans=!1,e.outline=!1,e["outline-color"]=!1,e["outline-offset"]=!1,e["outline-style"]=!1,e["outline-width"]=!1,e.overflow=!1,e["overflow-wrap"]=!1,e["overflow-x"]=!1,e["overflow-y"]=!1,e.padding=!0,e["padding-bottom"]=!0,e["padding-left"]=!0,e["padding-right"]=!0,e["padding-top"]=!0,e.page=!1,e["page-break-after"]=!1,e["page-break-before"]=!1,e["page-break-inside"]=!1,e["page-policy"]=!1,e.pause=!1,e["pause-after"]=!1,e["pause-before"]=!1,e.perspective=!1,e["perspective-origin"]=!1,e.pitch=!1,e["pitch-range"]=!1,e["play-during"]=!1,e.position=!1,e["presentation-level"]=!1,e.quotes=!1,e["region-fragment"]=!1,e.resize=!1,e.rest=!1,e["rest-after"]=!1,e["rest-before"]=!1,e.richness=!1,e.right=!1,e.rotation=!1,e["rotation-point"]=!1,e["ruby-align"]=!1,e["ruby-merge"]=!1,e["ruby-position"]=!1,e["shape-image-threshold"]=!1,e["shape-outside"]=!1,e["shape-margin"]=!1,e.size=!1,e.speak=!1,e["speak-as"]=!1,e["speak-header"]=!1,e["speak-numeral"]=!1,e["speak-punctuation"]=!1,e["speech-rate"]=!1,e.stress=!1,e["string-set"]=!1,e["tab-size"]=!1,e["table-layout"]=!1,e["text-align"]=!0,e["text-align-last"]=!0,e["text-combine-upright"]=!0,e["text-decoration"]=!0,e["text-decoration-color"]=!0,e["text-decoration-line"]=!0,e["text-decoration-skip"]=!0,e["text-decoration-style"]=!0,e["text-emphasis"]=!0,e["text-emphasis-color"]=!0,e["text-emphasis-position"]=!0,e["text-emphasis-style"]=!0,e["text-height"]=!0,e["text-indent"]=!0,e["text-justify"]=!0,e["text-orientation"]=!0,e["text-overflow"]=!0,e["text-shadow"]=!0,e["text-space-collapse"]=!0,e["text-transform"]=!0,e["text-underline-position"]=!0,e["text-wrap"]=!0,e.top=!1,e.transform=!1,e["transform-origin"]=!1,e["transform-style"]=!1,e.transition=!1,e["transition-delay"]=!1,e["transition-duration"]=!1,e["transition-property"]=!1,e["transition-timing-function"]=!1,e["unicode-bidi"]=!1,e["vertical-align"]=!1,e.visibility=!1,e["voice-balance"]=!1,e["voice-duration"]=!1,e["voice-family"]=!1,e["voice-pitch"]=!1,e["voice-range"]=!1,e["voice-rate"]=!1,e["voice-stress"]=!1,e["voice-volume"]=!1,e.volume=!1,e["white-space"]=!1,e.widows=!1,e.width=!0,e["will-change"]=!1,e["word-break"]=!0,e["word-spacing"]=!0,e["word-wrap"]=!0,e["wrap-flow"]=!1,e["wrap-through"]=!1,e["writing-mode"]=!1,e["z-index"]=!1,e}function r(e,t,n){}function o(e,t,n){}function i(e,t){return a.test(t)?"":t}var a=/javascript\s*\:/gim;t.whiteList=n(),t.getDefaultWhiteList=n,t.onAttr=r,t.onIgnoreAttr=o,t.safeAttrValue=i},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n2?arguments[2]:{},i=r(t);o&&(i=a.call(i,Object.getOwnPropertySymbols(t)));for(var s=0;s=0&&"[object Function]"===r.call(e.callee)),n}},function(e,t,n){"use strict";var r=n(45),o=n(44),i=n(46),a=i("String.prototype.replace"),s=/^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/,l=/[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/;e.exports=function(){var e=o(r(this));return a(a(e,s,""),l,"")}},function(e,t,n){"use strict";var r=n(4),o=n(1),i=o("%Function%"),a=i.apply,s=i.call;e.exports=function(){return r.apply(s,arguments)},e.exports.apply=function(){return r.apply(a,arguments)}},function(e,t,n){"use strict";var r=n(11),o="​";e.exports=function(){return String.prototype.trim&&o.trim()===o?String.prototype.trim:r}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){function r(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]}}function o(e,t,n){}function i(e,t,n){}function a(e,t,n){}function s(e,t,n){}function l(e){return e.replace(S,"<").replace(O,">")}function c(e,t,n,r){if(n=v(n),"href"===t||"src"===t){if("#"===(n=_.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(I.lastIndex=0,I.test(n))return""}else if("style"===t){if(P.lastIndex=0,P.test(n))return"";if(M.lastIndex=0,M.test(n)&&(I.lastIndex=0,I.test(n)))return"";!1!==r&&(r=r||A,n=r.process(n))}return n=g(n)}function u(e){return e.replace($,""")}function d(e){return e.replace(E,'"')}function p(e){return e.replace(j,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function f(e){return e.replace(T,":").replace(C," ")}function h(e){for(var t="",n=0,r=e.length;n/g,$=/"/g,E=/"/g,j=/&#([a-zA-Z0-9]*);?/gim,T=/:?/gim,C=/&newline;?/gim,I=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,P=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,M=/u\s*r\s*l\s*\(.*/gi,R=//g;t.whiteList=r(),t.getDefaultWhiteList=r,t.onTag=o,t.onIgnoreTag=i,t.onTagAttr=a,t.onIgnoreTagAttr=s,t.safeAttrValue=c,t.escapeHtml=l,t.escapeQuote=u,t.unescapeQuote=d,t.escapeHtmlEntities=p,t.escapeDangerHtml5Entities=f,t.clearNonPrintableCharacter=h,t.friendlyAttrValue=v,t.escapeAttrValue=g,t.onIgnoreTagStripAll=m,t.StripTagBody=y,t.stripCommentTag=b,t.stripBlankChar=w,t.cssFilter=A,t.getDefaultCSSWhiteList=k},function(e,t,n){function r(e){var t=d.spaceIndex(e);if(-1===t)var n=e.slice(1,-1);else var n=e.slice(1,t+1);return n=d.trim(n).toLowerCase(),"/"===n.slice(0,1)&&(n=n.slice(1)),"/"===n.slice(-1)&&(n=n.slice(0,-1)),n}function o(e){return""===f){i+=n(e.slice(a,s)),p=e.slice(s,c+1),d=r(p),i+=t(s,i.length,d,p,o(p)),a=c+1,s=!1;continue}if(('"'===f||"'"===f)&&"="===e.charAt(c-1)){l=f;continue}}else if(f===l){l=!1;continue}}return a0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}function u(e){return c(e)?e.substr(1,e.length-2):e}var d=n(5),p=/[^a-zA-Z0-9_:\.\-]/gim;t.parseTag=i,t.parseAttr=a},function(e,t,n){var r,o,i;/*! + autosize 4.0.2 + license: MIT + http://www.jacklmoore.com/autosize +*/ +!function(n,a){o=[e,t],r=a,void 0!==(i="function"==typeof r?r.apply(t,o):r)&&(e.exports=i)}(0,function(e,t){"use strict";function n(e){function t(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function n(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){if(0!==e.scrollHeight){var t=n(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="",e.style.height=e.scrollHeight+s+"px",l=e.clientWidth,t.forEach(function(e){e.node.scrollTop=e.scrollTop}),r&&(document.documentElement.scrollTop=r)}}function o(){r();var n=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i="content-box"===o.boxSizing?Math.round(parseFloat(o.height)):e.offsetHeight;if(i-1},get:function(n){return t[e.indexOf(n)]},set:function(n,r){-1===e.indexOf(n)&&(e.push(n),t.push(r))},delete:function(n){var r=e.indexOf(n);r>-1&&(e.splice(r,1),t.splice(r,1))}}}(),a=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){a=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var s=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(s=function(e){return e},s.destroy=function(e){return e},s.update=function(e){return e}):(s=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e)}),e},s.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e},s.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e}),t.default=s,e.exports=t.default})},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return!!e&&this.init(e),this}function i(e){return new o(e)}var a=n(26),s=r(a),l=n(17),c=r(l),u=n(20),d=r(u),p=n(6),f=r(p),h=n(2),v=n(24),g=r(v),m=n(0),y=r(m),b=n(22),w=r(b),x=n(19),k=r(x),_=n(23),A=n(25),S=r(A),O=n(21),$=r(O),E={comment:"",nick:"",mail:"",link:"",ua:y.default.ua,url:"",QQAvatar:""},j="",T={cdn:"https://gravatar.loli.net/avatar/",ds:["mp","identicon","monsterid","wavatar","robohash","retro",""],params:"",hide:!1};o.prototype.init=function(e){if("undefined"==typeof document)throw new Error("Sorry, Valine does not support Server-side rendering.");var t=this;return e&&(e=y.default.extend(h.defaultConfig,e),t.i18n=(0,d.default)(e.lang||y.default.lang,e.langMode),t.config=e,f.default.maps=!!e.emojiMaps&&e.emojiMaps||f.default.maps,f.default.cdn=!!e.emojiCDN&&e.emojiCDN||f.default.cdn,t._init()),t},o.prototype._init=function(){var e=this;try{var t=e.config,n=t.avatar,r=t.avatarForce,o=t.avatar_cdn,i=t.visitor,a=t.path,s=void 0===a?location.pathname:a,l=t.pageSize,c=t.recordIP;e.config.path=s.replace(/index\.html?$/,"");var u=T.ds,d=r?"&q="+h.RandomStr:"";T.params="?d="+(u.indexOf(n)>-1?n:"mp")+"&v="+h.VERSION+d,T.hide="hide"===n,T.cdn=/^https?\:\/\//.test(o)?o:T.cdn,e.config.pageSize=isNaN(l)?10:l<1?10:l,c&&(0,_.recordIPFn)(function(e){return E.ip=e});var p=e.config.el||null,f=(0,y.default)(p);if(p=p instanceof HTMLElement?p:f[f.length-1]||null){e.$el=(0,y.default)(p),e.$el.addClass("v").attr("data-class","v"),T.hide&&e.$el.addClass("hide-avatar"),e.config.meta=(e.config.guest_info||e.config.meta||h.defaultMeta).filter(function(e){return h.defaultMeta.indexOf(e)>-1}),e.config.requiredFields=e.config.requiredFields.filter(function(e){return h.defaultMeta.indexOf(e)>-1});var v=(0==e.config.meta.length?h.defaultMeta:e.config.meta).map(function(t){var n="mail"==t?"email":"text";return h.defaultMeta.indexOf(t)>-1?'':""}),g='
'+v.join("")+'
Powered By Valine
v'+h.VERSION+"
";e.$el.html(g),e.$el.find(".cancel-reply").on("click",function(t){e.reset()});var m=e.$el.find(".vempty");e.$nodata={show:function(t){return m.html(t||e.i18n.t("sofa")).show(),e},hide:function(){return m.hide(),e}};var b=e.$el.find(".vload-bottom"),w=e.$el.find(".vload-top");e.$loading={show:function(t){return t&&w.show()||b.show(),e.$nodata.hide(),e},hide:function(){return w.hide(),b.hide(),0===e.$el.find(".vcard").length&&e.$nodata.show(),e}}}(0,k.default)(e.config,function(t){var n=(0,y.default)(".valine-comment-count"),r=0;!function t(n){var o=n[r++];if(o){var i=(0,y.default)(o).attr("data-xid");!!i&&e.Q(i).count().then(function(e){o.innerText=e,t(n)}).catch(function(e){o.innerText=0})}}(n),i&&I.add(AV.Object.extend("Counter"),e.config.path),e.$el&&e.bind()})}catch(t){(0,$.default)(e,t,"init")}};var C=function(e,t){var n=new e,r=new AV.ACL;r.setPublicReadAccess(!0),r.setPublicWriteAccess(!0),n.setACL(r),n.set("url",t.url),n.set("xid",t.xid),n.set("title",t.title),n.set("time",1),n.save().then(function(e){(0,y.default)(t.el).find(".leancloud-visitors-count").text(1)}).catch(function(e){})},I={add:function(e,t){var n=this,r=(0,y.default)(".leancloud_visitors,.leancloud-visitors");if(1===r.length){var o=r[0],i=decodeURI((0,y.default)(o).attr("id")),a=(0,y.default)(o).attr("data-flag-title"),s=encodeURI(i),l={el:o,url:i,xid:s,title:a};if(decodeURI(i)===decodeURI(t)){var c=new AV.Query(e);c.equalTo("url",i),c.find().then(function(t){if(t.length>0){var n=t[0];n.increment("time"),n.save().then(function(e){(0,y.default)(o).find(".leancloud-visitors-count").text(e.get("time"))}).catch(function(e){})}else C(e,l)}).catch(function(t){101==t.code?C(e,l):(0,$.default)(n,t)})}else I.show(e,r)}else I.show(e,r)},show:function(e,t){var n=[];if(t.forEach(function(e){var t=(0,y.default)(e).find(".leancloud-visitors-count");t&&t.text("0"),n.push(/\%/.test((0,y.default)(e).attr("id"))?decodeURI((0,y.default)(e).attr("id")):(0,y.default)(e).attr("id"))}),n.length){var r=new AV.Query(e);r.containedIn("url",n),r.find().then(function(e){e.length>0&&t.forEach(function(t){e.forEach(function(e){var n=e.get("xid")||encodeURI(e.get("url")),r=e.get("time"),o=(0,y.default)(t),i=o.attr("id");if((/\%/.test(i)?i:encodeURI(i))==n){var a=o.find(".leancloud-visitors-count");a&&a.text(r)}})})}).catch(function(e){})}}};o.prototype.Q=function(e){var t=this,n=arguments.length,r=t.config.clazzName;if(1==n){var o=new AV.Query(r);o.doesNotExist("rid");var i=new AV.Query(r);i.equalTo("rid","");var a=AV.Query.or(o,i);return"*"===e?a.exists("url"):a.equalTo("url",decodeURI(e)),a.addDescending("createdAt"),a.addDescending("insertedAt"),a}var s=JSON.stringify(arguments[1]).replace(/(\[|\])/g,""),l="select * from "+r+" where rid in ("+s+") order by -createdAt,-createdAt";return AV.Query.doCloudQuery(l)},o.prototype.installLocale=function(e,t){var n=this;return n.i18n(e,t),n},o.prototype.setPath=function(e){return this.config.path=e,this},o.prototype.bind=function(){var e=this,t=e.$el.find(".vemojis"),n=e.$el.find(".vpreview"),r=e.$el.find(".vemoji-btn"),o=e.$el.find(".vpreview-btn"),i=e.$el.find(".veditor"),a=f.default.maps,l=!1,u=function(e){var n=[];for(var r in a)a.hasOwnProperty(r)&&!!f.default.build(r)&&n.push(''+f.default.build(r)+"");t.html(n.join("")),l=!0,t.find("i").on("click",function(e){e.preventDefault(),x(i[0]," :"+(0,y.default)(this).attr("title")+":")})};e.$emoji={show:function(){return!l&&u(),e.$preview.hide(),t.show(),r.addClass("actived"),e.$emoji},hide:function(){return r.removeClass("actived"),t.hide(),e.$emoji}},e.$preview={show:function(){return j?(e.$emoji.hide(),o.addClass("actived"),n.html(j).show(),M()):e.$preview.hide(),e.$preview},hide:function(){return o.removeClass("actived"),n.hide().html(""),e.$preview}};var d=function(t){var r=(0,w.default)(t.val()||"");r||e.$preview.hide(),j!=r&&(j=r,o.hasClass("actived")>-1&&j!=n.html()&&n.html(j),(0,c.default)(t[0]),M())};r.on("click",function(t){r.hasClass("actived")?e.$emoji.hide():e.$emoji.show()}),o.on("click",function(t){o.hasClass("actived")?e.$preview.hide():e.$preview.show()});var p=e.config.meta,v={},m={veditor:"comment"};p.forEach(function(e){m["v"+e]=e});for(var b in m)m.hasOwnProperty(b)&&function(){var t=m[b],n=e.$el.find("."+b);v[t]=n,n.on("input change blur propertychange",function(r){e.config.enableQQ&&"blur"===r.type&&"nick"===t&&(isNaN(n.val())?y.default.store.get(h.QQCacheKey)&&y.default.store.get(h.QQCacheKey).nick!=n.val()&&(y.default.store.remove(h.QQCacheKey),E.nick=n.val(),E.mail="",E.QQAvatar=""):(0,_.fetchQQFn)(n.val(),function(e){var t=e.nick||n.val(),r=e.qq+"@qq.com";(0,y.default)(".vnick").val(t),(0,y.default)(".vmail").val(r),E.nick=t,E.mail=r,E.QQAvatar=e.pic})),"comment"===t?d(n):E[t]=y.default.escape(n.val().replace(/(^\s*)|(\s*$)/g,"")).substring(0,40)})}();var x=function(e,t){if(document.selection){e.focus();document.selection.createRange().text=t,e.focus()}else if(e.selectionStart||"0"==e.selectionStart){var n=e.selectionStart,r=e.selectionEnd,o=e.scrollTop;e.value=e.value.substring(0,n)+t+e.value.substring(r,e.value.length),e.focus(),e.selectionStart=n+t.length,e.selectionEnd=n+t.length,e.scrollTop=o}else e.focus(),e.value+=t;setTimeout(function(t){d((0,y.default)(e))},100)},k={no:1,size:e.config.pageSize,skip:e.config.pageSize},A=e.$el.find(".vpage");A.on("click",function(e){A.hide(),k.no++,O()});var O=function(){var t=k.size,n=k.no,r=Number(e.$el.find(".vnum").text());e.$loading.show();var o=e.Q(e.config.path);o.limit(t),o.skip((n-1)*t),o.find().then(function(o){if(k.skip=k.size,o&&o.length){var i=[];o.forEach(function(t){i.push(t.id),C(t,e.$el.find(".vcards"),!0)}),e.Q(e.config.path,i).then(function(e){(e&&e.results||[]).forEach(function(e){C(e,(0,y.default)('.vquote[data-self-id="'+e.get("rid")+'"]'))}).catch(function(e){})}),t*n0?(e.$el.find(".vcount").show().find(".vnum").text(t),O()):e.$loading.hide()}).catch(function(t){(0,$.default)(e,t,"count")});var C=function(t,n,r){var o=(0,y.default)('
'),i=t.get("ua"),a="";i&&!/ja/.test(e.config.lang)&&(i=y.default.detect(i),a=''+i.browser+" "+i.version+' '+i.os+" "+i.osVersion+""),"*"===e.config.path&&(a=''+t.get("url")+"");var l=t.get("link")?/^https?\:\/\//.test(t.get("link"))?t.get("link"):"http://"+t.get("link"):"",c=l?''+t.get("nick")+"":''+t.get("nick")+"",u=T.hide?"":e.config.enableQQ&&t.get("QQAvatar")?'':'',d=u+'
'+c+" "+a+'
'+(0,g.default)(t.get("insertedAt"),e.i18n)+''+e.i18n.t("reply")+'
'+(0,S.default)(t.get("comment"))+'
';o.html(d);var p=o.find(".vat");o.find("a").forEach(function(e){e&&!(0,y.default)(e).hasClass("at")&&(0,y.default)(e).attr({target:"_blank",rel:"nofollow"})}),r?n.append(o):n.prepend(o);var f=o.find(".vcontent");f&&R(f),p&&P(p,t),M()},I={},P=function(t,n){t.on("click",function(r){var o=t.attr("data-vm-id"),i=t.attr("data-self-id"),a=e.$el.find(".vwrap"),s="@"+y.default.escape(n.get("nick"));(0,y.default)('.vreply-wrapper[data-self-id="'+i+'"]').append(a).find(".cancel-reply").show(),I={at:y.default.escape(s)+" ",rid:o,pid:i,rmail:n.get("mail")},v.comment.attr({placeholder:s})[0].focus()})},M=function(){setTimeout(function(){try{"MathJax"in window&&"version"in window.MathJax&&(/^3.*/.test(window.MathJax.version)&&MathJax.typeset()||MathJax.Hub.Queue(["Typeset",MathJax.Hub,document.querySelector(".v")])),"renderMathInElement"in window&&renderMathInElement((0,y.default)(".v")[0],{delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1}]})}catch(e){}},100)},R=function(e){setTimeout(function(){e[0].offsetHeight>200&&(e.addClass("expand"),e.on("click",function(t){e.removeClass("expand")}))})};!function(t){if(t=y.default.store.get(h.MetaCacheKey)||t)for(var n in p){var r=p[n];e.$el.find(".v"+r).val(y.default.unescape(t[r])),E[r]=t[r]}var o=y.default.store.get(h.QQCacheKey);E.QQAvatar=e.config.enableQQ&&!!o&&o.pic||""}(),e.reset=function(){E.comment="",v.comment.val(""),d(v.comment),v.comment.attr("placeholder",e.config.placeholder),I={},e.$preview.hide(),e.$el.find(".vpanel").append(e.$el.find(".vwrap")),e.$el.find(".cancel-reply").hide(),j=""};var z=e.$el.find(".vsubmit"),L=function(t){if(e.config.requiredFields.indexOf("nick")>-1&&E.nick.length<3)return v.nick[0].focus(),void e.$el.find(".status-bar").text(""+e.i18n.t("nickFail")).empty(3e3);if(e.config.requiredFields.indexOf("mail")>-1&&!/[\w-\.]+@([\w-]+\.)+[a-z]{2,3}/.test(E.mail))return v.mail[0].focus(),void e.$el.find(".status-bar").text(""+e.i18n.t("mailFail")).empty(3e3);if(""==j)return void v.comment[0].focus();E.comment=j,E.nick=E.nick||"Anonymous";var n=y.default.store.get("vlx");if(n){if(Date.now()/1e3-n/1e3<20)return void e.$el.find(".status-bar").text(e.i18n.t("busy")).empty(3e3)}U()},F=function(){var e=new AV.ACL;return e.setPublicReadAccess(!0),e.setPublicWriteAccess(!1),e},U=function(){y.default.store.set("vlx",Date.now()),z.attr({disabled:!0}),e.$loading.show(!0);var t=AV.Object.extend(e.config.clazzName||"Comment"),n=new t;if(E.url=decodeURI(e.config.path),E.insertedAt=new Date,I.rid){var r=I.pid||I.rid;n.set("rid",I.rid),n.set("pid",r),E.comment=j.replace("

",'

'+I.at+" , ")}for(var o in E)if(E.hasOwnProperty(o)){var i=E[o];n.set(o,i)}n.setACL(F()),n.save().then(function(t){"Anonymous"!=E.nick&&y.default.store.set(h.MetaCacheKey,{nick:E.nick,link:E.link,mail:E.mail});var n=e.$el.find(".vnum");try{I.rid?C(t,(0,y.default)('.vquote[data-self-id="'+I.rid+'"]'),!0):(Number(n.text())?n.text(Number(n.text())+1):e.$el.find(".vcount").show().find(".vnum").text(Number(n.text())+1),C(t,e.$el.find(".vcards")),k.skip++),z.removeAttr("disabled"),e.$loading.hide(),e.reset()}catch(t){(0,$.default)(e,t,"save")}}).catch(function(t){(0,$.default)(e,t,"commitEvt")})};z.on("click",L),(0,y.default)(document).on("keydown",function(e){e=event||e;var t=e.keyCode||e.which||e.charCode;((e.ctrlKey||e.metaKey)&&13===t&&L(),9===t)&&("veditor"==(document.activeElement.id||"")&&(e.preventDefault(),x(i[0]," ")))}).on("paste",function(e){var t="clipboardData"in e?e.clipboardData:e.originalEvent&&e.originalEvent.clipboardData||window.clipboardData;t&&B(t.items,!0)}),i.on("dragenter dragleave dragover drop",function(e){e.stopPropagation(),e.preventDefault(),"drop"===e.type&&B(e.dataTransfer.items)});var B=function(e,t){for(var n=[],r=0,o=e.length;r]+>/g,""))});else if(-1!==a.type.indexOf("image")){n.push(a.getAsFile());continue}}N(n)},N=function t(n,r){r=r||0;var o=n.length;if(o>0){var a=n[r];z.attr({disabled:!0});var s="![Uploading "+a.name+"...]()";x(i[0],s),Q(a,function(l){500!=l.code?(i.val(i.val().replace(s,"!["+a.name+"]("+l.data.url+")\r\n")),(0,c.default)(i[0]),++r2?i=!!AV.applicationId&&!!AV.applicationKey:o.default.deleteInWin("AV",0)}i?t&&t():o.default.sdkLoader("//cdn.jsdelivr.net/npm/leancloud-storage@3/dist/av-min.js","AV",function(n){var r="https://",o="",a=e.app_id||e.appId,s=e.app_key||e.appKey;if(!e.serverURLs)switch(a.slice(-9)){case"-9Nh9j0Va":r+="tab.";break;case"-MdYXbMMI":r+="us."}o=e.serverURLs||r+"avoscloud.com",AV.init({appId:a,appKey:s,serverURLs:o}),i=!0,t&&t()})}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(37),i=r(o),a=n(56),s=r(a),l=n(57),c=r(l),u=n(54),d=r(u),p=n(55),f=r(p),h={zh:s.default,"zh-cn":s.default,"zh-CN":s.default,"zh-TW":c.default,en:d.default,"en-US":d.default,ja:f.default,"ja-JP":f.default};t.default=function(e,t){return!h[e]&&e&&t&&(h[e]=t),new i.default({phrases:h[e||"zh"],locale:e})}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(e.$el&&e.$loading.hide().$nodata.hide(),"[object Error]"==={}.toString.call(t)){var n=t.code||t.message||t.error||"";if(isNaN(n))e.$el&&e.$nodata.show('

 '+JSON.stringify(t)+"
");else{var r=e.i18n.t("code-"+n),o=(r=="code-"+n?void 0:r)||t.message||t.error||"";101==n||-1==n?e.$nodata.show():e.$el&&e.$nodata.show('
Code '+n+": "+o+"
")}}else e.$el&&e.$nodata.show('
'+JSON.stringify(t)+"
")}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(36),i=r(o),a=n(0),s=r(a),l=n(6),c=r(l),u=n(33),d=new o.Renderer;d.code=function(e,t){return'
'+(!t||!hljs.getLanguage(t)?s.default.escape(e):hljs.highlight(t,e).value)+"
"},i.default.setOptions({renderer:"hljs"in window?d:new o.Renderer,highlight:function(e,t){return"hljs"in window?t&&hljs.getLanguage(t)&&hljs.highlight(t,e,!0).value||hljs.highlightAuto(e).value:u(e)},gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!0,headerPrefi:"v-"}),t.default=function(e){return c.default.parse((0,i.default)(e))}},function(e,t,n){"use strict";t.__esModule=!0,t.recordIPFn=t.fetchQQFn=void 0;var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=n(2),a=function(e,t){var n=o.default.store.get(i.QQCacheKey);n&&n.qq==e?t&&t(n):o.default.ajax({type:"POST",url:"//valine.api.ioliu.cn/getqqinfo",data:{qq:e},success:function(e){e.errmsg||(o.default.store.set(i.QQCacheKey,e),t&&t(e))}})},s=function(e){o.default.sdkLoader("//api.ip.sb/jsonip?callback=getIP","getIP"),window.getIP=function(t){e&&e(t.ip),o.default.deleteInWin("getIP")}};t.fetchQQFn=a,t.recordIPFn=s},function(e,t,n){"use strict";var r=function(e,t){if(!e)return"";try{var n=i(e).getTime(),r=(new Date).getTime(),a=r-n,s=Math.floor(a/864e5);if(0===s){var l=a%864e5,c=Math.floor(l/36e5);if(0===c){var u=l%36e5,d=Math.floor(u/6e4);if(0===d){var p=u%6e4;return Math.round(p/1e3)+" "+t.t("seconds")}return d+" "+t.t("minutes")}return c+" "+t.t("hours")}return s<0?t.t("now"):s<8?s+" "+t.t("days"):o(e)}catch(e){}},o=function(e){var t=a(e.getDate(),2),n=a(e.getMonth()+1,2);return a(e.getFullYear(),2)+"-"+n+"-"+t},i=function e(t){return t instanceof Date?t:!isNaN(t)||/^\d+$/.test(t)?new Date(parseInt(t)):/GMT/.test(t||"")?e(new Date(t).getTime()):(t=(t||"").replace(/(^\s*)|(\s*$)/g,"").replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(t))},a=function(e,t){for(var n=e.toString();n.length/gi,"")};var i=function(e,t,n,r){if(/code|pre|span/gi.test(e)){if("style"==t)return t+'="'+(/^color/gi.test(n)?n:"").replace(/(color:[#0-9a-fA-F]{1,6};?).+/gi,"$1")+'"';if("class"==t)return t+"='"+o.default.escapeAttrValue(n)+"'"}if("img"===e&&["src","class"].indexOf(t)>-1)return t+'="'+o.default.escapeAttrValue(n)+'" referrerPolicy="no-referrer" '}},function(e,t,n){var r;!function(o){"use strict";function i(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function a(e,t){return e<>>32-t}function s(e,t,n,r,o,s){return i(a(i(i(t,e),i(r,s)),o),n)}function l(e,t,n,r,o,i,a){return s(t&n|~t&r,e,t,o,i,a)}function c(e,t,n,r,o,i,a){return s(t&r|n&~r,e,t,o,i,a)}function u(e,t,n,r,o,i,a){return s(t^n^r,e,t,o,i,a)}function d(e,t,n,r,o,i,a){return s(n^(t|~r),e,t,o,i,a)}function p(e,t){e[t>>5]|=128<>>9<<4)]=t;var n,r,o,a,s,p=1732584193,f=-271733879,h=-1732584194,v=271733878;for(n=0;n>5]>>>t%32&255);return n}function h(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<16&&(o=p(o,8*e.length)),n=0;n<16;n+=1)i[n]=909522486^o[n],a[n]=1549556828^o[n];return r=p(i.concat(h(t)),512+8*t.length),f(p(a.concat(r),640))}function m(e){var t,n,r="0123456789abcdef",o="";for(n=0;n>>4&15)+r.charAt(15&t);return o}function y(e){return unescape(encodeURIComponent(e))}function b(e){return v(y(e))}function w(e){return m(b(e))}function x(e,t){return g(y(e),y(t))}function k(e,t){return m(x(e,t))}function _(e,t,n){return t?n?x(t,e):k(t,e):n?b(e):w(e)}void 0!==(r=function(){return _}.call(t,n,t,e))&&(e.exports=r)}()},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){e=e||navigator.userAgent;var t={},n={Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Edge:e.indexOf("Edge")>-1||e.indexOf("Edg")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,360:e.indexOf("360EE")>-1||e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,macOS:e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1||e.indexOf("BB10")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Pad")>-1||e.indexOf("Nexus 7")>-1};n.Mobile&&(n.Mobile=!(e.indexOf("iPad")>-1));var r={browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Kindle","360","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","macOS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"]};for(var o in r)if(r.hasOwnProperty(o))for(var i=0,a=r[o].length;i=3&&(i=n),"[object Array]"===o.call(e)?a(e,t,i):"string"==typeof e?s(e,t,i):l(e,t,i)};e.exports=c},function(e,t,n){"use strict";var r=Array.prototype.slice,o=Object.prototype.toString;e.exports=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==o.call(t))throw new TypeError("Function.prototype.bind called on incompatible "+t);for(var n,i=r.call(arguments,1),a=function(){if(this instanceof n){var o=t.apply(this,i.concat(r.call(arguments)));return Object(o)===o?o:this}return t.apply(e,i.concat(r.call(arguments)))},s=Math.max(0,t.length-i.length),l=[],c=0;c'+e+""}var t=function(e,t){return t={exports:{}},e(t,t.exports),t.exports}(function(e){var t=e.exports=function(){return new RegExp("(?:"+t.line().source+")|(?:"+t.block().source+")","gm")};t.line=function(){return/(?:^|\s)\/\/(.+?)$/gm},t.block=function(){return/\/\*([\S\s]*?)\*\//gm}}),n=["23AC69","91C132","F19726","E8552D","1AAB8E","E1147F","2980C1","1BA1E6","9FA0A0","F19726","E30B20","E30B20","A3338B"];return function(r,o){void 0===o&&(o={});var i=o.colors;void 0===i&&(i=n);var a=0,s={},l=/[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|\w+/,c=/'+n+"";return a=++a%i.length,l})}})},function(e,t,n){"use strict";var r=n(4);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},function(e,t,n){"use strict";var r=Function.prototype.toString,o=/^\s*class\b/,i=function(e){try{var t=r.call(e);return o.test(t)}catch(e){return!1}},a=function(e){try{return!i(e)&&(r.call(e),!0)}catch(e){return!1}},s=Object.prototype.toString,l="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;e.exports=function(e){if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;if(l)return a(e);if(i(e))return!1;var t=s.call(e);return"[object Function]"===t||"[object GeneratorFunction]"===t}},function(e,t,n){(function(t){!function(t){"use strict";function n(e){this.tokens=[],this.tokens.links={},this.options=e||h.defaults,this.rules=v.normal,this.options.pedantic?this.rules=v.pedantic:this.options.gfm&&(this.options.tables?this.rules=v.tables:this.rules=v.gfm)}function r(e,t){if(this.options=t||h.defaults,this.links=e,this.rules=g.normal,this.renderer=this.options.renderer||new o,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=g.pedantic:this.options.gfm&&(this.options.breaks?this.rules=g.breaks:this.rules=g.gfm)}function o(e){this.options=e||h.defaults}function i(){}function a(e){this.tokens=[],this.token=null,this.options=e||h.defaults,this.options.renderer=this.options.renderer||new o,this.renderer=this.options.renderer,this.renderer.options=this.options}function s(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function l(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function c(e,t){return e=e.source||e,t=t||"",{replace:function(t,n){return n=n.source||n,n=n.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(t,n),this},getRegex:function(){return new RegExp(e,t)}}}function u(e,t){return m[" "+e]||(/^[^:]+:\/*[^/]*$/.test(e)?m[" "+e]=e+"/":m[" "+e]=e.replace(/[^/]*$/,"")),e=m[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^/]*)[\s\S]*/,"$1")+t:e+t}function d(){}function p(e){for(var t,n,r=1;rt)n.splice(t);else for(;n.lengthAn error occurred:

"+s(e.message+"",!0)+"
";throw e}}var v={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:d,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,nptable:d,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)|(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:d,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};v._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,v._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,v.def=c(v.def).replace("label",v._label).replace("title",v._title).getRegex(),v.bullet=/(?:[*+-]|\d+\.)/,v.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,v.item=c(v.item,"gm").replace(/bull/g,v.bullet).getRegex(),v.list=c(v.list).replace(/bull/g,v.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+v.def.source+")").getRegex(),v._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",v._comment=//,v.html=c(v.html,"i").replace("comment",v._comment).replace("tag",v._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),v.paragraph=c(v.paragraph).replace("hr",v.hr).replace("heading",v.heading).replace("lheading",v.lheading).replace("tag",v._tag).getRegex(),v.blockquote=c(v.blockquote).replace("paragraph",v.paragraph).getRegex(),v.normal=p({},v),v.gfm=p({},v.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),v.gfm.paragraph=c(v.paragraph).replace("(?!","(?!"+v.gfm.fences.source.replace("\\1","\\2")+"|"+v.list.source.replace("\\1","\\3")+"|").getRegex(),v.tables=p({},v.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),v.pedantic=p({},v.normal,{html:c("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",v._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),n.rules=v,n.lex=function(e,t){return new n(t).lex(e)},n.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},n.prototype.token=function(e,t){e=e.replace(/^ +$/gm,"");for(var n,r,o,i,a,s,l,c,u,d,p,h,g;e;)if((o=this.rules.newline.exec(e))&&(e=e.substring(o[0].length),o[0].length>1&&this.tokens.push({type:"space"})),o=this.rules.code.exec(e))e=e.substring(o[0].length),o=o[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?o:o.replace(/\n+$/,"")});else if(o=this.rules.fences.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"code",lang:o[2],text:o[3]||""});else if(o=this.rules.heading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if(t&&(o=this.rules.nptable.exec(e))&&(s={type:"table",header:f(o[1].replace(/^ *| *\| *$/g,"")),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3]?o[3].replace(/\n$/,"").split("\n"):[]},s.header.length===s.align.length)){for(e=e.substring(o[0].length),c=0;c ?/gm,""),this.token(o,t),this.tokens.push({type:"blockquote_end"});else if(o=this.rules.list.exec(e)){for(e=e.substring(o[0].length),i=o[2],p=i.length>1,this.tokens.push({type:"list_start",ordered:p,start:p?+i:""}),o=o[0].match(this.rules.item),n=!1,d=o.length,c=0;c1&&a.length>1||(e=o.slice(c+1).join("\n")+e,c=d-1)),r=n||/\n\n(?!\s*$)/.test(s),c!==d-1&&(n="\n"===s.charAt(s.length-1),r||(r=n)),h=/^\[[ xX]\] /.test(s),g=void 0,h&&(g=" "!==s[1],s=s.replace(/^\[[ xX]\] +/,"")),this.tokens.push({type:r?"loose_item_start":"list_item_start",task:h,checked:g}),this.token(s,!1),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(o=this.rules.html.exec(e))e=e.substring(o[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===o[1]||"script"===o[1]||"style"===o[1]),text:o[0]});else if(t&&(o=this.rules.def.exec(e)))e=e.substring(o[0].length),o[3]&&(o[3]=o[3].substring(1,o[3].length-1)),u=o[1].toLowerCase().replace(/\s+/g," "),this.tokens.links[u]||(this.tokens.links[u]={href:o[2],title:o[3]});else if(t&&(o=this.rules.table.exec(e))&&(s={type:"table",header:f(o[1].replace(/^ *| *\| *$/g,"")),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3]?o[3].replace(/(?: *\| *)?\n$/,"").split("\n"):[]},s.header.length===s.align.length)){for(e=e.substring(o[0].length),c=0;c?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:d,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/,em:/^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:d,text:/^[\s\S]+?(?=[\\?@\[\]\\^_`{|}~])/g,g._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,g._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,g.autolink=c(g.autolink).replace("scheme",g._scheme).replace("email",g._email).getRegex(),g._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,g.tag=c(g.tag).replace("comment",v._comment).replace("attribute",g._attribute).getRegex(),g._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,g._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/,g._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,g.link=c(g.link).replace("label",g._label).replace("href",g._href).replace("title",g._title).getRegex(),g.reflink=c(g.reflink).replace("label",g._label).getRegex(),g.normal=p({},g),g.pedantic=p({},g.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:c(/^!?\[(label)\]\((.*?)\)/).replace("label",g._label).getRegex(),reflink:c(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",g._label).getRegex()}),g.gfm=p({},g.normal,{escape:c(g.escape).replace("])","~|])").getRegex(),url:c(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("email",g._email).getRegex(),_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:c(g.text).replace("]|","~]|").replace("|","|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&'*+/=?^_`{\\|}~-]+@|").getRegex()}),g.breaks=p({},g.gfm,{br:c(g.br).replace("{2,}","*").getRegex(),text:c(g.gfm.text).replace("{2,}","*").getRegex()}),r.rules=g,r.output=function(e,t,n){return new r(t,n).output(e)},r.prototype.output=function(e){for(var t,n,o,i,a,l="";e;)if(a=this.rules.escape.exec(e))e=e.substring(a[0].length),l+=a[1];else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),"@"===a[2]?(n=s(this.mangle(a[1])),o="mailto:"+n):(n=s(a[1]),o=n),l+=this.renderer.link(o,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.tag.exec(e))!this.inLink&&/^/i.test(a[0])&&(this.inLink=!1),e=e.substring(a[0].length),l+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):s(a[0]):a[0];else if(a=this.rules.link.exec(e))e=e.substring(a[0].length),this.inLink=!0,o=a[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o),t?(o=t[1],i=t[3]):i=""):i=a[3]?a[3].slice(1,-1):"",o=o.trim().replace(/^<([\s\S]*)>$/,"$1"),l+=this.outputLink(a,{href:r.escapes(o),title:r.escapes(i)}),this.inLink=!1;else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){l+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,l+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),l+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),l+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),l+=this.renderer.codespan(s(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),l+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),l+=this.renderer.del(this.output(a[1]));else if(a=this.rules.text.exec(e))e=e.substring(a[0].length),l+=this.renderer.text(s(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else a[0]=this.rules._backpedal.exec(a[0])[0],e=e.substring(a[0].length),"@"===a[2]?(n=s(a[0]),o="mailto:"+n):(n=s(a[0]),o="www."===a[1]?"http://"+n:n),l+=this.renderer.link(o,null,n);return l},r.escapes=function(e){return e?e.replace(r.rules._escapes,"$1"):e},r.prototype.outputLink=function(e,t){var n=t.href,r=t.title?s(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,s(e[1]))},r.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},r.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,o=0;o.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},o.prototype.code=function(e,t,n){if(this.options.highlight){var r=this.options.highlight(e,t);null!=r&&r!==e&&(n=!0,e=r)}return t?'
'+(n?e:s(e,!0))+"
\n":"
"+(n?e:s(e,!0))+"
"},o.prototype.blockquote=function(e){return"
\n"+e+"
\n"},o.prototype.html=function(e){return e},o.prototype.heading=function(e,t,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"},o.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},o.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},o.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},o.prototype.checkbox=function(e){return" "},o.prototype.paragraph=function(e){return"

    "+e+"

    \n"},o.prototype.table=function(e,t){return t&&(t="
    "+t+""),"
    \n\n"+e+"\n"+t+"
    \n"},o.prototype.tablerow=function(e){return"\n"+e+"\n"},o.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},o.prototype.strong=function(e){return""+e+""},o.prototype.em=function(e){return""+e+""},o.prototype.codespan=function(e){return""+e+""},o.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},o.prototype.del=function(e){return""+e+""},o.prototype.link=function(e,t,n){if(this.options.sanitize){try{var r=decodeURIComponent(l(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return n}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return n}this.options.baseUrl&&!y.test(e)&&(e=u(this.options.baseUrl,e));try{e=encodeURI(e).replace(/%25/g,"%")}catch(e){return n}var o='
    "},o.prototype.image=function(e,t,n){this.options.baseUrl&&!y.test(e)&&(e=u(this.options.baseUrl,e));var r=''+n+'":">"},o.prototype.text=function(e){return e},i.prototype.strong=i.prototype.em=i.prototype.codespan=i.prototype.del=i.prototype.text=function(e){return e},i.prototype.link=i.prototype.image=function(e,t,n){return""+n},i.prototype.br=function(){return""},a.parse=function(e,t){return new a(t).parse(e)},a.prototype.parse=function(e){this.inline=new r(e.links,this.options),this.inlineText=new r(e.links,p({},this.options,{renderer:new i})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},a.prototype.next=function(){return this.token=this.tokens.pop()},a.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},a.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},a.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,l(this.inlineText.output(this.token.text)));case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,o="",i="";for(n="",e=0;e=12&&t<=14)?1:2},b={pluralTypes:{arabic:function(e){if(e<3)return e;var t=e%100;return t>=3&&t<=10?3:t>=11?4:5},bosnian_serbian:y,chinese:function(){return 0},croatian:y,french:function(e){return e>1?1:0},german:function(e){return 1!==e?1:0},russian:y,lithuanian:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?1:2},czech:function(e){return 1===e?0:e>=2&&e<=4?1:2},polish:function(e){if(1===e)return 0;var t=e%10;return 2<=t&&t<=4&&(e%100<10||e%100>=20)?1:2},icelandic:function(e){return e%10!=1||e%100==11?1:0},slovenian:function(e){var t=e%100;return 1===t?0:2===t?1:3===t||4===t?2:3}},pluralTypeToLanguages:{arabic:["ar"],bosnian_serbian:["bs-Latn-BA","bs-Cyrl-BA","srl-RS","sr-RS"],chinese:["id","id-ID","ja","ko","ko-KR","lo","ms","th","th-TH","zh"],croatian:["hr","hr-HR"],german:["fa","da","de","en","es","fi","el","he","hi-IN","hu","hu-HU","it","nl","no","pt","sv","tr"],french:["fr","tl","pt-br"],russian:["ru","ru-RU"],lithuanian:["lt"],czech:["cs","cs-CZ","sk"],polish:["pl"],icelandic:["is"],slovenian:["sl-SL"]}},w=/%\{(.*?)\}/g;c.prototype.locale=function(e){return e&&(this.currentLocale=e),this.currentLocale},c.prototype.extend=function(e,t){u(e,function(e,n){var r=t?t+"."+n:n;"object"==typeof e?this.extend(e,r):this.phrases[r]=e},this)},c.prototype.unset=function(e,t){"string"==typeof e?delete this.phrases[e]:u(e,function(e,n){var r=t?t+"."+n:n;"object"==typeof e?this.unset(e,r):delete this.phrases[r]},this)},c.prototype.clear=function(){this.phrases={}},c.prototype.replace=function(e){this.clear(),this.extend(e)},c.prototype.t=function(e,t){var n,r,o=null==t?{}:t;if("string"==typeof this.phrases[e])n=this.phrases[e];else if("string"==typeof o._)n=o._;else if(this.onMissingKey){var i=this.onMissingKey;r=i(e,o,this.currentLocale,this.tokenRegex,this.pluralRules)}else this.warn('Missing translation for key: "'+e+'"'),r=e;return"string"==typeof n&&(r=l(n,o,this.currentLocale,this.tokenRegex,this.pluralRules)),r},c.prototype.has=function(e){return p(this.phrases,e)},c.transformPhrase=function(e,t,n){return l(e,t,n)},e.exports=c},function(e,t,n){"use strict";function r(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=r(e),c=1;c0&&!o.call(e,0))for(var f=0;f0)for(var v=0;v1)for(var n=1;n + * https://github.com/jaywcjlove/store.js + * + * Licensed under the MIT license. + */ +var u=window.localStorage;u=function(e){var t="_Is_Incognit";try{e.setItem(t,"yes")}catch(t){if("QuotaExceededError"===t.name){var n=function(){};e.__proto__={setItem:n,getItem:n,removeItem:n,clear:n}}}finally{"yes"===e.getItem(t)&&e.removeItem(t)}return e}(u),l.prototype={set:function(e,t){if(e&&!r(e))u.setItem(e,o(t));else if(r(e))for(var n in e)this.set(n,e[n]);return this},get:function(e){if(!e){var t={};return this.forEach(function(e,n){return t[e]=n}),t}if("?"===e.charAt(0))return this.has(e.substr(1));var n=arguments;if(n.length>1){for(var r={},o=0,a=n.length;o-1&&(n[t[r]]=this.get(t[r]));return n}};var d=null;for(var p in l.prototype)c[p]=l.prototype[p];t.default=c},function(e,t,n){"use strict";var r=n(12),o=n(9),i=n(11),a=n(13),s=n(49),l=r(a());o(l,{getPolyfill:a,implementation:i,shim:s}),e.exports=l},function(e,t,n){"use strict";var r=n(1),o=r("%String%"),i=r("%TypeError%");e.exports=function(e){if("symbol"==typeof e)throw new i("Cannot convert a Symbol value to a string");return o(e)}},function(e,t,n){"use strict";var r=n(1),o=r("%TypeError%");e.exports=function(e,t){if(null==e)throw new o(t||"Cannot call method on "+e);return e}},function(e,t,n){"use strict";var r=n(1),o=n(12),i=o(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"==typeof n&&i(e,".prototype.")?o(n):n}},function(e,t,n){"use strict";(function(t){var r=t.Symbol,o=n(48);e.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&o())))}}).call(t,n(14))},function(e,t,n){"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;e[t]=42;for(t in e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(e,t);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},function(e,t,n){"use strict";var r=n(9),o=n(13);e.exports=function(){var e=o();return r(String.prototype,{trim:e},{trim:function(){return String.prototype.trim!==e}}),e}},function(e,t,n){"use strict";(function(t){var n="production"!==t.env.NODE_ENV,r=function(){};if(n){var o=function(e,t){var n=arguments.length;t=new Array(n>1?n-1:0);for(var r=1;r2?r-2:0);for(var i=2;i";var b=o(l),w=i[n],x=d(b.html,function(e,t){var o=-1!==p.indexOf(w,e),i=c(n,e,t,o);if(!r(i))return i;if(o)return t=h(n,e,t,g),t?e+'="'+t+'"':e;var i=f(n,e,t,o);return r(i)?void 0:i}),l="<"+n;return x&&(l+=" "+x),b.closing&&(l+=" /"),l+=">"}var y=s(n,l,m);return r(y)?v(l):y},v);return m&&(y=m.remove(y)),y},e.exports=a},function(e,t){e.exports={smile:"e3/2018new_weixioa02_org.png",lovely:"09/2018new_keai_org.png",happy:"1e/2018new_taikaixin_org.png",clap:"6e/2018new_guzhang_thumb.png",whee:"33/2018new_xixi_thumb.png",haha:"8f/2018new_haha_thumb.png","laugh and cry":"4a/2018new_xiaoku_thumb.png",wink:"43/2018new_jiyan_org.png",greddy:"fa/2018new_chanzui_org.png",awkward:"a3/2018new_heixian_thumb.png",sweat:"28/2018new_han_org.png","pick nose":"9a/2018new_wabi_thumb.png",hum:"7c/2018new_heng_thumb.png",angry:"f6/2018new_nu_thumb.png",grievance:"a5/2018new_weiqu_thumb.png",poor:"96/2018new_kelian_org.png",disappoint:"aa/2018new_shiwang_thumb.png",sad:"ee/2018new_beishang_org.png",tear:"6e/2018new_leimu_org.png","no way":"83/2018new_kuxiao_org.png",shy:"c1/2018new_haixiu_org.png",dirt:"10/2018new_wu_thumb.png","love you":"f6/2018new_aini_org.png",kiss:"2c/2018new_qinqin_thumb.png",amorousness:"9d/2018new_huaxin_org.png",longing:"c9/2018new_chongjing_org.png",desire:"3e/2018new_tianping_thumb.png","bad laugh":"4d/2018new_huaixiao_org.png",blackness:"9e/2018new_yinxian_org.png","laugh without word":"2d/2018new_xiaoerbuyu_org.png",titter:"71/2018new_touxiao_org.png",cool:"c4/2018new_ku_org.png","not easy":"aa/2018new_bingbujiandan_thumb.png",think:"30/2018new_sikao_org.png",question:"b8/2018new_ningwen_org.png","no idea":"2a/2018new_wenhao_thumb.png",dizzy:"07/2018new_yun_thumb.png",bomb:"a2/2018new_shuai_thumb.png",bone:"a1/2018new_kulou_thumb.png","be quiet":"b0/2018new_xu_org.png","shut up":"62/2018new_bizui_org.png",stupid:"dd/2018new_shayan_org.png","surprise ":"49/2018new_chijing_org.png",vomit:"08/2018new_tu_org.png",cold:"40/2018new_kouzhao_thumb.png",sick:"3b/2018new_shengbing_thumb.png",bye:"fd/2018new_baibai_thumb.png","look down on":"da/2018new_bishi_org.png","white eye":"ef/2018new_landelini_org.png","left hum":"43/2018new_zuohengheng_thumb.png","right hum":"c1/2018new_youhengheng_thumb.png",crazy:"17/2018new_zhuakuang_org.png","scold ":"87/2018new_zhouma_thumb.png","hit on face":"cb/2018new_dalian_org.png",wow:"ae/2018new_ding_org.png",fan:"86/2018new_hufen02_org.png",money:"a2/2018new_qian_thumb.png",yawn:"55/2018new_dahaqian_org.png",sleepy:"3c/2018new_kun_thumb.png",sleep:"e2/2018new_shuijiao_thumb.png","watermelon ":"01/2018new_chigua_thumb.png",doge:"a1/2018new_doge02_org.png",dog:"22/2018new_erha_org.png",cat:"7b/2018new_miaomiao_thumb.png",thumb:"e6/2018new_zan_org.png",good:"8a/2018new_good_org.png",ok:"45/2018new_ok_org.png",yeah:"29/2018new_ye_thumb.png","shack hand":"e9/2018new_woshou_thumb.png",bow:"e7/2018new_zuoyi_org.png",come:"42/2018new_guolai_thumb.png",punch:"86/2018new_quantou_thumb.png"}},function(e,t){e.exports={nick:"NickName",mail:"E-Mail",link:"Website(http://)",nickFail:"NickName cannot be less than 3 bytes.",mailFail:"Please confirm your email address.",sofa:"No comment yet.",submit:"Submit",reply:"Reply",cancelReply:"Cancel reply",comments:"Comments",cancel:"Cancel",confirm:"Confirm",continue:"Continue",more:"Load More...",preview:"Preview",emoji:"Emoji",expand:"See more....",seconds:"seconds ago",minutes:"minutes ago",hours:"hours ago",days:"days ago",now:"just now",uploading:"Uploading ...",uploadDone:"Upload completed!",busy:"Submit is busy, please wait...","code-98":"Valine initialization failed, please check your version of av-min.js.","code-99":"Valine initialization failed, Please check the `el` element in the init method.","code-100":"Valine initialization failed, Please check your appId and appKey.","code-140":"The total number of API calls today has exceeded the development version limit.","code-401":"Unauthorized operation, Please check your appId and appKey.","code-403":"Access denied by API domain white list, Please check your security domain."}},function(e,t){e.exports={nick:"ニックネーム",mail:"メールアドレス",link:"サイト(http://)",nickFail:"3バイト以上のニックネームをご入力ください.",mailFail:"メールアドレスをご確認ください.",sofa:"コメントしましょう~",submit:"提出する",reply:"返信する",cancelReply:"キャンセル",comments:"コメント",cancel:"キャンセル",confirm:"確認する",continue:"继续",more:"さらに読み込む...",preview:"プレビュー",emoji:"絵文字",expand:"もっと見る",seconds:"秒前",minutes:"分前",hours:"時間前",days:"日前",now:"たっだ今",uploading:"アップロード中...",uploadDone:"アップロードが完了しました!",busy:"20 秒間隔で提出してください ...","code-98":"ロードエラーです。av-min.js のバージョンを確認してください.","code-99":"ロードエラーです。initにある`el`エレメントを確認ください.","code-100":"ロードエラーです。AppIdとAppKeyを確認ください.","code-140":"今日のAPIコールの総数が開発バージョンの上限を超えた.","code-401":"権限が制限されています。AppIdとAppKeyを確認ください.","code-403":"アクセスがAPIなどに制限されました、ドメイン名のセキュリティ設定を確認ください"}},function(e,t){e.exports={nick:"昵称",mail:"邮箱",link:"网址(http://)",nickFail:"昵称不能少于3个字符",mailFail:"请填写正确的邮件地址",sofa:"来发评论吧~",submit:"提交",reply:"回复",cancelReply:"取消回复",comments:"评论",cancel:"取消",confirm:"确认",continue:"继续",more:"加载更多...",preview:"预览",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分钟前",hours:"小时前",days:"天前",now:"刚刚",uploading:"正在传输...",uploadDone:"传输完成!",busy:"操作频繁,请稍候再试...","code-98":"Valine 初始化失败,请检查 av-min.js 版本","code-99":"Valine 初始化失败,请检查init中的`el`元素.","code-100":"Valine 初始化失败,请检查你的AppId和AppKey.","code-140":"今日 API 调用总次数已超过开发版限制.","code-401":"未经授权的操作,请检查你的AppId和AppKey.","code-403":"访问被API域名白名单拒绝,请检查你的安全域名设置."}},function(e,t){e.exports={nick:"暱稱",mail:"郵箱",link:"網址(http://)",nickFail:"昵稱不能少於3個字符",mailFail:"請填寫正確的郵件地址",sofa:"來發評論吧~",submit:"提交",reply:"回覆",cancelReply:"取消回覆",comments:"評論",cancel:"取消",confirm:"確認",continue:"繼續",more:"加載更多...",preview:"預覽",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分鐘前",hours:"小時前",days:"天前",now:"剛剛",uploading:"正在上傳...",uploadDone:"上傳完成!",busy:"操作頻繁,請稍候再試...","code-98":"Valine 初始化失敗,請檢查 av-min.js 版本","code-99":"Valine 初始化失敗,請檢查init中的`el`元素.","code-100":"Valine 初始化失敗,請檢查你的AppId和AppKey.","code-140":"今日 API 調用總次數已超過開發版限制.","code-401":"未經授權的操作,請檢查你的AppId和AppKey.","code-403":"訪問被API域名白名單拒絕,請檢查你的安全域名設置."}},function(e,t,n){var r=n(59);"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n(61)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){t=e.exports=n(60)(!1),t.push([e.i,'.v[data-class=v]{font-size:16px;text-align:left}.v[data-class=v] *{-webkit-box-sizing:border-box;box-sizing:border-box;line-height:1.75}.v[data-class=v] .status-bar,.v[data-class=v] .veditor,.v[data-class=v] .vinput,.v[data-class=v] p,.v[data-class=v] pre code{color:#555}.v[data-class=v] .vsys,.v[data-class=v] .vtime{color:#b3b3b3}.v[data-class=v] .text-right{text-align:right}.v[data-class=v] .text-center{text-align:center}.v[data-class=v] img{max-width:100%;border:none}.v[data-class=v] hr{margin:.825em 0;border-color:#f6f6f6;border-style:dashed}.v[data-class=v].hide-avatar .vimg{display:none}.v[data-class=v] a{position:relative;cursor:pointer;color:#1abc9c;text-decoration:none;display:inline-block}.v[data-class=v] a:hover{color:#d7191a}.v[data-class=v] code,.v[data-class=v] pre{background-color:#f8f8f8;padding:.2em .4em;border-radius:3px;font-size:85%;margin:0}.v[data-class=v] pre{padding:10px;overflow:auto;line-height:1.45}.v[data-class=v] pre code{padding:0;background:transparent;white-space:pre-wrap;word-break:keep-all}.v[data-class=v] blockquote{color:#666;margin:.5em 0;padding:0 0 0 1em;border-left:8px solid hsla(0,0%,93%,.5)}.v[data-class=v] .vinput{border:none;resize:none;outline:none;padding:10px 5px;max-width:100%;font-size:.775em}.v[data-class=v] input[type=checkbox],.v[data-class=v] input[type=radio]{display:inline-block;vertical-align:middle;margin-top:-2px}.v[data-class=v] .vicon{cursor:pointer;display:inline-block;overflow:hidden;fill:#555;vertical-align:middle}.v[data-class=v] .vicon+.vicon{margin-left:10px}.v[data-class=v] .vicon.actived{fill:#66b1ff}.v[data-class=v] .vrow{font-size:0;padding:10px 0}.v[data-class=v] .vrow .vcol{display:inline-block;vertical-align:middle;font-size:14px}.v[data-class=v] .vrow .vcol.vcol-20{width:20%}.v[data-class=v] .vrow .vcol.vcol-30{width:30%}.v[data-class=v] .vrow .vcol.vcol-40{width:40%}.v[data-class=v] .vrow .vcol.vcol-50{width:50%}.v[data-class=v] .vrow .vcol.vcol-60{width:60%}.v[data-class=v] .vrow .vcol.vcol-70{width:70%}.v[data-class=v] .vrow .vcol.vcol-80{width:80%}.v[data-class=v] .vrow .vcol.vctrl{font-size:12px}.v[data-class=v] .emoji,.v[data-class=v] .vemoji{max-width:25px;vertical-align:middle;margin:0 1px;display:inline-block}.v[data-class=v] .vwrap{border:1px solid #f0f0f0;border-radius:4px;margin-bottom:10px;overflow:hidden;position:relative;padding:10px}.v[data-class=v] .vwrap input{background:transparent}.v[data-class=v] .vwrap .vedit{position:relative;padding-top:10px}.v[data-class=v] .vwrap .cancel-reply-btn{position:absolute;right:5px;top:5px;cursor:pointer}.v[data-class=v] .vwrap .vemojis{display:none;font-size:18px;max-height:145px;overflow:auto;padding-bottom:10px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v[data-class=v] .vwrap .vemojis i{font-style:normal;padding-top:7px;width:36px;cursor:pointer;text-align:center;display:inline-block;vertical-align:middle}.v[data-class=v] .vwrap .vpreview{padding:7px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v[data-class=v] .vwrap .vheader .vinput{width:33.33%;border-bottom:1px dashed #dedede}.v[data-class=v] .vwrap .vheader.item2 .vinput{width:50%}.v[data-class=v] .vwrap .vheader.item1 .vinput{width:100%}.v[data-class=v] .vwrap .vheader .vinput:focus{border-bottom-color:#eb5055}@media screen and (max-width:520px){.v[data-class=v] .vwrap .vheader.item2 .vinput,.v[data-class=v] .vwrap .vheader .vinput{width:100%}}.v[data-class=v] .vpower{color:#999;font-size:.75em;padding:.5em 0}.v[data-class=v] .vpower a{font-size:.75em}.v[data-class=v] .vcount{padding:5px;font-weight:600;font-size:1.25em}.v[data-class=v] ol,.v[data-class=v] ul{padding:0;margin-left:1.25em}.v[data-class=v] .txt-center{text-align:center}.v[data-class=v] .txt-right{text-align:right}.v[data-class=v] .pd5{padding:5px}.v[data-class=v] .pd10{padding:10px}.v[data-class=v] .veditor{width:100%;min-height:8.75em;font-size:.875em;background:transparent;resize:vertical;-webkit-transition:all .25s ease;transition:all .25s ease}.v[data-class=v] .vbtn{-webkit-transition-duration:.4s;transition-duration:.4s;text-align:center;color:#555;border:1px solid #ededed;border-radius:.3em;display:inline-block;background:transparent;margin-bottom:0;font-weight:400;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;white-space:nowrap;padding:.5em 1.25em;font-size:.875em;line-height:1.42857143;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.v[data-class=v] .vbtn+.vbtn{margin-left:1.25em}.v[data-class=v] .vbtn:active,.v[data-class=v] .vbtn:hover{color:#3090e4;border-color:#3090e4}.v[data-class=v] .vbtn:disabled{border-color:#e1e1e1;color:#e1e1e1;background-color:#fdfafa;cursor:not-allowed}.v[data-class=v] .vempty{padding:1.25em;text-align:center;color:#555;overflow:auto}.v[data-class=v] .vsys{display:inline-block;padding:.2em .5em;font-size:.75em;border-radius:.2em;margin-right:.3em}@media screen and (max-width:520px){.v[data-class=v] .vsys{display:none}}.v[data-class=v] .vcards{width:100%}.v[data-class=v] .vcards .vcard{padding-top:1.25em;position:relative;display:block}.v[data-class=v] .vcards .vcard:after{content:"";clear:both;display:block}.v[data-class=v] .vcards .vcard .vimg{width:3.125em;height:3.125em;float:left;border-radius:50%;margin-right:.7525em;border:1px solid #f5f5f5;padding:.125em}@media screen and (max-width:720px){.v[data-class=v] .vcards .vcard .vimg{width:2.5em;height:2.5em}}.v[data-class=v] .vcards .vcard .vhead{line-height:1.5;margin-top:0}.v[data-class=v] .vcards .vcard .vhead .vnick{position:relative;font-size:.875em;font-weight:500;margin-right:.875em;cursor:pointer;text-decoration:none;display:inline-block}.v[data-class=v] .vcards .vcard .vhead .vnick:hover{color:#d7191a}.v[data-class=v] .vcards .vcard .vh{overflow:hidden;padding-bottom:.5em;border-bottom:1px dashed #f5f5f5}.v[data-class=v] .vcards .vcard .vh .vtime{font-size:.75em;margin-right:.875em}.v[data-class=v] .vcards .vcard .vh .vmeta{line-height:1;position:relative}.v[data-class=v] .vcards .vcard .vh .vmeta .vat{font-size:.8125em;color:#ef2f11;cursor:pointer;float:right}.v[data-class=v] .vcards .vcard:last-child .vh{border-bottom:none}.v[data-class=v] .vcards .vcard .vcontent{word-wrap:break-word;word-break:break-all;font-size:.875em;line-height:2;position:relative;margin-bottom:.75em;padding-top:.625em}.v[data-class=v] .vcards .vcard .vcontent.expand{cursor:pointer;max-height:8em;overflow:hidden}.v[data-class=v] .vcards .vcard .vcontent.expand:before{display:block;content:"";position:absolute;width:100%;left:0;top:0;bottom:3.15em;background:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(hsla(0,0%,100%,.9)));background:linear-gradient(180deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.9));z-index:999}.v[data-class=v] .vcards .vcard .vcontent.expand:after{display:block;content:attr(data-expand);text-align:center;color:#828586;position:absolute;width:100%;height:3.15em;line-height:3.15em;left:0;bottom:0;z-index:999;background:hsla(0,0%,100%,.9)}.v[data-class=v] .vcards .vcard .vquote{padding-left:1em;border-left:1px dashed hsla(0,0%,93%,.5)}.v[data-class=v] .vcards .vcard .vquote .vimg{width:2.225em;height:2.225em}.v[data-class=v] .vpage .vmore{margin:1em 0}.v[data-class=v] .clear{content:"";display:block;clear:both}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes pulse{50%{background:#dcdcdc}}@keyframes pulse{50%{background:#dcdcdc}}.v[data-class=v] .vspinner{width:22px;height:22px;display:inline-block;border:6px double #a0a0a0;border-top-color:transparent;border-bottom-color:transparent;border-radius:50%;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear;position:relative;vertical-align:middle;margin:0 5px}.dark .v[data-class=v] .status-bar,.dark .v[data-class=v] .veditor,.dark .v[data-class=v] .vinput,.dark .v[data-class=v] p,.dark .v[data-class=v] pre code,.night .v[data-class=v] .status-bar,.night .v[data-class=v] .veditor,.night .v[data-class=v] .vinput,.night .v[data-class=v] p,.night .v[data-class=v] pre code,.theme__dark .v[data-class=v] .status-bar,.theme__dark .v[data-class=v] .veditor,.theme__dark .v[data-class=v] .vinput,.theme__dark .v[data-class=v] p,.theme__dark .v[data-class=v] pre code,[data-theme=dark] .v[data-class=v] .status-bar,[data-theme=dark] .v[data-class=v] .veditor,[data-theme=dark] .v[data-class=v] .vinput,[data-theme=dark] .v[data-class=v] p,[data-theme=dark] .v[data-class=v] pre code{color:#b2b2b5}.dark .v[data-class=v] .vsys,.dark .v[data-class=v] .vtime,.night .v[data-class=v] .vsys,.night .v[data-class=v] .vtime,.theme__dark .v[data-class=v] .vsys,.theme__dark .v[data-class=v] .vtime,[data-theme=dark] .v[data-class=v] .vsys,[data-theme=dark] .v[data-class=v] .vtime{color:#929298}.dark .v[data-class=v] code,.dark .v[data-class=v] pre,.dark .v[data-class=v] pre code,.night .v[data-class=v] code,.night .v[data-class=v] pre,.night .v[data-class=v] pre code,.theme__dark .v[data-class=v] code,.theme__dark .v[data-class=v] pre,.theme__dark .v[data-class=v] pre code,[data-theme=dark] .v[data-class=v] code,[data-theme=dark] .v[data-class=v] pre,[data-theme=dark] .v[data-class=v] pre code{color:#929298;background-color:#151414}.dark .v[data-class=v] .vwrap,.night .v[data-class=v] .vwrap,.theme__dark .v[data-class=v] .vwrap,[data-theme=dark] .v[data-class=v] .vwrap{border-color:#b2b2b5}.dark .v[data-class=v] .vicon,.night .v[data-class=v] .vicon,.theme__dark .v[data-class=v] .vicon,[data-theme=dark] .v[data-class=v] .vicon{fill:#b2b2b5}.dark .v[data-class=v] .vicon.actived,.night .v[data-class=v] .vicon.actived,.theme__dark .v[data-class=v] .vicon.actived,[data-theme=dark] .v[data-class=v] .vicon.actived{fill:#66b1ff}.dark .v[data-class=v] .vbtn,.night .v[data-class=v] .vbtn,.theme__dark .v[data-class=v] .vbtn,[data-theme=dark] .v[data-class=v] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.dark .v[data-class=v] .vbtn:hover,.night .v[data-class=v] .vbtn:hover,.theme__dark .v[data-class=v] .vbtn:hover,[data-theme=dark] .v[data-class=v] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.dark .v[data-class=v] a:hover,.night .v[data-class=v] a:hover,.theme__dark .v[data-class=v] a:hover,[data-theme=dark] .v[data-class=v] a:hover{color:#d7191a}.dark .v[data-class=v] .vcards .vcard .vcontent.expand:before,.night .v[data-class=v] .vcards .vcard .vcontent.expand:before,.theme__dark .v[data-class=v] .vcards .vcard .vcontent.expand:before,[data-theme=dark] .v[data-class=v] .vcards .vcard .vcontent.expand:before{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.7)));background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.7))}.dark .v[data-class=v] .vcards .vcard .vcontent.expand:after,.night .v[data-class=v] .vcards .vcard .vcontent.expand:after,.theme__dark .v[data-class=v] .vcards .vcard .vcontent.expand:after,[data-theme=dark] .v[data-class=v] .vcards .vcard .vcontent.expand:after{background:rgba(0,0,0,.7)}@media (prefers-color-scheme:dark){.v[data-class=v] .status-bar,.v[data-class=v] .veditor,.v[data-class=v] .vinput,.v[data-class=v] p,.v[data-class=v] pre code{color:#b2b2b5}.v[data-class=v] .vsys,.v[data-class=v] .vtime{color:#929298}.v[data-class=v] code,.v[data-class=v] pre,.v[data-class=v] pre code{color:#929298;background-color:#151414}.v[data-class=v] .vwrap{border-color:#b2b2b5}.v[data-class=v] .vicon{fill:#b2b2b5}.v[data-class=v] .vicon.actived{fill:#66b1ff}.v[data-class=v] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.v[data-class=v] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.v[data-class=v] a:hover{color:#d7191a}.v[data-class=v] .vcards .vcard .vcontent.expand:before{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.7)));background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.7))}.v[data-class=v] .vcards .vcard .vcontent.expand:after{background:rgba(0,0,0,.7)}}',""])},function(e,t){function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==typeof btoa){var i=r(o);return[n].concat(o.sources.map(function(e){return"/*# sourceURL="+o.sourceRoot+e+" */"})).concat([i]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o=0&&b.splice(t,1)}function s(e){var t=document.createElement("style");return e.attrs.type="text/css",c(t,e.attrs),i(e,t),t}function l(e){var t=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",c(t,e.attrs),i(e,t),t}function c(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function u(e,t){var n,r,o,i;if(t.transform&&e.css){if(!(i=t.transform(e.css)))return function(){};e.css=i}if(t.singleton){var c=y++;n=m||(m=s(t)),r=d.bind(null,n,c,!1),o=d.bind(null,n,c,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=l(t),r=f.bind(null,n,t),o=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(t),r=p.bind(null,n),o=function(){a(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}function d(e,t,n,r){var o=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=x(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}function p(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function f(e,t,n){var r=n.css,o=n.sourceMap,i=void 0===t.convertToAbsoluteUrls&&o;(t.convertToAbsoluteUrls||i)&&(r=w(r)),o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=e.href;e.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var h={},v=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}}(function(){return window&&document&&document.all&&!window.atob}),g=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e.call(this,n)),t[n]}}(function(e){return document.querySelector(e)}),m=null,y=0,b=[],w=n(62);e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},t.attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||(t.singleton=v()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=o(e,t);return r(n,t),function(e){for(var i=[],a=0;aBilibili icon \ No newline at end of file diff --git a/themes/LoveIt/assets/svg/icons/thingiverse.svg b/themes/LoveIt/assets/svg/icons/thingiverse.svg new file mode 100644 index 00000000..061bf250 --- /dev/null +++ b/themes/LoveIt/assets/svg/icons/thingiverse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/themes/LoveIt/assets/svg/loading.svg b/themes/LoveIt/assets/svg/loading.svg new file mode 100644 index 00000000..02a0eee4 --- /dev/null +++ b/themes/LoveIt/assets/svg/loading.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/themes/LoveIt/assets/svg/version.template.svg b/themes/LoveIt/assets/svg/version.template.svg new file mode 100644 index 00000000..0a057911 --- /dev/null +++ b/themes/LoveIt/assets/svg/version.template.svg @@ -0,0 +1,20 @@ +{{- /* https://img.shields.io/badge/$label-$version-$color?style=flat-square&labelColor=403c3d */ -}} +{{- $labelLength := strings.RuneCount .label | mul 64 | add 100 -}} +{{- $versionLength := strings.RuneCount .version | mul 60 -}} +{{- $width := add $labelLength $versionLength | add 200 -}} + + + {{- $x1 := add $labelLength 100 -}} + {{- $x2 := add $versionLength 100 -}} + + + + + + {{- .label -}} + + + {{- .version -}} + + + diff --git a/themes/LoveIt/exampleSite/assets/css/_custom.scss b/themes/LoveIt/exampleSite/assets/css/_custom.scss new file mode 100644 index 00000000..37edf904 --- /dev/null +++ b/themes/LoveIt/exampleSite/assets/css/_custom.scss @@ -0,0 +1,4 @@ +// ============================== +// Custom style +// 自定义样式 +// ============================== diff --git a/themes/LoveIt/exampleSite/assets/css/_override.scss b/themes/LoveIt/exampleSite/assets/css/_override.scss new file mode 100644 index 00000000..c37b4ec3 --- /dev/null +++ b/themes/LoveIt/exampleSite/assets/css/_override.scss @@ -0,0 +1,4 @@ +// ============================== +// Override Variables +// 覆盖变量 +// ============================== diff --git a/themes/LoveIt/exampleSite/assets/images/Apple-Devices-Preview.png b/themes/LoveIt/exampleSite/assets/images/Apple-Devices-Preview.png new file mode 100644 index 00000000..ac7709b3 Binary files /dev/null and b/themes/LoveIt/exampleSite/assets/images/Apple-Devices-Preview.png differ diff --git a/themes/LoveIt/exampleSite/assets/images/Wavelength.jpg b/themes/LoveIt/exampleSite/assets/images/Wavelength.jpg new file mode 100644 index 00000000..8b8be733 Binary files /dev/null and b/themes/LoveIt/exampleSite/assets/images/Wavelength.jpg differ diff --git a/themes/LoveIt/exampleSite/assets/images/avatar.png b/themes/LoveIt/exampleSite/assets/images/avatar.png new file mode 100644 index 00000000..f8d370d7 Binary files /dev/null and b/themes/LoveIt/exampleSite/assets/images/avatar.png differ diff --git a/themes/LoveIt/exampleSite/assets/images/lighthouse-large.jpg b/themes/LoveIt/exampleSite/assets/images/lighthouse-large.jpg new file mode 100644 index 00000000..87a14e04 Binary files /dev/null and b/themes/LoveIt/exampleSite/assets/images/lighthouse-large.jpg differ diff --git a/themes/LoveIt/exampleSite/assets/images/lighthouse-small.jpg b/themes/LoveIt/exampleSite/assets/images/lighthouse-small.jpg new file mode 100644 index 00000000..f73d5ead Binary files /dev/null and b/themes/LoveIt/exampleSite/assets/images/lighthouse-small.jpg differ diff --git a/themes/LoveIt/exampleSite/assets/images/lighthouse.jpg b/themes/LoveIt/exampleSite/assets/images/lighthouse.jpg new file mode 100644 index 00000000..b857404a Binary files /dev/null and b/themes/LoveIt/exampleSite/assets/images/lighthouse.jpg differ diff --git a/themes/LoveIt/exampleSite/assets/images/screenshot.png b/themes/LoveIt/exampleSite/assets/images/screenshot.png new file mode 100644 index 00000000..3fb6515f Binary files /dev/null and b/themes/LoveIt/exampleSite/assets/images/screenshot.png differ diff --git a/themes/LoveIt/exampleSite/assets/music/Wavelength.mp3 b/themes/LoveIt/exampleSite/assets/music/Wavelength.mp3 new file mode 100644 index 00000000..8abd9643 Binary files /dev/null and b/themes/LoveIt/exampleSite/assets/music/Wavelength.mp3 differ diff --git a/themes/LoveIt/exampleSite/config.toml b/themes/LoveIt/exampleSite/config.toml new file mode 100644 index 00000000..d87632c1 --- /dev/null +++ b/themes/LoveIt/exampleSite/config.toml @@ -0,0 +1,1125 @@ +baseURL = "https://example.com" +# [en, zh-cn, fr, pl, ...] determines default content language +# [en, zh-cn, fr, pl, ...] 设置默认的语言 +defaultContentLanguage = "en" +# theme +# 主题 +theme = "LoveIt" +# themes directory +# 主题目录 +themesDir = "../.." + +# website title +# 网站标题 +title = "LoveIt" + +# whether to use robots.txt +# 是否使用 robots.txt +enableRobotsTXT = true +# whether to use git commit log +# 是否使用 git 信息 +enableGitInfo = true +# whether to use emoji code +# 是否使用 emoji 代码 +enableEmoji = true + +[languages] + [languages.en] + weight = 1 + # language code + languageCode = "en" + # language name + languageName = "English" + # whether to include Chinese/Japanese/Korean + hasCJKLanguage = false + # default amount of posts in each pages + paginate = 12 + # [UA-XXXXXXXX-X] google analytics code + googleAnalytics = "" + # copyright description used only for seo schema + copyright = "This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License." + # Menu config + [languages.en.menu] + [[languages.en.menu.main]] + identifier = "posts" + # you can add extra information before the name (HTML format is supported), such as icons + pre = "" + # you can add extra information after the name (HTML format is supported), such as icons + post = "" + name = "Posts" + url = "/posts/" + # title will be shown when you hover on this menu link. + title = "" + weight = 1 + [[languages.en.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Tags" + url = "/tags/" + title = "" + weight = 2 + [[languages.en.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "Categories" + url = "/categories/" + title = "" + weight = 3 + [[languages.en.menu.main]] + identifier = "documentation" + pre = "" + post = "" + name = "Docs" + url = "/categories/documentation/" + title = "" + weight = 4 + [[languages.en.menu.main]] + identifier = "about" + pre = "" + post = "" + name = "About" + url = "/about/" + title = "" + weight = 5 + [[languages.en.menu.main]] + identifier = "github" + pre = "" + post = "" + name = "" + url = "https://github.com/dillonzq/LoveIt" + title = "GitHub" + weight = 6 + [languages.en.params] + # site description + description = "About LoveIt Theme" + # site keywords + keywords = ["Theme", "Hugo"] + # App icon config + [languages.en.params.app] + # optional site title override for the app when added to an iOS home screen or Android launcher + title = "LoveIt" + # whether to omit favicon resource links + noFavicon = false + # modern SVG favicon to use in place of older style .png and .ico files + svgFavicon = "" + # Android browser theme color + themeColor = "#ffffff" + # Safari mask icon color + iconColor = "#5bbad5" + # Windows v8-10 tile color + tileColor = "#da532c" + # Search config + [languages.en.params.search] + enable = true + # type of search engine ("lunr", "algolia") + type = "algolia" + # max index length of the chunked content + contentLength = 4000 + # placeholder of the search bar + placeholder = "" + # max number of results length + maxResultLength = 10 + # snippet length of the result + snippetLength = 30 + # HTML tag name of the highlight part in results + highlightTag = "em" + # whether to use the absolute URL based on the baseURL in search index + absoluteURL = false + [languages.en.params.search.algolia] + index = "index.en" + appID = "PASDMWALPK" + searchKey = "b42948e51daaa93df92381c8e2ac0f93" + # Home page config + [languages.en.params.home] + # amount of RSS pages + rss = 10 + # Home page profile + [languages.en.params.home.profile] + enable = true + # Gravatar Email for preferred avatar in home page + gravatarEmail = "" + # URL of avatar shown in home page + avatarURL = "/images/avatar.png" + # title shown in home page (HTML format is supported) + title = "" + # subtitle shown in home page + subtitle = "A Clean, Elegant but Advanced Hugo Theme" + # whether to use typeit animation for subtitle + typeit = true + # whether to show social links + social = true + # disclaimer (HTML format is supported) + disclaimer = "" + # Home page posts + [languages.en.params.home.posts] + enable = true + # special amount of posts in each home posts page + paginate = 6 + # Social config in home page + [languages.en.params.social] + GitHub = "xxxx" + Linkedin = "" + Twitter = "xxxx" + Instagram = "xxxx" + Facebook = "xxxx" + Telegram = "xxxx" + Medium = "" + Gitlab = "" + Youtubelegacy = "xxxx" + Youtubecustom = "" + Youtubechannel = "" + Tumblr = "" + Quora = "" + Keybase = "" + Pinterest = "" + Reddit = "" + Codepen = "" + FreeCodeCamp = "" + Bitbucket = "" + Stackoverflow = "" + Weibo = "" + Odnoklassniki = "" + VK = "" + Flickr = "" + Xing = "" + Snapchat = "" + Soundcloud = "" + Spotify = "" + Bandcamp = "" + Paypal = "" + Fivehundredpx = "" + Mix = "" + Goodreads = "" + Lastfm = "" + Foursquare = "" + Hackernews = "" + Kickstarter = "" + Patreon = "" + Steam = "" + Twitch = "" + Strava = "" + Skype = "" + Whatsapp = "" + Zhihu = "" + Douban = "" + Angellist = "" + Slidershare = "" + Jsfiddle = "" + Deviantart = "" + Behance = "" + Dribbble = "" + Wordpress = "" + Vine = "" + Googlescholar = "" + Researchgate = "" + Thingiverse = "" + Devto = "" + Gitea = "" + XMPP = "" + Matrix = "" + Bilibili = "" + Email = "xxxx@xxxx.com" + RSS = true + [languages.en.params.social.Mastodon] + id = "@xxxx" + prefix = "https://mastodon.technology/" + + [languages.zh-cn] + weight = 2 + # 网站语言, 仅在这里 CN 大写 + languageCode = "zh-CN" + # 语言名称 + languageName = "简体中文" + # 是否包括中日韩文字 + hasCJKLanguage = true + # 默认每页列表显示的文章数目 + paginate = 12 + # [UA-XXXXXXXX-X] 谷歌分析代号 + googleAnalytics = "" + # 版权描述,仅仅用于 SEO + copyright = "This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License." + # 菜单配置 + [languages.zh-cn.menu] + [[languages.zh-cn.menu.main]] + identifier = "posts" + # 你可以在名称 (允许 HTML 格式) 之前添加其他信息, 例如图标 + pre = "" + # 你可以在名称 (允许 HTML 格式) 之后添加其他信息, 例如图标 + post = "" + name = "所有文章" + url = "/posts/" + title = "" + weight = 1 + [[languages.zh-cn.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "标签" + url = "/tags/" + title = "" + weight = 2 + [[languages.zh-cn.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "分类" + url = "/categories/" + title = "" + weight = 3 + [[languages.zh-cn.menu.main]] + identifier = "documentation" + pre = "" + name = "文档" + url = "/categories/documentation/" + title = "" + weight = 4 + [[languages.zh-cn.menu.main]] + identifier = "about" + pre = "" + post = "" + name = "关于" + url = "/about/" + title = "" + weight = 5 + [[languages.zh-cn.menu.main]] + identifier = "github" + pre = "" + post = "" + name = "" + url = "https://github.com/dillonzq/LoveIt" + title = "GitHub" + weight = 6 + [languages.zh-cn.params] + # 网站描述 + description = "关于 LoveIt 主题" + # 网站关键词 + keywords = ["Theme", "Hugo"] + # 应用图标配置 + [languages.zh-cn.params.app] + # 当添加到 iOS 主屏幕或者 Android 启动器时的标题, 覆盖默认标题 + title = "LoveIt" + # 是否隐藏网站图标资源链接 + noFavicon = false + # 更现代的 SVG 网站图标, 可替代旧的 .png 和 .ico 文件 + svgFavicon = "" + # Android 浏览器主题色 + themeColor = "#ffffff" + # Safari 图标颜色 + iconColor = "#5bbad5" + # Windows v8-10 磁贴颜色 + tileColor = "#da532c" + # 搜索配置 + [languages.zh-cn.params.search] + enable = true + # 搜索引擎的类型 ("lunr", "algolia") + type = "algolia" + # 文章内容最长索引长度 + contentLength = 4000 + # 搜索框的占位提示语 + placeholder = "" + # 最大结果数目 + maxResultLength = 10 + # 结果内容片段长度 + snippetLength = 50 + # 搜索结果中高亮部分的 HTML 标签 + highlightTag = "em" + # 是否在搜索索引中使用基于 baseURL 的绝对路径 + absoluteURL = false + [languages.zh-cn.params.search.algolia] + index = "index.zh-cn" + appID = "PASDMWALPK" + searchKey = "b42948e51daaa93df92381c8e2ac0f93" + # 主页信息设置 + [languages.zh-cn.params.home] + # RSS 文章数目 + rss = 10 + # 主页个人信息 + [languages.zh-cn.params.home.profile] + enable = true + # Gravatar 邮箱,用于优先在主页显示的头像 + gravatarEmail = "" + # 主页显示头像的 URL + avatarURL = "/images/avatar.png" + # 主页显示的网站标题 (支持 HTML 格式) + title = "" + # 主页显示的网站副标题 + subtitle = "一个简洁、优雅且高效的 Hugo 主题" + # 是否为副标题显示打字机动画 + typeit = true + # 是否显示社交账号 + social = true + # 免责声明 (支持 HTML 格式) + disclaimer = "" + # 主页文章列表 + [languages.zh-cn.params.home.posts] + enable = true + # 主页每页显示文章数量 + paginate = 6 + # 主页的社交信息设置 + [languages.zh-cn.params.social] + GitHub = "xxxx" + Linkedin = "" + Twitter = "" + Instagram = "" + Facebook = "" + Telegram = "" + Medium = "" + Gitlab = "" + Youtubelegacy = "" + Youtubecustom = "" + Youtubechannel = "" + Tumblr = "" + Quora = "" + Keybase = "" + Pinterest = "" + Reddit = "" + Codepen = "" + FreeCodeCamp = "" + Bitbucket = "" + Stackoverflow = "" + Weibo = "xxxx" + Odnoklassniki = "" + VK = "" + Flickr = "" + Xing = "" + Snapchat = "" + Soundcloud = "" + Spotify = "" + Bandcamp = "" + Paypal = "" + Fivehundredpx = "" + Mix = "" + Goodreads = "" + Lastfm = "" + Foursquare = "" + Hackernews = "" + Kickstarter = "" + Patreon = "" + Steam = "xxxx" + Twitch = "" + Strava = "" + Skype = "" + Whatsapp = "" + Zhihu = "xxxx" + Douban = "xxxx" + Angellist = "" + Slidershare = "" + Jsfiddle = "" + Deviantart = "" + Behance = "" + Dribbble = "" + Wordpress = "" + Vine = "" + Googlescholar = "" + Researchgate = "" + Mastodon = "" + Thingiverse = "" + Devto = "xxxx" + Gitea = "" + XMPP = "" + Matrix = "" + Bilibili = "xxxx" + Email = "xxxx@xxxx.com" + RSS = true + + [languages.fr] + weight = 3 + # language code + languageCode = "fr" + # language name + languageName = "Français" + # whether to include Chinese/Japanese/Korean + hasCJKLanguage = false + # default amount of posts in each pages + paginate = 12 + # [UA-XXXXXXXX-X] google analytics code + googleAnalytics = "" + # copyright description used only for seo schema + copyright = "This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License." + # Menu config + [languages.fr.menu] + [[languages.fr.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "Postes" + url = "/posts/" + title = "" + weight = 1 + [[languages.fr.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Balises" + url = "/tags/" + title = "" + weight = 2 + [[languages.fr.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "Catégories" + url = "/categories/" + title = "" + weight = 3 + [[languages.fr.menu.main]] + identifier = "documentation" + pre = "" + post = "" + name = "Docs" + url = "/categories/documentation/" + title = "" + weight = 4 + [[languages.fr.menu.main]] + identifier = "about" + pre = "" + name = "À propos" + url = "/about/" + title = "" + weight = 5 + [[languages.fr.menu.main]] + identifier = "github" + pre = "" + post = "" + name = "" + url = "https://github.com/dillonzq/LoveIt" + title = "GitHub" + weight = 6 + [languages.fr.params] + # site description + description = "À propos du thème LoveIt" + # site keywords + keywords = ["Thème", "Hugo"] + # App icon config + [languages.fr.params.app] + # optional site title override for the app when added to an iOS home screen or Android launcher + title = "LoveIt" + # whether to omit favicon resource links + noFavicon = false + # modern SVG favicon to use in place of older style .png and .ico files + svgFavicon = "" + # Android browser theme color + themeColor = "#ffffff" + # Safari mask icon color + iconColor = "#5bbad5" + # Windows v8-10 tile color + tileColor = "#da532c" + # Search config + [languages.fr.params.search] + enable = true + # type of search engine ("lunr", "algolia") + type = "algolia" + # max index length of the chunked content + contentLength = 4000 + # placeholder of the search bar + placeholder = "" + # max number of results length + maxResultLength = 10 + # snippet length of the result + snippetLength = 30 + # HTML tag name of the highlight part in results + highlightTag = "em" + # whether to use the absolute URL based on the baseURL in search index + absoluteURL = false + [languages.fr.params.search.algolia] + index = "index.fr" + appID = "PASDMWALPK" + searchKey = "b42948e51daaa93df92381c8e2ac0f93" + # Home page config + [languages.fr.params.home] + # amount of RSS pages + rss = 10 + # Home page profile + [languages.fr.params.home.profile] + enable = true + # Gravatar Email for preferred avatar in home page + gravatarEmail = "" + # URL of avatar shown in home page + avatarURL = "/images/avatar.png" + # title shown in home page (HTML format is supported) + title = "" + # subtitle shown in home page + subtitle = "Un thème Hugo simple, élégant et efficace" + # whether to use typeit animation for subtitle + typeit = true + # whether to show social links + social = true + # disclaimer (HTML format is supported) + disclaimer = "" + # Home page posts + [languages.fr.params.home.posts] + enable = true + # special amount of posts in each home posts page + paginate = 6 + # Social config in home page + [languages.fr.params.social] + GitHub = "xxxx" + Linkedin = "xxxx" + Twitter = "xxxx" + Instagram = "" + Facebook = "" + Telegram = "" + Medium = "" + Gitlab = "" + Youtubelegacy = "" + Youtubecustom = "" + Youtubechannel = "" + Tumblr = "" + Quora = "" + Keybase = "" + Pinterest = "" + Reddit = "" + Codepen = "" + FreeCodeCamp = "" + Bitbucket = "" + Stackoverflow = "" + Weibo = "" + Odnoklassniki = "" + VK = "" + Flickr = "" + Xing = "" + Snapchat = "xxxx" + Soundcloud = "" + Spotify = "" + Bandcamp = "" + Paypal = "" + Fivehundredpx = "" + Mix = "" + Goodreads = "" + Lastfm = "" + Foursquare = "" + Hackernews = "xxxx" + Kickstarter = "" + Patreon = "" + Steam = "" + Twitch = "" + Strava = "" + Skype = "" + Whatsapp = "" + Zhihu = "" + Douban = "" + Angellist = "" + Slidershare = "" + Jsfiddle = "" + Deviantart = "" + Behance = "" + Dribbble = "xxxx" + Wordpress = "" + Vine = "" + Googlescholar = "" + Researchgate = "" + Mastodon = "" + Thingiverse = "" + Devto = "" + Gitea = "" + XMPP = "" + Matrix = "" + Bilibili = "" + Email = "xxxx@xxxx.com" + RSS = true + +[params] + # LoveIt theme version + # LoveIt 主题版本 + version = "0.2.X" + # site default theme ("light", "dark", "auto") + # 网站默认主题 ("light", "dark", "auto") + defaultTheme = "auto" + # public git repo url only then enableGitInfo is true + # 公共 git 仓库路径,仅在 enableGitInfo 设为 true 时有效 + gitRepo = "https://github.com/dillonzq/LoveIt" + # which hash function used for SRI, when empty, no SRI is used ("sha256", "sha384", "sha512", "md5") + # 哪种哈希函数用来 SRI, 为空时表示不使用 SRI ("sha256", "sha384", "sha512", "md5") + fingerprint = "" + # date format + # 日期格式 + dateFormat = "2006-01-02" + # website images for Open Graph and Twitter Cards + # 网站图片, 用于 Open Graph 和 Twitter Cards + images = ["/logo.png"] + + # Header config + # 页面头部导航栏配置 + [params.header] + # desktop header mode ("fixed", "normal", "auto") + # 桌面端导航栏模式 ("fixed", "normal", "auto") + desktopMode = "fixed" + # mobile header mode ("fixed", "normal", "auto") + # 移动端导航栏模式 ("fixed", "normal", "auto") + mobileMode = "auto" + # Header title config + # 页面头部导航栏标题配置 + [params.header.title] + # URL of the LOGO + # LOGO 的 URL + logo = "" + # title name + # 标题名称 + name = "LoveIt" + # you can add extra information before the name (HTML format is supported), such as icons + # 你可以在名称 (允许 HTML 格式) 之前添加其他信息, 例如图标 + pre = "" + # you can add extra information after the name (HTML format is supported), such as icons + # 你可以在名称 (允许 HTML 格式) 之后添加其他信息, 例如图标 + post = "" + # whether to use typeit animation for title name + # 是否为标题显示打字机动画 + typeit = false + + # Footer config + # 页面底部信息配置 + [params.footer] + enable = true + # Custom content (HTML format is supported) + # 自定义内容 (支持 HTML 格式) + custom = '' + # whether to show Hugo and theme info + # 是否显示 Hugo 和主题信息 + hugo = true + # whether to show copyright info + # 是否显示版权信息 + copyright = true + # whether to show the author + # 是否显示作者 + author = true + # site creation time + # 网站创立年份 + since = 2019 + # ICP info only in China (HTML format is supported) + # ICP 备案信息,仅在中国使用 (支持 HTML 格式) + icp = "" + # license info (HTML format is supported) + # 许可协议信息 (支持 HTML 格式) + license= 'CC BY-NC 4.0' + + # Section (all posts) page config + # Section (所有文章) 页面配置 + [params.section] + # special amount of posts in each section page + # section 页面每页显示文章数量 + paginate = 20 + # date format (month and day) + # 日期格式 (月和日) + dateFormat = "01-02" + # amount of RSS pages + # RSS 文章数目 + rss = 10 + + # List (category or tag) page config + # List (目录或标签) 页面配置 + [params.list] + # special amount of posts in each list page + # list 页面每页显示文章数量 + paginate = 20 + # date format (month and day) + # 日期格式 (月和日) + dateFormat = "01-02" + # amount of RSS pages + # RSS 文章数目 + rss = 10 + + # Page config + # 文章页面配置 + [params.page] + # whether to hide a page from home page + # 是否在主页隐藏一篇文章 + hiddenFromHomePage = false + # whether to hide a page from search results + # 是否在搜索结果中隐藏一篇文章 + hiddenFromSearch = false + # whether to enable twemoji + # 是否使用 twemoji + twemoji = false + # whether to enable lightgallery + # 是否使用 lightgallery + lightgallery = false + # whether to enable the ruby extended syntax + # 是否使用 ruby 扩展语法 + ruby = true + # whether to enable the fraction extended syntax + # 是否使用 fraction 扩展语法 + fraction = true + # whether to enable the fontawesome extended syntax + # 是否使用 fontawesome 扩展语法 + fontawesome = true + # whether to show link to Raw Markdown content of the content + # 是否显示原始 Markdown 文档内容的链接 + linkToMarkdown = true + # whether to show the full text content in RSS + # 是否在 RSS 中显示全文内容 + rssFullText = false + # Table of the contents config + # 目录配置 + [params.page.toc] + # whether to enable the table of the contents + # 是否使用目录 + enable = true + # whether to keep the static table of the contents in front of the post + # 是否保持使用文章前面的静态目录 + keepStatic = false + # whether to make the table of the contents in the sidebar automatically collapsed + # 是否使侧边目录自动折叠展开 + auto = true + # Code config + # 代码配置 + [params.page.code] + # whether to show the copy button of the code block + # 是否显示代码块的复制按钮 + copy = true + # the maximum number of lines of displayed code by default + # 默认展开显示的代码行数 + maxShownLines = 10 + # KaTeX mathematical formulas config (KaTeX https://katex.org/) + # KaTeX 数学公式配置 (KaTeX https://katex.org/) + [params.page.math] + enable = false + # default block delimiter is $$ ... $$ and \\[ ... \\] + # 默认块定界符是 $$ ... $$ 和 \\[ ... \\] + blockLeftDelimiter = "" + blockRightDelimiter = "" + # default inline delimiter is $ ... $ and \\( ... \\) + # 默认行内定界符是 $ ... $ 和 \\( ... \\) + inlineLeftDelimiter = "" + inlineRightDelimiter = "" + # KaTeX extension copy_tex + # KaTeX 插件 copy_tex + copyTex = true + # KaTeX extension mhchem + # KaTeX 插件 mhchem + mhchem = true + # Mapbox GL JS config (Mapbox GL JS https://docs.mapbox.com/mapbox-gl-js) + # Mapbox GL JS 配置 (Mapbox GL JS https://docs.mapbox.com/mapbox-gl-js) + [params.page.mapbox] + # access token of Mapbox GL JS + # Mapbox GL JS 的 access token + accessToken = "pk.eyJ1IjoiZGlsbG9uenEiLCJhIjoiY2s2czd2M2x3MDA0NjNmcGxmcjVrZmc2cyJ9.aSjv2BNuZUfARvxRYjSVZQ" + # style for the light theme + # 浅色主题的地图样式 + lightStyle = "mapbox://styles/mapbox/light-v10?optimize=true" + # style for the dark theme + # 深色主题的地图样式 + darkStyle = "mapbox://styles/mapbox/dark-v10?optimize=true" + # whether to add NavigationControl (https://docs.mapbox.com/mapbox-gl-js/api/#navigationcontrol) + # 是否添加 NavigationControl (https://docs.mapbox.com/mapbox-gl-js/api/#navigationcontrol) + navigation = true + # whether to add GeolocateControl (https://docs.mapbox.com/mapbox-gl-js/api/#geolocatecontrol) + # 是否添加 GeolocateControl (https://docs.mapbox.com/mapbox-gl-js/api/#geolocatecontrol) + geolocate = true + # whether to add ScaleControl (https://docs.mapbox.com/mapbox-gl-js/api/#scalecontrol) + # 是否添加 ScaleControl (https://docs.mapbox.com/mapbox-gl-js/api/#scalecontrol) + scale = true + # whether to add FullscreenControl (https://docs.mapbox.com/mapbox-gl-js/api/#fullscreencontrol) + # 是否添加 FullscreenControl (https://docs.mapbox.com/mapbox-gl-js/api/#fullscreencontrol) + fullscreen = true + # Social share links in post page + # 文章页面的分享信息设置 + [params.page.share] + enable = true + Twitter = true + Facebook = true + Linkedin = false + Whatsapp = false + Pinterest = false + Tumblr = false + HackerNews = true + Reddit = false + VK = false + Buffer = false + Xing = false + Line = true + Instapaper = false + Pocket = false + Digg = false + Stumbleupon = false + Flipboard = false + Weibo = true + Renren = false + Myspace = false + Blogger = false + Baidu = false + Odnoklassniki = false + Evernote = false + Skype = false + Trello = false + Mix = false + # Comment config + # 评论系统设置 + [params.page.comment] + enable = true + # Disqus comment config (https://disqus.com/) + # Disqus 评论系统设置 (https://disqus.com/) + [params.page.comment.disqus] + enable = false + # Disqus shortname to use Disqus in posts + # Disqus 的 shortname,用来在文章中启用 Disqus 评论系统 + shortname = "" + # Gitalk comment config (https://github.com/gitalk/gitalk) + # Gitalk 评论系统设置 (https://github.com/gitalk/gitalk) + [params.page.comment.gitalk] + enable = false + owner = "" + repo = "" + clientId = "" + clientSecret = "" + # Valine comment config (https://github.com/xCss/Valine) + # Valine 评论系统设置 (https://github.com/xCss/Valine) + [params.page.comment.valine] + enable = true + appId = "QGzwQXOqs5JOhN4RGPOkR2mR-MdYXbMMI" + appKey = "WBmoGyJtbqUswvfLh6L8iEBr" + placeholder = "" + avatar = "mp" + meta= "" + pageSize = 10 + lang = "" + visitor = true + recordIP = true + highlight = true + enableQQ = false + serverURLs = "https://leancloud.hugoloveit.com" + # emoji data file name, default is "google.yml" + # ("apple.yml", "google.yml", "facebook.yml", "twitter.yml") + # located in "themes/LoveIt/assets/data/emoji/" directory + # you can store your own data files in the same path under your project: + # "assets/data/emoji/" + # emoji 数据文件名称, 默认是 "google.yml" + # ("apple.yml", "google.yml", "facebook.yml", "twitter.yml") + # 位于 "themes/LoveIt/assets/data/emoji/" 目录 + # 可以在你的项目下相同路径存放你自己的数据文件: + # "assets/data/emoji/" + emoji = "" + # Facebook comment config (https://developers.facebook.com/docs/plugins/comments) + # Facebook 评论系统设置 (https://developers.facebook.com/docs/plugins/comments) + [params.page.comment.facebook] + enable = false + width = "100%" + numPosts = 10 + appId = "" + languageCode = "" + # Telegram comments config (https://comments.app/) + # Telegram comments 评论系统设置 (https://comments.app/) + [params.page.comment.telegram] + enable = false + siteID = "" + limit = 5 + height = "" + color = "" + colorful = true + dislikes = false + outlined = false + # Commento comment config (https://commento.io/) + # Commento comment 评论系统设置 (https://commento.io/) + [params.page.comment.commento] + enable = false + # Utterances comment config (https://utteranc.es/) + # Utterances comment 评论系统设置 (https://utteranc.es/) + [params.page.comment.utterances] + enable = false + # owner/repo + repo = "" + issueTerm = "pathname" + label = "" + lightTheme = "github-light" + darkTheme = "github-dark" + # Third-party library config + # 第三方库配置 + [params.page.library] + [params.page.library.css] + # someCSS = "some.css" + # located in "assets/" 位于 "assets/" + # Or 或者 + # someCSS = "https://cdn.example.com/some.css" + [params.page.library.js] + # someJavascript = "some.js" + # located in "assets/" 位于 "assets/" + # Or 或者 + # someJavascript = "https://cdn.example.com/some.js" + # Page SEO config + # 页面 SEO 配置 + [params.page.seo] + # image URL + # 图片 URL + images = [] + # Publisher info + # 出版者信息 + [params.page.seo.publisher] + name = "xxxx" + logoUrl = "/images/avatar.png" + + # TypeIt config + # TypeIt 配置 + [params.typeit] + # typing speed between each step (measured in milliseconds) + # 每一步的打字速度 (单位是毫秒) + speed = 100 + # blinking speed of the cursor (measured in milliseconds) + # 光标的闪烁速度 (单位是毫秒) + cursorSpeed = 1000 + # character used for the cursor (HTML format is supported) + # 光标的字符 (支持 HTML 格式) + cursorChar = "|" + # cursor duration after typing finishing (measured in milliseconds, "-1" means unlimited) + # 打字结束之后光标的持续时间 (单位是毫秒, "-1" 代表无限大) + duration = -1 + + # Site verification code for Google/Bing/Yandex/Pinterest/Baidu + # 网站验证代码,用于 Google/Bing/Yandex/Pinterest/Baidu + [params.verification] + google = "" + bing = "" + yandex = "" + pinterest = "" + baidu = "" + + # Site SEO config + # 网站 SEO 配置 + [params.seo] + # image URL + # 图片 URL + image = "/images/Apple-Devices-Preview.png" + # thumbnail URL + # 缩略图 URL + thumbnailUrl = "/images/screenshot.png" + + # Analytics config + # 网站分析配置 + [params.analytics] + enable = false + # Google Analytics + [params.analytics.google] + id = "" + # whether to anonymize IP + # 是否匿名化用户 IP + anonymizeIP = true + # Fathom Analytics + [params.analytics.fathom] + id = "" + # server url for your tracker if you're self hosting + # 自行托管追踪器时的主机路径 + server = "" + + # Cookie consent config + # Cookie 许可配置 + [params.cookieconsent] + enable = false + # text strings used for Cookie consent banner + # 用于 Cookie 许可横幅的文本字符串 + [params.cookieconsent.content] + message = "" + dismiss = "" + link = "" + + # CDN config for third-party library files + # 第三方库文件的 CDN 设置 + [params.cdn] + # CDN data file name, disabled by default + # ("jsdelivr.yml") + # located in "themes/LoveIt/assets/data/cdn/" directory + # you can store your own data files in the same path under your project: + # "assets/data/cdn/" + # CDN 数据文件名称, 默认不启用 + # ("jsdelivr.yml") + # 位于 "themes/LoveIt/assets/data/cdn/" 目录 + # 可以在你的项目下相同路径存放你自己的数据文件: + # "assets/data/cdn/" + data = "jsdelivr.yml" + + # Compatibility config + # 兼容性设置 + [params.compatibility] + # whether to use Polyfill.io to be compatible with older browsers + # 是否使用 Polyfill.io 来兼容旧式浏览器 + polyfill = false + # whether to use object-fit-images to be compatible with older browsers + # 是否使用 object-fit-images 来兼容旧式浏览器 + objectFit = false + +# Markup related configuration in Hugo +# Hugo 解析文档的配置 +[markup] + # Syntax Highlighting (https://gohugo.io/content-management/syntax-highlighting) + # 语法高亮设置 (https://gohugo.io/content-management/syntax-highlighting) + [markup.highlight] + codeFences = true + guessSyntax = true + lineNos = true + lineNumbersInTable = true + # false is a necessary configuration (https://github.com/dillonzq/LoveIt/issues/158) + # false 是必要的设置 (https://github.com/dillonzq/LoveIt/issues/158) + noClasses = false + # Goldmark is from Hugo 0.60 the default library used for Markdown + # Goldmark 是 Hugo 0.60 以来的默认 Markdown 解析库 + [markup.goldmark] + [markup.goldmark.extensions] + definitionList = true + footnote = true + linkify = true + strikethrough = true + table = true + taskList = true + typographer = true + [markup.goldmark.renderer] + # whether to use HTML tags directly in the document + # 是否在文档中直接使用 HTML 标签 + unsafe = true + # Table Of Contents settings + # 目录设置 + [markup.tableOfContents] + startLevel = 2 + endLevel = 6 + +# Author config +# 作者配置 +[author] + name = "xxxx" + email = "" + link = "" + +# Sitemap config +# 网站地图配置 +[sitemap] + changefreq = "weekly" + filename = "sitemap.xml" + priority = 0.5 + +# Permalinks config (https://gohugo.io/content-management/urls/#permalinks) +# Permalinks 配置 (https://gohugo.io/content-management/urls/#permalinks) +[Permalinks] + # posts = ":year/:month/:filename" + posts = ":filename" + +# Privacy config (https://gohugo.io/about/hugo-and-gdpr/) +# 隐私信息配置 (https://gohugo.io/about/hugo-and-gdpr/) +[privacy] + # privacy of the Google Analytics (replaced by params.analytics.google) + # Google Analytics 相关隐私 (被 params.analytics.google 替代) + [privacy.googleAnalytics] + # ... + [privacy.twitter] + enableDNT = true + [privacy.youtube] + privacyEnhanced = true + +# Options to make output .md files +# 用于输出 Markdown 格式文档的设置 +[mediaTypes] + [mediaTypes."text/plain"] + suffixes = ["md"] + +# Options to make output .md files +# 用于输出 Markdown 格式文档的设置 +[outputFormats.MarkDown] + mediaType = "text/plain" + isPlainText = true + isHTML = false + +# Options to make hugo output files +# 用于 Hugo 输出文档的设置 +[outputs] + home = ["HTML", "RSS", "JSON"] + page = ["HTML", "MarkDown"] + section = ["HTML", "RSS"] + taxonomy = ["HTML", "RSS"] + taxonomyTerm = ["HTML"] diff --git a/themes/LoveIt/exampleSite/content/about/index.en.md b/themes/LoveIt/exampleSite/content/about/index.en.md new file mode 100644 index 00000000..6d4b15fc --- /dev/null +++ b/themes/LoveIt/exampleSite/content/about/index.en.md @@ -0,0 +1,117 @@ +--- +title: "About LoveIt" +date: 2019-08-02T11:04:49+08:00 +draft: false + +lightgallery: true + +math: + enable: true +--- + +{{< style "img { height: 1.25rem; }" >}} +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/releases) +[![Hugo](https://img.shields.io/badge/Hugo-%5E0.62.0-ff4088?style=flat-square&logo=hugo)](https://gohugo.io/) +[![License](https://img.shields.io/github/license/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) +[![GitHub stars](https://img.shields.io/github/stars/dillonzq/LoveIt?style=social)](https://github.com/dillonzq/LoveIt) +[![GitHub forks](https://img.shields.io/github/forks/dillonzq/LoveIt?style=social)](https://github.com/dillonzq/LoveIt/fork) +{{< /style >}} + +> [:(far fa-kiss-wink-heart fa-fw): LoveIt](https://github.com/dillonzq/LoveIt) is a **clean**, **elegant** but **advanced** blog theme for [Hugo](https://gohugo.io/) developed by [Dillon](https://dillonzq.com). +> +> It is based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt) and [KeepIt Theme](https://github.com/Fastbyte01/KeepIt). + +![Hugo Theme LoveIt](/images/Apple-Devices-Preview.png "Hugo Theme LoveIt") + +### Features + +#### Performance and SEO + +* :(fas fa-rocket fa-fw): Optimized for **performance**: [99]/[100] on mobile and [100]/[100] on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) +* :(fab fa-searchengin fa-fw): Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD +* :(fab fa-google fa-fw): **[Google Analytics](https://analytics.google.com/analytics)** supported +* :(far fa-chart-bar fa-fw): **[Fathom Analytics](https://usefathom.com/)** supported +* :(fas fa-search fa-fw): Search engine **verification** supported (Google, Bind, Yandex and Baidu) +* :(fas fa-tachometer-alt fa-fw): **CDN** for third-party libraries supported +* :(fas fa-cloud-download-alt fa-fw): Automatically converted images with **Lazy Load** by [lazysizes](https://github.com/aFarkas/lazysizes) + +#### Appearance and Layout + +* [:(fas fa-desktop):]/[:(fas fa-mobile):] **Responsive** layout +* [:(fas fa-sun):]/[:(fas fa-moon):] **[Light]/[Dark]** mode +* :(fas fa-layer-group fa-fw): Globally consistent **design language** +* :(fas fa-ellipsis-h fa-fw): **Pagination** supported +* :(far fa-list-alt fa-fw): Easy-to-use and self-expanding **table of contents** +* :(fas fa-language fa-fw): **Multilanguage** supported and i18n ready +* :(fab fa-css3-alt fa-fw): Beautiful **CSS animation** + +#### Social and Comment Systems + +* :(far fa-user fa-fw): **Gravatar** supported by [Gravatar](https://gravatar.com) +* :(fas fa-user-circle fa-fw): Local **Avatar** supported +* :(far fa-id-card fa-fw): Up to **64** social links supported +* :(fas fa-share-square fa-fw): Up to **28** share sites supported +* :(far fa-comment fa-fw): **Disqus** comment system supported by [Disqus](https://disqus.com) +* :(far fa-comment-dots fa-fw): **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk) +* :(far fa-comment-alt fa-fw): **Valine** comment system supported by [Valine](https://valine.js.org/) +* :(far fa-comments fa-fw): **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/) +* :(fas fa-comment fa-fw): **Telegram comments** system supported by [Comments](https://comments.app/) +* :(fas fa-comment-dots fa-fw): **Commento** comment system supported by [Commento](https://commento.io/) +* :(fas fa-comment-alt fa-fw): **Utterances** comment system supported by [Utterances](https://utteranc.es/) + +#### Extended Features + +* :(fas fa-search fa-fw): **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/) +* :(far fa-grin-tongue-wink fa-fw): **Twemoji** supported +* :(fas fa-code fa-fw): Automatically **highlighting** code +* :(far fa-copy fa-fw): **Copy code** to clipboard with one click +* :(far fa-images fa-fw): **Images gallery** supported by [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) +* :(fab fa-font-awesome fa-fw): Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons** +* :(far fa-sticky-note fa-fw): Extended Markdown syntax for **ruby annotation** +* :(fas fa-percentage fa-fw): Extended Markdown syntax for **fraction** +* :(fas fa-square-root-alt fa-fw): **Mathematical formula** supported by [$ \KaTeX $](https://katex.org/) +* :(fas fa-project-diagram fa-fw): **Diagrams** shortcode supported by [mermaid](https://github.com/knsv/mermaid) +* :(fas fa-chart-pie fa-fw): **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/) +* :(fas fa-map-marked-alt fa-fw): **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) +* :(fas fa-music fa-fw): **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS) +* :(fas fa-video fa-fw): **Bilibili player** shortcode +* :(far fa-bell fa-fw): Kinds of **admonitions** shortcode +* :(fas fa-align-left fa-fw): **Custom style** shortcode +* :(fab fa-js-square fa-fw): **Custom script** shortcode +* :(fas fa-i-cursor fa-fw): **Animated typing** supported by [TypeIt](https://typeitjs.com/) +* :(fas fa-arrow-down fa-fw): **Dynamic scroll** supported by [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +* :(fas fa-cookie-bite fa-fw): **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent) +* ... + +### License + +LoveIt is licensed under the **MIT** license. + +Check the [LICENSE file](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) for details. + +Thanks to the authors of following resources included in the theme: + +* [normalize.css](https://github.com/necolas/normalize.css) +* [Font Awesome](https://fontawesome.com/) +* [Simple Icons](https://github.com/simple-icons/simple-icons) +* [Animate.css](https://daneden.github.io/animate.css/) +* [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +* [autocomplete.js](https://github.com/algolia/autocomplete.js) +* [Lunr.js](https://lunrjs.com/) +* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript) +* [lazysizes](https://github.com/aFarkas/lazysizes) +* [object-fit-images](https://github.com/fregante/object-fit-images) +* [Twemoji](https://github.com/twitter/twemoji) +* [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) +* [clipboard.js](https://github.com/zenorocha/clipboard.js) +* [Sharer.js](https://github.com/ellisonleao/sharer.js) +* [TypeIt](https://typeitjs.com/) +* [$ \KaTeX $](https://katex.org/) +* [mermaid](https://github.com/knsv/mermaid) +* [ECharts](https://echarts.apache.org/) +* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) +* [APlayer](https://github.com/MoePlayer/APlayer) +* [MetingJS](https://github.com/metowolf/MetingJS) +* [Gitalk](https://github.com/gitalk/gitalk) +* [Valine](https://valine.js.org/) +* [cookieconsent](https://github.com/osano/cookieconsent) diff --git a/themes/LoveIt/exampleSite/content/about/index.fr.md b/themes/LoveIt/exampleSite/content/about/index.fr.md new file mode 100644 index 00000000..58013fea --- /dev/null +++ b/themes/LoveIt/exampleSite/content/about/index.fr.md @@ -0,0 +1,122 @@ +--- +title: "À propos de LoveIt" +date: 2019-08-02T11:04:49+08:00 +draft: false + +lightgallery: true + +math: + enable: true +--- + +{{< style "img { height: 1.25rem; }" >}} +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/releases) +[![Hugo](https://img.shields.io/badge/Hugo-%5E0.62.0-ff4088?style=flat-square&logo=hugo)](https://gohugo.io/) +[![License](https://img.shields.io/github/license/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) +[![GitHub stars](https://img.shields.io/github/stars/dillonzq/LoveIt?style=social)](https://github.com/dillonzq/LoveIt) +[![GitHub forks](https://img.shields.io/github/forks/dillonzq/LoveIt?style=social)](https://github.com/dillonzq/LoveIt/fork) +{{< /style >}} + +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + +> [:(far fa-kiss-wink-heart fa-fw): LoveIt](https://github.com/dillonzq/LoveIt) is a **clean**, **elegant** but **advanced** blog theme for [Hugo](https://gohugo.io/) developed by [Dillon](https://dillonzq.com). +> +> It is based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt) and [KeepIt Theme](https://github.com/Fastbyte01/KeepIt). + +![Hugo Theme LoveIt](/images/Apple-Devices-Preview.png "Hugo Theme LoveIt") + +### Features + +#### Performance and SEO + +* :(fas fa-rocket fa-fw): Optimized for **performance**: [99]/[100] on mobile and [100]/[100] on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) +* :(fab fa-searchengin fa-fw): Optimized SEO performance with a correct **SEO SCHEMA** based on JSON-LD +* :(fab fa-google fa-fw): **[Google Analytics](https://analytics.google.com/analytics)** supported +* :(far fa-chart-bar fa-fw): **[Fathom Analytics](https://usefathom.com/)** supported +* :(fas fa-search fa-fw): Search engine **verification** supported (Google, Bind, Yandex and Baidu) +* :(fas fa-tachometer-alt fa-fw): **CDN** for third-party libraries supported +* :(fas fa-cloud-download-alt fa-fw): Automatically converted images with **Lazy Load** by [lazysizes](https://github.com/aFarkas/lazysizes) + +#### Appearance and Layout + +* [:(fas fa-desktop):]/[:(fas fa-mobile):] **Responsive** layout +* [:(fas fa-sun):]/[:(fas fa-moon):] **[Light]/[Dark]** mode +* :(fas fa-layer-group fa-fw): Globally consistent **design language** +* :(fas fa-ellipsis-h fa-fw): **Pagination** supported +* :(far fa-list-alt fa-fw): Easy-to-use and self-expanding **table of contents** +* :(fas fa-language fa-fw): **Multilanguage** supported and i18n ready +* :(fab fa-css3-alt fa-fw): Beautiful **CSS animation** + +#### Social and Comment Systems + +* :(far fa-user fa-fw): **Gravatar** supported by [Gravatar](https://gravatar.com) +* :(fas fa-user-circle fa-fw): Local **Avatar** supported +* :(far fa-id-card fa-fw): Up to **64** social links supported +* :(fas fa-share-square fa-fw): Up to **28** share sites supported +* :(far fa-comment fa-fw): **Disqus** comment system supported by [Disqus](https://disqus.com) +* :(far fa-comment-dots fa-fw): **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk) +* :(far fa-comment-alt fa-fw): **Valine** comment system supported by [Valine](https://valine.js.org/) +* :(far fa-comments fa-fw): **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/) +* :(fas fa-comment fa-fw): **Telegram comments** system supported by [Comments](https://comments.app/) +* :(fas fa-comment-dots fa-fw): **Commento** comment system supported by [Commento](https://commento.io/) +* :(fas fa-comment-alt fa-fw): **Utterances** comment system supported by [Utterances](https://utteranc.es/) + +#### Extended Features + +* :(fas fa-search fa-fw): **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/) +* :(far fa-grin-tongue-wink fa-fw): **Twemoji** supported +* :(fas fa-code fa-fw): Automatically **highlighting** code +* :(far fa-copy fa-fw): **Copy code** to clipboard with one click +* :(far fa-images fa-fw): **Images gallery** supported by [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) +* :(fab fa-font-awesome fa-fw): Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons** +* :(far fa-sticky-note fa-fw): Extended Markdown syntax for **ruby annotation** +* :(fas fa-percentage fa-fw): Extended Markdown syntax for **fraction** +* :(fas fa-square-root-alt fa-fw): **Mathematical formula** supported by [$ \KaTeX $](https://katex.org/) +* :(fas fa-project-diagram fa-fw): **Diagrams** shortcode supported by [mermaid](https://github.com/knsv/mermaid) +* :(fas fa-chart-pie fa-fw): **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/) +* :(fas fa-map-marked-alt fa-fw): **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) +* :(fas fa-music fa-fw): **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS) +* :(fas fa-video fa-fw): **Bilibili player** shortcode +* :(far fa-bell fa-fw): Kinds of **admonitions** shortcode +* :(fas fa-align-left fa-fw): **Custom style** shortcode +* :(fab fa-js-square fa-fw): **Custom script** shortcode +* :(fas fa-i-cursor fa-fw): **Animated typing** supported by [TypeIt](https://typeitjs.com/) +* :(fas fa-arrow-down fa-fw): **Dynamic scroll** supported by [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +* :(fas fa-cookie-bite fa-fw): **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent) +* ... + +### License + +LoveIt is licensed under the **MIT** license. + +Check the [LICENSE file](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) for details. + +Thanks to the authors of following resources included in the theme: + +* [normalize.css](https://github.com/necolas/normalize.css) +* [Font Awesome](https://fontawesome.com/) +* [Simple Icons](https://github.com/simple-icons/simple-icons) +* [Animate.css](https://daneden.github.io/animate.css/) +* [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +* [autocomplete.js](https://github.com/algolia/autocomplete.js) +* [Lunr.js](https://lunrjs.com/) +* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript) +* [lazysizes](https://github.com/aFarkas/lazysizes) +* [object-fit-images](https://github.com/fregante/object-fit-images) +* [Twemoji](https://github.com/twitter/twemoji) +* [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) +* [clipboard.js](https://github.com/zenorocha/clipboard.js) +* [Sharer.js](https://github.com/ellisonleao/sharer.js) +* [TypeIt](https://typeitjs.com/) +* [$ \KaTeX $](https://katex.org/) +* [mermaid](https://github.com/knsv/mermaid) +* [ECharts](https://echarts.apache.org/) +* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) +* [APlayer](https://github.com/MoePlayer/APlayer) +* [MetingJS](https://github.com/metowolf/MetingJS) +* [Gitalk](https://github.com/gitalk/gitalk) +* [Valine](https://valine.js.org/) +* [cookieconsent](https://github.com/osano/cookieconsent) diff --git a/themes/LoveIt/exampleSite/content/about/index.zh-cn.md b/themes/LoveIt/exampleSite/content/about/index.zh-cn.md new file mode 100644 index 00000000..6a830a6b --- /dev/null +++ b/themes/LoveIt/exampleSite/content/about/index.zh-cn.md @@ -0,0 +1,117 @@ +--- +title: "关于 LoveIt" +date: 2019-08-02T11:04:49+08:00 +draft: false + +lightgallery: true + +math: + enable: true +--- + +{{< style "img { height: 1.25rem; }" >}} +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/releases) +[![Hugo](https://img.shields.io/badge/Hugo-%5E0.62.0-ff4088?style=flat-square&logo=hugo)](https://gohugo.io/) +[![License](https://img.shields.io/github/license/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) +[![GitHub stars](https://img.shields.io/github/stars/dillonzq/LoveIt?style=social)](https://github.com/dillonzq/LoveIt) +[![GitHub forks](https://img.shields.io/github/forks/dillonzq/LoveIt?style=social)](https://github.com/dillonzq/LoveIt/fork) +{{< /style >}} + +> [:(far fa-kiss-wink-heart fa-fw): LoveIt](https://github.com/dillonzq/LoveIt) 是一个由 [Dillon](https://dillonzq.com) 开发的**简洁**、**优雅**且**高效**的 [Hugo](https://gohugo.io/) 博客主题。 +> +> 它的原型基于 [LeaveIt 主题](https://github.com/liuzc/LeaveIt) 和 [KeepIt 主题](https://github.com/Fastbyte01/KeepIt)。 + +![Hugo 主题 LoveIt](/images/Apple-Devices-Preview.png "Hugo 主题 LoveIt") + +### 特性 + +#### 性能和 SEO + +* :(fas fa-rocket fa-fw): **性能**优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中, [99]/[100] 的移动设备得分和 [100]/[100] 的桌面设备得分 +* :(fab fa-searchengin fa-fw): 使用基于 JSON-LD 格式 的 **SEO SCHEMA** 文件进行 SEO 优化 +* :(fab fa-google fa-fw): 支持 **[Google Analytics](https://analytics.google.com/analytics)** +* :(far fa-chart-bar fa-fw): 支持 **[Fathom Analytics](https://usefathom.com/)** +* :(fas fa-search fa-fw): 支持搜索引擎的**网站验证** (Google, Bind, Yandex and Baidu) +* :(fas fa-tachometer-alt fa-fw): 支持所有第三方库的 **CDN** +* :(fas fa-cloud-download-alt fa-fw): 基于 [lazysizes](https://github.com/aFarkas/lazysizes) 自动转换图片为**懒加载** + +#### 外观和布局 + +* [:(fas fa-desktop):]/[:(fas fa-mobile):] **响应式**布局 +* [:(fas fa-sun):]/[:(fas fa-moon):] **[浅色]/[深色]** 主题模式 +* :(fas fa-layer-group fa-fw): 全局一致的**设计语言** +* :(fas fa-ellipsis-h fa-fw): 支持**分页** +* :(far fa-list-alt fa-fw): 易用和自动展开的**文章目录** +* :(fas fa-language fa-fw): 支持**多语言**和国际化 +* :(fab fa-css3-alt fa-fw): 美观的 **CSS 动画** + +#### 社交和评论系统 + +* :(far fa-user fa-fw): 支持 **[Gravatar](https://gravatar.com)** 头像 +* :(fas fa-user-circle fa-fw): 支持本地**头像** +* :(far fa-id-card fa-fw): 支持多达 **64** 种社交链接 +* :(fas fa-share-square fa-fw): 支持多达 **28** 种网站分享 +* :(far fa-comment fa-fw): 支持 **[Disqus](https://disqus.com)** 评论系统 +* :(far fa-comment-dots fa-fw): 支持 **[Gitalk](https://github.com/gitalk/gitalk)** 评论系统 +* :(far fa-comment-alt fa-fw): 支持 **[Valine](https://valine.js.org/)** 评论系统 +* :(far fa-comments fa-fw): 支持 **[Facebook](https://developers.facebook.com/docs/plugins/comments/) 评论**系统 +* :(fas fa-comment fa-fw): 支持 **[Telegram comments](https://comments.app/) 评论**系统 +* :(fas fa-comment-dots fa-fw): 支持 **[Commento](https://commento.io/)** 评论系统 +* :(far fa-comment-alt fa-fw): 支持 **[Utterances](https://utteranc.es/)** 评论系统 + +#### 扩展功能 + +* :(fas fa-search fa-fw): 支持基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/) 的**搜索** +* :(far fa-grin-tongue-wink fa-fw): 支持 **Twemoji** +* :(fas fa-code fa-fw): 支持**代码高亮** +* :(far fa-copy fa-fw): 一键**复制代码**到剪贴板 +* :(far fa-images fa-fw): 支持基于 [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) 的**图片画廊** +* :(fab fa-font-awesome fa-fw): 支持 **[Font Awesome](https://fontawesome.com/) 图标**的扩展 Markdown 语法 +* :(far fa-sticky-note fa-fw): 支持**上标注释**的扩展 Markdown 语法 +* :(fas fa-percentage fa-fw): 支持**分数**的扩展 Markdown 语法 +* :(fas fa-square-root-alt fa-fw): 支持基于 [$ \KaTeX $](https://katex.org/) 的**数学公式** +* :(fas fa-project-diagram fa-fw): 支持基于 [mermaid](https://github.com/knsv/mermaid) 的**图表** shortcode +* :(fas fa-chart-pie fa-fw): 支持基于 [ECharts](https://echarts.apache.org/) 的**交互式数据可视化** shortcode +* :(fas fa-map-marked-alt fa-fw): 支持基于 [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 的 **Mapbox** shortcode +* :(fas fa-music fa-fw): 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的**音乐播放器** shortcode +* :(fas fa-video fa-fw): 支持 **Bilibili 视频** shortcode +* :(far fa-bell fa-fw): 支持多种**注释**的 shortcode +* :(fas fa-align-left fa-fw): 支持**自定义样式**的 shortcode +* :(fab fa-js-square fa-fw): 支持**自定义脚本**的 shortcode +* :(fas fa-i-cursor fa-fw): 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode +* :(fas fa-arrow-down fa-fw): 支持基于 [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) 的**滚动动画** +* :(fas fa-cookie-bite fa-fw): 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅** +* ... + +### 许可协议 + +LoveIt 根据 **MIT** 许可协议授权。 + +更多信息请查看 [LICENSE 文件](https://github.com/dillonzq/LoveIt/blob/master/LICENSE)。 + +LoveIt 主题中用到了以下项目,感谢它们的作者: + +* [normalize.css](https://github.com/necolas/normalize.css) +* [Font Awesome](https://fontawesome.com/) +* [Simple Icons](https://github.com/simple-icons/simple-icons) +* [Animate.css](https://daneden.github.io/animate.css/) +* [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +* [autocomplete.js](https://github.com/algolia/autocomplete.js) +* [Lunr.js](https://lunrjs.com/) +* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript) +* [lazysizes](https://github.com/aFarkas/lazysizes) +* [object-fit-images](https://github.com/fregante/object-fit-images) +* [Twemoji](https://github.com/twitter/twemoji) +* [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) +* [clipboard.js](https://github.com/zenorocha/clipboard.js) +* [Sharer.js](https://github.com/ellisonleao/sharer.js) +* [TypeIt](https://typeitjs.com/) +* [$ \KaTeX $](https://katex.org/) +* [mermaid](https://github.com/knsv/mermaid) +* [ECharts](https://echarts.apache.org/) +* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) +* [APlayer](https://github.com/MoePlayer/APlayer) +* [MetingJS](https://github.com/metowolf/MetingJS) +* [Gitalk](https://github.com/gitalk/gitalk) +* [Valine](https://valine.js.org/) +* [cookieconsent](https://github.com/osano/cookieconsent) diff --git a/themes/LoveIt/exampleSite/content/categories/documentation/_index.en.md b/themes/LoveIt/exampleSite/content/categories/documentation/_index.en.md new file mode 100644 index 00000000..b40df67a --- /dev/null +++ b/themes/LoveIt/exampleSite/content/categories/documentation/_index.en.md @@ -0,0 +1,3 @@ +--- +title: "Documentation" +--- diff --git a/themes/LoveIt/exampleSite/content/categories/documentation/_index.fr.md b/themes/LoveIt/exampleSite/content/categories/documentation/_index.fr.md new file mode 100644 index 00000000..b40df67a --- /dev/null +++ b/themes/LoveIt/exampleSite/content/categories/documentation/_index.fr.md @@ -0,0 +1,3 @@ +--- +title: "Documentation" +--- diff --git a/themes/LoveIt/exampleSite/content/categories/documentation/_index.zh-cn.md b/themes/LoveIt/exampleSite/content/categories/documentation/_index.zh-cn.md new file mode 100644 index 00000000..ceb16165 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/categories/documentation/_index.zh-cn.md @@ -0,0 +1,3 @@ +--- +title: "文档" +--- diff --git a/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/featured-image.png b/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/featured-image.png new file mode 100644 index 00000000..b31e1a58 Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/featured-image.png differ diff --git a/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.en.md b/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.en.md new file mode 100644 index 00000000..cdbaf8f8 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.en.md @@ -0,0 +1,763 @@ +--- +weight: 4 +title: "Basic Markdown Syntax" +date: 2019-12-01T21:57:40+08:00 +lastmod: 2020-01-01T16:45:40+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "This article shows the basic Markdown syntax and format." +resources: +- name: "featured-image" + src: "featured-image.png" + +tags: ["Markdown", "HTML"] +categories: ["Markdown"] + +lightgallery: true +--- + +This article offers a sample of basic Markdown syntax that can be used in Hugo content files. + + + +{{< admonition >}} +This article is a shameful copy of the great [Grav original page](http://learn.getgrav.org/content/markdown). + +If you want to know about the extented Markdown syntax of **LoveIt** theme, please read [extended Markdown syntax page](../theme-documentation-content#extended-markdown-syntax). +{{< /admonition >}} + +Let's face it: Writing content for the Web is tiresome. WYSIWYG editors help alleviate this task, but they generally result in horrible code, or worse yet, ugly web pages. + +**Markdown** is a better way to write **HTML**, without all the complexities and ugliness that usually accompanies it. + +Some of the key benefits are: + +1. Markdown is simple to learn, with minimal extra characters, so it's also quicker to write content. +2. Less chance of errors when writing in Markdown. +3. Produces valid XHTML output. +4. Keeps the content and the visual display separate, so you cannot mess up the look of your site. +5. Write in any text editor or Markdown application you like. +6. Markdown is a joy to use! + +John Gruber, the author of Markdown, puts it like this: + +> The overriding design goal for Markdown’s formatting syntax is to make it as readable as possible. +> The idea is that a Markdown-formatted document should be publishable as-is, as plain text, +> without looking like it’s been marked up with tags or formatting instructions. +> While Markdown’s syntax has been influenced by several existing text-to-HTML filters, +> the single biggest source of inspiration for Markdown’s syntax is the format of plain text email. +> +> {{< style "text-align: right;" >}}-- _John Gruber_{{< /style >}} + +Without further delay, let us go over the main elements of Markdown and what the resulting HTML looks like! + +{{< admonition tip >}} +:(far fa-bookmark fa-fw): Bookmark this page for easy future reference! +{{< /admonition >}} + +## 1 Headings + +Headings from `h2` through `h6` are constructed with a `#` for each level: + +```markdown +## h2 Heading +### h3 Heading +#### h4 Heading +##### h5 Heading +###### h6 Heading +``` + +The HTML looks like this: + +```html +

    h2 Heading

    +

    h3 Heading

    +

    h4 Heading

    +
    h5 Heading
    +
    h6 Heading
    +``` + +{{< admonition note "Heading IDs" >}} +To add a custom heading ID, enclose the custom ID in curly braces on the same line as the heading: + +```markdown +### A Great Heading {#custom-id} +``` + +The HTML looks like this: + +```html +

    A Great Heading

    +``` +{{< /admonition >}} + +## 2 Comments + +Comments should be HTML compatible. + +```html + +``` + +Comment below should **NOT** be seen: + + + +## 3 Horizontal Rules + +The HTML `
    ` element is for creating a "thematic break" between paragraph-level elements. +In Markdown, you can create a `
    ` with any of the following: + +* `___`: three consecutive underscores +* `---`: three consecutive dashes +* `***`: three consecutive asterisks + +The rendered output looks like this: + +___ +--- +*** + +## 4 Body Copy + +Body copy written as normal, plain text will be wrapped with `

    ` tags in the rendered HTML. + +So this body copy: + +```markdown +Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, +animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, +soluta officiis concludaturque ei qui, vide sensibus vim ad. +``` + +The HTML looks like this: + +```html +

    Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.

    +``` + +A **line break** can be done with one blank line. + +## 5 Inline HTML + +If you need a certain HTML tag (with a class) you can simply use HTML: + +```html +Paragraph in Markdown. + +
    + This is HTML +
    + +Paragraph in Markdown. +``` + +## 6 Emphasis + +### Bold + +For emphasizing a snippet of text with a heavier font-weight. + +The following snippet of text is **rendered as bold text**. + +```markdown +**rendered as bold text** +__rendered as bold text__ +``` + +The HTML looks like this: + +```html +rendered as bold text +``` + +### Italics + +For emphasizing a snippet of text with italics. + +The following snippet of text is _rendered as italicized text_. + +```markdown +*rendered as italicized text* +_rendered as italicized text_ +``` + +The HTML looks like this: + +```html +rendered as italicized text +``` + +### Strikethrough + +In [[GFM]^(GitHub flavored Markdown)](https://github.github.com/gfm/) you can do strikethroughs. + +```markdown +~~Strike through this text.~~ +``` + +The rendered output looks like this: + +~~Strike through this text.~~ + +The HTML looks like this: + +```html +Strike through this text. +``` + +### Combination + +Bold, italics, and strikethrough can be used in combination. + +```markdown +***bold and italics*** +~~**strikethrough and bold**~~ +~~*strikethrough and italics*~~ +~~***bold, italics and strikethrough***~~ +``` + +The rendered output looks like this: + +***bold and italics*** + +~~**strikethrough and bold**~~ + +~~*strikethrough and italics*~~ + +~~***bold, italics and strikethrough***~~ + +The HTML looks like this: + +```html +bold and italics +strikethrough and bold +strikethrough and italics +bold, italics and strikethrough +``` + +## 7 Blockquotes + +For quoting blocks of content from another source within your document. + +Add `>` before any text you want to quote: + +```markdown +> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. +``` + +The rendered output looks like this: + +> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. + +The HTML looks like this: + +```html +
    +

    + Fusion Drive combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. +

    +
    +``` + +Blockquotes can also be nested: + +```markdown +> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. +Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. +>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor +odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. +``` + +The rendered output looks like this: + +> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. +Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. +>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor +odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. + +## 8 Lists + +### Unordered + +A list of items in which the order of the items does not explicitly matter. + +You may use any of the following symbols to denote bullets for each list item: + +```markdown +* valid bullet +- valid bullet ++ valid bullet +``` + +For example: + +```markdown +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem +``` + +The rendered output looks like this: + +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem + +The HTML looks like this: + +```html +
      +
    • Lorem ipsum dolor sit amet
    • +
    • Consectetur adipiscing elit
    • +
    • Integer molestie lorem at massa
    • +
    • Facilisis in pretium nisl aliquet
    • +
    • Nulla volutpat aliquam velit +
        +
      • Phasellus iaculis neque
      • +
      • Purus sodales ultricies
      • +
      • Vestibulum laoreet porttitor sem
      • +
      • Ac tristique libero volutpat at
      • +
      +
    • +
    • Faucibus porta lacus fringilla vel
    • +
    • Aenean sit amet erat nunc
    • +
    • Eget porttitor lorem
    • +
    +``` + +### Ordered + +A list of items in which the order of items does explicitly matter. + +```markdown +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem +``` + +The rendered output looks like this: + +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem + +The HTML looks like this: + +```html +
      +
    1. Lorem ipsum dolor sit amet
    2. +
    3. Consectetur adipiscing elit
    4. +
    5. Integer molestie lorem at massa
    6. +
    7. Facilisis in pretium nisl aliquet
    8. +
    9. Nulla volutpat aliquam velit
    10. +
    11. Faucibus porta lacus fringilla vel
    12. +
    13. Aenean sit amet erat nunc
    14. +
    15. Eget porttitor lorem
    16. +
    +``` + +{{< admonition tip >}} +If you just use `1.` for each number, Markdown will automatically number each item. For example: + +```markdown +1. Lorem ipsum dolor sit amet +1. Consectetur adipiscing elit +1. Integer molestie lorem at massa +1. Facilisis in pretium nisl aliquet +1. Nulla volutpat aliquam velit +1. Faucibus porta lacus fringilla vel +1. Aenean sit amet erat nunc +1. Eget porttitor lorem +``` + +The rendered output looks like this: + +1. Lorem ipsum dolor sit amet +1. Consectetur adipiscing elit +1. Integer molestie lorem at massa +1. Facilisis in pretium nisl aliquet +1. Nulla volutpat aliquam velit +1. Faucibus porta lacus fringilla vel +1. Aenean sit amet erat nunc +1. Eget porttitor lorem +{{< /admonition >}} + +### Task Lists + +Task lists allow you to create a list of items with checkboxes. To create a task list, add dashes (`-`) and brackets with a space (`[ ]`) before task list items. To select a checkbox, add an x in between the brackets (`[x]`). + +```markdown +- [x] Write the press release +- [ ] Update the website +- [ ] Contact the media +``` + +The rendered output looks like this: + +- [x] Write the press release +- [ ] Update the website +- [ ] Contact the media + +## 9 Code + +### Inline Code + +Wrap inline snippets of code with `. + +```markdown +In this example, `
    ` should be wrapped as **code**. +``` + +The rendered output looks like this: + +In this example, `
    ` should be wrapped as **code**. + +The HTML looks like this: + +```html +

    + In this example, <section></section> should be wrapped with code. +

    +``` + +### Indented Code + +Or indent several lines of code by at least four spaces, as in: + +```markdown + // Some comments + line 1 of code + line 2 of code + line 3 of code +``` + +The rendered output looks like this: + + // Some comments + line 1 of code + line 2 of code + line 3 of code + +The HTML looks like this: + +```html +
    +  
    +    // Some comments
    +    line 1 of code
    +    line 2 of code
    +    line 3 of code
    +  
    +
    +``` + +### Block Fenced Code + +Use "fences" ``` to block in multiple lines of code with a language attribute. + +{{< highlight markdown >}} +```markdown +Sample text here... +``` +{{< / highlight >}} + +The HTML looks like this: + +```html +
    +  Sample text here...
    +
    +``` + +### Syntax Highlighting + +[GFM]^(GitHub Flavored Markdown) also supports syntax highlighting. + +To activate it, simply add the file extension of the language you want to use directly after the first code "fence", +```js, and syntax highlighting will automatically be applied in the rendered HTML. + +For example, to apply syntax highlighting to JavaScript code: + +{{< highlight markdown >}} +```js +grunt.initConfig({ + assemble: { + options: { + assets: 'docs/assets', + data: 'src/data/*.{json,yml}', + helpers: 'src/custom-helpers.js', + partials: ['src/partials/**/*.{hbs,md}'] + }, + pages: { + options: { + layout: 'default.hbs' + }, + files: { + './': ['src/templates/pages/index.hbs'] + } + } + } +}; +``` +{{< / highlight >}} + +The rendered output looks like this: + +```js +grunt.initConfig({ + assemble: { + options: { + assets: 'docs/assets', + data: 'src/data/*.{json,yml}', + helpers: 'src/custom-helpers.js', + partials: ['src/partials/**/*.{hbs,md}'] + }, + pages: { + options: { + layout: 'default.hbs' + }, + files: { + './': ['src/templates/pages/index.hbs'] + } + } + } +}; +``` + +{{< admonition >}} +[Syntax highlighting page](https://gohugo.io/content-management/syntax-highlighting/) in **Hugo** Docs introduces more about syntax highlighting, including highlight shortcode. +{{< /admonition >}} + +## 10 Tables + +Tables are created by adding pipes as dividers between each cell, and by adding a line of dashes (also separated by bars) beneath the header. Note that the pipes do not need to be vertically aligned. + +```markdown +| Option | Description | +| ------ | ----------- | +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +``` + +The rendered output looks like this: + +| Option | Description | +| ------ | ----------- | +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | + +The HTML looks like this: + +```html + + + + + + + + + + + + + + + + + + + + + +
    OptionDescription
    datapath to data files to supply the data that will be passed into templates.
    engineengine to be used for processing templates. Handlebars is the default.
    extextension to be used for dest files.
    +``` + +{{< admonition note "Right or center aligned text" >}} +Adding a colon on the right side of the dashes below any heading will right align text for that column. + +Adding colons on both sides of the dashes below any heading will center align text for that column. + +```markdown +| Option | Description | +|:------:| -----------:| +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +``` + +The rendered output looks like this: + +| Option | Description | +|:------:| -----------:| +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +{{< /admonition >}} + +## 11 Links {#links} + +### Basic Link + +```markdown + + +[Assemble](https://assemble.io) +``` + +The rendered output looks like this (hover over the link, there is no tooltip): + + + + + +[Assemble](https://assemble.io) + +The HTML looks like this: + +```html +https://assemble.io +contact@revolunet.com +Assemble +``` + +### Add a Title + +```markdown +[Upstage](https://github.com/upstage/ "Visit Upstage!") +``` + +The rendered output looks like this (hover over the link, there should be a tooltip): + +[Upstage](https://github.com/upstage/ "Visit Upstage!") + +The HTML looks like this: + +```html +Upstage +``` + +### Named Anchors + +Named anchors enable you to jump to the specified anchor point on the same page. For example, each of these chapters: + +```markdown +## Table of Contents + * [Chapter 1](#chapter-1) + * [Chapter 2](#chapter-2) + * [Chapter 3](#chapter-3) +``` + +will jump to these sections: + +```markdown +## Chapter 1 +Content for chapter one. + +## Chapter 2 +Content for chapter one. + +## Chapter 3 +Content for chapter one. +``` + +{{< admonition >}} +The specific placement of the anchor tag seems to be arbitrary. They are placed inline here since it seems to be unobtrusive, and it works. +{{< /admonition >}} + +## 12 Footnotes + +Footnotes allow you to add notes and references without cluttering the body of the document. When you create a footnote, a superscript number with a link appears where you added the footnote reference. Readers can click the link to jump to the content of the footnote at the bottom of the page. + +To create a footnote reference, add a caret and an identifier inside brackets (`[^1]`). Identifiers can be numbers or words, but they can’t contain spaces or tabs. Identifiers only correlate the footnote reference with the footnote itself — in the output, footnotes are numbered sequentially. + +Add the footnote using another caret and number inside brackets with a colon and text (`[^1]: My footnote.`). You don’t have to put footnotes at the end of the document. You can put them anywhere except inside other elements like lists, block quotes, and tables. + +```markdown +This is a digital footnote[^1]. +This is a footnote with "label"[^label] + +[^1]: This is a digital footnote +[^label]: This is a footnote with "label" +``` + +This is a digital footnote[^1]. + +This is a footnote with "label"[^label] + +[^1]: This is a digital footnote +[^label]: This is a footnote with "label" + +## 13 Images + +Images have a similar syntax to links but include a preceding exclamation point. + +```markdown +![Minion](https://octodex.github.com/images/minion.png) +``` + +![Minion](https://octodex.github.com/images/minion.png) + +or: + +```markdown +![Alt text](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat") +``` + +![Alt text](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat") + +Like links, images also have a footnote style syntax: + +```markdown +![Alt text][id] +``` + +![Alt text][id] + +With a reference later in the document defining the URL location: + +```markdown +[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat" +``` + +[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat" + +{{< admonition tip >}} +**LoveIt** theme has [special shortcode for image](../theme-documentation-extended-shortcodes#image), which provides more features. +{{< /admonition >}} diff --git a/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.fr.md b/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.fr.md new file mode 100644 index 00000000..0d307437 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.fr.md @@ -0,0 +1,768 @@ +--- +weight: 4 +title: "Syntaxe de Markdown de Base" +date: 2019-12-01T21:57:40+08:00 +lastmod: 2020-01-01T16:45:40+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Cet article présente la syntaxe et le format de base de Markdown." +resources: +- name: "featured-image" + src: "featured-image.png" + +tags: ["Markdown", "HTML"] +categories: ["Markdown"] + +lightgallery: true +--- + +Cet article propose un exemple de syntaxe Markdown de base qui peut être utilisée dans les fichiers de contenu Hugo. + + + +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + +{{< admonition >}} +This article is a shameful copy of the great [Grav original page](http://learn.getgrav.org/content/markdown). + +If you want to know about the extented Markdown syntax of **LoveIt** theme, please read [extended Markdown syntax page](../theme-documentation-content#extended-markdown-syntax). +{{< /admonition >}} + +Let's face it: Writing content for the Web is tiresome. WYSIWYG editors help alleviate this task, but they generally result in horrible code, or worse yet, ugly web pages. + +**Markdown** is a better way to write **HTML**, without all the complexities and ugliness that usually accompanies it. + +Some of the key benefits are: + +1. Markdown is simple to learn, with minimal extra characters, so it's also quicker to write content. +2. Less chance of errors when writing in Markdown. +3. Produces valid XHTML output. +4. Keeps the content and the visual display separate, so you cannot mess up the look of your site. +5. Write in any text editor or Markdown application you like. +6. Markdown is a joy to use! + +John Gruber, the author of Markdown, puts it like this: + +> The overriding design goal for Markdown’s formatting syntax is to make it as readable as possible. +> The idea is that a Markdown-formatted document should be publishable as-is, as plain text, +> without looking like it’s been marked up with tags or formatting instructions. +> While Markdown’s syntax has been influenced by several existing text-to-HTML filters, +> the single biggest source of inspiration for Markdown’s syntax is the format of plain text email. +> +> {{< style "text-align: right;" >}}-- _John Gruber_{{< /style >}} + +Without further delay, let us go over the main elements of Markdown and what the resulting HTML looks like! + +{{< admonition tip >}} +:(far fa-bookmark fa-fw): Bookmark this page for easy future reference! +{{< /admonition >}} + +## 1 Headings + +Headings from `h2` through `h6` are constructed with a `#` for each level: + +```markdown +## h2 Heading +### h3 Heading +#### h4 Heading +##### h5 Heading +###### h6 Heading +``` + +The HTML looks like this: + +```html +

    h2 Heading

    +

    h3 Heading

    +

    h4 Heading

    +
    h5 Heading
    +
    h6 Heading
    +``` + +{{< admonition note "Heading IDs" >}} +To add a custom heading ID, enclose the custom ID in curly braces on the same line as the heading: + +```markdown +### A Great Heading {#custom-id} +``` + +The HTML looks like this: + +```html +

    A Great Heading

    +``` +{{< /admonition >}} + +## 2 Comments + +Comments should be HTML compatible. + +```html + +``` + +Comment below should **NOT** be seen: + + + +## 3 Horizontal Rules + +The HTML `
    ` element is for creating a "thematic break" between paragraph-level elements. +In Markdown, you can create a `
    ` with any of the following: + +* `___`: three consecutive underscores +* `---`: three consecutive dashes +* `***`: three consecutive asterisks + +The rendered output looks like this: + +___ +--- +*** + +## 4 Body Copy + +Body copy written as normal, plain text will be wrapped with `

    ` tags in the rendered HTML. + +So this body copy: + +```markdown +Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, +animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, +soluta officiis concludaturque ei qui, vide sensibus vim ad. +``` + +The HTML looks like this: + +```html +

    Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.

    +``` + +A **line break** can be done with one blank line. + +## 5 Inline HTML + +If you need a certain HTML tag (with a class) you can simply use HTML: + +```html +Paragraph in Markdown. + +
    + This is HTML +
    + +Paragraph in Markdown. +``` + +## 6 Emphasis + +### Bold + +For emphasizing a snippet of text with a heavier font-weight. + +The following snippet of text is **rendered as bold text**. + +```markdown +**rendered as bold text** +__rendered as bold text__ +``` + +The HTML looks like this: + +```html +rendered as bold text +``` + +### Italics + +For emphasizing a snippet of text with italics. + +The following snippet of text is _rendered as italicized text_. + +```markdown +*rendered as italicized text* +_rendered as italicized text_ +``` + +The HTML looks like this: + +```html +rendered as italicized text +``` + +### Strikethrough + +In [[GFM]^(GitHub flavored Markdown)](https://github.github.com/gfm/) you can do strikethroughs. + +```markdown +~~Strike through this text.~~ +``` + +The rendered output looks like this: + +~~Strike through this text.~~ + +The HTML looks like this: + +```html +Strike through this text. +``` + +### Combination + +Bold, italics, and strikethrough can be used in combination. + +```markdown +***bold and italics*** +~~**strikethrough and bold**~~ +~~*strikethrough and italics*~~ +~~***bold, italics and strikethrough***~~ +``` + +The rendered output looks like this: + +***bold and italics*** + +~~**strikethrough and bold**~~ + +~~*strikethrough and italics*~~ + +~~***bold, italics and strikethrough***~~ + +The HTML looks like this: + +```html +bold and italics +strikethrough and bold +strikethrough and italics +bold, italics and strikethrough +``` + +## 7 Blockquotes + +For quoting blocks of content from another source within your document. + +Add `>` before any text you want to quote: + +```markdown +> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. +``` + +The rendered output looks like this: + +> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. + +The HTML looks like this: + +```html +
    +

    + Fusion Drive combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. +

    +
    +``` + +Blockquotes can also be nested: + +```markdown +> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. +Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. +>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor +odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. +``` + +The rendered output looks like this: + +> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. +Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. +>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor +odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. + +## 8 Lists + +### Unordered + +A list of items in which the order of the items does not explicitly matter. + +You may use any of the following symbols to denote bullets for each list item: + +```markdown +* valid bullet +- valid bullet ++ valid bullet +``` + +For example: + +```markdown +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem +``` + +The rendered output looks like this: + +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem + +The HTML looks like this: + +```html +
      +
    • Lorem ipsum dolor sit amet
    • +
    • Consectetur adipiscing elit
    • +
    • Integer molestie lorem at massa
    • +
    • Facilisis in pretium nisl aliquet
    • +
    • Nulla volutpat aliquam velit +
        +
      • Phasellus iaculis neque
      • +
      • Purus sodales ultricies
      • +
      • Vestibulum laoreet porttitor sem
      • +
      • Ac tristique libero volutpat at
      • +
      +
    • +
    • Faucibus porta lacus fringilla vel
    • +
    • Aenean sit amet erat nunc
    • +
    • Eget porttitor lorem
    • +
    +``` + +### Ordered + +A list of items in which the order of items does explicitly matter. + +```markdown +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem +``` + +The rendered output looks like this: + +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem + +The HTML looks like this: + +```html +
      +
    1. Lorem ipsum dolor sit amet
    2. +
    3. Consectetur adipiscing elit
    4. +
    5. Integer molestie lorem at massa
    6. +
    7. Facilisis in pretium nisl aliquet
    8. +
    9. Nulla volutpat aliquam velit
    10. +
    11. Faucibus porta lacus fringilla vel
    12. +
    13. Aenean sit amet erat nunc
    14. +
    15. Eget porttitor lorem
    16. +
    +``` + +{{< admonition tip >}} +If you just use `1.` for each number, Markdown will automatically number each item. For example: + +```markdown +1. Lorem ipsum dolor sit amet +1. Consectetur adipiscing elit +1. Integer molestie lorem at massa +1. Facilisis in pretium nisl aliquet +1. Nulla volutpat aliquam velit +1. Faucibus porta lacus fringilla vel +1. Aenean sit amet erat nunc +1. Eget porttitor lorem +``` + +The rendered output looks like this: + +1. Lorem ipsum dolor sit amet +1. Consectetur adipiscing elit +1. Integer molestie lorem at massa +1. Facilisis in pretium nisl aliquet +1. Nulla volutpat aliquam velit +1. Faucibus porta lacus fringilla vel +1. Aenean sit amet erat nunc +1. Eget porttitor lorem +{{< /admonition >}} + +### Task Lists + +Task lists allow you to create a list of items with checkboxes. To create a task list, add dashes (`-`) and brackets with a space (`[ ]`) before task list items. To select a checkbox, add an x in between the brackets (`[x]`). + +```markdown +- [x] Write the press release +- [ ] Update the website +- [ ] Contact the media +``` + +The rendered output looks like this: + +- [x] Write the press release +- [ ] Update the website +- [ ] Contact the media + +## 9 Code + +### Inline Code + +Wrap inline snippets of code with `. + +```markdown +In this example, `
    ` should be wrapped as **code**. +``` + +The rendered output looks like this: + +In this example, `
    ` should be wrapped as **code**. + +The HTML looks like this: + +```html +

    + In this example, <section></section> should be wrapped with code. +

    +``` + +### Indented Code + +Or indent several lines of code by at least four spaces, as in: + +```markdown + // Some comments + line 1 of code + line 2 of code + line 3 of code +``` + +The rendered output looks like this: + + // Some comments + line 1 of code + line 2 of code + line 3 of code + +The HTML looks like this: + +```html +
    +  
    +    // Some comments
    +    line 1 of code
    +    line 2 of code
    +    line 3 of code
    +  
    +
    +``` + +### Block Fenced Code + +Use "fences" ``` to block in multiple lines of code with a language attribute. + +{{< highlight markdown >}} +```markdown +Sample text here... +``` +{{< / highlight >}} + +The HTML looks like this: + +```html +
    +  Sample text here...
    +
    +``` + +### Syntax Highlighting + +[GFM]^(GitHub Flavored Markdown) also supports syntax highlighting. + +To activate it, simply add the file extension of the language you want to use directly after the first code "fence", +```js, and syntax highlighting will automatically be applied in the rendered HTML. + +For example, to apply syntax highlighting to JavaScript code: + +{{< highlight markdown >}} +```js +grunt.initConfig({ + assemble: { + options: { + assets: 'docs/assets', + data: 'src/data/*.{json,yml}', + helpers: 'src/custom-helpers.js', + partials: ['src/partials/**/*.{hbs,md}'] + }, + pages: { + options: { + layout: 'default.hbs' + }, + files: { + './': ['src/templates/pages/index.hbs'] + } + } + } +}; +``` +{{< / highlight >}} + +The rendered output looks like this: + +```js +grunt.initConfig({ + assemble: { + options: { + assets: 'docs/assets', + data: 'src/data/*.{json,yml}', + helpers: 'src/custom-helpers.js', + partials: ['src/partials/**/*.{hbs,md}'] + }, + pages: { + options: { + layout: 'default.hbs' + }, + files: { + './': ['src/templates/pages/index.hbs'] + } + } + } +}; +``` + +{{< admonition >}} +[Syntax highlighting page](https://gohugo.io/content-management/syntax-highlighting/) in **Hugo** Docs introduces more about syntax highlighting, including highlight shortcode. +{{< /admonition >}} + +## 10 Tables + +Tables are created by adding pipes as dividers between each cell, and by adding a line of dashes (also separated by bars) beneath the header. Note that the pipes do not need to be vertically aligned. + +```markdown +| Option | Description | +| ------ | ----------- | +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +``` + +The rendered output looks like this: + +| Option | Description | +| ------ | ----------- | +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | + +The HTML looks like this: + +```html + + + + + + + + + + + + + + + + + + + + + +
    OptionDescription
    datapath to data files to supply the data that will be passed into templates.
    engineengine to be used for processing templates. Handlebars is the default.
    extextension to be used for dest files.
    +``` + +{{< admonition note "Right or center aligned text" >}} +Adding a colon on the right side of the dashes below any heading will right align text for that column. + +Adding colons on both sides of the dashes below any heading will center align text for that column. + +```markdown +| Option | Description | +|:------:| -----------:| +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +``` + +The rendered output looks like this: + +| Option | Description | +|:------:| -----------:| +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +{{< /admonition >}} + +## 11 Links + +### Basic Link {#links} + +```markdown + + +[Assemble](https://assemble.io) +``` + +The rendered output looks like this (hover over the link, there is no tooltip): + + + + + +[Assemble](https://assemble.io) + +The HTML looks like this: + +```html +https://assemble.io +contact@revolunet.com +Assemble +``` + +### Add a Title + +```markdown +[Upstage](https://github.com/upstage/ "Visit Upstage!") +``` + +The rendered output looks like this (hover over the link, there should be a tooltip): + +[Upstage](https://github.com/upstage/ "Visit Upstage!") + +The HTML looks like this: + +```html +Upstage +``` + +### Named Anchors + +Named anchors enable you to jump to the specified anchor point on the same page. For example, each of these chapters: + +```markdown +## Table of Contents + * [Chapter 1](#chapter-1) + * [Chapter 2](#chapter-2) + * [Chapter 3](#chapter-3) +``` + +will jump to these sections: + +```markdown +## Chapter 1 +Content for chapter one. + +## Chapter 2 +Content for chapter one. + +## Chapter 3 +Content for chapter one. +``` + +{{< admonition >}} +The specific placement of the anchor tag seems to be arbitrary. They are placed inline here since it seems to be unobtrusive, and it works. +{{< /admonition >}} + +## 12 Footnotes + +Footnotes allow you to add notes and references without cluttering the body of the document. When you create a footnote, a superscript number with a link appears where you added the footnote reference. Readers can click the link to jump to the content of the footnote at the bottom of the page. + +To create a footnote reference, add a caret and an identifier inside brackets (`[^1]`). Identifiers can be numbers or words, but they can’t contain spaces or tabs. Identifiers only correlate the footnote reference with the footnote itself — in the output, footnotes are numbered sequentially. + +Add the footnote using another caret and number inside brackets with a colon and text (`[^1]: My footnote.`). You don’t have to put footnotes at the end of the document. You can put them anywhere except inside other elements like lists, block quotes, and tables. + +```markdown +This is a digital footnote[^1]. +This is a footnote with "label"[^label] + +[^1]: This is a digital footnote +[^label]: This is a footnote with "label" +``` + +This is a digital footnote[^1]. + +This is a footnote with "label"[^label] + +[^1]: This is a digital footnote +[^label]: This is a footnote with "label" + +## 13 Images + +Images have a similar syntax to links but include a preceding exclamation point. + +```markdown +![Minion](https://octodex.github.com/images/minion.png) +``` + +![Minion](https://octodex.github.com/images/minion.png) + +or: + +```markdown +![Alt text](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat") +``` + +![Alt text](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat") + +Like links, images also have a footnote style syntax: + +```markdown +![Alt text][id] +``` + +![Alt text][id] + +With a reference later in the document defining the URL location: + +```markdown +[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat" +``` + +[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat" + +{{< admonition tip >}} +**LoveIt** theme has [special shortcode for image](../theme-documentation-extended-shortcodes#image), which provides more features. +{{< /admonition >}} diff --git a/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md b/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md new file mode 100644 index 00000000..ec8f6b1c --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md @@ -0,0 +1,770 @@ +--- +weight: 4 +title: "Markdown 基本语法" +date: 2019-12-01T21:57:40+08:00 +lastmod: 2020-01-01T16:45:40+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "这篇文章展示了基本的 Markdown 语法和格式." +resources: +- name: "featured-image" + src: "featured-image.png" + +tags: ["Markdown", "HTML"] +categories: ["Markdown"] + +lightgallery: true +--- + +这篇文章提供了可以在 Hugo 的文章中使用的基本 Markdown 语法示例. + + + +{{< admonition >}} +这篇文章借鉴了一篇很棒的[来自 Grav 的文章](http://learn.getgrav.org/content/markdown). + +如果你想了解 **Loveit** 主题的扩展 Markdown 语法, 请阅读[扩展 Markdown 语法页面](../theme-documentation-content#extended-markdown-syntax). +{{< /admonition >}} + +事实上, 编写 Web 内容很麻烦. [WYSIWYG]^(所见即所得) 编辑器帮助减轻了这一任务. 但通常会导致代码太糟, 或更糟糕的是, 网页也会很丑. + +没有通常伴随的所有复杂和丑陋的问题, **Markdown** 是一种更好的生成 **HTML** 内容的方式. + +一些主要好处是: + +1. Markdown 简单易学, 几乎没有多余的字符, 因此编写内容也更快. +2. 用 Markdown 书写时出错的机会更少. +3. 可以产生有效的 XHTML 输出. +4. 将内容和视觉显示保持分开, 这样就不会打乱网站的外观. +5. 可以在你喜欢的任何文本编辑器或 Markdown 应用程序中编写内容. +6. Markdown 使用起来很有趣! + +John Gruber, Markdown 的作者如是说: + +> Markdown 格式的首要设计目标是更具可读性. +> 最初的想法是 Markdown 格式的文档应当以纯文本形式发布, +> 而不会看起来像被标签或格式说明所标记. +> 虽然 Markdown 的语法受到几种现有的文本到 HTML 转换工具的影响, +> 但 Markdown 语法的最大灵感来源是纯文本电子邮件的格式. +> +> {{< style "text-align: right;" >}}-- _John Gruber_{{< /style >}} + +话不多说, 我们来回顾一下 Markdown 的主要语法以及生成的 HTML 样式! + +{{< admonition tip >}} +:(far fa-bookmark fa-fw): 将此页保存为书签,以备将来参考! +{{< /admonition >}} + +## 1 标题 + +从 `h2` 到 `h6` 的标题在每个级别上都加上一个 `#`: + +```markdown +## h2 标题 +### h3 标题 +#### h4 标题 +##### h5 标题 +###### h6 标题 +``` + +输出的 HTML 看起来像这样: + +```html +

    h2 标题

    +

    h3 标题

    +

    h4 标题

    +
    h5 标题
    +
    h6 标题
    +``` + +{{< admonition note "标题 ID" >}} +要添加自定义标题 ID, 请在与标题相同的行中将自定义 ID 放在花括号中: + +```markdown +### 一个很棒的标题 {#custom-id} +``` + +输出的 HTML 看起来像这样: + +```html +

    一个很棒的标题

    +``` +{{< /admonition >}} + +## 2 注释 + +注释是和 HTML 兼容的: + +```html + +``` + +**不能**看到以下的注释: + + + +## 3 水平线 + +HTML 中的 `
    ` 标签是用来在段落元素之间创建一个 "专题间隔" 的. +使用 Markdown, 你可以用以下方式创建一个 `
    ` 标签: + +* `___`: 三个连续的下划线 +* `---`: 三个连续的破折号 +* `***`: 三个连续的星号 + +呈现的输出效果如下: + +___ +--- +*** + +## 4 段落 + +按照纯文本的方式书写段落, 纯文本在呈现的 HTML 中将用 `

    `/`

    ` 标签包裹. + +如下段落: + +```markdown +Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, +animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, +soluta officiis concludaturque ei qui, vide sensibus vim ad. +``` + +输出的 HTML 看起来像这样: + +```html +

    Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.

    +``` + +可以使用一个空白行进行**换行**. + +## 5 内联 HTML 元素 + +如果你需要某个 HTML 标签 (带有一个类), 则可以简单地像这样使用: + +```html +Markdown 格式的段落. + +
    + 这是 HTML +
    + +Markdown 格式的段落. +``` + +## 6 强调 + +### 加粗 + +用于强调带有较粗字体的文本片段. + +以下文本片段会被 **渲染为粗体**. + +```markdown +**渲染为粗体** +__渲染为粗体__ +``` + +输出的 HTML 看起来像这样: + +```html +渲染为粗体 +``` + +### 斜体 + +用于强调带有斜体的文本片段. + +以下文本片段被 _渲染为斜体_. + +```markdown +*渲染为斜体* +_渲染为斜体_ +``` + +输出的 HTML 看起来像这样: + +```html +渲染为斜体 +``` + +### 删除线 + +按照 [[GFM]^(GitHub flavored Markdown)](https://github.github.com/gfm/) 你可以使用删除线. + +```markdown +~~这段文本带有删除线.~~ +``` + +呈现的输出效果如下: + +~~这段文本带有删除线.~~ + +输出的 HTML 看起来像这样: + +```html +这段文本带有删除线. +``` + +### 组合 + +加粗, 斜体, 和删除线可以 组合使用. + +```markdown +***加粗和斜体*** +~~**删除线和加粗**~~ +~~*删除线和斜体*~~ +~~***加粗, 斜体和删除线***~~ +``` + +呈现的输出效果如下: + +***加粗和斜体*** + +~~**删除线和加粗**~~ + +~~*删除线和斜体*~~ + +~~***加粗, 斜体和删除线***~~ + +输出的 HTML 看起来像这样: + +```html +加粗和斜体 +删除线和加粗 +删除线和斜体 +加粗, 斜体和删除线 +``` + +## 7 引用 + +用于在文档中引用其他来源的内容块. + +在要引用的任何文本之前添加 `>`: + +```markdown +> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. +``` + +呈现的输出效果如下: + +> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. + +输出的 HTML 看起来像这样: + +```html +
    +

    + Fusion Drive combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. +

    +
    +``` + +引用也可以嵌套: + +```markdown +> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. +Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. +>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor +odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. +``` + +呈现的输出效果如下: + +> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. +Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. +>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor +odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. + +## 8 列表 + +### 无序列表 + +一系列项的列表, 其中项的顺序没有明显关系. + +你可以使用以下任何符号来表示无序列表中的项: + +```markdown +* 一项内容 +- 一项内容 ++ 一项内容 +``` + +例如: + +```markdown +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem +``` + +呈现的输出效果如下: + +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem + +输出的 HTML 看起来像这样: + +```html +
      +
    • Lorem ipsum dolor sit amet
    • +
    • Consectetur adipiscing elit
    • +
    • Integer molestie lorem at massa
    • +
    • Facilisis in pretium nisl aliquet
    • +
    • Nulla volutpat aliquam velit +
        +
      • Phasellus iaculis neque
      • +
      • Purus sodales ultricies
      • +
      • Vestibulum laoreet porttitor sem
      • +
      • Ac tristique libero volutpat at
      • +
      +
    • +
    • Faucibus porta lacus fringilla vel
    • +
    • Aenean sit amet erat nunc
    • +
    • Eget porttitor lorem
    • +
    +``` + +### 有序列表 + +一系列项的列表, 其中项的顺序确实很重要. + +```markdown +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem +``` + +呈现的输出效果如下: + +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem + +输出的 HTML 看起来像这样: + +```html +
      +
    1. Lorem ipsum dolor sit amet
    2. +
    3. Consectetur adipiscing elit
    4. +
    5. Integer molestie lorem at massa
    6. +
    7. Facilisis in pretium nisl aliquet
    8. +
    9. Nulla volutpat aliquam velit
    10. +
    11. Faucibus porta lacus fringilla vel
    12. +
    13. Aenean sit amet erat nunc
    14. +
    15. Eget porttitor lorem
    16. +
    +``` + +{{< admonition tip >}} +如果你对每一项使用 `1.`, Markdown 将自动为每一项编号. 例如: + +```markdown +1. Lorem ipsum dolor sit amet +1. Consectetur adipiscing elit +1. Integer molestie lorem at massa +1. Facilisis in pretium nisl aliquet +1. Nulla volutpat aliquam velit +1. Faucibus porta lacus fringilla vel +1. Aenean sit amet erat nunc +1. Eget porttitor lorem +``` + +呈现的输出效果如下: + +1. Lorem ipsum dolor sit amet +1. Consectetur adipiscing elit +1. Integer molestie lorem at massa +1. Facilisis in pretium nisl aliquet +1. Nulla volutpat aliquam velit +1. Faucibus porta lacus fringilla vel +1. Aenean sit amet erat nunc +1. Eget porttitor lorem +{{< /admonition >}} + +### 任务列表 + +任务列表使你可以创建带有复选框的列表. +要创建任务列表, 请在任务列表项之前添加破折号 (`-`) 和带有空格的方括号 (`[ ]`). 要选择一个复选框,请在方括号之间添加 x (`[x]`). + +```markdown +- [x] Write the press release +- [ ] Update the website +- [ ] Contact the media +``` + +呈现的输出效果如下: + +- [x] Write the press release +- [ ] Update the website +- [ ] Contact the media + +## 9 代码 + +### 行内代码 + +用 ` 包装行内代码段. + +```markdown +在这个例子中, `
    ` 会被包裹成 **代码**. +``` + +呈现的输出效果如下: + +在这个例子中, `
    ` 会被包裹成 **代码**. + +输出的 HTML 看起来像这样: + +```html +

    + 在这个例子中, <section></section> 会被包裹成 代码. +

    +``` + +### 缩进代码 + +将几行代码缩进至少四个空格,例如: + +```markdown + // Some comments + line 1 of code + line 2 of code + line 3 of code +``` + +呈现的输出效果如下: + + // Some comments + line 1 of code + line 2 of code + line 3 of code + +输出的 HTML 看起来像这样: + +```html +
    +  
    +    // Some comments
    +    line 1 of code
    +    line 2 of code
    +    line 3 of code
    +  
    +
    +``` + +### 围栏代码块 + +使用 "围栏" ``` 来生成一段带有语言属性的代码块. + +{{< highlight markdown >}} +```markdown +Sample text here... +``` +{{< / highlight >}} + +输出的 HTML 看起来像这样: + +```html +
    +  Sample text here...
    +
    +``` + +### 语法高亮 + +[GFM]^(GitHub Flavored Markdown) 也支持语法高亮. + +要激活它,只需在第一个代码 "围栏" 之后直接添加你要使用的语言的文件扩展名, +```js, 语法高亮显示将自动应用于渲染的 HTML 中. + +例如, 在以下 JavaScript 代码中应用语法高亮: + +{{< highlight markdown >}} +```js +grunt.initConfig({ + assemble: { + options: { + assets: 'docs/assets', + data: 'src/data/*.{json,yml}', + helpers: 'src/custom-helpers.js', + partials: ['src/partials/**/*.{hbs,md}'] + }, + pages: { + options: { + layout: 'default.hbs' + }, + files: { + './': ['src/templates/pages/index.hbs'] + } + } + } +}; +``` +{{< / highlight >}} + +呈现的输出效果如下: + +```js +grunt.initConfig({ + assemble: { + options: { + assets: 'docs/assets', + data: 'src/data/*.{json,yml}', + helpers: 'src/custom-helpers.js', + partials: ['src/partials/**/*.{hbs,md}'] + }, + pages: { + options: { + layout: 'default.hbs' + }, + files: { + './': ['src/templates/pages/index.hbs'] + } + } + } +}; +``` + +{{< admonition >}} +**Hugo** 文档中的 [语法高亮页面](https://gohugo.io/content-management/syntax-highlighting/) 介绍了有关语法高亮的更多信息, +包括语法高亮的 shortcode. +{{< /admonition >}} + +## 10 表格 + +通过在每个单元格之间添加竖线作为分隔线, 并在标题下添加一行破折号 (也由竖线分隔) 来创建表格. 注意, 竖线不需要垂直对齐. + +```markdown +| Option | Description | +| ------ | ----------- | +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +``` + +呈现的输出效果如下: + +| Option | Description | +| ------ | ----------- | +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | + +输出的 HTML 看起来像这样: + +```html + + + + + + + + + + + + + + + + + + + + + +
    OptionDescription
    datapath to data files to supply the data that will be passed into templates.
    engineengine to be used for processing templates. Handlebars is the default.
    extextension to be used for dest files.
    +``` + +{{< admonition note "文本右对齐或居中对齐" >}} +在任何标题下方的破折号右侧添加冒号将使该列的文本右对齐. + +在任何标题下方的破折号两边添加冒号将使该列的对齐文本居中. + +```markdown +| Option | Description | +|:------:| -----------:| +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +``` + +呈现的输出效果如下: + +| Option | Description | +|:------:| -----------:| +| data | path to data files to supply the data that will be passed into templates. | +| engine | engine to be used for processing templates. Handlebars is the default. | +| ext | extension to be used for dest files. | +{{< /admonition >}} + +## 11 链接 {#links} + +### 基本链接 + +```markdown + + +[Assemble](https://assemble.io) +``` + +呈现的输出效果如下 (将鼠标悬停在链接上,没有提示): + + + + + +[Assemble](https://assemble.io) + +输出的 HTML 看起来像这样: + +```html +https://assemble.io +contact@revolunet.com +Assemble +``` + +### 添加一个标题 + +```markdown +[Upstage](https://github.com/upstage/ "Visit Upstage!") +``` + +呈现的输出效果如下 (将鼠标悬停在链接上,会有一行提示): + +[Upstage](https://github.com/upstage/ "Visit Upstage!") + +输出的 HTML 看起来像这样: + +```html +Upstage +``` + +### 定位标记 + +定位标记使你可以跳至同一页面上的指定锚点. 例如, 每个章节: + +```markdown +## Table of Contents + * [Chapter 1](#chapter-1) + * [Chapter 2](#chapter-2) + * [Chapter 3](#chapter-3) +``` + +将跳转到这些部分: + +```markdown +## Chapter 1 +Content for chapter one. + +## Chapter 2 +Content for chapter one. + +## Chapter 3 +Content for chapter one. +``` + +{{< admonition >}} +定位标记的位置几乎是任意的. 因为它们并不引人注目, 所以它们通常被放在同一行了. +{{< /admonition >}} + +## 12 脚注 + +脚注使你可以添加注释和参考, 而不会使文档正文混乱. +当你创建脚注时, 会在添加脚注引用的位置出现带有链接的上标编号. +读者可以单击链接以跳至页面底部的脚注内容. + +要创建脚注引用, 请在方括号中添加插入符号和标识符 (`[^1]`). +标识符可以是数字或单词, 但不能包含空格或制表符. +标识符仅将脚注引用与脚注本身相关联 - 在脚注输出中, 脚注按顺序编号. + +在中括号内使用插入符号和数字以及用冒号和文本来添加脚注内容 (`[^1]:这是一段脚注`). +你不一定要在文档末尾添加脚注. 可以将它们放在除列表, 引用和表格等元素之外的任何位置. + +```markdown +这是一个数字脚注[^1]. +这是一个带标签的脚注[^label] + +[^1]: 这是一个数字脚注 +[^label]: 这是一个带标签的脚注 +``` + +这是一个数字脚注[^1]. + +这是一个带标签的脚注[^label] + +[^1]: 这是一个数字脚注 +[^label]: 这是一个带标签的脚注 + +## 13 图片 + +图片的语法与链接相似, 但包含一个在前面的感叹号. + +```markdown +![Minion](https://octodex.github.com/images/minion.png) +``` + +![Minion](https://octodex.github.com/images/minion.png) + +或者: + +```markdown +![Alt text](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat") +``` + +![Alt text](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat") + +像链接一样, 图片也具有脚注样式的语法: + +```markdown +![Alt text][id] +``` + +![Alt text][id] + +稍后在文档中提供参考内容, 用来定义 URL 的位置: + +```markdown +[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat" +``` + +[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat" + +{{< admonition tip >}} +**LoveIt** 主题提供了一个包含更多功能的 [图片的 shortcode](../theme-documentation-extended-shortcodes#image). +{{< /admonition >}} diff --git a/themes/LoveIt/exampleSite/content/posts/emoji-support/featured-image.jpg b/themes/LoveIt/exampleSite/content/posts/emoji-support/featured-image.jpg new file mode 100644 index 00000000..5758440e Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/emoji-support/featured-image.jpg differ diff --git a/themes/LoveIt/exampleSite/content/posts/emoji-support/index.en.md b/themes/LoveIt/exampleSite/content/posts/emoji-support/index.en.md new file mode 100644 index 00000000..869d94a7 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/emoji-support/index.en.md @@ -0,0 +1,1283 @@ +--- +weight: 5 +title: "Emoji Support" +date: 2019-10-01T17:55:28+08:00 +lastmod: 2019-10-01T17:55:28+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Guide to emoji usage in Hugo and LoveIt." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["emoji"] +categories: ["Markdown"] + +lightgallery: true +--- + +Emoji can be enabled in a Hugo project in a number of ways. + + + +The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates#inline-shortcodes). + +To enable emoji globally, set `enableEmoji` to `true` in your [site configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files. + +These begin and end with a **colon** and include the **code** of an emoji: + +```markdown +Gone camping! {?:}tent: Be back soon. + +That is so funny! {?:}joy: +``` + +The rendered output looks like this: + +Gone camping! :tent: Be back soon. + +That is so funny! :joy: + +The following **cheat sheet** is a useful reference for emoji shorthand codes. + +## Smileys & Emotion + +### Face Smiling + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :grinning: | `grinning` | :smiley: | `smiley` | +| :smile: | `smile` | :grin: | `grin` | +| :laughing: | `laughing`
    `satisfied` | :sweat_smile: | `sweat_smile` | +| :rofl: | `rofl` | :joy: | `joy` | +| :slightly_smiling_face: | `slightly_smiling_face` | :upside_down_face: | `upside_down_face` | +| :wink: | `wink` | :blush: | `blush` | +| :innocent: | `innocent` | | | + +### Face Affection + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :heart_eyes: | `heart_eyes` | :kissing_heart: | `kissing_heart` | +| :kissing: | `kissing` | :relaxed: | `relaxed` | +| :kissing_closed_eyes: | `kissing_closed_eyes` | :kissing_smiling_eyes: | `kissing_smiling_eyes` | + +### Face Tongue + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :yum: | `yum` | :stuck_out_tongue: | `stuck_out_tongue` | +| :stuck_out_tongue_winking_eye: | `stuck_out_tongue_winking_eye` | :stuck_out_tongue_closed_eyes: | `stuck_out_tongue_closed_eyes` | +| :money_mouth_face: | `money_mouth_face` | | | + +### Face Hand + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hugs: | `hugs` | :thinking: | `thinking` | + +### Face Neutral Skeptical + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :zipper_mouth_face: | `zipper_mouth_face` | :neutral_face: | `neutral_face` | +| :expressionless: | `expressionless` | :no_mouth: | `no_mouth` | +| :smirk: | `smirk` | :unamused: | `unamused` | +| :roll_eyes: | `roll_eyes` | :grimacing: | `grimacing` | +| :lying_face: | `lying_face` | | | + +### Face Sleepy + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :relieved: | `relieved` | :pensive: | `pensive` | +| :sleepy: | `sleepy` | :drooling_face: | `drooling_face` | +| :sleeping: | `sleeping` | | | + +### Face Unwell + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :mask: | `mask` | :face_with_thermometer: | `face_with_thermometer` | +| :face_with_head_bandage: | `face_with_head_bandage` | :nauseated_face: | `nauseated_face` | +| :sneezing_face: | `sneezing_face` | :dizzy_face: | `dizzy_face` | + +### Face Hat + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :cowboy_hat_face: | `cowboy_hat_face` | | | + +### Face Glasses + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :sunglasses: | `sunglasses` | :nerd_face: | `nerd_face` | + +### Face Concerned + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :confused: | `confused` | :worried: | `worried` | +| :slightly_frowning_face: | `slightly_frowning_face` | :frowning_face: | `frowning_face` | +| :open_mouth: | `open_mouth` | :hushed: | `hushed` | +| :astonished: | `astonished` | :flushed: | `flushed` | +| :frowning: | `frowning` | :anguished: | `anguished` | +| :fearful: | `fearful` | :cold_sweat: | `cold_sweat` | +| :disappointed_relieved: | `disappointed_relieved` | :cry: | `cry` | +| :sob: | `sob` | :scream: | `scream` | +| :confounded: | `confounded` | :persevere: | `persevere` | +| :disappointed: | `disappointed` | :sweat: | `sweat` | +| :weary: | `weary` | :tired_face: | `tired_face` | + +### Face Negative + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :triumph: | `triumph` | :pout: | `pout`
    `rage` | +| :angry: | `angry` | :smiling_imp: | `smiling_imp` | +| :imp: | `imp` | :skull: | `skull` | +| :skull_and_crossbones: | `skull_and_crossbones` | | | + +### Face Costume + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hankey: | `hankey`
    `poop`
    `shit` | :clown_face: | `clown_face` | +| :japanese_ogre: | `japanese_ogre` | :japanese_goblin: | `japanese_goblin` | +| :ghost: | `ghost` | :alien: | `alien` | +| :space_invader: | `space_invader` | :robot: | `robot` | + +### Cat Face + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :smiley_cat: | `smiley_cat` | :smile_cat: | `smile_cat` | +| :joy_cat: | `joy_cat` | :heart_eyes_cat: | `heart_eyes_cat` | +| :smirk_cat: | `smirk_cat` | :kissing_cat: | `kissing_cat` | +| :scream_cat: | `scream_cat` | :crying_cat_face: | `crying_cat_face` | +| :pouting_cat: | `pouting_cat` | | | + +### Monkey Face + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :see_no_evil: | `see_no_evil` | :hear_no_evil: | `hear_no_evil` | +| :speak_no_evil: | `speak_no_evil` | | | + +### Emotion + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :kiss: | `kiss` | :love_letter: | `love_letter` | +| :cupid: | `cupid` | :gift_heart: | `gift_heart` | +| :sparkling_heart: | `sparkling_heart` | :heartpulse: | `heartpulse` | +| :heartbeat: | `heartbeat` | :revolving_hearts: | `revolving_hearts` | +| :two_hearts: | `two_hearts` | :heart_decoration: | `heart_decoration` | +| :heavy_heart_exclamation: | `heavy_heart_exclamation` | :broken_heart: | `broken_heart` | +| :heart: | `heart` | :yellow_heart: | `yellow_heart` | +| :green_heart: | `green_heart` | :blue_heart: | `blue_heart` | +| :purple_heart: | `purple_heart` | :black_heart: | `black_heart` | +| :100: | `100` | :anger: | `anger` | +| :boom: | `boom`
    `collision` | :dizzy: | `dizzy` | +| :sweat_drops: | `sweat_drops` | :dash: | `dash` | +| :hole: | `hole` | :bomb: | `bomb` | +| :speech_balloon: | `speech_balloon` | :eye_speech_bubble: | `eye_speech_bubble` | +| :right_anger_bubble: | `right_anger_bubble` | :thought_balloon: | `thought_balloon` | +| :zzz: | `zzz` | | | + +## People & Body + +### Hand Fingers Open + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :wave: | `wave` | :raised_back_of_hand: | `raised_back_of_hand` | +| :raised_hand_with_fingers_splayed: | `raised_hand_with_fingers_splayed` | :hand: | `hand`
    `raised_hand` | +| :vulcan_salute: | `vulcan_salute` | | | + +### Hand Fingers Partial + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :ok_hand: | `ok_hand` | :v: | `v` | +| :crossed_fingers: | `crossed_fingers` | :metal: | `metal` | +| :call_me_hand: | `call_me_hand` | | | + +### Hand Single Finger + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :point_left: | `point_left` | :point_right: | `point_right` | +| :point_up_2: | `point_up_2` | :fu: | `fu`
    `middle_finger` | +| :point_down: | `point_down` | :point_up: | `point_up` | + +### Hand Fingers Closed + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :+1: | `+1`
    `thumbsup` | :-1: | `-1`
    `thumbsdown` | +| :fist: | `fist`
    `fist_raised` | :facepunch: | `facepunch`
    `fist_oncoming`
    `punch` | +| :fist_left: | `fist_left` | :fist_right: | `fist_right` | + +### Hands + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :clap: | `clap` | :raised_hands: | `raised_hands` | +| :open_hands: | `open_hands` | :handshake: | `handshake` | +| :pray: | `pray` | | | + +### Hand Prop + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :writing_hand: | `writing_hand` | :nail_care: | `nail_care` | +| :selfie: | `selfie` | | | + +### Body Parts + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :muscle: | `muscle` | :ear: | `ear` | +| :nose: | `nose` | :eyes: | `eyes` | +| :eye: | `eye` | :tongue: | `tongue` | +| :lips: | `lips` | | | + +### Person + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :baby: | `baby` | :boy: | `boy` | +| :girl: | `girl` | :blonde_man: | `blonde_man`
    `person_with_blond_hair` | +| :man: | `man` | :woman: | `woman` | +| :blonde_woman: | `blonde_woman` | :older_man: | `older_man` | +| :older_woman: | `older_woman` | | | + +### Person Gesture + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :frowning_woman: | `frowning_woman`
    `person_frowning` | :frowning_man: | `frowning_man` | +| :person_with_pouting_face: | `person_with_pouting_face`
    `pouting_woman` | :pouting_man: | `pouting_man` | +| :ng_woman: | `ng_woman`
    `no_good`
    `no_good_woman` | :ng_man: | `ng_man`
    `no_good_man` | +| :ok_woman: | `ok_woman` | :ok_man: | `ok_man` | +| :information_desk_person: | `information_desk_person`
    `sassy_woman`
    `tipping_hand_woman` | :sassy_man: | `sassy_man`
    `tipping_hand_man` | +| :raising_hand: | `raising_hand`
    `raising_hand_woman` | :raising_hand_man: | `raising_hand_man` | +| :bow: | `bow`
    `bowing_man` | :bowing_woman: | `bowing_woman` | +| :man_facepalming: | `man_facepalming` | :woman_facepalming: | `woman_facepalming` | +| :man_shrugging: | `man_shrugging` | :woman_shrugging: | `woman_shrugging` | + +### Person Role + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :man_health_worker: | `man_health_worker` | :woman_health_worker: | `woman_health_worker` | +| :man_student: | `man_student` | :woman_student: | `woman_student` | +| :man_teacher: | `man_teacher` | :woman_teacher: | `woman_teacher` | +| :man_judge: | `man_judge` | :woman_judge: | `woman_judge` | +| :man_farmer: | `man_farmer` | :woman_farmer: | `woman_farmer` | +| :man_cook: | `man_cook` | :woman_cook: | `woman_cook` | +| :man_mechanic: | `man_mechanic` | :woman_mechanic: | `woman_mechanic` | +| :man_factory_worker: | `man_factory_worker` | :woman_factory_worker: | `woman_factory_worker` | +| :man_office_worker: | `man_office_worker` | :woman_office_worker: | `woman_office_worker` | +| :man_scientist: | `man_scientist` | :woman_scientist: | `woman_scientist` | +| :man_technologist: | `man_technologist` | :woman_technologist: | `woman_technologist` | +| :man_singer: | `man_singer` | :woman_singer: | `woman_singer` | +| :man_artist: | `man_artist` | :woman_artist: | `woman_artist` | +| :man_pilot: | `man_pilot` | :woman_pilot: | `woman_pilot` | +| :man_astronaut: | `man_astronaut` | :woman_astronaut: | `woman_astronaut` | +| :man_firefighter: | `man_firefighter` | :woman_firefighter: | `woman_firefighter` | +| :cop: | `cop`
    `policeman` | :policewoman: | `policewoman` | +| :detective: | `detective`
    `male_detective` | :female_detective: | `female_detective` | +| :guardsman: | `guardsman` | :guardswoman: | `guardswoman` | +| :construction_worker: | `construction_worker`
    `construction_worker_man` | :construction_worker_woman: | `construction_worker_woman` | +| :prince: | `prince` | :princess: | `princess` | +| :man_with_turban: | `man_with_turban` | :woman_with_turban: | `woman_with_turban` | +| :man_with_gua_pi_mao: | `man_with_gua_pi_mao` | :man_in_tuxedo: | `man_in_tuxedo` | +| :bride_with_veil: | `bride_with_veil` | :pregnant_woman: | `pregnant_woman` | + +### Person Fantasy + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :angel: | `angel` | :santa: | `santa` | +| :mrs_claus: | `mrs_claus` | | | + +### Person Activity + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :massage: | `massage`
    `massage_woman` | :massage_man: | `massage_man` | +| :haircut: | `haircut`
    `haircut_woman` | :haircut_man: | `haircut_man` | +| :walking: | `walking`
    `walking_man` | :walking_woman: | `walking_woman` | +| :runner: | `runner`
    `running`
    `running_man` | :running_woman: | `running_woman` | +| :dancer: | `dancer` | :man_dancing: | `man_dancing` | +| :business_suit_levitating: | `business_suit_levitating` | :dancers: | `dancers`
    `dancing_women` | +| :dancing_men: | `dancing_men` | | | + +### Person Sport + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :person_fencing: | `person_fencing` | :horse_racing: | `horse_racing` | +| :skier: | `skier` | :snowboarder: | `snowboarder` | +| :golfing_man: | `golfing_man` | :golfing_woman: | `golfing_woman` | +| :surfer: | `surfer`
    `surfing_man` | :surfing_woman: | `surfing_woman` | +| :rowboat: | `rowboat`
    `rowing_man` | :rowing_woman: | `rowing_woman` | +| :swimmer: | `swimmer`
    `swimming_man` | :swimming_woman: | `swimming_woman` | +| :basketball_man: | `basketball_man` | :basketball_woman: | `basketball_woman` | +| :weight_lifting_man: | `weight_lifting_man` | :weight_lifting_woman: | `weight_lifting_woman` | +| :bicyclist: | `bicyclist`
    `biking_man` | :biking_woman: | `biking_woman` | +| :mountain_bicyclist: | `mountain_bicyclist`
    `mountain_biking_man` | :mountain_biking_woman: | `mountain_biking_woman` | +| :man_cartwheeling: | `man_cartwheeling` | :woman_cartwheeling: | `woman_cartwheeling` | +| :men_wrestling: | `men_wrestling` | :women_wrestling: | `women_wrestling` | +| :man_playing_water_polo: | `man_playing_water_polo` | :woman_playing_water_polo: | `woman_playing_water_polo` | +| :man_playing_handball: | `man_playing_handball` | :woman_playing_handball: | `woman_playing_handball` | +| :man_juggling: | `man_juggling` | :woman_juggling: | `woman_juggling` | + +### Person Resting + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bath: | `bath` | :sleeping_bed: | `sleeping_bed` | + +### Family + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :two_women_holding_hands: | `two_women_holding_hands` | :couple: | `couple` | +| :two_men_holding_hands: | `two_men_holding_hands` | :couplekiss_man_woman: | `couplekiss_man_woman` | +| :couplekiss_man_man: | `couplekiss_man_man` | :couplekiss_woman_woman: | `couplekiss_woman_woman` | +| :couple_with_heart: | `couple_with_heart`
    `couple_with_heart_woman_man` | :couple_with_heart_man_man: | `couple_with_heart_man_man` | +| :couple_with_heart_woman_woman: | `couple_with_heart_woman_woman` | :family: | `family`
    `family_man_woman_boy` | +| :family_man_woman_girl: | `family_man_woman_girl` | :family_man_woman_girl_boy: | `family_man_woman_girl_boy` | +| :family_man_woman_boy_boy: | `family_man_woman_boy_boy` | :family_man_woman_girl_girl: | `family_man_woman_girl_girl` | +| :family_man_man_boy: | `family_man_man_boy` | :family_man_man_girl: | `family_man_man_girl` | +| :family_man_man_girl_boy: | `family_man_man_girl_boy` | :family_man_man_boy_boy: | `family_man_man_boy_boy` | +| :family_man_man_girl_girl: | `family_man_man_girl_girl` | :family_woman_woman_boy: | `family_woman_woman_boy` | +| :family_woman_woman_girl: | `family_woman_woman_girl` | :family_woman_woman_girl_boy: | `family_woman_woman_girl_boy` | +| :family_woman_woman_boy_boy: | `family_woman_woman_boy_boy` | :family_woman_woman_girl_girl: | `family_woman_woman_girl_girl` | +| :family_man_boy: | `family_man_boy` | :family_man_boy_boy: | `family_man_boy_boy` | +| :family_man_girl: | `family_man_girl` | :family_man_girl_boy: | `family_man_girl_boy` | +| :family_man_girl_girl: | `family_man_girl_girl` | :family_woman_boy: | `family_woman_boy` | +| :family_woman_boy_boy: | `family_woman_boy_boy` | :family_woman_girl: | `family_woman_girl` | +| :family_woman_girl_boy: | `family_woman_girl_boy` | :family_woman_girl_girl: | `family_woman_girl_girl` | + +### Person Symbol + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :speaking_head: | `speaking_head` | :bust_in_silhouette: | `bust_in_silhouette` | +| :busts_in_silhouette: | `busts_in_silhouette` | :footprints: | `footprints` | + +## Animals & Nature + +### Animal Mammal + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :monkey_face: | `monkey_face` | :monkey: | `monkey` | +| :gorilla: | `gorilla` | :dog: | `dog` | +| :dog2: | `dog2` | :poodle: | `poodle` | +| :wolf: | `wolf` | :fox_face: | `fox_face` | +| :cat: | `cat` | :cat2: | `cat2` | +| :lion: | `lion` | :tiger: | `tiger` | +| :tiger2: | `tiger2` | :leopard: | `leopard` | +| :horse: | `horse` | :racehorse: | `racehorse` | +| :unicorn: | `unicorn` | :deer: | `deer` | +| :cow: | `cow` | :ox: | `ox` | +| :water_buffalo: | `water_buffalo` | :cow2: | `cow2` | +| :pig: | `pig` | :pig2: | `pig2` | +| :boar: | `boar` | :pig_nose: | `pig_nose` | +| :ram: | `ram` | :sheep: | `sheep` | +| :goat: | `goat` | :dromedary_camel: | `dromedary_camel` | +| :camel: | `camel` | :elephant: | `elephant` | +| :rhinoceros: | `rhinoceros` | :mouse: | `mouse` | +| :mouse2: | `mouse2` | :rat: | `rat` | +| :hamster: | `hamster` | :rabbit: | `rabbit` | +| :rabbit2: | `rabbit2` | :chipmunk: | `chipmunk` | +| :bat: | `bat` | :bear: | `bear` | +| :koala: | `koala` | :panda_face: | `panda_face` | +| :feet: | `feet`
    `paw_prints` | | | + +### Animal Bird + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :turkey: | `turkey` | :chicken: | `chicken` | +| :rooster: | `rooster` | :hatching_chick: | `hatching_chick` | +| :baby_chick: | `baby_chick` | :hatched_chick: | `hatched_chick` | +| :bird: | `bird` | :penguin: | `penguin` | +| :dove: | `dove` | :eagle: | `eagle` | +| :duck: | `duck` | :owl: | `owl` | + +### Animal Amphibian + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :frog: | `frog` | + +### Animal Reptile + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :crocodile: | `crocodile` | :turtle: | `turtle` | +| :lizard: | `lizard` | :snake: | `snake` | +| :dragon_face: | `dragon_face` | :dragon: | `dragon` | + +### Animal Marine + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :whale: | `whale` | :whale2: | `whale2` | +| :dolphin: | `dolphin`
    `flipper` | :fish: | `fish` | +| :tropical_fish: | `tropical_fish` | :blowfish: | `blowfish` | +| :shark: | `shark` | :octopus: | `octopus` | +| :shell: | `shell` | | | + +### Animal Bug + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :snail: | `snail` | :butterfly: | `butterfly` | +| :bug: | `bug` | :ant: | `ant` | +| :bee: | `bee`
    `honeybee` | :beetle: | `beetle` | +| :spider: | `spider` | :spider_web: | `spider_web` | +| :scorpion: | `scorpion` | | | + +### Plant Flower + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bouquet: | `bouquet` | :cherry_blossom: | `cherry_blossom` | +| :white_flower: | `white_flower` | :rosette: | `rosette` | +| :rose: | `rose` | :wilted_flower: | `wilted_flower` | +| :hibiscus: | `hibiscus` | :sunflower: | `sunflower` | +| :blossom: | `blossom` | :tulip: | `tulip` | + +### Plant Other + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :seedling: | `seedling` | :evergreen_tree: | `evergreen_tree` | +| :deciduous_tree: | `deciduous_tree` | :palm_tree: | `palm_tree` | +| :cactus: | `cactus` | :ear_of_rice: | `ear_of_rice` | +| :herb: | `herb` | :shamrock: | `shamrock` | +| :four_leaf_clover: | `four_leaf_clover` | :maple_leaf: | `maple_leaf` | +| :fallen_leaf: | `fallen_leaf` | :leaves: | `leaves` | + +## Food & Drink + +### Food Fruit + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :grapes: | `grapes` | :melon: | `melon` | +| :watermelon: | `watermelon` | :mandarin: | `mandarin`
    `orange`
    `tangerine` | +| :lemon: | `lemon` | :banana: | `banana` | +| :pineapple: | `pineapple` | :apple: | `apple` | +| :green_apple: | `green_apple` | :pear: | `pear` | +| :peach: | `peach` | :cherries: | `cherries` | +| :strawberry: | `strawberry` | :kiwi_fruit: | `kiwi_fruit` | +| :tomato: | `tomato` | | | + +### Food Vegetable + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :avocado: | `avocado` | :eggplant: | `eggplant` | +| :potato: | `potato` | :carrot: | `carrot` | +| :corn: | `corn` | :hot_pepper: | `hot_pepper` | +| :cucumber: | `cucumber` | :mushroom: | `mushroom` | +| :peanuts: | `peanuts` | :chestnut: | `chestnut` | + +### Food Prepared + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bread: | `bread` | :croissant: | `croissant` | +| :baguette_bread: | `baguette_bread` | :pancakes: | `pancakes` | +| :cheese: | `cheese` | :meat_on_bone: | `meat_on_bone` | +| :poultry_leg: | `poultry_leg` | :bacon: | `bacon` | +| :hamburger: | `hamburger` | :fries: | `fries` | +| :pizza: | `pizza` | :hotdog: | `hotdog` | +| :taco: | `taco` | :burrito: | `burrito` | +| :stuffed_flatbread: | `stuffed_flatbread` | :egg: | `egg` | +| :fried_egg: | `fried_egg` | :shallow_pan_of_food: | `shallow_pan_of_food` | +| :stew: | `stew` | :green_salad: | `green_salad` | +| :popcorn: | `popcorn` | | | + +### Food Asian + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bento: | `bento` | :rice_cracker: | `rice_cracker` | +| :rice_ball: | `rice_ball` | :rice: | `rice` | +| :curry: | `curry` | :ramen: | `ramen` | +| :spaghetti: | `spaghetti` | :sweet_potato: | `sweet_potato` | +| :oden: | `oden` | :sushi: | `sushi` | +| :fried_shrimp: | `fried_shrimp` | :fish_cake: | `fish_cake` | +| :dango: | `dango` | | | + +### Food Marine + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :crab: | `crab` | :shrimp: | `shrimp` | +| :squid: | `squid` | | | + +### Food Sweet + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :icecream: | `icecream` | :shaved_ice: | `shaved_ice` | +| :ice_cream: | `ice_cream` | :doughnut: | `doughnut` | +| :cookie: | `cookie` | :birthday: | `birthday` | +| :cake: | `cake` | :chocolate_bar: | `chocolate_bar` | +| :candy: | `candy` | :lollipop: | `lollipop` | +| :custard: | `custard` | :honey_pot: | `honey_pot` | + +### Drink + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :baby_bottle: | `baby_bottle` | :milk_glass: | `milk_glass` | +| :coffee: | `coffee` | :tea: | `tea` | +| :sake: | `sake` | :champagne: | `champagne` | +| :wine_glass: | `wine_glass` | :cocktail: | `cocktail` | +| :tropical_drink: | `tropical_drink` | :beer: | `beer` | +| :beers: | `beers` | :clinking_glasses: | `clinking_glasses` | +| :tumbler_glass: | `tumbler_glass` | | | + +### Dishware + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :plate_with_cutlery: | `plate_with_cutlery` | :fork_and_knife: | `fork_and_knife` | +| :spoon: | `spoon` | :hocho: | `hocho`
    `knife` | +| :amphora: | `amphora` | | | + +## Travel & Places + +### Place Map + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :earth_africa: | `earth_africa` | :earth_americas: | `earth_americas` | +| :earth_asia: | `earth_asia` | :globe_with_meridians: | `globe_with_meridians` | +| :world_map: | `world_map` | :japan: | `japan` | + +### Place Geographic + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :mountain_snow: | `mountain_snow` | :mountain: | `mountain` | +| :volcano: | `volcano` | :mount_fuji: | `mount_fuji` | +| :camping: | `camping` | :beach_umbrella: | `beach_umbrella` | +| :desert: | `desert` | :desert_island: | `desert_island` | +| :national_park: | `national_park` | | | + +### Place Building + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :stadium: | `stadium` | :classical_building: | `classical_building` | +| :building_construction: | `building_construction` | :houses: | `houses` | +| :derelict_house: | `derelict_house` | :house: | `house` | +| :house_with_garden: | `house_with_garden` | :office: | `office` | +| :post_office: | `post_office` | :european_post_office: | `european_post_office` | +| :hospital: | `hospital` | :bank: | `bank` | +| :hotel: | `hotel` | :love_hotel: | `love_hotel` | +| :convenience_store: | `convenience_store` | :school: | `school` | +| :department_store: | `department_store` | :factory: | `factory` | +| :japanese_castle: | `japanese_castle` | :european_castle: | `european_castle` | +| :wedding: | `wedding` | :tokyo_tower: | `tokyo_tower` | +| :statue_of_liberty: | `statue_of_liberty` | | | + +### Place Religious + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :church: | `church` | :mosque: | `mosque` | +| :synagogue: | `synagogue` | :shinto_shrine: | `shinto_shrine` | +| :kaaba: | `kaaba` | | | + +### Place Other + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :fountain: | `fountain` | :tent: | `tent` | +| :foggy: | `foggy` | :night_with_stars: | `night_with_stars` | +| :cityscape: | `cityscape` | :sunrise_over_mountains: | `sunrise_over_mountains` | +| :sunrise: | `sunrise` | :city_sunset: | `city_sunset` | +| :city_sunrise: | `city_sunrise` | :bridge_at_night: | `bridge_at_night` | +| :hotsprings: | `hotsprings` | :carousel_horse: | `carousel_horse` | +| :ferris_wheel: | `ferris_wheel` | :roller_coaster: | `roller_coaster` | +| :barber: | `barber` | :circus_tent: | `circus_tent` | + +### Transport Ground + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :steam_locomotive: | `steam_locomotive` | :railway_car: | `railway_car` | +| :bullettrain_side: | `bullettrain_side` | :bullettrain_front: | `bullettrain_front` | +| :train2: | `train2` | :metro: | `metro` | +| :light_rail: | `light_rail` | :station: | `station` | +| :tram: | `tram` | :monorail: | `monorail` | +| :mountain_railway: | `mountain_railway` | :train: | `train` | +| :bus: | `bus` | :oncoming_bus: | `oncoming_bus` | +| :trolleybus: | `trolleybus` | :minibus: | `minibus` | +| :ambulance: | `ambulance` | :fire_engine: | `fire_engine` | +| :police_car: | `police_car` | :oncoming_police_car: | `oncoming_police_car` | +| :taxi: | `taxi` | :oncoming_taxi: | `oncoming_taxi` | +| :car: | `car`
    `red_car` | :oncoming_automobile: | `oncoming_automobile` | +| :blue_car: | `blue_car` | :truck: | `truck` | +| :articulated_lorry: | `articulated_lorry` | :tractor: | `tractor` | +| :racing_car: | `racing_car` | :motorcycle: | `motorcycle` | +| :motor_scooter: | `motor_scooter` | :bike: | `bike` | +| :kick_scooter: | `kick_scooter` | :busstop: | `busstop` | +| :motorway: | `motorway` | :railway_track: | `railway_track` | +| :oil_drum: | `oil_drum` | :fuelpump: | `fuelpump` | +| :rotating_light: | `rotating_light` | :traffic_light: | `traffic_light` | +| :vertical_traffic_light: | `vertical_traffic_light` | :stop_sign: | `stop_sign` | +| :construction: | `construction` | | | + +### Transport Water + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :anchor: | `anchor` | :boat: | `boat`
    `sailboat` | +| :canoe: | `canoe` | :speedboat: | `speedboat` | +| :passenger_ship: | `passenger_ship` | :ferry: | `ferry` | +| :motor_boat: | `motor_boat` | :ship: | `ship` | + +### Transport Air + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :airplane: | `airplane` | :small_airplane: | `small_airplane` | +| :flight_departure: | `flight_departure` | :flight_arrival: | `flight_arrival` | +| :seat: | `seat` | :helicopter: | `helicopter` | +| :suspension_railway: | `suspension_railway` | :mountain_cableway: | `mountain_cableway` | +| :aerial_tramway: | `aerial_tramway` | :artificial_satellite: | `artificial_satellite` | +| :rocket: | `rocket` | | | + +### Hotel + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bellhop_bell: | `bellhop_bell` | + +### Time + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hourglass: | `hourglass` | :hourglass_flowing_sand: | `hourglass_flowing_sand` | +| :watch: | `watch` | :alarm_clock: | `alarm_clock` | +| :stopwatch: | `stopwatch` | :timer_clock: | `timer_clock` | +| :mantelpiece_clock: | `mantelpiece_clock` | :clock12: | `clock12` | +| :clock1230: | `clock1230` | :clock1: | `clock1` | +| :clock130: | `clock130` | :clock2: | `clock2` | +| :clock230: | `clock230` | :clock3: | `clock3` | +| :clock330: | `clock330` | :clock4: | `clock4` | +| :clock430: | `clock430` | :clock5: | `clock5` | +| :clock530: | `clock530` | :clock6: | `clock6` | +| :clock630: | `clock630` | :clock7: | `clock7` | +| :clock730: | `clock730` | :clock8: | `clock8` | +| :clock830: | `clock830` | :clock9: | `clock9` | +| :clock930: | `clock930` | :clock10: | `clock10` | +| :clock1030: | `clock1030` | :clock11: | `clock11` | +| :clock1130: | `clock1130` | | | + +### Sky & Weather + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :new_moon: | `new_moon` | :waxing_crescent_moon: | `waxing_crescent_moon` | +| :first_quarter_moon: | `first_quarter_moon` | :moon: | `moon`
    `waxing_gibbous_moon` | +| :full_moon: | `full_moon` | :waning_gibbous_moon: | `waning_gibbous_moon` | +| :last_quarter_moon: | `last_quarter_moon` | :waning_crescent_moon: | `waning_crescent_moon` | +| :crescent_moon: | `crescent_moon` | :new_moon_with_face: | `new_moon_with_face` | +| :first_quarter_moon_with_face: | `first_quarter_moon_with_face` | :last_quarter_moon_with_face: | `last_quarter_moon_with_face` | +| :thermometer: | `thermometer` | :sunny: | `sunny` | +| :full_moon_with_face: | `full_moon_with_face` | :sun_with_face: | `sun_with_face` | +| :star: | `star` | :star2: | `star2` | +| :stars: | `stars` | :milky_way: | `milky_way` | +| :cloud: | `cloud` | :partly_sunny: | `partly_sunny` | +| :cloud_with_lightning_and_rain: | `cloud_with_lightning_and_rain` | :sun_behind_small_cloud: | `sun_behind_small_cloud` | +| :sun_behind_large_cloud: | `sun_behind_large_cloud` | :sun_behind_rain_cloud: | `sun_behind_rain_cloud` | +| :cloud_with_rain: | `cloud_with_rain` | :cloud_with_snow: | `cloud_with_snow` | +| :cloud_with_lightning: | `cloud_with_lightning` | :tornado: | `tornado` | +| :fog: | `fog` | :wind_face: | `wind_face` | +| :cyclone: | `cyclone` | :rainbow: | `rainbow` | +| :closed_umbrella: | `closed_umbrella` | :open_umbrella: | `open_umbrella` | +| :umbrella: | `umbrella` | :parasol_on_ground: | `parasol_on_ground` | +| :zap: | `zap` | :snowflake: | `snowflake` | +| :snowman_with_snow: | `snowman_with_snow` | :snowman: | `snowman` | +| :comet: | `comet` | :fire: | `fire` | +| :droplet: | `droplet` | :ocean: | `ocean` | + +## Activities + +### Event + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :jack_o_lantern: | `jack_o_lantern` | :christmas_tree: | `christmas_tree` | +| :fireworks: | `fireworks` | :sparkler: | `sparkler` | +| :sparkles: | `sparkles` | :balloon: | `balloon` | +| :tada: | `tada` | :confetti_ball: | `confetti_ball` | +| :tanabata_tree: | `tanabata_tree` | :bamboo: | `bamboo` | +| :dolls: | `dolls` | :flags: | `flags` | +| :wind_chime: | `wind_chime` | :rice_scene: | `rice_scene` | +| :ribbon: | `ribbon` | :gift: | `gift` | +| :reminder_ribbon: | `reminder_ribbon` | :tickets: | `tickets` | +| :ticket: | `ticket` | | | + +### Award Medal + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :medal_military: | `medal_military` | :trophy: | `trophy` | +| :medal_sports: | `medal_sports` | :1st_place_medal: | `1st_place_medal` | +| :2nd_place_medal: | `2nd_place_medal` | :3rd_place_medal: | `3rd_place_medal` | + +### Sport + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :soccer: | `soccer` | :baseball: | `baseball` | +| :basketball: | `basketball` | :volleyball: | `volleyball` | +| :football: | `football` | :rugby_football: | `rugby_football` | +| :tennis: | `tennis` | :bowling: | `bowling` | +| :cricket: | `cricket` | :field_hockey: | `field_hockey` | +| :ice_hockey: | `ice_hockey` | :ping_pong: | `ping_pong` | +| :badminton: | `badminton` | :boxing_glove: | `boxing_glove` | +| :martial_arts_uniform: | `martial_arts_uniform` | :goal_net: | `goal_net` | +| :golf: | `golf` | :ice_skate: | `ice_skate` | +| :fishing_pole_and_fish: | `fishing_pole_and_fish` | :running_shirt_with_sash: | `running_shirt_with_sash` | +| :ski: | `ski` | | | + +### Game + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :dart: | `dart` | :8ball: | `8ball` | +| :crystal_ball: | `crystal_ball` | :video_game: | `video_game` | +| :joystick: | `joystick` | :slot_machine: | `slot_machine` | +| :game_die: | `game_die` | :spades: | `spades` | +| :hearts: | `hearts` | :diamonds: | `diamonds` | +| :clubs: | `clubs` | :black_joker: | `black_joker` | +| :mahjong: | `mahjong` | :flower_playing_cards: | `flower_playing_cards` | + +### Arts & Crafts + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :performing_arts: | `performing_arts` | :framed_picture: | `framed_picture` | +| :art: | `art` | | | + +## Objects + +### Clothing + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :eyeglasses: | `eyeglasses` | :dark_sunglasses: | `dark_sunglasses` | +| :necktie: | `necktie` | :shirt: | `shirt`
    `tshirt` | +| :jeans: | `jeans` | :dress: | `dress` | +| :kimono: | `kimono` | :bikini: | `bikini` | +| :womans_clothes: | `womans_clothes` | :purse: | `purse` | +| :handbag: | `handbag` | :pouch: | `pouch` | +| :shopping: | `shopping` | :school_satchel: | `school_satchel` | +| :mans_shoe: | `mans_shoe`
    `shoe` | :athletic_shoe: | `athletic_shoe` | +| :high_heel: | `high_heel` | :sandal: | `sandal` | +| :boot: | `boot` | :crown: | `crown` | +| :womans_hat: | `womans_hat` | :tophat: | `tophat` | +| :mortar_board: | `mortar_board` | :rescue_worker_helmet: | `rescue_worker_helmet` | +| :prayer_beads: | `prayer_beads` | :lipstick: | `lipstick` | +| :ring: | `ring` | :gem: | `gem` | + +### Sound + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :mute: | `mute` | :speaker: | `speaker` | +| :sound: | `sound` | :loud_sound: | `loud_sound` | +| :loudspeaker: | `loudspeaker` | :mega: | `mega` | +| :postal_horn: | `postal_horn` | :bell: | `bell` | +| :no_bell: | `no_bell` | | | + +### Music + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :musical_score: | `musical_score` | :musical_note: | `musical_note` | +| :notes: | `notes` | :studio_microphone: | `studio_microphone` | +| :level_slider: | `level_slider` | :control_knobs: | `control_knobs` | +| :microphone: | `microphone` | :headphones: | `headphones` | +| :radio: | `radio` | | | + +### Musical Instrument + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :saxophone: | `saxophone` | :guitar: | `guitar` | +| :musical_keyboard: | `musical_keyboard` | :trumpet: | `trumpet` | +| :violin: | `violin` | :drum: | `drum` | + +### Phone + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :iphone: | `iphone` | :calling: | `calling` | +| :phone: | `phone`
    `telephone` | :telephone_receiver: | `telephone_receiver` | +| :pager: | `pager` | :fax: | `fax` | + +### Computer + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :battery: | `battery` | :electric_plug: | `electric_plug` | +| :computer: | `computer` | :desktop_computer: | `desktop_computer` | +| :printer: | `printer` | :keyboard: | `keyboard` | +| :computer_mouse: | `computer_mouse` | :trackball: | `trackball` | +| :minidisc: | `minidisc` | :floppy_disk: | `floppy_disk` | +| :cd: | `cd` | :dvd: | `dvd` | + +### Light & Video + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :movie_camera: | `movie_camera` | :film_strip: | `film_strip` | +| :film_projector: | `film_projector` | :clapper: | `clapper` | +| :tv: | `tv` | :camera: | `camera` | +| :camera_flash: | `camera_flash` | :video_camera: | `video_camera` | +| :vhs: | `vhs` | :mag: | `mag` | +| :mag_right: | `mag_right` | :candle: | `candle` | +| :bulb: | `bulb` | :flashlight: | `flashlight` | +| :izakaya_lantern: | `izakaya_lantern`
    `lantern` | | | + +### Book Paper + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :notebook_with_decorative_cover: | `notebook_with_decorative_cover` | :closed_book: | `closed_book` | +| :book: | `book`
    `open_book` | :green_book: | `green_book` | +| :blue_book: | `blue_book` | :orange_book: | `orange_book` | +| :books: | `books` | :notebook: | `notebook` | +| :ledger: | `ledger` | :page_with_curl: | `page_with_curl` | +| :scroll: | `scroll` | :page_facing_up: | `page_facing_up` | +| :newspaper: | `newspaper` | :newspaper_roll: | `newspaper_roll` | +| :bookmark_tabs: | `bookmark_tabs` | :bookmark: | `bookmark` | +| :label: | `label` | | | + +### Money + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :moneybag: | `moneybag` | :yen: | `yen` | +| :dollar: | `dollar` | :euro: | `euro` | +| :pound: | `pound` | :money_with_wings: | `money_with_wings` | +| :credit_card: | `credit_card` | :chart: | `chart` | + +### Mail + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :email: | `email`
    `envelope` | :e-mail: | `:e-mail:` | +| :incoming_envelope: | `incoming_envelope` | :envelope_with_arrow: | `envelope_with_arrow` | +| :outbox_tray: | `outbox_tray` | :inbox_tray: | `inbox_tray` | +| :package: | `package` | :mailbox: | `mailbox` | +| :mailbox_closed: | `mailbox_closed` | :mailbox_with_mail: | `mailbox_with_mail` | +| :mailbox_with_no_mail: | `mailbox_with_no_mail` | :postbox: | `postbox` | +| :ballot_box: | `ballot_box` | | | + +### Writing + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :pencil2: | `pencil2` | :black_nib: | `black_nib` | +| :fountain_pen: | `fountain_pen` | :pen: | `pen` | +| :paintbrush: | `paintbrush` | :crayon: | `crayon` | +| :memo: | `memo`
    `pencil` | | | + +### Office + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :briefcase: | `briefcase` | :file_folder: | `file_folder` | +| :open_file_folder: | `open_file_folder` | :card_index_dividers: | `card_index_dividers` | +| :date: | `date` | :calendar: | `calendar` | +| :spiral_notepad: | `spiral_notepad` | :spiral_calendar: | `spiral_calendar` | +| :card_index: | `card_index` | :chart_with_upwards_trend: | `chart_with_upwards_trend` | +| :chart_with_downwards_trend: | `chart_with_downwards_trend` | :bar_chart: | `bar_chart` | +| :clipboard: | `clipboard` | :pushpin: | `pushpin` | +| :round_pushpin: | `round_pushpin` | :paperclip: | `paperclip` | +| :paperclips: | `paperclips` | :straight_ruler: | `straight_ruler` | +| :triangular_ruler: | `triangular_ruler` | :scissors: | `scissors` | +| :card_file_box: | `card_file_box` | :file_cabinet: | `file_cabinet` | +| :wastebasket: | `wastebasket` | | | + +### Lock + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :lock: | `lock` | :unlock: | `unlock` | +| :lock_with_ink_pen: | `lock_with_ink_pen` | :closed_lock_with_key: | `closed_lock_with_key` | +| :key: | `key` | :old_key: | `old_key` | + +### Tool + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hammer: | `hammer` | :pick: | `pick` | +| :hammer_and_pick: | `hammer_and_pick` | :hammer_and_wrench: | `hammer_and_wrench` | +| :dagger: | `dagger` | :crossed_swords: | `crossed_swords` | +| :gun: | `gun` | :bow_and_arrow: | `bow_and_arrow` | +| :shield: | `shield` | :wrench: | `wrench` | +| :nut_and_bolt: | `nut_and_bolt` | :gear: | `gear` | +| :clamp: | `clamp` | :balance_scale: | `balance_scale` | +| :link: | `link` | :chains: | `chains` | + +### Science + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :alembic: | `alembic` | :microscope: | `microscope` | +| :telescope: | `telescope` | :satellite: | `satellite` | + +### Medical + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :syringe: | `syringe` | :pill: | `pill` | + +### Household + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :door: | `door` | :bed: | `bed` | +| :couch_and_lamp: | `couch_and_lamp` | :toilet: | `toilet` | +| :shower: | `shower` | :bathtub: | `bathtub` | +| :shopping_cart: | `shopping_cart` | | | + +### Other Object + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :smoking: | `smoking` | :coffin: | `coffin` | +| :funeral_urn: | `funeral_urn` | :moyai: | `moyai` | + +## Symbols + +### Transport Sign + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :atm: | `atm` | :put_litter_in_its_place: | `put_litter_in_its_place` | +| :potable_water: | `potable_water` | :wheelchair: | `wheelchair` | +| :mens: | `mens` | :womens: | `womens` | +| :restroom: | `restroom` | :baby_symbol: | `baby_symbol` | +| :wc: | `wc` | :passport_control: | `passport_control` | +| :customs: | `customs` | :baggage_claim: | `baggage_claim` | +| :left_luggage: | `left_luggage` | | | + +### Warning + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :warning: | `warning` | :children_crossing: | `children_crossing` | +| :no_entry: | `no_entry` | :no_entry_sign: | `no_entry_sign` | +| :no_bicycles: | `no_bicycles` | :no_smoking: | `no_smoking` | +| :do_not_litter: | `do_not_litter` | :non-potable_water: | `:non-potable_water:` | +| :no_pedestrians: | `no_pedestrians` | :no_mobile_phones: | `no_mobile_phones` | +| :underage: | `underage` | :radioactive: | `radioactive` | +| :biohazard: | `biohazard` | | | + +### Arrow + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :arrow_up: | `arrow_up` | :arrow_upper_right: | `arrow_upper_right` | +| :arrow_right: | `arrow_right` | :arrow_lower_right: | `arrow_lower_right` | +| :arrow_down: | `arrow_down` | :arrow_lower_left: | `arrow_lower_left` | +| :arrow_left: | `arrow_left` | :arrow_upper_left: | `arrow_upper_left` | +| :arrow_up_down: | `arrow_up_down` | :left_right_arrow: | `left_right_arrow` | +| :leftwards_arrow_with_hook: | `leftwards_arrow_with_hook` | :arrow_right_hook: | `arrow_right_hook` | +| :arrow_heading_up: | `arrow_heading_up` | :arrow_heading_down: | `arrow_heading_down` | +| :arrows_clockwise: | `arrows_clockwise` | :arrows_counterclockwise: | `arrows_counterclockwise` | +| :back: | `back` | :end: | `end` | +| :on: | `on` | :soon: | `soon` | +| :top: | `top` | | | + +### Religion + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :place_of_worship: | `place_of_worship` | :atom_symbol: | `atom_symbol` | +| :om: | `om` | :star_of_david: | `star_of_david` | +| :wheel_of_dharma: | `wheel_of_dharma` | :yin_yang: | `yin_yang` | +| :latin_cross: | `latin_cross` | :orthodox_cross: | `orthodox_cross` | +| :star_and_crescent: | `star_and_crescent` | :peace_symbol: | `peace_symbol` | +| :menorah: | `menorah` | :six_pointed_star: | `six_pointed_star` | + +### Zodiac + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :aries: | `aries` | :taurus: | `taurus` | +| :gemini: | `gemini` | :cancer: | `cancer` | +| :leo: | `leo` | :virgo: | `virgo` | +| :libra: | `libra` | :scorpius: | `scorpius` | +| :sagittarius: | `sagittarius` | :capricorn: | `capricorn` | +| :aquarius: | `aquarius` | :pisces: | `pisces` | +| :ophiuchus: | `ophiuchus` | | | + +### Av Symbol + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :twisted_rightwards_arrows: | `twisted_rightwards_arrows` | :repeat: | `repeat` | +| :repeat_one: | `repeat_one` | :arrow_forward: | `arrow_forward` | +| :fast_forward: | `fast_forward` | :next_track_button: | `next_track_button` | +| :play_or_pause_button: | `play_or_pause_button` | :arrow_backward: | `arrow_backward` | +| :rewind: | `rewind` | :previous_track_button: | `previous_track_button` | +| :arrow_up_small: | `arrow_up_small` | :arrow_double_up: | `arrow_double_up` | +| :arrow_down_small: | `arrow_down_small` | :arrow_double_down: | `arrow_double_down` | +| :pause_button: | `pause_button` | :stop_button: | `stop_button` | +| :record_button: | `record_button` | :cinema: | `cinema` | +| :low_brightness: | `low_brightness` | :high_brightness: | `high_brightness` | +| :signal_strength: | `signal_strength` | :vibration_mode: | `vibration_mode` | +| :mobile_phone_off: | `mobile_phone_off` | | | + +### Math + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :heavy_multiplication_x: | `heavy_multiplication_x` | :heavy_plus_sign: | `heavy_plus_sign` | +| :heavy_minus_sign: | `heavy_minus_sign` | :heavy_division_sign: | `heavy_division_sign` | + +### Punctuation + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bangbang: | `bangbang` | :interrobang: | `interrobang` | +| :question: | `question` | :grey_question: | `grey_question` | +| :grey_exclamation: | `grey_exclamation` | :exclamation: | `exclamation`
    `heavy_exclamation_mark` | +| :wavy_dash: | `wavy_dash` | | | + +### Currency + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :currency_exchange: | `currency_exchange` | :heavy_dollar_sign: | `heavy_dollar_sign` | + +### Keycap + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hash: | `hash` | :asterisk: | `asterisk` | +| :zero: | `zero` | :one: | `one` | +| :two: | `two` | :three: | `three` | +| :four: | `four` | :five: | `five` | +| :six: | `six` | :seven: | `seven` | +| :eight: | `eight` | :nine: | `nine` | +| :keycap_ten: | `keycap_ten` | | | + +### Alphabet + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :capital_abcd: | `capital_abcd` | :abcd: | `abcd` | +| :1234: | `1234` | :symbols: | `symbols` | +| :abc: | `abc` | :a: | `a` | +| :ab: | `ab` | :b: | `b` | +| :cl: | `cl` | :cool: | `cool` | +| :free: | `free` | :information_source: | `information_source` | +| :id: | `id` | :m: | `m` | +| :new: | `new` | :ng: | `ng` | +| :o2: | `o2` | :ok: | `ok` | +| :parking: | `parking` | :sos: | `sos` | +| :up: | `up` | :vs: | `vs` | +| :koko: | `koko` | :sa: | `sa` | +| :u6708: | `u6708` | :u6709: | `u6709` | +| :u6307: | `u6307` | :ideograph_advantage: | `ideograph_advantage` | +| :u5272: | `u5272` | :u7121: | `u7121` | +| :u7981: | `u7981` | :accept: | `accept` | +| :u7533: | `u7533` | :u5408: | `u5408` | +| :u7a7a: | `u7a7a` | :congratulations: | `congratulations` | +| :secret: | `secret` | :u55b6: | `u55b6` | +| :u6e80: | `u6e80` | | | + +### Geometric + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :red_circle: | `red_circle` | :large_blue_circle: | `large_blue_circle` | +| :black_circle: | `black_circle` | :white_circle: | `white_circle` | +| :black_large_square: | `black_large_square` | :white_large_square: | `white_large_square` | +| :black_medium_square: | `black_medium_square` | :white_medium_square: | `white_medium_square` | +| :black_medium_small_square: | `black_medium_small_square` | :white_medium_small_square: | `white_medium_small_square` | +| :black_small_square: | `black_small_square` | :white_small_square: | `white_small_square` | +| :large_orange_diamond: | `large_orange_diamond` | :large_blue_diamond: | `large_blue_diamond` | +| :small_orange_diamond: | `small_orange_diamond` | :small_blue_diamond: | `small_blue_diamond` | +| :small_red_triangle: | `small_red_triangle` | :small_red_triangle_down: | `small_red_triangle_down` | +| :diamond_shape_with_a_dot_inside: | `diamond_shape_with_a_dot_inside` | :radio_button: | `radio_button` | +| :white_square_button: | `white_square_button` | :black_square_button: | `black_square_button` | + +### Other Symbol + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :recycle: | `recycle` | :fleur_de_lis: | `fleur_de_lis` | +| :trident: | `trident` | :name_badge: | `name_badge` | +| :beginner: | `beginner` | :o: | `o` | +| :white_check_mark: | `white_check_mark` | :ballot_box_with_check: | `ballot_box_with_check` | +| :heavy_check_mark: | `heavy_check_mark` | :x: | `x` | +| :negative_squared_cross_mark: | `negative_squared_cross_mark` | :curly_loop: | `curly_loop` | +| :loop: | `loop` | :part_alternation_mark: | `part_alternation_mark` | +| :eight_spoked_asterisk: | `eight_spoked_asterisk` | :eight_pointed_black_star: | `eight_pointed_black_star` | +| :sparkle: | `sparkle` | :copyright: | `copyright` | +| :registered: | `registered` | :tm: | `tm` | + +## Flags + +### Common Flags + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :checkered_flag: | `checkered_flag` | :triangular_flag_on_post: | `triangular_flag_on_post` | +| :crossed_flags: | `crossed_flags` | :black_flag: | `black_flag` | +| :white_flag: | `white_flag` | :rainbow_flag: | `rainbow_flag` | + +### Country and Region Flags + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :andorra: | `andorra` | :united_arab_emirates: | `united_arab_emirates` | +| :afghanistan: | `afghanistan` | :antigua_barbuda: | `antigua_barbuda` | +| :anguilla: | `anguilla` | :albania: | `albania` | +| :armenia: | `armenia` | :angola: | `angola` | +| :antarctica: | `antarctica` | :argentina: | `argentina` | +| :american_samoa: | `american_samoa` | :austria: | `austria` | +| :australia: | `australia` | :aruba: | `aruba` | +| :aland_islands: | `aland_islands` | :azerbaijan: | `azerbaijan` | +| :bosnia_herzegovina: | `bosnia_herzegovina` | :barbados: | `barbados` | +| :bangladesh: | `bangladesh` | :belgium: | `belgium` | +| :burkina_faso: | `burkina_faso` | :bulgaria: | `bulgaria` | +| :bahrain: | `bahrain` | :burundi: | `burundi` | +| :benin: | `benin` | :st_barthelemy: | `st_barthelemy` | +| :bermuda: | `bermuda` | :brunei: | `brunei` | +| :bolivia: | `bolivia` | :caribbean_netherlands: | `caribbean_netherlands` | +| :brazil: | `brazil` | :bahamas: | `bahamas` | +| :bhutan: | `bhutan` | :botswana: | `botswana` | +| :belarus: | `belarus` | :belize: | `belize` | +| :canada: | `canada` | :cocos_islands: | `cocos_islands` | +| :congo_kinshasa: | `congo_kinshasa` | :central_african_republic: | `central_african_republic` | +| :congo_brazzaville: | `congo_brazzaville` | :switzerland: | `switzerland` | +| :cote_divoire: | `cote_divoire` | :cook_islands: | `cook_islands` | +| :chile: | `chile` | :cameroon: | `cameroon` | +| :cn: | `cn` | :colombia: | `colombia` | +| :costa_rica: | `costa_rica` | :cuba: | `cuba` | +| :cape_verde: | `cape_verde` | :curacao: | `curacao` | +| :christmas_island: | `christmas_island` | :cyprus: | `cyprus` | +| :czech_republic: | `czech_republic` | :de: | `de` | +| :djibouti: | `djibouti` | :denmark: | `denmark` | +| :dominica: | `dominica` | :dominican_republic: | `dominican_republic` | +| :algeria: | `algeria` | :ecuador: | `ecuador` | +| :estonia: | `estonia` | :egypt: | `egypt` | +| :western_sahara: | `western_sahara` | :eritrea: | `eritrea` | +| :es: | `es` | :ethiopia: | `ethiopia` | +| :eu: | `eu`
    `european_union` | :finland: | `finland` | +| :fiji: | `fiji` | :falkland_islands: | `falkland_islands` | +| :micronesia: | `micronesia` | :faroe_islands: | `faroe_islands` | +| :fr: | `fr` | :gabon: | `gabon` | +| :gb: | `gb`
    `uk` | :grenada: | `grenada` | +| :georgia: | `georgia` | :french_guiana: | `french_guiana` | +| :guernsey: | `guernsey` | :ghana: | `ghana` | +| :gibraltar: | `gibraltar` | :greenland: | `greenland` | +| :gambia: | `gambia` | :guinea: | `guinea` | +| :guadeloupe: | `guadeloupe` | :equatorial_guinea: | `equatorial_guinea` | +| :greece: | `greece` | :south_georgia_south_sandwich_islands: | `south_georgia_south_sandwich_islands` | +| :guatemala: | `guatemala` | :guam: | `guam` | +| :guinea_bissau: | `guinea_bissau` | :guyana: | `guyana` | +| :hong_kong: | `hong_kong` | :honduras: | `honduras` | +| :croatia: | `croatia` | :haiti: | `haiti` | +| :hungary: | `hungary` | :canary_islands: | `canary_islands` | +| :indonesia: | `indonesia` | :ireland: | `ireland` | +| :israel: | `israel` | :isle_of_man: | `isle_of_man` | +| :india: | `india` | :british_indian_ocean_territory: | `british_indian_ocean_territory` | +| :iraq: | `iraq` | :iran: | `iran` | +| :iceland: | `iceland` | :it: | `it` | +| :jersey: | `jersey` | :jamaica: | `jamaica` | +| :jordan: | `jordan` | :jp: | `jp` | +| :kenya: | `kenya` | :kyrgyzstan: | `kyrgyzstan` | +| :cambodia: | `cambodia` | :kiribati: | `kiribati` | +| :comoros: | `comoros` | :st_kitts_nevis: | `st_kitts_nevis` | +| :north_korea: | `north_korea` | :kr: | `kr` | +| :kuwait: | `kuwait` | :cayman_islands: | `cayman_islands` | +| :kazakhstan: | `kazakhstan` | :laos: | `laos` | +| :lebanon: | `lebanon` | :st_lucia: | `st_lucia` | +| :liechtenstein: | `liechtenstein` | :sri_lanka: | `sri_lanka` | +| :liberia: | `liberia` | :lesotho: | `lesotho` | +| :lithuania: | `lithuania` | :luxembourg: | `luxembourg` | +| :latvia: | `latvia` | :libya: | `libya` | +| :morocco: | `morocco` | :monaco: | `monaco` | +| :moldova: | `moldova` | :montenegro: | `montenegro` | +| :madagascar: | `madagascar` | :marshall_islands: | `marshall_islands` | +| :macedonia: | `macedonia` | :mali: | `mali` | +| :myanmar: | `myanmar` | :mongolia: | `mongolia` | +| :macau: | `macau` | :northern_mariana_islands: | `northern_mariana_islands` | +| :martinique: | `martinique` | :mauritania: | `mauritania` | +| :montserrat: | `montserrat` | :malta: | `malta` | +| :mauritius: | `mauritius` | :maldives: | `maldives` | +| :malawi: | `malawi` | :mexico: | `mexico` | +| :malaysia: | `malaysia` | :mozambique: | `mozambique` | +| :namibia: | `namibia` | :new_caledonia: | `new_caledonia` | +| :niger: | `niger` | :norfolk_island: | `norfolk_island` | +| :nigeria: | `nigeria` | :nicaragua: | `nicaragua` | +| :netherlands: | `netherlands` | :norway: | `norway` | +| :nepal: | `nepal` | :nauru: | `nauru` | +| :niue: | `niue` | :new_zealand: | `new_zealand` | +| :oman: | `oman` | :panama: | `panama` | +| :peru: | `peru` | :french_polynesia: | `french_polynesia` | +| :papua_new_guinea: | `papua_new_guinea` | :philippines: | `philippines` | +| :pakistan: | `pakistan` | :poland: | `poland` | +| :st_pierre_miquelon: | `st_pierre_miquelon` | :pitcairn_islands: | `pitcairn_islands` | +| :puerto_rico: | `puerto_rico` | :palestinian_territories: | `palestinian_territories` | +| :portugal: | `portugal` | :palau: | `palau` | +| :paraguay: | `paraguay` | :qatar: | `qatar` | +| :reunion: | `reunion` | :romania: | `romania` | +| :serbia: | `serbia` | :ru: | `ru` | +| :rwanda: | `rwanda` | :saudi_arabia: | `saudi_arabia` | +| :solomon_islands: | `solomon_islands` | :seychelles: | `seychelles` | +| :sudan: | `sudan` | :sweden: | `sweden` | +| :singapore: | `singapore` | :st_helena: | `st_helena` | +| :slovenia: | `slovenia` | :slovakia: | `slovakia` | +| :sierra_leone: | `sierra_leone` | :san_marino: | `san_marino` | +| :senegal: | `senegal` | :somalia: | `somalia` | +| :suriname: | `suriname` | :south_sudan: | `south_sudan` | +| :sao_tome_principe: | `sao_tome_principe` | :el_salvador: | `el_salvador` | +| :sint_maarten: | `sint_maarten` | :syria: | `syria` | +| :swaziland: | `swaziland` | :turks_caicos_islands: | `turks_caicos_islands` | +| :chad: | `chad` | :french_southern_territories: | `french_southern_territories` | +| :togo: | `togo` | :thailand: | `thailand` | +| :tajikistan: | `tajikistan` | :tokelau: | `tokelau` | +| :timor_leste: | `timor_leste` | :turkmenistan: | `turkmenistan` | +| :tunisia: | `tunisia` | :tonga: | `tonga` | +| :tr: | `tr` | :trinidad_tobago: | `trinidad_tobago` | +| :tuvalu: | `tuvalu` | :taiwan: | `taiwan` | +| :tanzania: | `tanzania` | :ukraine: | `ukraine` | +| :uganda: | `uganda` | :us: | `us` | +| :uruguay: | `uruguay` | :uzbekistan: | `uzbekistan` | +| :vatican_city: | `vatican_city` | :st_vincent_grenadines: | `st_vincent_grenadines` | +| :venezuela: | `venezuela` | :british_virgin_islands: | `british_virgin_islands` | +| :us_virgin_islands: | `us_virgin_islands` | :vietnam: | `vietnam` | +| :vanuatu: | `vanuatu` | :wallis_futuna: | `wallis_futuna` | +| :samoa: | `samoa` | :kosovo: | `kosovo` | +| :yemen: | `yemen` | :mayotte: | `mayotte` | +| :south_africa: | `south_africa` | :zambia: | `zambia` | +| :zimbabwe: | `zimbabwe` | | | diff --git a/themes/LoveIt/exampleSite/content/posts/emoji-support/index.fr.md b/themes/LoveIt/exampleSite/content/posts/emoji-support/index.fr.md new file mode 100644 index 00000000..d0849818 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/emoji-support/index.fr.md @@ -0,0 +1,1288 @@ +--- +weight: 5 +title: "Emoji Support" +date: 2019-10-01T17:55:28+08:00 +lastmod: 2019-10-01T17:55:28+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Guide d'utilisation des emoji dans Hugo et LoveIt." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["emoji"] +categories: ["Markdown"] + +lightgallery: true +--- + +Emoji peut être activé dans un projet Hugo de plusieurs façons. + + + +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + +The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates#inline-shortcodes). + +To enable emoji globally, set `enableEmoji` to `true` in your [site configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files. + +These begin and end with a **colon** and include the **code** of an emoji: + +```markdown +Gone camping! {?:}tent: Be back soon. + +That is so funny! {?:}joy: +``` + +The rendered output looks like this: + +Gone camping! :tent: Be back soon. + +That is so funny! :joy: + +The following **cheat sheet** is a useful reference for emoji shorthand codes. + +## Smileys & Emotion + +### Face Smiling + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :grinning: | `grinning` | :smiley: | `smiley` | +| :smile: | `smile` | :grin: | `grin` | +| :laughing: | `laughing`
    `satisfied` | :sweat_smile: | `sweat_smile` | +| :rofl: | `rofl` | :joy: | `joy` | +| :slightly_smiling_face: | `slightly_smiling_face` | :upside_down_face: | `upside_down_face` | +| :wink: | `wink` | :blush: | `blush` | +| :innocent: | `innocent` | | | + +### Face Affection + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :heart_eyes: | `heart_eyes` | :kissing_heart: | `kissing_heart` | +| :kissing: | `kissing` | :relaxed: | `relaxed` | +| :kissing_closed_eyes: | `kissing_closed_eyes` | :kissing_smiling_eyes: | `kissing_smiling_eyes` | + +### Face Tongue + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :yum: | `yum` | :stuck_out_tongue: | `stuck_out_tongue` | +| :stuck_out_tongue_winking_eye: | `stuck_out_tongue_winking_eye` | :stuck_out_tongue_closed_eyes: | `stuck_out_tongue_closed_eyes` | +| :money_mouth_face: | `money_mouth_face` | | | + +### Face Hand + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hugs: | `hugs` | :thinking: | `thinking` | + +### Face Neutral Skeptical + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :zipper_mouth_face: | `zipper_mouth_face` | :neutral_face: | `neutral_face` | +| :expressionless: | `expressionless` | :no_mouth: | `no_mouth` | +| :smirk: | `smirk` | :unamused: | `unamused` | +| :roll_eyes: | `roll_eyes` | :grimacing: | `grimacing` | +| :lying_face: | `lying_face` | | | + +### Face Sleepy + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :relieved: | `relieved` | :pensive: | `pensive` | +| :sleepy: | `sleepy` | :drooling_face: | `drooling_face` | +| :sleeping: | `sleeping` | | | + +### Face Unwell + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :mask: | `mask` | :face_with_thermometer: | `face_with_thermometer` | +| :face_with_head_bandage: | `face_with_head_bandage` | :nauseated_face: | `nauseated_face` | +| :sneezing_face: | `sneezing_face` | :dizzy_face: | `dizzy_face` | + +### Face Hat + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :cowboy_hat_face: | `cowboy_hat_face` | | | + +### Face Glasses + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :sunglasses: | `sunglasses` | :nerd_face: | `nerd_face` | + +### Face Concerned + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :confused: | `confused` | :worried: | `worried` | +| :slightly_frowning_face: | `slightly_frowning_face` | :frowning_face: | `frowning_face` | +| :open_mouth: | `open_mouth` | :hushed: | `hushed` | +| :astonished: | `astonished` | :flushed: | `flushed` | +| :frowning: | `frowning` | :anguished: | `anguished` | +| :fearful: | `fearful` | :cold_sweat: | `cold_sweat` | +| :disappointed_relieved: | `disappointed_relieved` | :cry: | `cry` | +| :sob: | `sob` | :scream: | `scream` | +| :confounded: | `confounded` | :persevere: | `persevere` | +| :disappointed: | `disappointed` | :sweat: | `sweat` | +| :weary: | `weary` | :tired_face: | `tired_face` | + +### Face Negative + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :triumph: | `triumph` | :pout: | `pout`
    `rage` | +| :angry: | `angry` | :smiling_imp: | `smiling_imp` | +| :imp: | `imp` | :skull: | `skull` | +| :skull_and_crossbones: | `skull_and_crossbones` | | | + +### Face Costume + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hankey: | `hankey`
    `poop`
    `shit` | :clown_face: | `clown_face` | +| :japanese_ogre: | `japanese_ogre` | :japanese_goblin: | `japanese_goblin` | +| :ghost: | `ghost` | :alien: | `alien` | +| :space_invader: | `space_invader` | :robot: | `robot` | + +### Cat Face + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :smiley_cat: | `smiley_cat` | :smile_cat: | `smile_cat` | +| :joy_cat: | `joy_cat` | :heart_eyes_cat: | `heart_eyes_cat` | +| :smirk_cat: | `smirk_cat` | :kissing_cat: | `kissing_cat` | +| :scream_cat: | `scream_cat` | :crying_cat_face: | `crying_cat_face` | +| :pouting_cat: | `pouting_cat` | | | + +### Monkey Face + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :see_no_evil: | `see_no_evil` | :hear_no_evil: | `hear_no_evil` | +| :speak_no_evil: | `speak_no_evil` | | | + +### Emotion + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :kiss: | `kiss` | :love_letter: | `love_letter` | +| :cupid: | `cupid` | :gift_heart: | `gift_heart` | +| :sparkling_heart: | `sparkling_heart` | :heartpulse: | `heartpulse` | +| :heartbeat: | `heartbeat` | :revolving_hearts: | `revolving_hearts` | +| :two_hearts: | `two_hearts` | :heart_decoration: | `heart_decoration` | +| :heavy_heart_exclamation: | `heavy_heart_exclamation` | :broken_heart: | `broken_heart` | +| :heart: | `heart` | :yellow_heart: | `yellow_heart` | +| :green_heart: | `green_heart` | :blue_heart: | `blue_heart` | +| :purple_heart: | `purple_heart` | :black_heart: | `black_heart` | +| :100: | `100` | :anger: | `anger` | +| :boom: | `boom`
    `collision` | :dizzy: | `dizzy` | +| :sweat_drops: | `sweat_drops` | :dash: | `dash` | +| :hole: | `hole` | :bomb: | `bomb` | +| :speech_balloon: | `speech_balloon` | :eye_speech_bubble: | `eye_speech_bubble` | +| :right_anger_bubble: | `right_anger_bubble` | :thought_balloon: | `thought_balloon` | +| :zzz: | `zzz` | | | + +## People & Body + +### Hand Fingers Open + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :wave: | `wave` | :raised_back_of_hand: | `raised_back_of_hand` | +| :raised_hand_with_fingers_splayed: | `raised_hand_with_fingers_splayed` | :hand: | `hand`
    `raised_hand` | +| :vulcan_salute: | `vulcan_salute` | | | + +### Hand Fingers Partial + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :ok_hand: | `ok_hand` | :v: | `v` | +| :crossed_fingers: | `crossed_fingers` | :metal: | `metal` | +| :call_me_hand: | `call_me_hand` | | | + +### Hand Single Finger + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :point_left: | `point_left` | :point_right: | `point_right` | +| :point_up_2: | `point_up_2` | :fu: | `fu`
    `middle_finger` | +| :point_down: | `point_down` | :point_up: | `point_up` | + +### Hand Fingers Closed + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :+1: | `+1`
    `thumbsup` | :-1: | `-1`
    `thumbsdown` | +| :fist: | `fist`
    `fist_raised` | :facepunch: | `facepunch`
    `fist_oncoming`
    `punch` | +| :fist_left: | `fist_left` | :fist_right: | `fist_right` | + +### Hands + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :clap: | `clap` | :raised_hands: | `raised_hands` | +| :open_hands: | `open_hands` | :handshake: | `handshake` | +| :pray: | `pray` | | | + +### Hand Prop + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :writing_hand: | `writing_hand` | :nail_care: | `nail_care` | +| :selfie: | `selfie` | | | + +### Body Parts + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :muscle: | `muscle` | :ear: | `ear` | +| :nose: | `nose` | :eyes: | `eyes` | +| :eye: | `eye` | :tongue: | `tongue` | +| :lips: | `lips` | | | + +### Person + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :baby: | `baby` | :boy: | `boy` | +| :girl: | `girl` | :blonde_man: | `blonde_man`
    `person_with_blond_hair` | +| :man: | `man` | :woman: | `woman` | +| :blonde_woman: | `blonde_woman` | :older_man: | `older_man` | +| :older_woman: | `older_woman` | | | + +### Person Gesture + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :frowning_woman: | `frowning_woman`
    `person_frowning` | :frowning_man: | `frowning_man` | +| :person_with_pouting_face: | `person_with_pouting_face`
    `pouting_woman` | :pouting_man: | `pouting_man` | +| :ng_woman: | `ng_woman`
    `no_good`
    `no_good_woman` | :ng_man: | `ng_man`
    `no_good_man` | +| :ok_woman: | `ok_woman` | :ok_man: | `ok_man` | +| :information_desk_person: | `information_desk_person`
    `sassy_woman`
    `tipping_hand_woman` | :sassy_man: | `sassy_man`
    `tipping_hand_man` | +| :raising_hand: | `raising_hand`
    `raising_hand_woman` | :raising_hand_man: | `raising_hand_man` | +| :bow: | `bow`
    `bowing_man` | :bowing_woman: | `bowing_woman` | +| :man_facepalming: | `man_facepalming` | :woman_facepalming: | `woman_facepalming` | +| :man_shrugging: | `man_shrugging` | :woman_shrugging: | `woman_shrugging` | + +### Person Role + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :man_health_worker: | `man_health_worker` | :woman_health_worker: | `woman_health_worker` | +| :man_student: | `man_student` | :woman_student: | `woman_student` | +| :man_teacher: | `man_teacher` | :woman_teacher: | `woman_teacher` | +| :man_judge: | `man_judge` | :woman_judge: | `woman_judge` | +| :man_farmer: | `man_farmer` | :woman_farmer: | `woman_farmer` | +| :man_cook: | `man_cook` | :woman_cook: | `woman_cook` | +| :man_mechanic: | `man_mechanic` | :woman_mechanic: | `woman_mechanic` | +| :man_factory_worker: | `man_factory_worker` | :woman_factory_worker: | `woman_factory_worker` | +| :man_office_worker: | `man_office_worker` | :woman_office_worker: | `woman_office_worker` | +| :man_scientist: | `man_scientist` | :woman_scientist: | `woman_scientist` | +| :man_technologist: | `man_technologist` | :woman_technologist: | `woman_technologist` | +| :man_singer: | `man_singer` | :woman_singer: | `woman_singer` | +| :man_artist: | `man_artist` | :woman_artist: | `woman_artist` | +| :man_pilot: | `man_pilot` | :woman_pilot: | `woman_pilot` | +| :man_astronaut: | `man_astronaut` | :woman_astronaut: | `woman_astronaut` | +| :man_firefighter: | `man_firefighter` | :woman_firefighter: | `woman_firefighter` | +| :cop: | `cop`
    `policeman` | :policewoman: | `policewoman` | +| :detective: | `detective`
    `male_detective` | :female_detective: | `female_detective` | +| :guardsman: | `guardsman` | :guardswoman: | `guardswoman` | +| :construction_worker: | `construction_worker`
    `construction_worker_man` | :construction_worker_woman: | `construction_worker_woman` | +| :prince: | `prince` | :princess: | `princess` | +| :man_with_turban: | `man_with_turban` | :woman_with_turban: | `woman_with_turban` | +| :man_with_gua_pi_mao: | `man_with_gua_pi_mao` | :man_in_tuxedo: | `man_in_tuxedo` | +| :bride_with_veil: | `bride_with_veil` | :pregnant_woman: | `pregnant_woman` | + +### Person Fantasy + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :angel: | `angel` | :santa: | `santa` | +| :mrs_claus: | `mrs_claus` | | | + +### Person Activity + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :massage: | `massage`
    `massage_woman` | :massage_man: | `massage_man` | +| :haircut: | `haircut`
    `haircut_woman` | :haircut_man: | `haircut_man` | +| :walking: | `walking`
    `walking_man` | :walking_woman: | `walking_woman` | +| :runner: | `runner`
    `running`
    `running_man` | :running_woman: | `running_woman` | +| :dancer: | `dancer` | :man_dancing: | `man_dancing` | +| :business_suit_levitating: | `business_suit_levitating` | :dancers: | `dancers`
    `dancing_women` | +| :dancing_men: | `dancing_men` | | | + +### Person Sport + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :person_fencing: | `person_fencing` | :horse_racing: | `horse_racing` | +| :skier: | `skier` | :snowboarder: | `snowboarder` | +| :golfing_man: | `golfing_man` | :golfing_woman: | `golfing_woman` | +| :surfer: | `surfer`
    `surfing_man` | :surfing_woman: | `surfing_woman` | +| :rowboat: | `rowboat`
    `rowing_man` | :rowing_woman: | `rowing_woman` | +| :swimmer: | `swimmer`
    `swimming_man` | :swimming_woman: | `swimming_woman` | +| :basketball_man: | `basketball_man` | :basketball_woman: | `basketball_woman` | +| :weight_lifting_man: | `weight_lifting_man` | :weight_lifting_woman: | `weight_lifting_woman` | +| :bicyclist: | `bicyclist`
    `biking_man` | :biking_woman: | `biking_woman` | +| :mountain_bicyclist: | `mountain_bicyclist`
    `mountain_biking_man` | :mountain_biking_woman: | `mountain_biking_woman` | +| :man_cartwheeling: | `man_cartwheeling` | :woman_cartwheeling: | `woman_cartwheeling` | +| :men_wrestling: | `men_wrestling` | :women_wrestling: | `women_wrestling` | +| :man_playing_water_polo: | `man_playing_water_polo` | :woman_playing_water_polo: | `woman_playing_water_polo` | +| :man_playing_handball: | `man_playing_handball` | :woman_playing_handball: | `woman_playing_handball` | +| :man_juggling: | `man_juggling` | :woman_juggling: | `woman_juggling` | + +### Person Resting + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bath: | `bath` | :sleeping_bed: | `sleeping_bed` | + +### Family + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :two_women_holding_hands: | `two_women_holding_hands` | :couple: | `couple` | +| :two_men_holding_hands: | `two_men_holding_hands` | :couplekiss_man_woman: | `couplekiss_man_woman` | +| :couplekiss_man_man: | `couplekiss_man_man` | :couplekiss_woman_woman: | `couplekiss_woman_woman` | +| :couple_with_heart: | `couple_with_heart`
    `couple_with_heart_woman_man` | :couple_with_heart_man_man: | `couple_with_heart_man_man` | +| :couple_with_heart_woman_woman: | `couple_with_heart_woman_woman` | :family: | `family`
    `family_man_woman_boy` | +| :family_man_woman_girl: | `family_man_woman_girl` | :family_man_woman_girl_boy: | `family_man_woman_girl_boy` | +| :family_man_woman_boy_boy: | `family_man_woman_boy_boy` | :family_man_woman_girl_girl: | `family_man_woman_girl_girl` | +| :family_man_man_boy: | `family_man_man_boy` | :family_man_man_girl: | `family_man_man_girl` | +| :family_man_man_girl_boy: | `family_man_man_girl_boy` | :family_man_man_boy_boy: | `family_man_man_boy_boy` | +| :family_man_man_girl_girl: | `family_man_man_girl_girl` | :family_woman_woman_boy: | `family_woman_woman_boy` | +| :family_woman_woman_girl: | `family_woman_woman_girl` | :family_woman_woman_girl_boy: | `family_woman_woman_girl_boy` | +| :family_woman_woman_boy_boy: | `family_woman_woman_boy_boy` | :family_woman_woman_girl_girl: | `family_woman_woman_girl_girl` | +| :family_man_boy: | `family_man_boy` | :family_man_boy_boy: | `family_man_boy_boy` | +| :family_man_girl: | `family_man_girl` | :family_man_girl_boy: | `family_man_girl_boy` | +| :family_man_girl_girl: | `family_man_girl_girl` | :family_woman_boy: | `family_woman_boy` | +| :family_woman_boy_boy: | `family_woman_boy_boy` | :family_woman_girl: | `family_woman_girl` | +| :family_woman_girl_boy: | `family_woman_girl_boy` | :family_woman_girl_girl: | `family_woman_girl_girl` | + +### Person Symbol + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :speaking_head: | `speaking_head` | :bust_in_silhouette: | `bust_in_silhouette` | +| :busts_in_silhouette: | `busts_in_silhouette` | :footprints: | `footprints` | + +## Animals & Nature + +### Animal Mammal + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :monkey_face: | `monkey_face` | :monkey: | `monkey` | +| :gorilla: | `gorilla` | :dog: | `dog` | +| :dog2: | `dog2` | :poodle: | `poodle` | +| :wolf: | `wolf` | :fox_face: | `fox_face` | +| :cat: | `cat` | :cat2: | `cat2` | +| :lion: | `lion` | :tiger: | `tiger` | +| :tiger2: | `tiger2` | :leopard: | `leopard` | +| :horse: | `horse` | :racehorse: | `racehorse` | +| :unicorn: | `unicorn` | :deer: | `deer` | +| :cow: | `cow` | :ox: | `ox` | +| :water_buffalo: | `water_buffalo` | :cow2: | `cow2` | +| :pig: | `pig` | :pig2: | `pig2` | +| :boar: | `boar` | :pig_nose: | `pig_nose` | +| :ram: | `ram` | :sheep: | `sheep` | +| :goat: | `goat` | :dromedary_camel: | `dromedary_camel` | +| :camel: | `camel` | :elephant: | `elephant` | +| :rhinoceros: | `rhinoceros` | :mouse: | `mouse` | +| :mouse2: | `mouse2` | :rat: | `rat` | +| :hamster: | `hamster` | :rabbit: | `rabbit` | +| :rabbit2: | `rabbit2` | :chipmunk: | `chipmunk` | +| :bat: | `bat` | :bear: | `bear` | +| :koala: | `koala` | :panda_face: | `panda_face` | +| :feet: | `feet`
    `paw_prints` | | | + +### Animal Bird + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :turkey: | `turkey` | :chicken: | `chicken` | +| :rooster: | `rooster` | :hatching_chick: | `hatching_chick` | +| :baby_chick: | `baby_chick` | :hatched_chick: | `hatched_chick` | +| :bird: | `bird` | :penguin: | `penguin` | +| :dove: | `dove` | :eagle: | `eagle` | +| :duck: | `duck` | :owl: | `owl` | + +### Animal Amphibian + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :frog: | `frog` | + +### Animal Reptile + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :crocodile: | `crocodile` | :turtle: | `turtle` | +| :lizard: | `lizard` | :snake: | `snake` | +| :dragon_face: | `dragon_face` | :dragon: | `dragon` | + +### Animal Marine + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :whale: | `whale` | :whale2: | `whale2` | +| :dolphin: | `dolphin`
    `flipper` | :fish: | `fish` | +| :tropical_fish: | `tropical_fish` | :blowfish: | `blowfish` | +| :shark: | `shark` | :octopus: | `octopus` | +| :shell: | `shell` | | | + +### Animal Bug + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :snail: | `snail` | :butterfly: | `butterfly` | +| :bug: | `bug` | :ant: | `ant` | +| :bee: | `bee`
    `honeybee` | :beetle: | `beetle` | +| :spider: | `spider` | :spider_web: | `spider_web` | +| :scorpion: | `scorpion` | | | + +### Plant Flower + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bouquet: | `bouquet` | :cherry_blossom: | `cherry_blossom` | +| :white_flower: | `white_flower` | :rosette: | `rosette` | +| :rose: | `rose` | :wilted_flower: | `wilted_flower` | +| :hibiscus: | `hibiscus` | :sunflower: | `sunflower` | +| :blossom: | `blossom` | :tulip: | `tulip` | + +### Plant Other + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :seedling: | `seedling` | :evergreen_tree: | `evergreen_tree` | +| :deciduous_tree: | `deciduous_tree` | :palm_tree: | `palm_tree` | +| :cactus: | `cactus` | :ear_of_rice: | `ear_of_rice` | +| :herb: | `herb` | :shamrock: | `shamrock` | +| :four_leaf_clover: | `four_leaf_clover` | :maple_leaf: | `maple_leaf` | +| :fallen_leaf: | `fallen_leaf` | :leaves: | `leaves` | + +## Food & Drink + +### Food Fruit + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :grapes: | `grapes` | :melon: | `melon` | +| :watermelon: | `watermelon` | :mandarin: | `mandarin`
    `orange`
    `tangerine` | +| :lemon: | `lemon` | :banana: | `banana` | +| :pineapple: | `pineapple` | :apple: | `apple` | +| :green_apple: | `green_apple` | :pear: | `pear` | +| :peach: | `peach` | :cherries: | `cherries` | +| :strawberry: | `strawberry` | :kiwi_fruit: | `kiwi_fruit` | +| :tomato: | `tomato` | | | + +### Food Vegetable + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :avocado: | `avocado` | :eggplant: | `eggplant` | +| :potato: | `potato` | :carrot: | `carrot` | +| :corn: | `corn` | :hot_pepper: | `hot_pepper` | +| :cucumber: | `cucumber` | :mushroom: | `mushroom` | +| :peanuts: | `peanuts` | :chestnut: | `chestnut` | + +### Food Prepared + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bread: | `bread` | :croissant: | `croissant` | +| :baguette_bread: | `baguette_bread` | :pancakes: | `pancakes` | +| :cheese: | `cheese` | :meat_on_bone: | `meat_on_bone` | +| :poultry_leg: | `poultry_leg` | :bacon: | `bacon` | +| :hamburger: | `hamburger` | :fries: | `fries` | +| :pizza: | `pizza` | :hotdog: | `hotdog` | +| :taco: | `taco` | :burrito: | `burrito` | +| :stuffed_flatbread: | `stuffed_flatbread` | :egg: | `egg` | +| :fried_egg: | `fried_egg` | :shallow_pan_of_food: | `shallow_pan_of_food` | +| :stew: | `stew` | :green_salad: | `green_salad` | +| :popcorn: | `popcorn` | | | + +### Food Asian + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bento: | `bento` | :rice_cracker: | `rice_cracker` | +| :rice_ball: | `rice_ball` | :rice: | `rice` | +| :curry: | `curry` | :ramen: | `ramen` | +| :spaghetti: | `spaghetti` | :sweet_potato: | `sweet_potato` | +| :oden: | `oden` | :sushi: | `sushi` | +| :fried_shrimp: | `fried_shrimp` | :fish_cake: | `fish_cake` | +| :dango: | `dango` | | | + +### Food Marine + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :crab: | `crab` | :shrimp: | `shrimp` | +| :squid: | `squid` | | | + +### Food Sweet + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :icecream: | `icecream` | :shaved_ice: | `shaved_ice` | +| :ice_cream: | `ice_cream` | :doughnut: | `doughnut` | +| :cookie: | `cookie` | :birthday: | `birthday` | +| :cake: | `cake` | :chocolate_bar: | `chocolate_bar` | +| :candy: | `candy` | :lollipop: | `lollipop` | +| :custard: | `custard` | :honey_pot: | `honey_pot` | + +### Drink + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :baby_bottle: | `baby_bottle` | :milk_glass: | `milk_glass` | +| :coffee: | `coffee` | :tea: | `tea` | +| :sake: | `sake` | :champagne: | `champagne` | +| :wine_glass: | `wine_glass` | :cocktail: | `cocktail` | +| :tropical_drink: | `tropical_drink` | :beer: | `beer` | +| :beers: | `beers` | :clinking_glasses: | `clinking_glasses` | +| :tumbler_glass: | `tumbler_glass` | | | + +### Dishware + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :plate_with_cutlery: | `plate_with_cutlery` | :fork_and_knife: | `fork_and_knife` | +| :spoon: | `spoon` | :hocho: | `hocho`
    `knife` | +| :amphora: | `amphora` | | | + +## Travel & Places + +### Place Map + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :earth_africa: | `earth_africa` | :earth_americas: | `earth_americas` | +| :earth_asia: | `earth_asia` | :globe_with_meridians: | `globe_with_meridians` | +| :world_map: | `world_map` | :japan: | `japan` | + +### Place Geographic + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :mountain_snow: | `mountain_snow` | :mountain: | `mountain` | +| :volcano: | `volcano` | :mount_fuji: | `mount_fuji` | +| :camping: | `camping` | :beach_umbrella: | `beach_umbrella` | +| :desert: | `desert` | :desert_island: | `desert_island` | +| :national_park: | `national_park` | | | + +### Place Building + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :stadium: | `stadium` | :classical_building: | `classical_building` | +| :building_construction: | `building_construction` | :houses: | `houses` | +| :derelict_house: | `derelict_house` | :house: | `house` | +| :house_with_garden: | `house_with_garden` | :office: | `office` | +| :post_office: | `post_office` | :european_post_office: | `european_post_office` | +| :hospital: | `hospital` | :bank: | `bank` | +| :hotel: | `hotel` | :love_hotel: | `love_hotel` | +| :convenience_store: | `convenience_store` | :school: | `school` | +| :department_store: | `department_store` | :factory: | `factory` | +| :japanese_castle: | `japanese_castle` | :european_castle: | `european_castle` | +| :wedding: | `wedding` | :tokyo_tower: | `tokyo_tower` | +| :statue_of_liberty: | `statue_of_liberty` | | | + +### Place Religious + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :church: | `church` | :mosque: | `mosque` | +| :synagogue: | `synagogue` | :shinto_shrine: | `shinto_shrine` | +| :kaaba: | `kaaba` | | | + +### Place Other + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :fountain: | `fountain` | :tent: | `tent` | +| :foggy: | `foggy` | :night_with_stars: | `night_with_stars` | +| :cityscape: | `cityscape` | :sunrise_over_mountains: | `sunrise_over_mountains` | +| :sunrise: | `sunrise` | :city_sunset: | `city_sunset` | +| :city_sunrise: | `city_sunrise` | :bridge_at_night: | `bridge_at_night` | +| :hotsprings: | `hotsprings` | :carousel_horse: | `carousel_horse` | +| :ferris_wheel: | `ferris_wheel` | :roller_coaster: | `roller_coaster` | +| :barber: | `barber` | :circus_tent: | `circus_tent` | + +### Transport Ground + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :steam_locomotive: | `steam_locomotive` | :railway_car: | `railway_car` | +| :bullettrain_side: | `bullettrain_side` | :bullettrain_front: | `bullettrain_front` | +| :train2: | `train2` | :metro: | `metro` | +| :light_rail: | `light_rail` | :station: | `station` | +| :tram: | `tram` | :monorail: | `monorail` | +| :mountain_railway: | `mountain_railway` | :train: | `train` | +| :bus: | `bus` | :oncoming_bus: | `oncoming_bus` | +| :trolleybus: | `trolleybus` | :minibus: | `minibus` | +| :ambulance: | `ambulance` | :fire_engine: | `fire_engine` | +| :police_car: | `police_car` | :oncoming_police_car: | `oncoming_police_car` | +| :taxi: | `taxi` | :oncoming_taxi: | `oncoming_taxi` | +| :car: | `car`
    `red_car` | :oncoming_automobile: | `oncoming_automobile` | +| :blue_car: | `blue_car` | :truck: | `truck` | +| :articulated_lorry: | `articulated_lorry` | :tractor: | `tractor` | +| :racing_car: | `racing_car` | :motorcycle: | `motorcycle` | +| :motor_scooter: | `motor_scooter` | :bike: | `bike` | +| :kick_scooter: | `kick_scooter` | :busstop: | `busstop` | +| :motorway: | `motorway` | :railway_track: | `railway_track` | +| :oil_drum: | `oil_drum` | :fuelpump: | `fuelpump` | +| :rotating_light: | `rotating_light` | :traffic_light: | `traffic_light` | +| :vertical_traffic_light: | `vertical_traffic_light` | :stop_sign: | `stop_sign` | +| :construction: | `construction` | | | + +### Transport Water + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :anchor: | `anchor` | :boat: | `boat`
    `sailboat` | +| :canoe: | `canoe` | :speedboat: | `speedboat` | +| :passenger_ship: | `passenger_ship` | :ferry: | `ferry` | +| :motor_boat: | `motor_boat` | :ship: | `ship` | + +### Transport Air + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :airplane: | `airplane` | :small_airplane: | `small_airplane` | +| :flight_departure: | `flight_departure` | :flight_arrival: | `flight_arrival` | +| :seat: | `seat` | :helicopter: | `helicopter` | +| :suspension_railway: | `suspension_railway` | :mountain_cableway: | `mountain_cableway` | +| :aerial_tramway: | `aerial_tramway` | :artificial_satellite: | `artificial_satellite` | +| :rocket: | `rocket` | | | + +### Hotel + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bellhop_bell: | `bellhop_bell` | + +### Time + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hourglass: | `hourglass` | :hourglass_flowing_sand: | `hourglass_flowing_sand` | +| :watch: | `watch` | :alarm_clock: | `alarm_clock` | +| :stopwatch: | `stopwatch` | :timer_clock: | `timer_clock` | +| :mantelpiece_clock: | `mantelpiece_clock` | :clock12: | `clock12` | +| :clock1230: | `clock1230` | :clock1: | `clock1` | +| :clock130: | `clock130` | :clock2: | `clock2` | +| :clock230: | `clock230` | :clock3: | `clock3` | +| :clock330: | `clock330` | :clock4: | `clock4` | +| :clock430: | `clock430` | :clock5: | `clock5` | +| :clock530: | `clock530` | :clock6: | `clock6` | +| :clock630: | `clock630` | :clock7: | `clock7` | +| :clock730: | `clock730` | :clock8: | `clock8` | +| :clock830: | `clock830` | :clock9: | `clock9` | +| :clock930: | `clock930` | :clock10: | `clock10` | +| :clock1030: | `clock1030` | :clock11: | `clock11` | +| :clock1130: | `clock1130` | | | + +### Sky & Weather + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :new_moon: | `new_moon` | :waxing_crescent_moon: | `waxing_crescent_moon` | +| :first_quarter_moon: | `first_quarter_moon` | :moon: | `moon`
    `waxing_gibbous_moon` | +| :full_moon: | `full_moon` | :waning_gibbous_moon: | `waning_gibbous_moon` | +| :last_quarter_moon: | `last_quarter_moon` | :waning_crescent_moon: | `waning_crescent_moon` | +| :crescent_moon: | `crescent_moon` | :new_moon_with_face: | `new_moon_with_face` | +| :first_quarter_moon_with_face: | `first_quarter_moon_with_face` | :last_quarter_moon_with_face: | `last_quarter_moon_with_face` | +| :thermometer: | `thermometer` | :sunny: | `sunny` | +| :full_moon_with_face: | `full_moon_with_face` | :sun_with_face: | `sun_with_face` | +| :star: | `star` | :star2: | `star2` | +| :stars: | `stars` | :milky_way: | `milky_way` | +| :cloud: | `cloud` | :partly_sunny: | `partly_sunny` | +| :cloud_with_lightning_and_rain: | `cloud_with_lightning_and_rain` | :sun_behind_small_cloud: | `sun_behind_small_cloud` | +| :sun_behind_large_cloud: | `sun_behind_large_cloud` | :sun_behind_rain_cloud: | `sun_behind_rain_cloud` | +| :cloud_with_rain: | `cloud_with_rain` | :cloud_with_snow: | `cloud_with_snow` | +| :cloud_with_lightning: | `cloud_with_lightning` | :tornado: | `tornado` | +| :fog: | `fog` | :wind_face: | `wind_face` | +| :cyclone: | `cyclone` | :rainbow: | `rainbow` | +| :closed_umbrella: | `closed_umbrella` | :open_umbrella: | `open_umbrella` | +| :umbrella: | `umbrella` | :parasol_on_ground: | `parasol_on_ground` | +| :zap: | `zap` | :snowflake: | `snowflake` | +| :snowman_with_snow: | `snowman_with_snow` | :snowman: | `snowman` | +| :comet: | `comet` | :fire: | `fire` | +| :droplet: | `droplet` | :ocean: | `ocean` | + +## Activities + +### Event + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :jack_o_lantern: | `jack_o_lantern` | :christmas_tree: | `christmas_tree` | +| :fireworks: | `fireworks` | :sparkler: | `sparkler` | +| :sparkles: | `sparkles` | :balloon: | `balloon` | +| :tada: | `tada` | :confetti_ball: | `confetti_ball` | +| :tanabata_tree: | `tanabata_tree` | :bamboo: | `bamboo` | +| :dolls: | `dolls` | :flags: | `flags` | +| :wind_chime: | `wind_chime` | :rice_scene: | `rice_scene` | +| :ribbon: | `ribbon` | :gift: | `gift` | +| :reminder_ribbon: | `reminder_ribbon` | :tickets: | `tickets` | +| :ticket: | `ticket` | | | + +### Award Medal + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :medal_military: | `medal_military` | :trophy: | `trophy` | +| :medal_sports: | `medal_sports` | :1st_place_medal: | `1st_place_medal` | +| :2nd_place_medal: | `2nd_place_medal` | :3rd_place_medal: | `3rd_place_medal` | + +### Sport + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :soccer: | `soccer` | :baseball: | `baseball` | +| :basketball: | `basketball` | :volleyball: | `volleyball` | +| :football: | `football` | :rugby_football: | `rugby_football` | +| :tennis: | `tennis` | :bowling: | `bowling` | +| :cricket: | `cricket` | :field_hockey: | `field_hockey` | +| :ice_hockey: | `ice_hockey` | :ping_pong: | `ping_pong` | +| :badminton: | `badminton` | :boxing_glove: | `boxing_glove` | +| :martial_arts_uniform: | `martial_arts_uniform` | :goal_net: | `goal_net` | +| :golf: | `golf` | :ice_skate: | `ice_skate` | +| :fishing_pole_and_fish: | `fishing_pole_and_fish` | :running_shirt_with_sash: | `running_shirt_with_sash` | +| :ski: | `ski` | | | + +### Game + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :dart: | `dart` | :8ball: | `8ball` | +| :crystal_ball: | `crystal_ball` | :video_game: | `video_game` | +| :joystick: | `joystick` | :slot_machine: | `slot_machine` | +| :game_die: | `game_die` | :spades: | `spades` | +| :hearts: | `hearts` | :diamonds: | `diamonds` | +| :clubs: | `clubs` | :black_joker: | `black_joker` | +| :mahjong: | `mahjong` | :flower_playing_cards: | `flower_playing_cards` | + +### Arts & Crafts + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :performing_arts: | `performing_arts` | :framed_picture: | `framed_picture` | +| :art: | `art` | | | + +## Objects + +### Clothing + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :eyeglasses: | `eyeglasses` | :dark_sunglasses: | `dark_sunglasses` | +| :necktie: | `necktie` | :shirt: | `shirt`
    `tshirt` | +| :jeans: | `jeans` | :dress: | `dress` | +| :kimono: | `kimono` | :bikini: | `bikini` | +| :womans_clothes: | `womans_clothes` | :purse: | `purse` | +| :handbag: | `handbag` | :pouch: | `pouch` | +| :shopping: | `shopping` | :school_satchel: | `school_satchel` | +| :mans_shoe: | `mans_shoe`
    `shoe` | :athletic_shoe: | `athletic_shoe` | +| :high_heel: | `high_heel` | :sandal: | `sandal` | +| :boot: | `boot` | :crown: | `crown` | +| :womans_hat: | `womans_hat` | :tophat: | `tophat` | +| :mortar_board: | `mortar_board` | :rescue_worker_helmet: | `rescue_worker_helmet` | +| :prayer_beads: | `prayer_beads` | :lipstick: | `lipstick` | +| :ring: | `ring` | :gem: | `gem` | + +### Sound + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :mute: | `mute` | :speaker: | `speaker` | +| :sound: | `sound` | :loud_sound: | `loud_sound` | +| :loudspeaker: | `loudspeaker` | :mega: | `mega` | +| :postal_horn: | `postal_horn` | :bell: | `bell` | +| :no_bell: | `no_bell` | | | + +### Music + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :musical_score: | `musical_score` | :musical_note: | `musical_note` | +| :notes: | `notes` | :studio_microphone: | `studio_microphone` | +| :level_slider: | `level_slider` | :control_knobs: | `control_knobs` | +| :microphone: | `microphone` | :headphones: | `headphones` | +| :radio: | `radio` | | | + +### Musical Instrument + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :saxophone: | `saxophone` | :guitar: | `guitar` | +| :musical_keyboard: | `musical_keyboard` | :trumpet: | `trumpet` | +| :violin: | `violin` | :drum: | `drum` | + +### Phone + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :iphone: | `iphone` | :calling: | `calling` | +| :phone: | `phone`
    `telephone` | :telephone_receiver: | `telephone_receiver` | +| :pager: | `pager` | :fax: | `fax` | + +### Computer + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :battery: | `battery` | :electric_plug: | `electric_plug` | +| :computer: | `computer` | :desktop_computer: | `desktop_computer` | +| :printer: | `printer` | :keyboard: | `keyboard` | +| :computer_mouse: | `computer_mouse` | :trackball: | `trackball` | +| :minidisc: | `minidisc` | :floppy_disk: | `floppy_disk` | +| :cd: | `cd` | :dvd: | `dvd` | + +### Light & Video + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :movie_camera: | `movie_camera` | :film_strip: | `film_strip` | +| :film_projector: | `film_projector` | :clapper: | `clapper` | +| :tv: | `tv` | :camera: | `camera` | +| :camera_flash: | `camera_flash` | :video_camera: | `video_camera` | +| :vhs: | `vhs` | :mag: | `mag` | +| :mag_right: | `mag_right` | :candle: | `candle` | +| :bulb: | `bulb` | :flashlight: | `flashlight` | +| :izakaya_lantern: | `izakaya_lantern`
    `lantern` | | | + +### Book Paper + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :notebook_with_decorative_cover: | `notebook_with_decorative_cover` | :closed_book: | `closed_book` | +| :book: | `book`
    `open_book` | :green_book: | `green_book` | +| :blue_book: | `blue_book` | :orange_book: | `orange_book` | +| :books: | `books` | :notebook: | `notebook` | +| :ledger: | `ledger` | :page_with_curl: | `page_with_curl` | +| :scroll: | `scroll` | :page_facing_up: | `page_facing_up` | +| :newspaper: | `newspaper` | :newspaper_roll: | `newspaper_roll` | +| :bookmark_tabs: | `bookmark_tabs` | :bookmark: | `bookmark` | +| :label: | `label` | | | + +### Money + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :moneybag: | `moneybag` | :yen: | `yen` | +| :dollar: | `dollar` | :euro: | `euro` | +| :pound: | `pound` | :money_with_wings: | `money_with_wings` | +| :credit_card: | `credit_card` | :chart: | `chart` | + +### Mail + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :email: | `email`
    `envelope` | :e-mail: | `:e-mail:` | +| :incoming_envelope: | `incoming_envelope` | :envelope_with_arrow: | `envelope_with_arrow` | +| :outbox_tray: | `outbox_tray` | :inbox_tray: | `inbox_tray` | +| :package: | `package` | :mailbox: | `mailbox` | +| :mailbox_closed: | `mailbox_closed` | :mailbox_with_mail: | `mailbox_with_mail` | +| :mailbox_with_no_mail: | `mailbox_with_no_mail` | :postbox: | `postbox` | +| :ballot_box: | `ballot_box` | | | + +### Writing + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :pencil2: | `pencil2` | :black_nib: | `black_nib` | +| :fountain_pen: | `fountain_pen` | :pen: | `pen` | +| :paintbrush: | `paintbrush` | :crayon: | `crayon` | +| :memo: | `memo`
    `pencil` | | | + +### Office + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :briefcase: | `briefcase` | :file_folder: | `file_folder` | +| :open_file_folder: | `open_file_folder` | :card_index_dividers: | `card_index_dividers` | +| :date: | `date` | :calendar: | `calendar` | +| :spiral_notepad: | `spiral_notepad` | :spiral_calendar: | `spiral_calendar` | +| :card_index: | `card_index` | :chart_with_upwards_trend: | `chart_with_upwards_trend` | +| :chart_with_downwards_trend: | `chart_with_downwards_trend` | :bar_chart: | `bar_chart` | +| :clipboard: | `clipboard` | :pushpin: | `pushpin` | +| :round_pushpin: | `round_pushpin` | :paperclip: | `paperclip` | +| :paperclips: | `paperclips` | :straight_ruler: | `straight_ruler` | +| :triangular_ruler: | `triangular_ruler` | :scissors: | `scissors` | +| :card_file_box: | `card_file_box` | :file_cabinet: | `file_cabinet` | +| :wastebasket: | `wastebasket` | | | + +### Lock + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :lock: | `lock` | :unlock: | `unlock` | +| :lock_with_ink_pen: | `lock_with_ink_pen` | :closed_lock_with_key: | `closed_lock_with_key` | +| :key: | `key` | :old_key: | `old_key` | + +### Tool + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hammer: | `hammer` | :pick: | `pick` | +| :hammer_and_pick: | `hammer_and_pick` | :hammer_and_wrench: | `hammer_and_wrench` | +| :dagger: | `dagger` | :crossed_swords: | `crossed_swords` | +| :gun: | `gun` | :bow_and_arrow: | `bow_and_arrow` | +| :shield: | `shield` | :wrench: | `wrench` | +| :nut_and_bolt: | `nut_and_bolt` | :gear: | `gear` | +| :clamp: | `clamp` | :balance_scale: | `balance_scale` | +| :link: | `link` | :chains: | `chains` | + +### Science + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :alembic: | `alembic` | :microscope: | `microscope` | +| :telescope: | `telescope` | :satellite: | `satellite` | + +### Medical + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :syringe: | `syringe` | :pill: | `pill` | + +### Household + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :door: | `door` | :bed: | `bed` | +| :couch_and_lamp: | `couch_and_lamp` | :toilet: | `toilet` | +| :shower: | `shower` | :bathtub: | `bathtub` | +| :shopping_cart: | `shopping_cart` | | | + +### Other Object + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :smoking: | `smoking` | :coffin: | `coffin` | +| :funeral_urn: | `funeral_urn` | :moyai: | `moyai` | + +## Symbols + +### Transport Sign + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :atm: | `atm` | :put_litter_in_its_place: | `put_litter_in_its_place` | +| :potable_water: | `potable_water` | :wheelchair: | `wheelchair` | +| :mens: | `mens` | :womens: | `womens` | +| :restroom: | `restroom` | :baby_symbol: | `baby_symbol` | +| :wc: | `wc` | :passport_control: | `passport_control` | +| :customs: | `customs` | :baggage_claim: | `baggage_claim` | +| :left_luggage: | `left_luggage` | | | + +### Warning + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :warning: | `warning` | :children_crossing: | `children_crossing` | +| :no_entry: | `no_entry` | :no_entry_sign: | `no_entry_sign` | +| :no_bicycles: | `no_bicycles` | :no_smoking: | `no_smoking` | +| :do_not_litter: | `do_not_litter` | :non-potable_water: | `:non-potable_water:` | +| :no_pedestrians: | `no_pedestrians` | :no_mobile_phones: | `no_mobile_phones` | +| :underage: | `underage` | :radioactive: | `radioactive` | +| :biohazard: | `biohazard` | | | + +### Arrow + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :arrow_up: | `arrow_up` | :arrow_upper_right: | `arrow_upper_right` | +| :arrow_right: | `arrow_right` | :arrow_lower_right: | `arrow_lower_right` | +| :arrow_down: | `arrow_down` | :arrow_lower_left: | `arrow_lower_left` | +| :arrow_left: | `arrow_left` | :arrow_upper_left: | `arrow_upper_left` | +| :arrow_up_down: | `arrow_up_down` | :left_right_arrow: | `left_right_arrow` | +| :leftwards_arrow_with_hook: | `leftwards_arrow_with_hook` | :arrow_right_hook: | `arrow_right_hook` | +| :arrow_heading_up: | `arrow_heading_up` | :arrow_heading_down: | `arrow_heading_down` | +| :arrows_clockwise: | `arrows_clockwise` | :arrows_counterclockwise: | `arrows_counterclockwise` | +| :back: | `back` | :end: | `end` | +| :on: | `on` | :soon: | `soon` | +| :top: | `top` | | | + +### Religion + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :place_of_worship: | `place_of_worship` | :atom_symbol: | `atom_symbol` | +| :om: | `om` | :star_of_david: | `star_of_david` | +| :wheel_of_dharma: | `wheel_of_dharma` | :yin_yang: | `yin_yang` | +| :latin_cross: | `latin_cross` | :orthodox_cross: | `orthodox_cross` | +| :star_and_crescent: | `star_and_crescent` | :peace_symbol: | `peace_symbol` | +| :menorah: | `menorah` | :six_pointed_star: | `six_pointed_star` | + +### Zodiac + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :aries: | `aries` | :taurus: | `taurus` | +| :gemini: | `gemini` | :cancer: | `cancer` | +| :leo: | `leo` | :virgo: | `virgo` | +| :libra: | `libra` | :scorpius: | `scorpius` | +| :sagittarius: | `sagittarius` | :capricorn: | `capricorn` | +| :aquarius: | `aquarius` | :pisces: | `pisces` | +| :ophiuchus: | `ophiuchus` | | | + +### Av Symbol + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :twisted_rightwards_arrows: | `twisted_rightwards_arrows` | :repeat: | `repeat` | +| :repeat_one: | `repeat_one` | :arrow_forward: | `arrow_forward` | +| :fast_forward: | `fast_forward` | :next_track_button: | `next_track_button` | +| :play_or_pause_button: | `play_or_pause_button` | :arrow_backward: | `arrow_backward` | +| :rewind: | `rewind` | :previous_track_button: | `previous_track_button` | +| :arrow_up_small: | `arrow_up_small` | :arrow_double_up: | `arrow_double_up` | +| :arrow_down_small: | `arrow_down_small` | :arrow_double_down: | `arrow_double_down` | +| :pause_button: | `pause_button` | :stop_button: | `stop_button` | +| :record_button: | `record_button` | :cinema: | `cinema` | +| :low_brightness: | `low_brightness` | :high_brightness: | `high_brightness` | +| :signal_strength: | `signal_strength` | :vibration_mode: | `vibration_mode` | +| :mobile_phone_off: | `mobile_phone_off` | | | + +### Math + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :heavy_multiplication_x: | `heavy_multiplication_x` | :heavy_plus_sign: | `heavy_plus_sign` | +| :heavy_minus_sign: | `heavy_minus_sign` | :heavy_division_sign: | `heavy_division_sign` | + +### Punctuation + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bangbang: | `bangbang` | :interrobang: | `interrobang` | +| :question: | `question` | :grey_question: | `grey_question` | +| :grey_exclamation: | `grey_exclamation` | :exclamation: | `exclamation`
    `heavy_exclamation_mark` | +| :wavy_dash: | `wavy_dash` | | | + +### Currency + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :currency_exchange: | `currency_exchange` | :heavy_dollar_sign: | `heavy_dollar_sign` | + +### Keycap + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :hash: | `hash` | :asterisk: | `asterisk` | +| :zero: | `zero` | :one: | `one` | +| :two: | `two` | :three: | `three` | +| :four: | `four` | :five: | `five` | +| :six: | `six` | :seven: | `seven` | +| :eight: | `eight` | :nine: | `nine` | +| :keycap_ten: | `keycap_ten` | | | + +### Alphabet + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :capital_abcd: | `capital_abcd` | :abcd: | `abcd` | +| :1234: | `1234` | :symbols: | `symbols` | +| :abc: | `abc` | :a: | `a` | +| :ab: | `ab` | :b: | `b` | +| :cl: | `cl` | :cool: | `cool` | +| :free: | `free` | :information_source: | `information_source` | +| :id: | `id` | :m: | `m` | +| :new: | `new` | :ng: | `ng` | +| :o2: | `o2` | :ok: | `ok` | +| :parking: | `parking` | :sos: | `sos` | +| :up: | `up` | :vs: | `vs` | +| :koko: | `koko` | :sa: | `sa` | +| :u6708: | `u6708` | :u6709: | `u6709` | +| :u6307: | `u6307` | :ideograph_advantage: | `ideograph_advantage` | +| :u5272: | `u5272` | :u7121: | `u7121` | +| :u7981: | `u7981` | :accept: | `accept` | +| :u7533: | `u7533` | :u5408: | `u5408` | +| :u7a7a: | `u7a7a` | :congratulations: | `congratulations` | +| :secret: | `secret` | :u55b6: | `u55b6` | +| :u6e80: | `u6e80` | | | + +### Geometric + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :red_circle: | `red_circle` | :large_blue_circle: | `large_blue_circle` | +| :black_circle: | `black_circle` | :white_circle: | `white_circle` | +| :black_large_square: | `black_large_square` | :white_large_square: | `white_large_square` | +| :black_medium_square: | `black_medium_square` | :white_medium_square: | `white_medium_square` | +| :black_medium_small_square: | `black_medium_small_square` | :white_medium_small_square: | `white_medium_small_square` | +| :black_small_square: | `black_small_square` | :white_small_square: | `white_small_square` | +| :large_orange_diamond: | `large_orange_diamond` | :large_blue_diamond: | `large_blue_diamond` | +| :small_orange_diamond: | `small_orange_diamond` | :small_blue_diamond: | `small_blue_diamond` | +| :small_red_triangle: | `small_red_triangle` | :small_red_triangle_down: | `small_red_triangle_down` | +| :diamond_shape_with_a_dot_inside: | `diamond_shape_with_a_dot_inside` | :radio_button: | `radio_button` | +| :white_square_button: | `white_square_button` | :black_square_button: | `black_square_button` | + +### Other Symbol + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :recycle: | `recycle` | :fleur_de_lis: | `fleur_de_lis` | +| :trident: | `trident` | :name_badge: | `name_badge` | +| :beginner: | `beginner` | :o: | `o` | +| :white_check_mark: | `white_check_mark` | :ballot_box_with_check: | `ballot_box_with_check` | +| :heavy_check_mark: | `heavy_check_mark` | :x: | `x` | +| :negative_squared_cross_mark: | `negative_squared_cross_mark` | :curly_loop: | `curly_loop` | +| :loop: | `loop` | :part_alternation_mark: | `part_alternation_mark` | +| :eight_spoked_asterisk: | `eight_spoked_asterisk` | :eight_pointed_black_star: | `eight_pointed_black_star` | +| :sparkle: | `sparkle` | :copyright: | `copyright` | +| :registered: | `registered` | :tm: | `tm` | + +## Flags + +### Common Flags + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :checkered_flag: | `checkered_flag` | :triangular_flag_on_post: | `triangular_flag_on_post` | +| :crossed_flags: | `crossed_flags` | :black_flag: | `black_flag` | +| :white_flag: | `white_flag` | :rainbow_flag: | `rainbow_flag` | + +### Country and Region Flags + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :andorra: | `andorra` | :united_arab_emirates: | `united_arab_emirates` | +| :afghanistan: | `afghanistan` | :antigua_barbuda: | `antigua_barbuda` | +| :anguilla: | `anguilla` | :albania: | `albania` | +| :armenia: | `armenia` | :angola: | `angola` | +| :antarctica: | `antarctica` | :argentina: | `argentina` | +| :american_samoa: | `american_samoa` | :austria: | `austria` | +| :australia: | `australia` | :aruba: | `aruba` | +| :aland_islands: | `aland_islands` | :azerbaijan: | `azerbaijan` | +| :bosnia_herzegovina: | `bosnia_herzegovina` | :barbados: | `barbados` | +| :bangladesh: | `bangladesh` | :belgium: | `belgium` | +| :burkina_faso: | `burkina_faso` | :bulgaria: | `bulgaria` | +| :bahrain: | `bahrain` | :burundi: | `burundi` | +| :benin: | `benin` | :st_barthelemy: | `st_barthelemy` | +| :bermuda: | `bermuda` | :brunei: | `brunei` | +| :bolivia: | `bolivia` | :caribbean_netherlands: | `caribbean_netherlands` | +| :brazil: | `brazil` | :bahamas: | `bahamas` | +| :bhutan: | `bhutan` | :botswana: | `botswana` | +| :belarus: | `belarus` | :belize: | `belize` | +| :canada: | `canada` | :cocos_islands: | `cocos_islands` | +| :congo_kinshasa: | `congo_kinshasa` | :central_african_republic: | `central_african_republic` | +| :congo_brazzaville: | `congo_brazzaville` | :switzerland: | `switzerland` | +| :cote_divoire: | `cote_divoire` | :cook_islands: | `cook_islands` | +| :chile: | `chile` | :cameroon: | `cameroon` | +| :cn: | `cn` | :colombia: | `colombia` | +| :costa_rica: | `costa_rica` | :cuba: | `cuba` | +| :cape_verde: | `cape_verde` | :curacao: | `curacao` | +| :christmas_island: | `christmas_island` | :cyprus: | `cyprus` | +| :czech_republic: | `czech_republic` | :de: | `de` | +| :djibouti: | `djibouti` | :denmark: | `denmark` | +| :dominica: | `dominica` | :dominican_republic: | `dominican_republic` | +| :algeria: | `algeria` | :ecuador: | `ecuador` | +| :estonia: | `estonia` | :egypt: | `egypt` | +| :western_sahara: | `western_sahara` | :eritrea: | `eritrea` | +| :es: | `es` | :ethiopia: | `ethiopia` | +| :eu: | `eu`
    `european_union` | :finland: | `finland` | +| :fiji: | `fiji` | :falkland_islands: | `falkland_islands` | +| :micronesia: | `micronesia` | :faroe_islands: | `faroe_islands` | +| :fr: | `fr` | :gabon: | `gabon` | +| :gb: | `gb`
    `uk` | :grenada: | `grenada` | +| :georgia: | `georgia` | :french_guiana: | `french_guiana` | +| :guernsey: | `guernsey` | :ghana: | `ghana` | +| :gibraltar: | `gibraltar` | :greenland: | `greenland` | +| :gambia: | `gambia` | :guinea: | `guinea` | +| :guadeloupe: | `guadeloupe` | :equatorial_guinea: | `equatorial_guinea` | +| :greece: | `greece` | :south_georgia_south_sandwich_islands: | `south_georgia_south_sandwich_islands` | +| :guatemala: | `guatemala` | :guam: | `guam` | +| :guinea_bissau: | `guinea_bissau` | :guyana: | `guyana` | +| :hong_kong: | `hong_kong` | :honduras: | `honduras` | +| :croatia: | `croatia` | :haiti: | `haiti` | +| :hungary: | `hungary` | :canary_islands: | `canary_islands` | +| :indonesia: | `indonesia` | :ireland: | `ireland` | +| :israel: | `israel` | :isle_of_man: | `isle_of_man` | +| :india: | `india` | :british_indian_ocean_territory: | `british_indian_ocean_territory` | +| :iraq: | `iraq` | :iran: | `iran` | +| :iceland: | `iceland` | :it: | `it` | +| :jersey: | `jersey` | :jamaica: | `jamaica` | +| :jordan: | `jordan` | :jp: | `jp` | +| :kenya: | `kenya` | :kyrgyzstan: | `kyrgyzstan` | +| :cambodia: | `cambodia` | :kiribati: | `kiribati` | +| :comoros: | `comoros` | :st_kitts_nevis: | `st_kitts_nevis` | +| :north_korea: | `north_korea` | :kr: | `kr` | +| :kuwait: | `kuwait` | :cayman_islands: | `cayman_islands` | +| :kazakhstan: | `kazakhstan` | :laos: | `laos` | +| :lebanon: | `lebanon` | :st_lucia: | `st_lucia` | +| :liechtenstein: | `liechtenstein` | :sri_lanka: | `sri_lanka` | +| :liberia: | `liberia` | :lesotho: | `lesotho` | +| :lithuania: | `lithuania` | :luxembourg: | `luxembourg` | +| :latvia: | `latvia` | :libya: | `libya` | +| :morocco: | `morocco` | :monaco: | `monaco` | +| :moldova: | `moldova` | :montenegro: | `montenegro` | +| :madagascar: | `madagascar` | :marshall_islands: | `marshall_islands` | +| :macedonia: | `macedonia` | :mali: | `mali` | +| :myanmar: | `myanmar` | :mongolia: | `mongolia` | +| :macau: | `macau` | :northern_mariana_islands: | `northern_mariana_islands` | +| :martinique: | `martinique` | :mauritania: | `mauritania` | +| :montserrat: | `montserrat` | :malta: | `malta` | +| :mauritius: | `mauritius` | :maldives: | `maldives` | +| :malawi: | `malawi` | :mexico: | `mexico` | +| :malaysia: | `malaysia` | :mozambique: | `mozambique` | +| :namibia: | `namibia` | :new_caledonia: | `new_caledonia` | +| :niger: | `niger` | :norfolk_island: | `norfolk_island` | +| :nigeria: | `nigeria` | :nicaragua: | `nicaragua` | +| :netherlands: | `netherlands` | :norway: | `norway` | +| :nepal: | `nepal` | :nauru: | `nauru` | +| :niue: | `niue` | :new_zealand: | `new_zealand` | +| :oman: | `oman` | :panama: | `panama` | +| :peru: | `peru` | :french_polynesia: | `french_polynesia` | +| :papua_new_guinea: | `papua_new_guinea` | :philippines: | `philippines` | +| :pakistan: | `pakistan` | :poland: | `poland` | +| :st_pierre_miquelon: | `st_pierre_miquelon` | :pitcairn_islands: | `pitcairn_islands` | +| :puerto_rico: | `puerto_rico` | :palestinian_territories: | `palestinian_territories` | +| :portugal: | `portugal` | :palau: | `palau` | +| :paraguay: | `paraguay` | :qatar: | `qatar` | +| :reunion: | `reunion` | :romania: | `romania` | +| :serbia: | `serbia` | :ru: | `ru` | +| :rwanda: | `rwanda` | :saudi_arabia: | `saudi_arabia` | +| :solomon_islands: | `solomon_islands` | :seychelles: | `seychelles` | +| :sudan: | `sudan` | :sweden: | `sweden` | +| :singapore: | `singapore` | :st_helena: | `st_helena` | +| :slovenia: | `slovenia` | :slovakia: | `slovakia` | +| :sierra_leone: | `sierra_leone` | :san_marino: | `san_marino` | +| :senegal: | `senegal` | :somalia: | `somalia` | +| :suriname: | `suriname` | :south_sudan: | `south_sudan` | +| :sao_tome_principe: | `sao_tome_principe` | :el_salvador: | `el_salvador` | +| :sint_maarten: | `sint_maarten` | :syria: | `syria` | +| :swaziland: | `swaziland` | :turks_caicos_islands: | `turks_caicos_islands` | +| :chad: | `chad` | :french_southern_territories: | `french_southern_territories` | +| :togo: | `togo` | :thailand: | `thailand` | +| :tajikistan: | `tajikistan` | :tokelau: | `tokelau` | +| :timor_leste: | `timor_leste` | :turkmenistan: | `turkmenistan` | +| :tunisia: | `tunisia` | :tonga: | `tonga` | +| :tr: | `tr` | :trinidad_tobago: | `trinidad_tobago` | +| :tuvalu: | `tuvalu` | :taiwan: | `taiwan` | +| :tanzania: | `tanzania` | :ukraine: | `ukraine` | +| :uganda: | `uganda` | :us: | `us` | +| :uruguay: | `uruguay` | :uzbekistan: | `uzbekistan` | +| :vatican_city: | `vatican_city` | :st_vincent_grenadines: | `st_vincent_grenadines` | +| :venezuela: | `venezuela` | :british_virgin_islands: | `british_virgin_islands` | +| :us_virgin_islands: | `us_virgin_islands` | :vietnam: | `vietnam` | +| :vanuatu: | `vanuatu` | :wallis_futuna: | `wallis_futuna` | +| :samoa: | `samoa` | :kosovo: | `kosovo` | +| :yemen: | `yemen` | :mayotte: | `mayotte` | +| :south_africa: | `south_africa` | :zambia: | `zambia` | +| :zimbabwe: | `zimbabwe` | | | diff --git a/themes/LoveIt/exampleSite/content/posts/emoji-support/index.zh-cn.md b/themes/LoveIt/exampleSite/content/posts/emoji-support/index.zh-cn.md new file mode 100644 index 00000000..1bd5700f --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/emoji-support/index.zh-cn.md @@ -0,0 +1,1284 @@ +--- +weight: 5 +title: "Emoji 支持" +date: 2019-10-01T17:55:28+08:00 +lastmod: 2019-10-01T17:55:28+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Hugo 和 LoveIt 中的 Emoji 的用法指南." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["emoji"] +categories: ["Markdown"] + +lightgallery: true +--- + +Emoji 可以通过多种方式在 Hugo 项目中启用. + + + +[`emojify`](https://gohugo.io/functions/emojify/) 方法可以直接在模板中调用, 或者使用[行内 Shortcodes](https://gohugo.io/templates/shortcode-templates#inline-shortcodes). + +要全局使用 emoji, 需要在你的[网站配置](https://gohugo.io/getting-started/configuration/)中设置 `enableEmoji` 为 `true`, +然后你就可以直接在文章中输入 emoji 的代码. + +它们以**冒号**开头和结尾,并且包含 emoji 的 **代码**: + +```markdown +去露营啦! {?:}tent: 很快就回来. + +真开心! {?:}joy: +``` + +呈现的输出效果如下: + +去露营啦! :tent: 很快就回来. + +真开心! :joy: + +以下**符号清单**是 emoji 代码的非常有用的参考. + +## 表情与情感 + +### 笑脸表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :grinning: | `grinning` | :smiley: | `smiley` | +| :smile: | `smile` | :grin: | `grin` | +| :laughing: | `laughing`
    `satisfied` | :sweat_smile: | `sweat_smile` | +| :rofl: | `rofl` | :joy: | `joy` | +| :slightly_smiling_face: | `slightly_smiling_face` | :upside_down_face: | `upside_down_face` | +| :wink: | `wink` | :blush: | `blush` | +| :innocent: | `innocent` | | | + +### 爱意表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :heart_eyes: | `heart_eyes` | :kissing_heart: | `kissing_heart` | +| :kissing: | `kissing` | :relaxed: | `relaxed` | +| :kissing_closed_eyes: | `kissing_closed_eyes` | :kissing_smiling_eyes: | `kissing_smiling_eyes` | + +### 吐舌头表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :yum: | `yum` | :stuck_out_tongue: | `stuck_out_tongue` | +| :stuck_out_tongue_winking_eye: | `stuck_out_tongue_winking_eye` | :stuck_out_tongue_closed_eyes: | `stuck_out_tongue_closed_eyes` | +| :money_mouth_face: | `money_mouth_face` | | | + +### 带手的表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :hugs: | `hugs` | :thinking: | `thinking` | + +### 中性表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :zipper_mouth_face: | `zipper_mouth_face` | :neutral_face: | `neutral_face` | +| :expressionless: | `expressionless` | :no_mouth: | `no_mouth` | +| :smirk: | `smirk` | :unamused: | `unamused` | +| :roll_eyes: | `roll_eyes` | :grimacing: | `grimacing` | +| :lying_face: | `lying_face` | | | + +### 困倦的表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :relieved: | `relieved` | :pensive: | `pensive` | +| :sleepy: | `sleepy` | :drooling_face: | `drooling_face` | +| :sleeping: | `sleeping` | | | + +### 不适的表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :mask: | `mask` | :face_with_thermometer: | `face_with_thermometer` | +| :face_with_head_bandage: | `face_with_head_bandage` | :nauseated_face: | `nauseated_face` | +| :sneezing_face: | `sneezing_face` | :dizzy_face: | `dizzy_face` | + +### 戴帽子的表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :cowboy_hat_face: | `cowboy_hat_face` | | | + +### 戴眼镜的表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :sunglasses: | `sunglasses` | :nerd_face: | `nerd_face` | + +### 担心的表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :confused: | `confused` | :worried: | `worried` | +| :slightly_frowning_face: | `slightly_frowning_face` | :frowning_face: | `frowning_face` | +| :open_mouth: | `open_mouth` | :hushed: | `hushed` | +| :astonished: | `astonished` | :flushed: | `flushed` | +| :frowning: | `frowning` | :anguished: | `anguished` | +| :fearful: | `fearful` | :cold_sweat: | `cold_sweat` | +| :disappointed_relieved: | `disappointed_relieved` | :cry: | `cry` | +| :sob: | `sob` | :scream: | `scream` | +| :confounded: | `confounded` | :persevere: | `persevere` | +| :disappointed: | `disappointed` | :sweat: | `sweat` | +| :weary: | `weary` | :tired_face: | `tired_face` | + +### 否定的表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :triumph: | `triumph` | :pout: | `pout`
    `rage` | +| :angry: | `angry` | :smiling_imp: | `smiling_imp` | +| :imp: | `imp` | :skull: | `skull` | +| :skull_and_crossbones: | `skull_and_crossbones` | | | + +### 特殊打扮的表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :hankey: | `hankey`
    `poop`
    `shit` | :clown_face: | `clown_face` | +| :japanese_ogre: | `japanese_ogre` | :japanese_goblin: | `japanese_goblin` | +| :ghost: | `ghost` | :alien: | `alien` | +| :space_invader: | `space_invader` | :robot: | `robot` | + +### 猫脸表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :smiley_cat: | `smiley_cat` | :smile_cat: | `smile_cat` | +| :joy_cat: | `joy_cat` | :heart_eyes_cat: | `heart_eyes_cat` | +| :smirk_cat: | `smirk_cat` | :kissing_cat: | `kissing_cat` | +| :scream_cat: | `scream_cat` | :crying_cat_face: | `crying_cat_face` | +| :pouting_cat: | `pouting_cat` | | | + +### 猴脸表情 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :see_no_evil: | `see_no_evil` | :hear_no_evil: | `hear_no_evil` | +| :speak_no_evil: | `speak_no_evil` | | | + +### 情感 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :kiss: | `kiss` | :love_letter: | `love_letter` | +| :cupid: | `cupid` | :gift_heart: | `gift_heart` | +| :sparkling_heart: | `sparkling_heart` | :heartpulse: | `heartpulse` | +| :heartbeat: | `heartbeat` | :revolving_hearts: | `revolving_hearts` | +| :two_hearts: | `two_hearts` | :heart_decoration: | `heart_decoration` | +| :heavy_heart_exclamation: | `heavy_heart_exclamation` | :broken_heart: | `broken_heart` | +| :heart: | `heart` | :yellow_heart: | `yellow_heart` | +| :green_heart: | `green_heart` | :blue_heart: | `blue_heart` | +| :purple_heart: | `purple_heart` | :black_heart: | `black_heart` | +| :100: | `100` | :anger: | `anger` | +| :boom: | `boom`
    `collision` | :dizzy: | `dizzy` | +| :sweat_drops: | `sweat_drops` | :dash: | `dash` | +| :hole: | `hole` | :bomb: | `bomb` | +| :speech_balloon: | `speech_balloon` | :eye_speech_bubble: | `eye_speech_bubble` | +| :right_anger_bubble: | `right_anger_bubble` | :thought_balloon: | `thought_balloon` | +| :zzz: | `zzz` | | | + +## 人与身体 + +### 张开手掌的手势 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :wave: | `wave` | :raised_back_of_hand: | `raised_back_of_hand` | +| :raised_hand_with_fingers_splayed: | `raised_hand_with_fingers_splayed` | :hand: | `hand`
    `raised_hand` | +| :vulcan_salute: | `vulcan_salute` | | | + +### 部分手指的手势 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :ok_hand: | `ok_hand` | :v: | `v` | +| :crossed_fingers: | `crossed_fingers` | :metal: | `metal` | +| :call_me_hand: | `call_me_hand` | | | + +### 一根手指的手势 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :point_left: | `point_left` | :point_right: | `point_right` | +| :point_up_2: | `point_up_2` | :fu: | `fu`
    `middle_finger` | +| :point_down: | `point_down` | :point_up: | `point_up` | + +### 握紧的手势 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :+1: | `+1`
    `thumbsup` | :-1: | `-1`
    `thumbsdown` | +| :fist: | `fist`
    `fist_raised` | :facepunch: | `facepunch`
    `fist_oncoming`
    `punch` | +| :fist_left: | `fist_left` | :fist_right: | `fist_right` | + +### 两只手 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :clap: | `clap` | :raised_hands: | `raised_hands` | +| :open_hands: | `open_hands` | :handshake: | `handshake` | +| :pray: | `pray` | | | + +### 握住东西的手势 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :writing_hand: | `writing_hand` | :nail_care: | `nail_care` | +| :selfie: | `selfie` | | | + +### 身体部位 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :muscle: | `muscle` | :ear: | `ear` | +| :nose: | `nose` | :eyes: | `eyes` | +| :eye: | `eye` | :tongue: | `tongue` | +| :lips: | `lips` | | | + +### 人 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :baby: | `baby` | :boy: | `boy` | +| :girl: | `girl` | :blonde_man: | `blonde_man`
    `person_with_blond_hair` | +| :man: | `man` | :woman: | `woman` | +| :blonde_woman: | `blonde_woman` | :older_man: | `older_man` | +| :older_woman: | `older_woman` | | | + +### 身体动作 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :frowning_woman: | `frowning_woman`
    `person_frowning` | :frowning_man: | `frowning_man` | +| :person_with_pouting_face: | `person_with_pouting_face`
    `pouting_woman` | :pouting_man: | `pouting_man` | +| :ng_woman: | `ng_woman`
    `no_good`
    `no_good_woman` | :ng_man: | `ng_man`
    `no_good_man` | +| :ok_woman: | `ok_woman` | :ok_man: | `ok_man` | +| :information_desk_person: | `information_desk_person`
    `sassy_woman`
    `tipping_hand_woman` | :sassy_man: | `sassy_man`
    `tipping_hand_man` | +| :raising_hand: | `raising_hand`
    `raising_hand_woman` | :raising_hand_man: | `raising_hand_man` | +| :bow: | `bow`
    `bowing_man` | :bowing_woman: | `bowing_woman` | +| :man_facepalming: | `man_facepalming` | :woman_facepalming: | `woman_facepalming` | +| :man_shrugging: | `man_shrugging` | :woman_shrugging: | `woman_shrugging` | + +### 人物角色 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :man_health_worker: | `man_health_worker` | :woman_health_worker: | `woman_health_worker` | +| :man_student: | `man_student` | :woman_student: | `woman_student` | +| :man_teacher: | `man_teacher` | :woman_teacher: | `woman_teacher` | +| :man_judge: | `man_judge` | :woman_judge: | `woman_judge` | +| :man_farmer: | `man_farmer` | :woman_farmer: | `woman_farmer` | +| :man_cook: | `man_cook` | :woman_cook: | `woman_cook` | +| :man_mechanic: | `man_mechanic` | :woman_mechanic: | `woman_mechanic` | +| :man_factory_worker: | `man_factory_worker` | :woman_factory_worker: | `woman_factory_worker` | +| :man_office_worker: | `man_office_worker` | :woman_office_worker: | `woman_office_worker` | +| :man_scientist: | `man_scientist` | :woman_scientist: | `woman_scientist` | +| :man_technologist: | `man_technologist` | :woman_technologist: | `woman_technologist` | +| :man_singer: | `man_singer` | :woman_singer: | `woman_singer` | +| :man_artist: | `man_artist` | :woman_artist: | `woman_artist` | +| :man_pilot: | `man_pilot` | :woman_pilot: | `woman_pilot` | +| :man_astronaut: | `man_astronaut` | :woman_astronaut: | `woman_astronaut` | +| :man_firefighter: | `man_firefighter` | :woman_firefighter: | `woman_firefighter` | +| :cop: | `cop`
    `policeman` | :policewoman: | `policewoman` | +| :detective: | `detective`
    `male_detective` | :female_detective: | `female_detective` | +| :guardsman: | `guardsman` | :guardswoman: | `guardswoman` | +| :construction_worker: | `construction_worker`
    `construction_worker_man` | :construction_worker_woman: | `construction_worker_woman` | +| :prince: | `prince` | :princess: | `princess` | +| :man_with_turban: | `man_with_turban` | :woman_with_turban: | `woman_with_turban` | +| :man_with_gua_pi_mao: | `man_with_gua_pi_mao` | :man_in_tuxedo: | `man_in_tuxedo` | +| :bride_with_veil: | `bride_with_veil` | :pregnant_woman: | `pregnant_woman` | + +### 幻想的人物 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :angel: | `angel` | :santa: | `santa` | +| :mrs_claus: | `mrs_claus` | | | + +### 人物活动 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :massage: | `massage`
    `massage_woman` | :massage_man: | `massage_man` | +| :haircut: | `haircut`
    `haircut_woman` | :haircut_man: | `haircut_man` | +| :walking: | `walking`
    `walking_man` | :walking_woman: | `walking_woman` | +| :runner: | `runner`
    `running`
    `running_man` | :running_woman: | `running_woman` | +| :dancer: | `dancer` | :man_dancing: | `man_dancing` | +| :business_suit_levitating: | `business_suit_levitating` | :dancers: | `dancers`
    `dancing_women` | +| :dancing_men: | `dancing_men` | | | + +### 体育 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :person_fencing: | `person_fencing` | :horse_racing: | `horse_racing` | +| :skier: | `skier` | :snowboarder: | `snowboarder` | +| :golfing_man: | `golfing_man` | :golfing_woman: | `golfing_woman` | +| :surfer: | `surfer`
    `surfing_man` | :surfing_woman: | `surfing_woman` | +| :rowboat: | `rowboat`
    `rowing_man` | :rowing_woman: | `rowing_woman` | +| :swimmer: | `swimmer`
    `swimming_man` | :swimming_woman: | `swimming_woman` | +| :basketball_man: | `basketball_man` | :basketball_woman: | `basketball_woman` | +| :weight_lifting_man: | `weight_lifting_man` | :weight_lifting_woman: | `weight_lifting_woman` | +| :bicyclist: | `bicyclist`
    `biking_man` | :biking_woman: | `biking_woman` | +| :mountain_bicyclist: | `mountain_bicyclist`
    `mountain_biking_man` | :mountain_biking_woman: | `mountain_biking_woman` | +| :man_cartwheeling: | `man_cartwheeling` | :woman_cartwheeling: | `woman_cartwheeling` | +| :men_wrestling: | `men_wrestling` | :women_wrestling: | `women_wrestling` | +| :man_playing_water_polo: | `man_playing_water_polo` | :woman_playing_water_polo: | `woman_playing_water_polo` | +| :man_playing_handball: | `man_playing_handball` | :woman_playing_handball: | `woman_playing_handball` | +| :man_juggling: | `man_juggling` | :woman_juggling: | `woman_juggling` | + +### 休息 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :bath: | `bath` | :sleeping_bed: | `sleeping_bed` | + +### 家庭 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :two_women_holding_hands: | `two_women_holding_hands` | :couple: | `couple` | +| :two_men_holding_hands: | `two_men_holding_hands` | :couplekiss_man_woman: | `couplekiss_man_woman` | +| :couplekiss_man_man: | `couplekiss_man_man` | :couplekiss_woman_woman: | `couplekiss_woman_woman` | +| :couple_with_heart: | `couple_with_heart`
    `couple_with_heart_woman_man` | :couple_with_heart_man_man: | `couple_with_heart_man_man` | +| :couple_with_heart_woman_woman: | `couple_with_heart_woman_woman` | :family: | `family`
    `family_man_woman_boy` | +| :family_man_woman_girl: | `family_man_woman_girl` | :family_man_woman_girl_boy: | `family_man_woman_girl_boy` | +| :family_man_woman_boy_boy: | `family_man_woman_boy_boy` | :family_man_woman_girl_girl: | `family_man_woman_girl_girl` | +| :family_man_man_boy: | `family_man_man_boy` | :family_man_man_girl: | `family_man_man_girl` | +| :family_man_man_girl_boy: | `family_man_man_girl_boy` | :family_man_man_boy_boy: | `family_man_man_boy_boy` | +| :family_man_man_girl_girl: | `family_man_man_girl_girl` | :family_woman_woman_boy: | `family_woman_woman_boy` | +| :family_woman_woman_girl: | `family_woman_woman_girl` | :family_woman_woman_girl_boy: | `family_woman_woman_girl_boy` | +| :family_woman_woman_boy_boy: | `family_woman_woman_boy_boy` | :family_woman_woman_girl_girl: | `family_woman_woman_girl_girl` | +| :family_man_boy: | `family_man_boy` | :family_man_boy_boy: | `family_man_boy_boy` | +| :family_man_girl: | `family_man_girl` | :family_man_girl_boy: | `family_man_girl_boy` | +| :family_man_girl_girl: | `family_man_girl_girl` | :family_woman_boy: | `family_woman_boy` | +| :family_woman_boy_boy: | `family_woman_boy_boy` | :family_woman_girl: | `family_woman_girl` | +| :family_woman_girl_boy: | `family_woman_girl_boy` | :family_woman_girl_girl: | `family_woman_girl_girl` | + +### 人物符号 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :speaking_head: | `speaking_head` | :bust_in_silhouette: | `bust_in_silhouette` | +| :busts_in_silhouette: | `busts_in_silhouette` | :footprints: | `footprints` | + +## 动物与自然 + +### 哺乳动物 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :monkey_face: | `monkey_face` | :monkey: | `monkey` | +| :gorilla: | `gorilla` | :dog: | `dog` | +| :dog2: | `dog2` | :poodle: | `poodle` | +| :wolf: | `wolf` | :fox_face: | `fox_face` | +| :cat: | `cat` | :cat2: | `cat2` | +| :lion: | `lion` | :tiger: | `tiger` | +| :tiger2: | `tiger2` | :leopard: | `leopard` | +| :horse: | `horse` | :racehorse: | `racehorse` | +| :unicorn: | `unicorn` | :deer: | `deer` | +| :cow: | `cow` | :ox: | `ox` | +| :water_buffalo: | `water_buffalo` | :cow2: | `cow2` | +| :pig: | `pig` | :pig2: | `pig2` | +| :boar: | `boar` | :pig_nose: | `pig_nose` | +| :ram: | `ram` | :sheep: | `sheep` | +| :goat: | `goat` | :dromedary_camel: | `dromedary_camel` | +| :camel: | `camel` | :elephant: | `elephant` | +| :rhinoceros: | `rhinoceros` | :mouse: | `mouse` | +| :mouse2: | `mouse2` | :rat: | `rat` | +| :hamster: | `hamster` | :rabbit: | `rabbit` | +| :rabbit2: | `rabbit2` | :chipmunk: | `chipmunk` | +| :bat: | `bat` | :bear: | `bear` | +| :koala: | `koala` | :panda_face: | `panda_face` | +| :feet: | `feet`
    `paw_prints` | | | + +### 鸟类 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :turkey: | `turkey` | :chicken: | `chicken` | +| :rooster: | `rooster` | :hatching_chick: | `hatching_chick` | +| :baby_chick: | `baby_chick` | :hatched_chick: | `hatched_chick` | +| :bird: | `bird` | :penguin: | `penguin` | +| :dove: | `dove` | :eagle: | `eagle` | +| :duck: | `duck` | :owl: | `owl` | + +### 两栖动物 + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :frog: | `frog` | + +### 爬虫类 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :crocodile: | `crocodile` | :turtle: | `turtle` | +| :lizard: | `lizard` | :snake: | `snake` | +| :dragon_face: | `dragon_face` | :dragon: | `dragon` | + +### 海洋动物 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :whale: | `whale` | :whale2: | `whale2` | +| :dolphin: | `dolphin`
    `flipper` | :fish: | `fish` | +| :tropical_fish: | `tropical_fish` | :blowfish: | `blowfish` | +| :shark: | `shark` | :octopus: | `octopus` | +| :shell: | `shell` | | | + +### 虫类 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :snail: | `snail` | :butterfly: | `butterfly` | +| :bug: | `bug` | :ant: | `ant` | +| :bee: | `bee`
    `honeybee` | :beetle: | `beetle` | +| :spider: | `spider` | :spider_web: | `spider_web` | +| :scorpion: | `scorpion` | | | + +### 花类植物 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :bouquet: | `bouquet` | :cherry_blossom: | `cherry_blossom` | +| :white_flower: | `white_flower` | :rosette: | `rosette` | +| :rose: | `rose` | :wilted_flower: | `wilted_flower` | +| :hibiscus: | `hibiscus` | :sunflower: | `sunflower` | +| :blossom: | `blossom` | :tulip: | `tulip` | + +### 其它植物 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :seedling: | `seedling` | :evergreen_tree: | `evergreen_tree` | +| :deciduous_tree: | `deciduous_tree` | :palm_tree: | `palm_tree` | +| :cactus: | `cactus` | :ear_of_rice: | `ear_of_rice` | +| :herb: | `herb` | :shamrock: | `shamrock` | +| :four_leaf_clover: | `four_leaf_clover` | :maple_leaf: | `maple_leaf` | +| :fallen_leaf: | `fallen_leaf` | :leaves: | `leaves` | + +## 食物与饮料 + +### 水果 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :grapes: | `grapes` | :melon: | `melon` | +| :watermelon: | `watermelon` | :mandarin: | `mandarin`
    `orange`
    `tangerine` | +| :lemon: | `lemon` | :banana: | `banana` | +| :pineapple: | `pineapple` | :apple: | `apple` | +| :green_apple: | `green_apple` | :pear: | `pear` | +| :peach: | `peach` | :cherries: | `cherries` | +| :strawberry: | `strawberry` | :kiwi_fruit: | `kiwi_fruit` | +| :tomato: | `tomato` | | | + +### 蔬菜 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :avocado: | `avocado` | :eggplant: | `eggplant` | +| :potato: | `potato` | :carrot: | `carrot` | +| :corn: | `corn` | :hot_pepper: | `hot_pepper` | +| :cucumber: | `cucumber` | :mushroom: | `mushroom` | +| :peanuts: | `peanuts` | :chestnut: | `chestnut` | + +### 快餐 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :bread: | `bread` | :croissant: | `croissant` | +| :baguette_bread: | `baguette_bread` | :pancakes: | `pancakes` | +| :cheese: | `cheese` | :meat_on_bone: | `meat_on_bone` | +| :poultry_leg: | `poultry_leg` | :bacon: | `bacon` | +| :hamburger: | `hamburger` | :fries: | `fries` | +| :pizza: | `pizza` | :hotdog: | `hotdog` | +| :taco: | `taco` | :burrito: | `burrito` | +| :stuffed_flatbread: | `stuffed_flatbread` | :egg: | `egg` | +| :fried_egg: | `fried_egg` | :shallow_pan_of_food: | `shallow_pan_of_food` | +| :stew: | `stew` | :green_salad: | `green_salad` | +| :popcorn: | `popcorn` | | | + +### 亚洲食物 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :bento: | `bento` | :rice_cracker: | `rice_cracker` | +| :rice_ball: | `rice_ball` | :rice: | `rice` | +| :curry: | `curry` | :ramen: | `ramen` | +| :spaghetti: | `spaghetti` | :sweet_potato: | `sweet_potato` | +| :oden: | `oden` | :sushi: | `sushi` | +| :fried_shrimp: | `fried_shrimp` | :fish_cake: | `fish_cake` | +| :dango: | `dango` | | | + +### 海鲜 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :crab: | `crab` | :shrimp: | `shrimp` | +| :squid: | `squid` | | | + +### 甜点 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :icecream: | `icecream` | :shaved_ice: | `shaved_ice` | +| :ice_cream: | `ice_cream` | :doughnut: | `doughnut` | +| :cookie: | `cookie` | :birthday: | `birthday` | +| :cake: | `cake` | :chocolate_bar: | `chocolate_bar` | +| :candy: | `candy` | :lollipop: | `lollipop` | +| :custard: | `custard` | :honey_pot: | `honey_pot` | + +### 饮料 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :baby_bottle: | `baby_bottle` | :milk_glass: | `milk_glass` | +| :coffee: | `coffee` | :tea: | `tea` | +| :sake: | `sake` | :champagne: | `champagne` | +| :wine_glass: | `wine_glass` | :cocktail: | `cocktail` | +| :tropical_drink: | `tropical_drink` | :beer: | `beer` | +| :beers: | `beers` | :clinking_glasses: | `clinking_glasses` | +| :tumbler_glass: | `tumbler_glass` | | | + +### 餐具 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :plate_with_cutlery: | `plate_with_cutlery` | :fork_and_knife: | `fork_and_knife` | +| :spoon: | `spoon` | :hocho: | `hocho`
    `knife` | +| :amphora: | `amphora` | | | + +## 旅游与地理 + +### 地图 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :earth_africa: | `earth_africa` | :earth_americas: | `earth_americas` | +| :earth_asia: | `earth_asia` | :globe_with_meridians: | `globe_with_meridians` | +| :world_map: | `world_map` | :japan: | `japan` | + +### 地理现象 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :mountain_snow: | `mountain_snow` | :mountain: | `mountain` | +| :volcano: | `volcano` | :mount_fuji: | `mount_fuji` | +| :camping: | `camping` | :beach_umbrella: | `beach_umbrella` | +| :desert: | `desert` | :desert_island: | `desert_island` | +| :national_park: | `national_park` | | | + +### 建筑物 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :stadium: | `stadium` | :classical_building: | `classical_building` | +| :building_construction: | `building_construction` | :houses: | `houses` | +| :derelict_house: | `derelict_house` | :house: | `house` | +| :house_with_garden: | `house_with_garden` | :office: | `office` | +| :post_office: | `post_office` | :european_post_office: | `european_post_office` | +| :hospital: | `hospital` | :bank: | `bank` | +| :hotel: | `hotel` | :love_hotel: | `love_hotel` | +| :convenience_store: | `convenience_store` | :school: | `school` | +| :department_store: | `department_store` | :factory: | `factory` | +| :japanese_castle: | `japanese_castle` | :european_castle: | `european_castle` | +| :wedding: | `wedding` | :tokyo_tower: | `tokyo_tower` | +| :statue_of_liberty: | `statue_of_liberty` | | | + +### 宗教建筑 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :church: | `church` | :mosque: | `mosque` | +| :synagogue: | `synagogue` | :shinto_shrine: | `shinto_shrine` | +| :kaaba: | `kaaba` | | | + +### 其它地点 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :fountain: | `fountain` | :tent: | `tent` | +| :foggy: | `foggy` | :night_with_stars: | `night_with_stars` | +| :cityscape: | `cityscape` | :sunrise_over_mountains: | `sunrise_over_mountains` | +| :sunrise: | `sunrise` | :city_sunset: | `city_sunset` | +| :city_sunrise: | `city_sunrise` | :bridge_at_night: | `bridge_at_night` | +| :hotsprings: | `hotsprings` | :carousel_horse: | `carousel_horse` | +| :ferris_wheel: | `ferris_wheel` | :roller_coaster: | `roller_coaster` | +| :barber: | `barber` | :circus_tent: | `circus_tent` | + +### 陆路运输 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :steam_locomotive: | `steam_locomotive` | :railway_car: | `railway_car` | +| :bullettrain_side: | `bullettrain_side` | :bullettrain_front: | `bullettrain_front` | +| :train2: | `train2` | :metro: | `metro` | +| :light_rail: | `light_rail` | :station: | `station` | +| :tram: | `tram` | :monorail: | `monorail` | +| :mountain_railway: | `mountain_railway` | :train: | `train` | +| :bus: | `bus` | :oncoming_bus: | `oncoming_bus` | +| :trolleybus: | `trolleybus` | :minibus: | `minibus` | +| :ambulance: | `ambulance` | :fire_engine: | `fire_engine` | +| :police_car: | `police_car` | :oncoming_police_car: | `oncoming_police_car` | +| :taxi: | `taxi` | :oncoming_taxi: | `oncoming_taxi` | +| :car: | `car`
    `red_car` | :oncoming_automobile: | `oncoming_automobile` | +| :blue_car: | `blue_car` | :truck: | `truck` | +| :articulated_lorry: | `articulated_lorry` | :tractor: | `tractor` | +| :racing_car: | `racing_car` | :motorcycle: | `motorcycle` | +| :motor_scooter: | `motor_scooter` | :bike: | `bike` | +| :kick_scooter: | `kick_scooter` | :busstop: | `busstop` | +| :motorway: | `motorway` | :railway_track: | `railway_track` | +| :oil_drum: | `oil_drum` | :fuelpump: | `fuelpump` | +| :rotating_light: | `rotating_light` | :traffic_light: | `traffic_light` | +| :vertical_traffic_light: | `vertical_traffic_light` | :stop_sign: | `stop_sign` | +| :construction: | `construction` | | | + +### 水路运输 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :anchor: | `anchor` | :boat: | `boat`
    `sailboat` | +| :canoe: | `canoe` | :speedboat: | `speedboat` | +| :passenger_ship: | `passenger_ship` | :ferry: | `ferry` | +| :motor_boat: | `motor_boat` | :ship: | `ship` | + +### 空中运输 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :airplane: | `airplane` | :small_airplane: | `small_airplane` | +| :flight_departure: | `flight_departure` | :flight_arrival: | `flight_arrival` | +| :seat: | `seat` | :helicopter: | `helicopter` | +| :suspension_railway: | `suspension_railway` | :mountain_cableway: | `mountain_cableway` | +| :aerial_tramway: | `aerial_tramway` | :artificial_satellite: | `artificial_satellite` | +| :rocket: | `rocket` | | | + +### 旅馆 + +| icon | code | icon | code | +| :-: | - | :-: | - | +| :bellhop_bell: | `bellhop_bell` | + +### 时间 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :hourglass: | `hourglass` | :hourglass_flowing_sand: | `hourglass_flowing_sand` | +| :watch: | `watch` | :alarm_clock: | `alarm_clock` | +| :stopwatch: | `stopwatch` | :timer_clock: | `timer_clock` | +| :mantelpiece_clock: | `mantelpiece_clock` | :clock12: | `clock12` | +| :clock1230: | `clock1230` | :clock1: | `clock1` | +| :clock130: | `clock130` | :clock2: | `clock2` | +| :clock230: | `clock230` | :clock3: | `clock3` | +| :clock330: | `clock330` | :clock4: | `clock4` | +| :clock430: | `clock430` | :clock5: | `clock5` | +| :clock530: | `clock530` | :clock6: | `clock6` | +| :clock630: | `clock630` | :clock7: | `clock7` | +| :clock730: | `clock730` | :clock8: | `clock8` | +| :clock830: | `clock830` | :clock9: | `clock9` | +| :clock930: | `clock930` | :clock10: | `clock10` | +| :clock1030: | `clock1030` | :clock11: | `clock11` | +| :clock1130: | `clock1130` | | | + +### 天空与天气 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :new_moon: | `new_moon` | :waxing_crescent_moon: | `waxing_crescent_moon` | +| :first_quarter_moon: | `first_quarter_moon` | :moon: | `moon`
    `waxing_gibbous_moon` | +| :full_moon: | `full_moon` | :waning_gibbous_moon: | `waning_gibbous_moon` | +| :last_quarter_moon: | `last_quarter_moon` | :waning_crescent_moon: | `waning_crescent_moon` | +| :crescent_moon: | `crescent_moon` | :new_moon_with_face: | `new_moon_with_face` | +| :first_quarter_moon_with_face: | `first_quarter_moon_with_face` | :last_quarter_moon_with_face: | `last_quarter_moon_with_face` | +| :thermometer: | `thermometer` | :sunny: | `sunny` | +| :full_moon_with_face: | `full_moon_with_face` | :sun_with_face: | `sun_with_face` | +| :star: | `star` | :star2: | `star2` | +| :stars: | `stars` | :milky_way: | `milky_way` | +| :cloud: | `cloud` | :partly_sunny: | `partly_sunny` | +| :cloud_with_lightning_and_rain: | `cloud_with_lightning_and_rain` | :sun_behind_small_cloud: | `sun_behind_small_cloud` | +| :sun_behind_large_cloud: | `sun_behind_large_cloud` | :sun_behind_rain_cloud: | `sun_behind_rain_cloud` | +| :cloud_with_rain: | `cloud_with_rain` | :cloud_with_snow: | `cloud_with_snow` | +| :cloud_with_lightning: | `cloud_with_lightning` | :tornado: | `tornado` | +| :fog: | `fog` | :wind_face: | `wind_face` | +| :cyclone: | `cyclone` | :rainbow: | `rainbow` | +| :closed_umbrella: | `closed_umbrella` | :open_umbrella: | `open_umbrella` | +| :umbrella: | `umbrella` | :parasol_on_ground: | `parasol_on_ground` | +| :zap: | `zap` | :snowflake: | `snowflake` | +| :snowman_with_snow: | `snowman_with_snow` | :snowman: | `snowman` | +| :comet: | `comet` | :fire: | `fire` | +| :droplet: | `droplet` | :ocean: | `ocean` | + +## 活动 + +### 事件 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :jack_o_lantern: | `jack_o_lantern` | :christmas_tree: | `christmas_tree` | +| :fireworks: | `fireworks` | :sparkler: | `sparkler` | +| :sparkles: | `sparkles` | :balloon: | `balloon` | +| :tada: | `tada` | :confetti_ball: | `confetti_ball` | +| :tanabata_tree: | `tanabata_tree` | :bamboo: | `bamboo` | +| :dolls: | `dolls` | :flags: | `flags` | +| :wind_chime: | `wind_chime` | :rice_scene: | `rice_scene` | +| :ribbon: | `ribbon` | :gift: | `gift` | +| :reminder_ribbon: | `reminder_ribbon` | :tickets: | `tickets` | +| :ticket: | `ticket` | | | + +### 奖杯与奖牌 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :medal_military: | `medal_military` | :trophy: | `trophy` | +| :medal_sports: | `medal_sports` | :1st_place_medal: | `1st_place_medal` | +| :2nd_place_medal: | `2nd_place_medal` | :3rd_place_medal: | `3rd_place_medal` | + +### 体育运动 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :soccer: | `soccer` | :baseball: | `baseball` | +| :basketball: | `basketball` | :volleyball: | `volleyball` | +| :football: | `football` | :rugby_football: | `rugby_football` | +| :tennis: | `tennis` | :bowling: | `bowling` | +| :cricket: | `cricket` | :field_hockey: | `field_hockey` | +| :ice_hockey: | `ice_hockey` | :ping_pong: | `ping_pong` | +| :badminton: | `badminton` | :boxing_glove: | `boxing_glove` | +| :martial_arts_uniform: | `martial_arts_uniform` | :goal_net: | `goal_net` | +| :golf: | `golf` | :ice_skate: | `ice_skate` | +| :fishing_pole_and_fish: | `fishing_pole_and_fish` | :running_shirt_with_sash: | `running_shirt_with_sash` | +| :ski: | `ski` | | | + +### 游戏 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :dart: | `dart` | :8ball: | `8ball` | +| :crystal_ball: | `crystal_ball` | :video_game: | `video_game` | +| :joystick: | `joystick` | :slot_machine: | `slot_machine` | +| :game_die: | `game_die` | :spades: | `spades` | +| :hearts: | `hearts` | :diamonds: | `diamonds` | +| :clubs: | `clubs` | :black_joker: | `black_joker` | +| :mahjong: | `mahjong` | :flower_playing_cards: | `flower_playing_cards` | + +### 艺术与工艺 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :performing_arts: | `performing_arts` | :framed_picture: | `framed_picture` | +| :art: | `art` | | | + +## 物品 + +### 服装 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :eyeglasses: | `eyeglasses` | :dark_sunglasses: | `dark_sunglasses` | +| :necktie: | `necktie` | :shirt: | `shirt`
    `tshirt` | +| :jeans: | `jeans` | :dress: | `dress` | +| :kimono: | `kimono` | :bikini: | `bikini` | +| :womans_clothes: | `womans_clothes` | :purse: | `purse` | +| :handbag: | `handbag` | :pouch: | `pouch` | +| :shopping: | `shopping` | :school_satchel: | `school_satchel` | +| :mans_shoe: | `mans_shoe`
    `shoe` | :athletic_shoe: | `athletic_shoe` | +| :high_heel: | `high_heel` | :sandal: | `sandal` | +| :boot: | `boot` | :crown: | `crown` | +| :womans_hat: | `womans_hat` | :tophat: | `tophat` | +| :mortar_board: | `mortar_board` | :rescue_worker_helmet: | `rescue_worker_helmet` | +| :prayer_beads: | `prayer_beads` | :lipstick: | `lipstick` | +| :ring: | `ring` | :gem: | `gem` | + +### 声音 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :mute: | `mute` | :speaker: | `speaker` | +| :sound: | `sound` | :loud_sound: | `loud_sound` | +| :loudspeaker: | `loudspeaker` | :mega: | `mega` | +| :postal_horn: | `postal_horn` | :bell: | `bell` | +| :no_bell: | `no_bell` | | | + +### 音乐 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :musical_score: | `musical_score` | :musical_note: | `musical_note` | +| :notes: | `notes` | :studio_microphone: | `studio_microphone` | +| :level_slider: | `level_slider` | :control_knobs: | `control_knobs` | +| :microphone: | `microphone` | :headphones: | `headphones` | +| :radio: | `radio` | | | + +### 乐器 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :saxophone: | `saxophone` | :guitar: | `guitar` | +| :musical_keyboard: | `musical_keyboard` | :trumpet: | `trumpet` | +| :violin: | `violin` | :drum: | `drum` | + +### 电话 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :iphone: | `iphone` | :calling: | `calling` | +| :phone: | `phone`
    `telephone` | :telephone_receiver: | `telephone_receiver` | +| :pager: | `pager` | :fax: | `fax` | + +### 电脑 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :battery: | `battery` | :electric_plug: | `electric_plug` | +| :computer: | `computer` | :desktop_computer: | `desktop_computer` | +| :printer: | `printer` | :keyboard: | `keyboard` | +| :computer_mouse: | `computer_mouse` | :trackball: | `trackball` | +| :minidisc: | `minidisc` | :floppy_disk: | `floppy_disk` | +| :cd: | `cd` | :dvd: | `dvd` | + +### 灯光与影像 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :movie_camera: | `movie_camera` | :film_strip: | `film_strip` | +| :film_projector: | `film_projector` | :clapper: | `clapper` | +| :tv: | `tv` | :camera: | `camera` | +| :camera_flash: | `camera_flash` | :video_camera: | `video_camera` | +| :vhs: | `vhs` | :mag: | `mag` | +| :mag_right: | `mag_right` | :candle: | `candle` | +| :bulb: | `bulb` | :flashlight: | `flashlight` | +| :izakaya_lantern: | `izakaya_lantern`
    `lantern` | | | + +### 书与纸张 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :notebook_with_decorative_cover: | `notebook_with_decorative_cover` | :closed_book: | `closed_book` | +| :book: | `book`
    `open_book` | :green_book: | `green_book` | +| :blue_book: | `blue_book` | :orange_book: | `orange_book` | +| :books: | `books` | :notebook: | `notebook` | +| :ledger: | `ledger` | :page_with_curl: | `page_with_curl` | +| :scroll: | `scroll` | :page_facing_up: | `page_facing_up` | +| :newspaper: | `newspaper` | :newspaper_roll: | `newspaper_roll` | +| :bookmark_tabs: | `bookmark_tabs` | :bookmark: | `bookmark` | +| :label: | `label` | | | + +### 钱 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :moneybag: | `moneybag` | :yen: | `yen` | +| :dollar: | `dollar` | :euro: | `euro` | +| :pound: | `pound` | :money_with_wings: | `money_with_wings` | +| :credit_card: | `credit_card` | :chart: | `chart` | + +### 邮件 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :email: | `email`
    `envelope` | :e-mail: | `:e-mail:` | +| :incoming_envelope: | `incoming_envelope` | :envelope_with_arrow: | `envelope_with_arrow` | +| :outbox_tray: | `outbox_tray` | :inbox_tray: | `inbox_tray` | +| :package: | `package` | :mailbox: | `mailbox` | +| :mailbox_closed: | `mailbox_closed` | :mailbox_with_mail: | `mailbox_with_mail` | +| :mailbox_with_no_mail: | `mailbox_with_no_mail` | :postbox: | `postbox` | +| :ballot_box: | `ballot_box` | | | + +### 书写 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :pencil2: | `pencil2` | :black_nib: | `black_nib` | +| :fountain_pen: | `fountain_pen` | :pen: | `pen` | +| :paintbrush: | `paintbrush` | :crayon: | `crayon` | +| :memo: | `memo`
    `pencil` | | | + +### 办公 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :briefcase: | `briefcase` | :file_folder: | `file_folder` | +| :open_file_folder: | `open_file_folder` | :card_index_dividers: | `card_index_dividers` | +| :date: | `date` | :calendar: | `calendar` | +| :spiral_notepad: | `spiral_notepad` | :spiral_calendar: | `spiral_calendar` | +| :card_index: | `card_index` | :chart_with_upwards_trend: | `chart_with_upwards_trend` | +| :chart_with_downwards_trend: | `chart_with_downwards_trend` | :bar_chart: | `bar_chart` | +| :clipboard: | `clipboard` | :pushpin: | `pushpin` | +| :round_pushpin: | `round_pushpin` | :paperclip: | `paperclip` | +| :paperclips: | `paperclips` | :straight_ruler: | `straight_ruler` | +| :triangular_ruler: | `triangular_ruler` | :scissors: | `scissors` | +| :card_file_box: | `card_file_box` | :file_cabinet: | `file_cabinet` | +| :wastebasket: | `wastebasket` | | | + +### 锁 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :lock: | `lock` | :unlock: | `unlock` | +| :lock_with_ink_pen: | `lock_with_ink_pen` | :closed_lock_with_key: | `closed_lock_with_key` | +| :key: | `key` | :old_key: | `old_key` | + +### 工具 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :hammer: | `hammer` | :pick: | `pick` | +| :hammer_and_pick: | `hammer_and_pick` | :hammer_and_wrench: | `hammer_and_wrench` | +| :dagger: | `dagger` | :crossed_swords: | `crossed_swords` | +| :gun: | `gun` | :bow_and_arrow: | `bow_and_arrow` | +| :shield: | `shield` | :wrench: | `wrench` | +| :nut_and_bolt: | `nut_and_bolt` | :gear: | `gear` | +| :clamp: | `clamp` | :balance_scale: | `balance_scale` | +| :link: | `link` | :chains: | `chains` | + +### 科学 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :alembic: | `alembic` | :microscope: | `microscope` | +| :telescope: | `telescope` | :satellite: | `satellite` | + +### 医疗 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :syringe: | `syringe` | :pill: | `pill` | + +### 生活用品 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :door: | `door` | :bed: | `bed` | +| :couch_and_lamp: | `couch_and_lamp` | :toilet: | `toilet` | +| :shower: | `shower` | :bathtub: | `bathtub` | +| :shopping_cart: | `shopping_cart` | | | + +### 其它物品 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :smoking: | `smoking` | :coffin: | `coffin` | +| :funeral_urn: | `funeral_urn` | :moyai: | `moyai` | + +## 符号 + +### 交通标识 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :atm: | `atm` | :put_litter_in_its_place: | `put_litter_in_its_place` | +| :potable_water: | `potable_water` | :wheelchair: | `wheelchair` | +| :mens: | `mens` | :womens: | `womens` | +| :restroom: | `restroom` | :baby_symbol: | `baby_symbol` | +| :wc: | `wc` | :passport_control: | `passport_control` | +| :customs: | `customs` | :baggage_claim: | `baggage_claim` | +| :left_luggage: | `left_luggage` | | | + +### 警告 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :warning: | `warning` | :children_crossing: | `children_crossing` | +| :no_entry: | `no_entry` | :no_entry_sign: | `no_entry_sign` | +| :no_bicycles: | `no_bicycles` | :no_smoking: | `no_smoking` | +| :do_not_litter: | `do_not_litter` | :non-potable_water: | `:non-potable_water:` | +| :no_pedestrians: | `no_pedestrians` | :no_mobile_phones: | `no_mobile_phones` | +| :underage: | `underage` | :radioactive: | `radioactive` | +| :biohazard: | `biohazard` | | | + +### 箭头 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :arrow_up: | `arrow_up` | :arrow_upper_right: | `arrow_upper_right` | +| :arrow_right: | `arrow_right` | :arrow_lower_right: | `arrow_lower_right` | +| :arrow_down: | `arrow_down` | :arrow_lower_left: | `arrow_lower_left` | +| :arrow_left: | `arrow_left` | :arrow_upper_left: | `arrow_upper_left` | +| :arrow_up_down: | `arrow_up_down` | :left_right_arrow: | `left_right_arrow` | +| :leftwards_arrow_with_hook: | `leftwards_arrow_with_hook` | :arrow_right_hook: | `arrow_right_hook` | +| :arrow_heading_up: | `arrow_heading_up` | :arrow_heading_down: | `arrow_heading_down` | +| :arrows_clockwise: | `arrows_clockwise` | :arrows_counterclockwise: | `arrows_counterclockwise` | +| :back: | `back` | :end: | `end` | +| :on: | `on` | :soon: | `soon` | +| :top: | `top` | | | + +### 宗教 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :place_of_worship: | `place_of_worship` | :atom_symbol: | `atom_symbol` | +| :om: | `om` | :star_of_david: | `star_of_david` | +| :wheel_of_dharma: | `wheel_of_dharma` | :yin_yang: | `yin_yang` | +| :latin_cross: | `latin_cross` | :orthodox_cross: | `orthodox_cross` | +| :star_and_crescent: | `star_and_crescent` | :peace_symbol: | `peace_symbol` | +| :menorah: | `menorah` | :six_pointed_star: | `six_pointed_star` | + +### 生肖 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :aries: | `aries` | :taurus: | `taurus` | +| :gemini: | `gemini` | :cancer: | `cancer` | +| :leo: | `leo` | :virgo: | `virgo` | +| :libra: | `libra` | :scorpius: | `scorpius` | +| :sagittarius: | `sagittarius` | :capricorn: | `capricorn` | +| :aquarius: | `aquarius` | :pisces: | `pisces` | +| :ophiuchus: | `ophiuchus` | | | + +### 影像符号 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :twisted_rightwards_arrows: | `twisted_rightwards_arrows` | :repeat: | `repeat` | +| :repeat_one: | `repeat_one` | :arrow_forward: | `arrow_forward` | +| :fast_forward: | `fast_forward` | :next_track_button: | `next_track_button` | +| :play_or_pause_button: | `play_or_pause_button` | :arrow_backward: | `arrow_backward` | +| :rewind: | `rewind` | :previous_track_button: | `previous_track_button` | +| :arrow_up_small: | `arrow_up_small` | :arrow_double_up: | `arrow_double_up` | +| :arrow_down_small: | `arrow_down_small` | :arrow_double_down: | `arrow_double_down` | +| :pause_button: | `pause_button` | :stop_button: | `stop_button` | +| :record_button: | `record_button` | :cinema: | `cinema` | +| :low_brightness: | `low_brightness` | :high_brightness: | `high_brightness` | +| :signal_strength: | `signal_strength` | :vibration_mode: | `vibration_mode` | +| :mobile_phone_off: | `mobile_phone_off` | | | + +### 数学 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :heavy_multiplication_x: | `heavy_multiplication_x` | :heavy_plus_sign: | `heavy_plus_sign` | +| :heavy_minus_sign: | `heavy_minus_sign` | :heavy_division_sign: | `heavy_division_sign` | + +### 标点符号 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :bangbang: | `bangbang` | :interrobang: | `interrobang` | +| :question: | `question` | :grey_question: | `grey_question` | +| :grey_exclamation: | `grey_exclamation` | :exclamation: | `exclamation`
    `heavy_exclamation_mark` | +| :wavy_dash: | `wavy_dash` | | | + +### 货币 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :currency_exchange: | `currency_exchange` | :heavy_dollar_sign: | `heavy_dollar_sign` | + +### 按键符号 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :hash: | `hash` | :asterisk: | `asterisk` | +| :zero: | `zero` | :one: | `one` | +| :two: | `two` | :three: | `three` | +| :four: | `four` | :five: | `five` | +| :six: | `six` | :seven: | `seven` | +| :eight: | `eight` | :nine: | `nine` | +| :keycap_ten: | `keycap_ten` | | | + +### 字母符号 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :capital_abcd: | `capital_abcd` | :abcd: | `abcd` | +| :1234: | `1234` | :symbols: | `symbols` | +| :abc: | `abc` | :a: | `a` | +| :ab: | `ab` | :b: | `b` | +| :cl: | `cl` | :cool: | `cool` | +| :free: | `free` | :information_source: | `information_source` | +| :id: | `id` | :m: | `m` | +| :new: | `new` | :ng: | `ng` | +| :o2: | `o2` | :ok: | `ok` | +| :parking: | `parking` | :sos: | `sos` | +| :up: | `up` | :vs: | `vs` | +| :koko: | `koko` | :sa: | `sa` | +| :u6708: | `u6708` | :u6709: | `u6709` | +| :u6307: | `u6307` | :ideograph_advantage: | `ideograph_advantage` | +| :u5272: | `u5272` | :u7121: | `u7121` | +| :u7981: | `u7981` | :accept: | `accept` | +| :u7533: | `u7533` | :u5408: | `u5408` | +| :u7a7a: | `u7a7a` | :congratulations: | `congratulations` | +| :secret: | `secret` | :u55b6: | `u55b6` | +| :u6e80: | `u6e80` | | | + +### 几何符号 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :red_circle: | `red_circle` | :large_blue_circle: | `large_blue_circle` | +| :black_circle: | `black_circle` | :white_circle: | `white_circle` | +| :black_large_square: | `black_large_square` | :white_large_square: | `white_large_square` | +| :black_medium_square: | `black_medium_square` | :white_medium_square: | `white_medium_square` | +| :black_medium_small_square: | `black_medium_small_square` | :white_medium_small_square: | `white_medium_small_square` | +| :black_small_square: | `black_small_square` | :white_small_square: | `white_small_square` | +| :large_orange_diamond: | `large_orange_diamond` | :large_blue_diamond: | `large_blue_diamond` | +| :small_orange_diamond: | `small_orange_diamond` | :small_blue_diamond: | `small_blue_diamond` | +| :small_red_triangle: | `small_red_triangle` | :small_red_triangle_down: | `small_red_triangle_down` | +| :diamond_shape_with_a_dot_inside: | `diamond_shape_with_a_dot_inside` | :radio_button: | `radio_button` | +| :white_square_button: | `white_square_button` | :black_square_button: | `black_square_button` | + +### 其它符合 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :recycle: | `recycle` | :fleur_de_lis: | `fleur_de_lis` | +| :trident: | `trident` | :name_badge: | `name_badge` | +| :beginner: | `beginner` | :o: | `o` | +| :white_check_mark: | `white_check_mark` | :ballot_box_with_check: | `ballot_box_with_check` | +| :heavy_check_mark: | `heavy_check_mark` | :x: | `x` | +| :negative_squared_cross_mark: | `negative_squared_cross_mark` | :curly_loop: | `curly_loop` | +| :loop: | `loop` | :part_alternation_mark: | `part_alternation_mark` | +| :eight_spoked_asterisk: | `eight_spoked_asterisk` | :eight_pointed_black_star: | `eight_pointed_black_star` | +| :sparkle: | `sparkle` | :copyright: | `copyright` | +| :registered: | `registered` | :tm: | `tm` | + +## 旗帜 + +### 常用旗帜 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :checkered_flag: | `checkered_flag` | :triangular_flag_on_post: | `triangular_flag_on_post` | +| :crossed_flags: | `crossed_flags` | :black_flag: | `black_flag` | +| :white_flag: | `white_flag` | :rainbow_flag: | `rainbow_flag` | + +### 国家和地区旗帜 + +| 图标 | 代码 | 图标 | 代码 | +| :-: | - | :-: | - | +| :andorra: | `andorra` | :united_arab_emirates: | `united_arab_emirates` | +| :afghanistan: | `afghanistan` | :antigua_barbuda: | `antigua_barbuda` | +| :anguilla: | `anguilla` | :albania: | `albania` | +| :armenia: | `armenia` | :angola: | `angola` | +| :antarctica: | `antarctica` | :argentina: | `argentina` | +| :american_samoa: | `american_samoa` | :austria: | `austria` | +| :australia: | `australia` | :aruba: | `aruba` | +| :aland_islands: | `aland_islands` | :azerbaijan: | `azerbaijan` | +| :bosnia_herzegovina: | `bosnia_herzegovina` | :barbados: | `barbados` | +| :bangladesh: | `bangladesh` | :belgium: | `belgium` | +| :burkina_faso: | `burkina_faso` | :bulgaria: | `bulgaria` | +| :bahrain: | `bahrain` | :burundi: | `burundi` | +| :benin: | `benin` | :st_barthelemy: | `st_barthelemy` | +| :bermuda: | `bermuda` | :brunei: | `brunei` | +| :bolivia: | `bolivia` | :caribbean_netherlands: | `caribbean_netherlands` | +| :brazil: | `brazil` | :bahamas: | `bahamas` | +| :bhutan: | `bhutan` | :botswana: | `botswana` | +| :belarus: | `belarus` | :belize: | `belize` | +| :canada: | `canada` | :cocos_islands: | `cocos_islands` | +| :congo_kinshasa: | `congo_kinshasa` | :central_african_republic: | `central_african_republic` | +| :congo_brazzaville: | `congo_brazzaville` | :switzerland: | `switzerland` | +| :cote_divoire: | `cote_divoire` | :cook_islands: | `cook_islands` | +| :chile: | `chile` | :cameroon: | `cameroon` | +| :cn: | `cn` | :colombia: | `colombia` | +| :costa_rica: | `costa_rica` | :cuba: | `cuba` | +| :cape_verde: | `cape_verde` | :curacao: | `curacao` | +| :christmas_island: | `christmas_island` | :cyprus: | `cyprus` | +| :czech_republic: | `czech_republic` | :de: | `de` | +| :djibouti: | `djibouti` | :denmark: | `denmark` | +| :dominica: | `dominica` | :dominican_republic: | `dominican_republic` | +| :algeria: | `algeria` | :ecuador: | `ecuador` | +| :estonia: | `estonia` | :egypt: | `egypt` | +| :western_sahara: | `western_sahara` | :eritrea: | `eritrea` | +| :es: | `es` | :ethiopia: | `ethiopia` | +| :eu: | `eu`
    `european_union` | :finland: | `finland` | +| :fiji: | `fiji` | :falkland_islands: | `falkland_islands` | +| :micronesia: | `micronesia` | :faroe_islands: | `faroe_islands` | +| :fr: | `fr` | :gabon: | `gabon` | +| :gb: | `gb`
    `uk` | :grenada: | `grenada` | +| :georgia: | `georgia` | :french_guiana: | `french_guiana` | +| :guernsey: | `guernsey` | :ghana: | `ghana` | +| :gibraltar: | `gibraltar` | :greenland: | `greenland` | +| :gambia: | `gambia` | :guinea: | `guinea` | +| :guadeloupe: | `guadeloupe` | :equatorial_guinea: | `equatorial_guinea` | +| :greece: | `greece` | :south_georgia_south_sandwich_islands: | `south_georgia_south_sandwich_islands` | +| :guatemala: | `guatemala` | :guam: | `guam` | +| :guinea_bissau: | `guinea_bissau` | :guyana: | `guyana` | +| :hong_kong: | `hong_kong` | :honduras: | `honduras` | +| :croatia: | `croatia` | :haiti: | `haiti` | +| :hungary: | `hungary` | :canary_islands: | `canary_islands` | +| :indonesia: | `indonesia` | :ireland: | `ireland` | +| :israel: | `israel` | :isle_of_man: | `isle_of_man` | +| :india: | `india` | :british_indian_ocean_territory: | `british_indian_ocean_territory` | +| :iraq: | `iraq` | :iran: | `iran` | +| :iceland: | `iceland` | :it: | `it` | +| :jersey: | `jersey` | :jamaica: | `jamaica` | +| :jordan: | `jordan` | :jp: | `jp` | +| :kenya: | `kenya` | :kyrgyzstan: | `kyrgyzstan` | +| :cambodia: | `cambodia` | :kiribati: | `kiribati` | +| :comoros: | `comoros` | :st_kitts_nevis: | `st_kitts_nevis` | +| :north_korea: | `north_korea` | :kr: | `kr` | +| :kuwait: | `kuwait` | :cayman_islands: | `cayman_islands` | +| :kazakhstan: | `kazakhstan` | :laos: | `laos` | +| :lebanon: | `lebanon` | :st_lucia: | `st_lucia` | +| :liechtenstein: | `liechtenstein` | :sri_lanka: | `sri_lanka` | +| :liberia: | `liberia` | :lesotho: | `lesotho` | +| :lithuania: | `lithuania` | :luxembourg: | `luxembourg` | +| :latvia: | `latvia` | :libya: | `libya` | +| :morocco: | `morocco` | :monaco: | `monaco` | +| :moldova: | `moldova` | :montenegro: | `montenegro` | +| :madagascar: | `madagascar` | :marshall_islands: | `marshall_islands` | +| :macedonia: | `macedonia` | :mali: | `mali` | +| :myanmar: | `myanmar` | :mongolia: | `mongolia` | +| :macau: | `macau` | :northern_mariana_islands: | `northern_mariana_islands` | +| :martinique: | `martinique` | :mauritania: | `mauritania` | +| :montserrat: | `montserrat` | :malta: | `malta` | +| :mauritius: | `mauritius` | :maldives: | `maldives` | +| :malawi: | `malawi` | :mexico: | `mexico` | +| :malaysia: | `malaysia` | :mozambique: | `mozambique` | +| :namibia: | `namibia` | :new_caledonia: | `new_caledonia` | +| :niger: | `niger` | :norfolk_island: | `norfolk_island` | +| :nigeria: | `nigeria` | :nicaragua: | `nicaragua` | +| :netherlands: | `netherlands` | :norway: | `norway` | +| :nepal: | `nepal` | :nauru: | `nauru` | +| :niue: | `niue` | :new_zealand: | `new_zealand` | +| :oman: | `oman` | :panama: | `panama` | +| :peru: | `peru` | :french_polynesia: | `french_polynesia` | +| :papua_new_guinea: | `papua_new_guinea` | :philippines: | `philippines` | +| :pakistan: | `pakistan` | :poland: | `poland` | +| :st_pierre_miquelon: | `st_pierre_miquelon` | :pitcairn_islands: | `pitcairn_islands` | +| :puerto_rico: | `puerto_rico` | :palestinian_territories: | `palestinian_territories` | +| :portugal: | `portugal` | :palau: | `palau` | +| :paraguay: | `paraguay` | :qatar: | `qatar` | +| :reunion: | `reunion` | :romania: | `romania` | +| :serbia: | `serbia` | :ru: | `ru` | +| :rwanda: | `rwanda` | :saudi_arabia: | `saudi_arabia` | +| :solomon_islands: | `solomon_islands` | :seychelles: | `seychelles` | +| :sudan: | `sudan` | :sweden: | `sweden` | +| :singapore: | `singapore` | :st_helena: | `st_helena` | +| :slovenia: | `slovenia` | :slovakia: | `slovakia` | +| :sierra_leone: | `sierra_leone` | :san_marino: | `san_marino` | +| :senegal: | `senegal` | :somalia: | `somalia` | +| :suriname: | `suriname` | :south_sudan: | `south_sudan` | +| :sao_tome_principe: | `sao_tome_principe` | :el_salvador: | `el_salvador` | +| :sint_maarten: | `sint_maarten` | :syria: | `syria` | +| :swaziland: | `swaziland` | :turks_caicos_islands: | `turks_caicos_islands` | +| :chad: | `chad` | :french_southern_territories: | `french_southern_territories` | +| :togo: | `togo` | :thailand: | `thailand` | +| :tajikistan: | `tajikistan` | :tokelau: | `tokelau` | +| :timor_leste: | `timor_leste` | :turkmenistan: | `turkmenistan` | +| :tunisia: | `tunisia` | :tonga: | `tonga` | +| :tr: | `tr` | :trinidad_tobago: | `trinidad_tobago` | +| :tuvalu: | `tuvalu` | :taiwan: | `taiwan` | +| :tanzania: | `tanzania` | :ukraine: | `ukraine` | +| :uganda: | `uganda` | :us: | `us` | +| :uruguay: | `uruguay` | :uzbekistan: | `uzbekistan` | +| :vatican_city: | `vatican_city` | :st_vincent_grenadines: | `st_vincent_grenadines` | +| :venezuela: | `venezuela` | :british_virgin_islands: | `british_virgin_islands` | +| :us_virgin_islands: | `us_virgin_islands` | :vietnam: | `vietnam` | +| :vanuatu: | `vanuatu` | :wallis_futuna: | `wallis_futuna` | +| :samoa: | `samoa` | :kosovo: | `kosovo` | +| :yemen: | `yemen` | :mayotte: | `mayotte` | +| :south_africa: | `south_africa` | :zambia: | `zambia` | +| :zimbabwe: | `zimbabwe` | | | diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/basic-configuration-preview.png b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/basic-configuration-preview.png new file mode 100644 index 00000000..00a4e65e Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/basic-configuration-preview.png differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/basic-configuration-preview.zh-cn.png b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/basic-configuration-preview.zh-cn.png new file mode 100644 index 00000000..1b1d2938 Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/basic-configuration-preview.zh-cn.png differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/complete-configuration-preview.png b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/complete-configuration-preview.png new file mode 100644 index 00000000..27726741 Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/complete-configuration-preview.png differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/complete-configuration-preview.zh-cn.png b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/complete-configuration-preview.zh-cn.png new file mode 100644 index 00000000..7990929e Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/complete-configuration-preview.zh-cn.png differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/featured-image.jpg b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/featured-image.jpg new file mode 100644 index 00000000..87f5401b Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/featured-image.jpg differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.en.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.en.md new file mode 100644 index 00000000..5a0cd13f --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.en.md @@ -0,0 +1,1041 @@ +--- +weight: 1 +title: "Theme Documentation - Basics" +date: 2020-03-06T21:29:01+08:00 +lastmod: 2020-03-06T21:29:01+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Discover what the Hugo - LoveIt theme is all about and the core-concepts behind it." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["installation", "configuration"] +categories: ["documentation"] + +lightgallery: true + +toc: + auto: false +--- + +Discover what the Hugo - **LoveIt** theme is all about and the core-concepts behind it. + + + +## 1 Requirements + +Thanks to the simplicity of Hugo, [Hugo](https://gohugo.io/) is the only dependency of this theme. + +Just install latest version of [:(far fa-file-archive fa-fw): Hugo (> 0.62.0)](https://gohugo.io/getting-started/installing/) for your OS (**Windows**, **Linux**, **macOS**). + +{{< admonition note "Why not support earlier versions of Hugo?" >}} +Since [Markdown Render Hooks](https://gohugo.io/getting-started/configuration-markup#markdown-render-hooks) was introduced in the [Hugo Christmas Edition](https://gohugo.io/news/0.62.0-relnotes/), this theme only supports Hugo versions above **0.62.0**. +{{< /admonition >}} + +{{< admonition tip "Hugo extended version is recommended" >}} +Since some features of this theme need to processes :(fab fa-sass fa-fw): SCSS to :(fab fa-css3 fa-fw): CSS, it is recommended to use Hugo **extended** version for better experience. +{{< /admonition >}} + +## 2 Installation + +The following steps are here to help you initialize your new website. If you don’t know Hugo at all, we strongly suggest you learn more about it by following this [great documentation for beginners](https://gohugo.io/getting-started/quick-start/). + +### 2.1 Create Your Project + +Hugo provides a `new` command to create a new website: + +```bash +hugo new site my_website +cd my_website +``` + +### 2.2 Install the Theme + +The **LoveIt** theme’s repository is: [https://github.com/dillonzq/LoveIt](https://github.com/dillonzq/LoveIt). + +You can download the [latest release :(far fa-file-archive fa-fw): .zip file](https://github.com/dillonzq/LoveIt/releases) of the theme and extract it in the `themes` directory. + +Alternatively, clone this repository to the `themes` directory: + +```bash +git clone https://github.com/dillonzq/LoveIt.git themes/LoveIt +``` + +Or, create an empty git repository and make this repository a submodule of your site directory: + +```bash +git init +git submodule add https://github.com/dillonzq/LoveIt.git themes/LoveIt +``` + +### 2.3 Basic Configuration {#basic-configuration} + +The following is a basic configuration for the LoveIt theme: + +```toml +baseURL = "http://example.org/" +# [en, zh-cn, fr, ...] determines default content language +defaultContentLanguage = "en" +# language code +languageCode = "en" +title = "My New Hugo Site" + +# Change the default theme to be use when building the site with Hugo +theme = "LoveIt" + +[params] + # LoveIt theme version + version = "0.2.X" + +[menu] + [[menu.main]] + identifier = "posts" + # you can add extra information before the name (HTML format is supported), such as icons + pre = "" + # you can add extra information after the name (HTML format is supported), such as icons + post = "" + name = "Posts" + url = "/posts/" + # title will be shown when you hover on this menu link + title = "" + weight = 1 + [[menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Tags" + url = "/tags/" + title = "" + weight = 2 + [[menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "Categories" + url = "/categories/" + title = "" + weight = 3 + +# Markup related configuration in Hugo +[markup] + # Syntax Highlighting (https://gohugo.io/content-management/syntax-highlighting) + [markup.highlight] + # false is a necessary configuration (https://github.com/dillonzq/LoveIt/issues/158) + noClasses = false +``` + +{{< admonition >}} +When building the website, you can set a theme by using `--theme` option. However, we suggest you modify the configuration file (**config.toml**) and set the theme as the default. +{{< /admonition >}} + +### 2.4 Create Your First Post + +Here is the way to create your first post: + +```bash +hugo new posts/first_post.md +``` + +Feel free to edit the post file by adding some sample content and replacing the title value in the beginning of the file. + +{{< admonition >}} +By default all posts and pages are created as a draft. If you want to render these pages, remove the property `draft: true` from the metadata, set the property `draft: false` or add `-D`/`--buildDrafts` parameter to `hugo` command. +{{< /admonition >}} + +### 2.5 Launching the Website Locally + +Launch by using the following command: + +```bash +hugo serve +``` + +Go to `http://localhost:1313`. + +![Basic configuration preview](basic-configuration-preview.png "Basic configuration preview") + +{{< admonition tip >}} +When you run `hugo serve`, when the contents of the files change, the page automatically refreshes with the changes. +{{< /admonition >}} + +{{< admonition >}} +Since the theme use `.Scratch` in Hugo to implement some features, +it is highly recommended that you add `--disableFastRender` parameter to `hugo server` command for the live preview of the page you are editing. + +```bash +hugo serve --disableFastRender +``` +{{< /admonition >}} + +### 2.6 Build the Website + +When your site is ready to deploy, run the following command: + +```bash +hugo +``` + +A `public` folder will be generated, containing all static content and assets for your website. It can now be deployed on any web server. + +{{< admonition tip >}} +The website can be automatically published and hosted with [Netlify](https://www.netlify.com/) (Read more about [Automated HUGO deployments with Netlify](https://www.netlify.com/blog/2015/07/30/hosting-hugo-on-netlifyinsanely-fast-deploys/)). +Alternatively, you can use [AWS Amplify](https://gohugo.io/hosting-and-deployment/hosting-on-aws-amplify/), [Github pages](https://gohugo.io/hosting-and-deployment/hosting-on-github/), [Render](https://gohugo.io/hosting-and-deployment/hosting-on-render/) and more... +{{< /admonition >}} + +## 3 Configuration + +### 3.1 Site Configuration {#site-configuration} + +In addition to [Hugo global configuration](https://gohugo.io/overview/configuration/) and [menu configuration](#basic-configuration), **LoveIt** lets you define the following parameters in your site configuration (here is a `config.toml`, whose values are default). + +Please open the code block below to view the complete sample configuration :(far fa-hand-point-down fa-fw):: + +```toml +[params] + # {{< version 0.2.0 changed >}} LoveIt theme version + version = "0.2.X" + # site description + description = "This is My New Hugo Site" + # site keywords + keywords = ["Theme", "Hugo"] + # site default theme ("light", "dark", "auto") + defaultTheme = "auto" + # public git repo url only then enableGitInfo is true + gitRepo = "" + # {{< version 0.1.1 >}} which hash function used for SRI, when empty, no SRI is used + # ("sha256", "sha384", "sha512", "md5") + fingerprint = "" + # {{< version 0.2.0 >}} date format + dateFormat = "2006-01-02" + # website images for Open Graph and Twitter Cards + images = ["/logo.png"] + + # {{< version 0.2.0 >}} App icon config + [params.app] + # optional site title override for the app when added to an iOS home screen or Android launcher + title = "LoveIt" + # whether to omit favicon resource links + noFavicon = false + # modern SVG favicon to use in place of older style .png and .ico files + svgFavicon = "" + # Android browser theme color + themeColor = "#ffffff" + # Safari mask icon color + iconColor = "#5bbad5" + # Windows v8-10 tile color + tileColor = "#da532c" + + # {{< version 0.2.0 >}} Search config + [params.search] + enable = true + # type of search engine ("lunr", "algolia") + type = "lunr" + # max index length of the chunked content + contentLength = 4000 + # placeholder of the search bar + placeholder = "" + # {{< version 0.2.1 >}} max number of results length + maxResultLength = 10 + # {{< version 0.2.3 >}} snippet length of the result + snippetLength = 30 + # {{< version 0.2.1 >}} HTML tag name of the highlight part in results + highlightTag = "em" + # {{< version 0.2.4 >}} whether to use the absolute URL based on the baseURL in search index + absoluteURL = false + [params.search.algolia] + index = "" + appID = "" + searchKey = "" + + # Header config + [params.header] + # desktop header mode ("fixed", "normal", "auto") + desktopMode = "fixed" + # mobile header mode ("fixed", "normal", "auto") + mobileMode = "auto" + # {{< version 0.2.0 >}} Header title config + [params.header.title] + # URL of the LOGO + logo = "" + # title name + name = "" + # you can add extra information before the name (HTML format is supported), such as icons + pre = "" + # you can add extra information after the name (HTML format is supported), such as icons + post = "" + # {{< version 0.2.5 >}} whether to use typeit animation for title name + typeit = false + + # Footer config + [params.footer] + enable = true + # {{< version 0.2.0 >}} Custom content (HTML format is supported) + custom = '' + # {{< version 0.2.0 >}} whether to show Hugo and theme info + hugo = true + # {{< version 0.2.0 >}} whether to show copyright info + copyright = true + # {{< version 0.2.0 >}} whether to show the author + author = true + # Site creation time + since = 2019 + # ICP info only in China (HTML format is supported) + icp = "" + # license info (HTML format is supported) + license = 'CC BY-NC 4.0' + + # {{< version 0.2.0 >}} Section (all posts) page config + [params.section] + # special amount of posts in each section page + paginate = 20 + # date format (month and day) + dateFormat = "01-02" + # amount of RSS pages + rss = 10 + + # {{< version 0.2.0 >}} List (category or tag) page config + [params.list] + # special amount of posts in each list page + paginate = 20 + # date format (month and day) + dateFormat = "01-02" + # amount of RSS pages + rss = 10 + + # Home page config + [params.home] + # {{< version 0.2.0 >}} amount of RSS pages + rss = 10 + # Home page profile + [params.home.profile] + enable = true + # Gravatar Email for preferred avatar in home page + gravatarEmail = "" + # URL of avatar shown in home page + avatarURL = "/images/avatar.png" + # {{< version 0.2.7 changed >}} title shown in home page (HTML format is supported) + title = "" + # subtitle shown in home page + subtitle = "This is My New Hugo Site" + # whether to use typeit animation for subtitle + typeit = true + # whether to show social links + social = true + # {{< version 0.2.0 >}} disclaimer (HTML format is supported) + disclaimer = "" + # Home page posts + [params.home.posts] + enable = true + # special amount of posts in each home posts page + paginate = 6 + # {{< version 0.2.0 deleted >}} replaced with hiddenFromHomePage in params.page + # default behavior when you don't set "hiddenFromHomePage" in front matter + defaultHiddenFromHomePage = false + + # Social config about the author + [params.social] + GitHub = "xxxx" + Linkedin = "" + Twitter = "xxxx" + Instagram = "xxxx" + Facebook = "xxxx" + Telegram = "xxxx" + Medium = "" + Gitlab = "" + Youtubelegacy = "" + Youtubecustom = "" + Youtubechannel = "" + Tumblr = "" + Quora = "" + Keybase = "" + Pinterest = "" + Reddit = "" + Codepen = "" + FreeCodeCamp = "" + Bitbucket = "" + Stackoverflow = "" + Weibo = "" + Odnoklassniki = "" + VK = "" + Flickr = "" + Xing = "" + Snapchat = "" + Soundcloud = "" + Spotify = "" + Bandcamp = "" + Paypal = "" + Fivehundredpx = "" + Mix = "" + Goodreads = "" + Lastfm = "" + Foursquare = "" + Hackernews = "" + Kickstarter = "" + Patreon = "" + Steam = "" + Twitch = "" + Strava = "" + Skype = "" + Whatsapp = "" + Zhihu = "" + Douban = "" + Angellist = "" + Slidershare = "" + Jsfiddle = "" + Deviantart = "" + Behance = "" + Dribbble = "" + Wordpress = "" + Vine = "" + Googlescholar = "" + Researchgate = "" + Mastodon = "" + Thingiverse = "" + Devto = "" + Gitea = "" + XMPP = "" + Matrix = "" + Bilibili = "" + Email = "xxxx@xxxx.com" + RSS = true # {{< version 0.2.0 >}} + + # {{< version 0.2.0 changed >}} Page config + [params.page] + # {{< version 0.2.0 >}} whether to hide a page from home page + hiddenFromHomePage = false + # {{< version 0.2.0 >}} whether to hide a page from search results + hiddenFromSearch = false + # {{< version 0.2.0 >}} whether to enable twemoji + twemoji = false + # whether to enable lightgallery + lightgallery = false + # {{< version 0.2.0 >}} whether to enable the ruby extended syntax + ruby = true + # {{< version 0.2.0 >}} whether to enable the fraction extended syntax + fraction = true + # {{< version 0.2.0 >}} whether to enable the fontawesome extended syntax + fontawesome = true + # whether to show link to Raw Markdown content of the content + linkToMarkdown = true + # {{< version 0.2.4 >}} whether to show the full text content in RSS + rssFullText = false + # {{< version 0.2.0 >}} Table of the contents config + [params.page.toc] + # whether to enable the table of the contents + enable = true + # {{< version 0.2.9 >}} whether to keep the static table of the contents in front of the post + keepStatic = true + # whether to make the table of the contents in the sidebar automatically collapsed + auto = true + # {{< version 0.2.0 changed >}} {{< link "https://katex.org/" KaTeX >}} mathematical formulas + [params.page.math] + enable = true + # default block delimiter is $$ ... $$ and \\[ ... \\] + blockLeftDelimiter = "" + blockRightDelimiter = "" + # default inline delimiter is $ ... $ and \\( ... \\) + inlineLeftDelimiter = "" + inlineRightDelimiter = "" + # KaTeX extension copy_tex + copyTex = true + # KaTeX extension mhchem + mhchem = true + # {{< version 0.2.0 >}} Code config + [params.page.code] + # whether to show the copy button of the code block + copy = true + # the maximum number of lines of displayed code by default + maxShownLines = 10 + # {{< version 0.2.0 >}} {{< link "https://docs.mapbox.com/mapbox-gl-js" "Mapbox GL JS" >}} config + [params.page.mapbox] + # access token of Mapbox GL JS + accessToken = "" + # style for the light theme + lightStyle = "mapbox://styles/mapbox/light-v9" + # style for the dark theme + darkStyle = "mapbox://styles/mapbox/dark-v9" + # whether to add {{< link "https://docs.mapbox.com/mapbox-gl-js/api#navigationcontrol" NavigationControl >}} + navigation = true + # whether to add {{< link "https://docs.mapbox.com/mapbox-gl-js/api#geolocatecontrol" GeolocateControl >}} + geolocate = true + # whether to add {{< link "https://docs.mapbox.com/mapbox-gl-js/api#scalecontrol" ScaleControl >}} + scale = true + # whether to add {{< link "https://docs.mapbox.com/mapbox-gl-js/api#fullscreencontrol" FullscreenControl >}} + fullscreen = true + # {{< version 0.2.0 changed >}} social share links in post page + [params.page.share] + enable = true + Twitter = true + Facebook = true + Linkedin = false + Whatsapp = true + Pinterest = false + Tumblr = false + HackerNews = false + Reddit = false + VK = false + Buffer = false + Xing = false + Line = true + Instapaper = false + Pocket = false + Digg = false + Stumbleupon = false + Flipboard = false + Weibo = true + Renren = false + Myspace = true + Blogger = true + Baidu = false + Odnoklassniki = false + Evernote = true + Skype = false + Trello = false + Mix = false + # {{< version 0.2.0 changed >}} Comment config + [params.page.comment] + enable = true + # {{< link "https://disqus.com/" Disqus >}} comment config + [params.page.comment.disqus] + # {{< version 0.1.1 >}} + enable = false + # Disqus shortname to use Disqus in posts + shortname = "" + # {{< link "https://github.com/gitalk/gitalk" Gitalk >}} comment config + [params.page.comment.gitalk] + # {{< version 0.1.1 >}} + enable = false + owner = "" + repo = "" + clientId = "" + clientSecret = "" + # {{< link "https://github.com/xCss/Valine" Valine >}} comment config + [params.page.comment.valine] + enable = false + appId = "" + appKey = "" + placeholder = "" + avatar = "mp" + meta= "" + pageSize = 10 + lang = "" + visitor = true + recordIP = true + highlight = true + enableQQ = false + serverURLs = "" + # {{< version 0.2.6 >}} emoji data file name, default is "google.yml" + # ("apple.yml", "google.yml", "facebook.yml", "twitter.yml") + # located in "themes/LoveIt/assets/data/emoji/" directory + # you can store your own data files in the same path under your project: + # "assets/data/emoji/" + emoji = "" + # {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook comment" >}} config + [params.page.comment.facebook] + enable = false + width = "100%" + numPosts = 10 + appId = "" + languageCode = "" + # {{< version 0.2.0 >}} {{< link "https://comments.app/" "Telegram comments" >}} config + [params.page.comment.telegram] + enable = false + siteID = "" + limit = 5 + height = "" + color = "" + colorful = true + dislikes = false + outlined = false + # {{< version 0.2.0 >}} {{< link "https://commento.io/" "Commento" >}} comment config + [params.page.comment.commento] + enable = false + # {{< version 0.2.5 >}} {{< link "https://utteranc.es/" "Utterances" >}} comment config + [params.page.comment.utterances] + enable = false + # owner/repo + repo = "" + issueTerm = "pathname" + label = "" + lightTheme = "github-light" + darkTheme = "github-dark" + # {{< version 0.2.7 >}} Third-party library config + [params.page.library] + [params.page.library.css] + # someCSS = "some.css" + # located in "assets/" + # Or + # someCSS = "https://cdn.example.com/some.css" + [params.page.library.js] + # someJavascript = "some.js" + # located in "assets/" + # Or + # someJavascript = "https://cdn.example.com/some.js" + # {{< version 0.2.10 changed >}} Page SEO config + [params.page.seo] + # image URL + images = [] + # Publisher info + [params.page.seo.publisher] + name = "" + logoUrl = "" + + # {{< version 0.2.5 >}} TypeIt config + [params.typeit] + # typing speed between each step (measured in milliseconds) + speed = 100 + # blinking speed of the cursor (measured in milliseconds) + cursorSpeed = 1000 + # character used for the cursor (HTML format is supported) + cursorChar = "|" + # cursor duration after typing finishing (measured in milliseconds, "-1" means unlimited) + duration = -1 + + # Site verification code config for Google/Bing/Yandex/Pinterest/Baidu + [params.verification] + google = "" + bing = "" + yandex = "" + pinterest = "" + baidu = "" + + # {{< version 0.2.10 >}} Site SEO config + [params.seo] + # image URL + image = "" + # thumbnail URL + thumbnailUrl = "" + + # {{< version 0.2.0 >}} Analytics config + [params.analytics] + enable = false + # Google Analytics + [params.analytics.google] + id = "" + # whether to anonymize IP + anonymizeIP = true + # Fathom Analytics + [params.analytics.fathom] + id = "" + # server url for your tracker if you're self hosting + server = "" + + # {{< version 0.2.7 >}} Cookie consent config + [params.cookieconsent] + enable = true + # text strings used for Cookie consent banner + [params.cookieconsent.content] + message = "" + dismiss = "" + link = "" + + # {{< version 0.2.7 changed >}} CDN config for third-party library files + [params.cdn] + # CDN data file name, disabled by default + # ("jsdelivr.yml") + # located in "themes/LoveIt/assets/data/cdn/" directory + # you can store your own data files in the same path under your project: + # "assets/data/cdn/" + data = "" + + # {{< version 0.2.8 >}} Compatibility config + [params.compatibility] + # whether to use Polyfill.io to be compatible with older browsers + polyfill = false + # whether to use object-fit-images to be compatible with older browsers + objectFit = false + +# Markup related config in Hugo +[markup] + # {{< link "https://gohugo.io/content-management/syntax-highlighting" "Syntax Highlighting" >}} + [markup.highlight] + codeFences = true + guessSyntax = true + lineNos = true + lineNumbersInTable = true + # false is a necessary configuration + # ({{< link "https://github.com/dillonzq/LoveIt/issues/158" >}}) + noClasses = false + # Goldmark is from Hugo 0.60 the default library used for Markdown + [markup.goldmark] + [markup.goldmark.extensions] + definitionList = true + footnote = true + linkify = true + strikethrough = true + table = true + taskList = true + typographer = true + [markup.goldmark.renderer] + # whether to use HTML tags directly in the document + unsafe = true + # Table Of Contents settings + [markup.tableOfContents] + startLevel = 2 + endLevel = 6 + +# Author config +[author] + name = "xxxx" + email = "" + link = "" + +# Sitemap config +[sitemap] + changefreq = "weekly" + filename = "sitemap.xml" + priority = 0.5 + +# {{< link "https://gohugo.io/content-management/urls#permalinks" "Permalinks config" >}} +[Permalinks] + # posts = ":year/:month/:filename" + posts = ":filename" + +# {{< link "https://gohugo.io/about/hugo-and-gdpr/" "Privacy config" >}} +[privacy] + # {{< version 0.2.0 deleted >}} privacy of the Google Analytics (replaced by params.analytics.google) + [privacy.googleAnalytics] + # ... + [privacy.twitter] + enableDNT = true + [privacy.youtube] + privacyEnhanced = true + +# Options to make output .md files +[mediaTypes] + [mediaTypes."text/plain"] + suffixes = ["md"] + +# Options to make output .md files +[outputFormats.MarkDown] + mediaType = "text/plain" + isPlainText = true + isHTML = false + +# Options to make hugo output files +[outputs] + # {{< version 0.2.0 changed >}} + home = ["HTML", "RSS", "JSON"] + page = ["HTML", "MarkDown"] + section = ["HTML", "RSS"] + taxonomy = ["HTML", "RSS"] + taxonomyTerm = ["HTML"] +``` + +{{< admonition >}} +Note that some of these parameters are explained in details in other sections of this documentation. +{{< /admonition >}} + +{{< admonition note "Hugo environments" >}} +Default environments are `development` with `hugo serve` and `production` with `hugo`. + +Due to limitations in the local `development` environment, +the **comment system**, **CDN** and **fingerprint** will not be enabled in the `development` environment. + +You could enable these features with `hugo serve -e production`. +{{< /admonition >}} + +{{< admonition tip "Tips about CDN Configuration" >}} +{{< version 0.2.7 changed >}} + +```toml +[params.cdn] + # CDN data file name, disabled by default + # ("jsdelivr.yml") + data = "" +```` + +The default CDN data file is located in `themes/LoveIt/assets/data/cdn/` directory. +You can store your own data file in the same path under your project: `assets/data/cdn/`. +{{< /admonition >}} + +{{< admonition tip "Tips about social Configuration" >}} +{{< version 0.2.0 >}} + +You can directly set your ID to get a default social link and its icon: + +```toml +[params.social] + Mastodon = "@xxxx" +``` + +The social link generated is `https://mastodon.technology/@xxxx`. + +Or You can set more options through a dict: + +```toml +[params.social] + [params.social.Mastodon] + # weight when arranging icons (the greater the weight, the later the icon is positioned) + weight = 0 + # your social ID + id = "@xxxx" + # prefix of your social link + prefix = "https://mastodon.social/" + # content hovering on the icon + title = "Mastodon" +``` + +The default data of all supported social links is located in `themes/LoveIt/assets/data/social.yaml`, +which is you can refer to. +{{< /admonition >}} + +![Complete configuration preview](complete-configuration-preview.png "Complete configuration preview") + +### 3.2 Favicons, Browserconfig, Manifest + +It is recommended to put your own favicons: + +* apple-touch-icon.png (180x180) +* favicon-32x32.png (32x32) +* favicon-16x16.png (16x16) +* mstile-150x150.png (150x150) +* android-chrome-192x192.png (192x192) +* android-chrome-512x512.png (512x512) + +into `/static`. They’re easily created via [https://realfavicongenerator.net/](https://realfavicongenerator.net/). + +Customize `browserconfig.xml` and `site.webmanifest` to set theme-color and background-color. + +### 3.3 Style Customization + +{{< version 0.2.8 changed >}} + +{{< admonition >}} +Hugo **extended** version is necessary for the style customization. +{{< /admonition >}} + +**LoveIt** theme has been built to be as configurable as possible by defining custom `.scss` style files. + +The directory including the custom `.scss` style files is `assets/css` relative to **your project root directory**. + +In `assets/css/_override.scss`, you can override the variables in `themes/LoveIt/assets/css/_variables.scss` to customize the style. + +Here is a example: + +```scss +@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,700&display=swap&subset=latin-ext'); +$code-font-family: Fira Mono, Source Code Pro, Menlo, Consolas, Monaco, monospace; +``` + +In `assets/css/_custom.scss`, you can add some css style code to customize the style. + +## 4 Multilingual and i18n + +**LoveIt** theme is fully compatible with Hugo multilingual mode, which provides in-browser language switching. + +![Language Switch](language-switch.gif "Language Switch") + +### 4.1 Compatibility {#language-compatibility} + +{{< version 0.2.10 changed >}} + +| Language | Hugo Code | HTML `lang` Attribute | Theme Docs | Lunr.js Support | +|:-------------------- |:---------:|:---------------------:|:-----------------------------:|:-----------------------------:| +| English | `en` | `en` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | +| Simplified Chinese | `zh-cn` | `zh-CN` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | +| French | `fr` | `fr` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Polish | `pl` | `pl` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | +| Brazilian Portuguese | `pt-br` | `pt-BR` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Italian | `it` | `it` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Spanish | `es` | `es` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Serbian | `sr` | `sr` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | +| Russian | `ru` | `ru` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Romanian | `ro` | `ro` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Vietnamese | `vi` | `vi` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | + +### 4.2 Basic Configuration + +After learning [how Hugo handle multilingual websites](https://gohugo.io/content-management/multilingual), define your languages in your [site configuration](#site-configuration). + +For example with English, Chinese and French website: + +```toml +# [en, zh-cn, fr, pl, ...] determines default content language +defaultContentLanguage = "en" + +[languages] + [languages.en] + weight = 1 + title = "My New Hugo Site" + languageCode = "en" + languageName = "English" + [[languages.en.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "Posts" + url = "/posts/" + title = "" + weight = 1 + [[languages.en.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Tags" + url = "/tags/" + title = "" + weight = 2 + [[languages.en.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "Categories" + url = "/categories/" + title = "" + weight = 3 + + [languages.zh-cn] + weight = 2 + title = "我的全新 Hugo 网站" + # language code, CN only here + languageCode = "zh-CN" + languageName = "简体中文" + # whether to include Chinese/Japanese/Korean + hasCJKLanguage = true + [[languages.zh-cn.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "文章" + url = "/posts/" + title = "" + weight = 1 + [[languages.zh-cn.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "标签" + url = "/tags/" + title = "" + weight = 2 + [[languages.zh-cn.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "分类" + url = "/categories/" + title = "" + weight = 3 + + [languages.fr] + weight = 3 + title = "Mon nouveau site Hugo" + languageCode = "fr" + languageName = "Français" + [[languages.fr.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "Postes" + url = "/posts/" + title = "" + weight = 1 + [[languages.fr.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Balises" + url = "/tags/" + title = "" + weight = 2 + [[languages.fr.menu.main]] + identifier = "categories" + name = "Catégories" + pre = "" + post = "" + url = "/categories/" + title = "" + weight = 3 +``` + +Then, for each new page, append the language code to the file name. + +Single file `my-page.md` is split in three files: + +* in English: `my-page.en.md` +* in Chinese: `my-page.zh-cn.md` +* in French: `my-page.fr.md` + +{{< admonition >}} +Be aware that only translated pages are displayed in menu. It’s not replaced with default language content. +{{< /admonition >}} + +{{< admonition tip >}} +Use [Front Matter parameter](https://gohugo.io/content-management/multilingual#translate-your-content) to translate urls too. +{{< /admonition >}} + +### 4.3 Overwrite Translation Strings + +Translations strings are used for common default values used in the theme. Translations are available in [some languages](#language-compatibility), but you may use another language or want to override default values. + +To override these values, create a new file in your local i18n folder `i18n/.toml` and inspire yourself from `themes/LoveIt/i18n/en.toml`. + +By the way, as these translations could be used by other people, please take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! + +## 5 Search + +{{< version 0.2.0 >}} + +Based on [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/), searching is supported in **LoveIt** theme. + +### 5.1 Output Configuration + +In order to generate `index.json` for searching, add `JSON` output file type to the `home` of the `outputs` part in your [site configuration](#site-configuration). + +```toml +[outputs] + home = ["HTML", "RSS", "JSON"] +``` + +### 5.2 Search Configuration + +Based on `index.json` generated by Hugo, you could activate searching. + +Here is the search configuration in your [site configuration](#site-configuration): + +```toml +[params.search] + enable = true + # type of search engine ("lunr", "algolia") + type = "lunr" + # max index length of the chunked content + contentLength = 4000 + # placeholder of the search bar + placeholder = "" + # {{< version 0.2.1 >}} max number of results length + maxResultLength = 10 + # {{< version 0.2.3 >}} snippet length of the result + snippetLength = 30 + # {{< version 0.2.1 >}} HTML tag name of the highlight part in results + highlightTag = "em" + # {{< version 0.2.4 >}} whether to use the absolute URL based on the baseURL in search index + absoluteURL = false + [params.search.algolia] + index = "" + appID = "" + searchKey = "" +``` + +{{< admonition note "How to choose search engine?" >}} +The following is a comparison of two search engines: + +* `lunr`: simple, no need to synchronize `index.json`, no limit for `contentLength`, + but high bandwidth and low performance (Especially for Chinese which needs a large segmentit library) +* `algolia`: high performance and low bandwidth, but need to synchronize `index.json` and limit for `contentLength` + +{{< version 0.2.3 >}} The content of the post is separated by `h2` and `h3` HTML tag to improve query performance and basically implement full-text search. +`contentLength` is used to limit the max index length of the part starting with `h2` and `h3` HTML tag. +{{< /admonition >}} + +{{< admonition tip "Tips about algolia" >}} +You need to upload `index.json` files to algolia to activate searching. +You could upload the `index.json` files by browsers but a CLI tool may be better. +[Algolia Atomic](https://github.com/chrisdmacrae/atomic-algolia) is a good choice. +To be compatible with Hugo multilingual mode, +you need to upload different `index.json` for each language to the different index of algolia, such as `zh-cn/index.json` or `fr/index.json`... +{{< /admonition >}} diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.fr.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.fr.md new file mode 100644 index 00000000..9ec51071 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.fr.md @@ -0,0 +1,1046 @@ +--- +weight: 1 +title: "Thème Documentation - Concepts de Base" +date: 2020-03-06T21:40:32+08:00 +lastmod: 2020-03-06T21:40:32+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Découvrez en quoi consiste le thème Hugo - LoveIt et les concepts fondamentaux qui le sous-tendent." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["installation", "configuration"] +categories: ["documentation"] + +lightgallery: true + +toc: + auto: false +--- + +Découvrez en quoi consiste le thème Hugo - **LoveIt** et les concepts fondamentaux qui le sous-tendent. + + + +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + +## 1 Requirements + +Thanks to the simplicity of Hugo, [Hugo](https://gohugo.io/) is the only dependency of this theme. + +Just install latest version of [:(far fa-file-archive fa-fw): Hugo (> 0.62.0)](https://gohugo.io/getting-started/installing/) for your OS (**Windows**, **Linux**, **macOS**). + +{{< admonition note "Why not support earlier versions of Hugo?" >}} +Since [Markdown Render Hooks](https://gohugo.io/getting-started/configuration-markup#markdown-render-hooks) was introduced in the [Hugo Christmas Edition](https://gohugo.io/news/0.62.0-relnotes/), this theme only supports Hugo versions above **0.62.0**. +{{< /admonition >}} + +{{< admonition tip "Hugo extended version is recommended" >}} +Since some features of this theme need to processes :(fab fa-sass fa-fw): SCSS to :(fab fa-css3 fa-fw): CSS, it is recommended to use Hugo **extended** version for better experience. +{{< /admonition >}} + +## 2 Installation + +The following steps are here to help you initialize your new website. If you don’t know Hugo at all, we strongly suggest you learn more about it by following this [great documentation for beginners](https://gohugo.io/getting-started/quick-start/). + +### 2.1 Create Your Project + +Hugo provides a `new` command to create a new website: + +```bash +hugo new site my_website +cd my_website +``` + +### 2.2 Install the Theme + +The **LoveIt** theme’s repository is: [https://github.com/dillonzq/LoveIt](https://github.com/dillonzq/LoveIt). + +You can download the [latest release :(far fa-file-archive fa-fw): .zip file](https://github.com/dillonzq/LoveIt/releases) of the theme and extract it in the `themes` directory. + +Alternatively, clone this repository to the `themes` directory: + +```bash +git clone https://github.com/dillonzq/LoveIt.git themes/LoveIt +``` + +Or, create an empty git repository and make this repository a submodule of your site directory: + +```bash +git init +git submodule add https://github.com/dillonzq/LoveIt.git themes/LoveIt +``` + +### 2.3 Basic Configuration {#basic-configuration} + +The following is a basic configuration for the LoveIt theme: + +```toml +baseURL = "http://example.org/" +# [en, zh-cn, fr, ...] determines default content language +defaultContentLanguage = "en" +# language code +languageCode = "en" +title = "My New Hugo Site" + +# Change the default theme to be use when building the site with Hugo +theme = "LoveIt" + +[params] + # LoveIt theme version + version = "0.2.X" + +[menu] + [[menu.main]] + identifier = "posts" + # you can add extra information before the name (HTML format is supported), such as icons + pre = "" + # you can add extra information after the name (HTML format is supported), such as icons + post = "" + name = "Posts" + url = "/posts/" + # title will be shown when you hover on this menu link + title = "" + weight = 1 + [[menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Tags" + url = "/tags/" + title = "" + weight = 2 + [[menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "Categories" + url = "/categories/" + title = "" + weight = 3 + +# Markup related configuration in Hugo +[markup] + # Syntax Highlighting (https://gohugo.io/content-management/syntax-highlighting) + [markup.highlight] + # false is a necessary configuration (https://github.com/dillonzq/LoveIt/issues/158) + noClasses = false +``` + +{{< admonition >}} +When building the website, you can set a theme by using `--theme` option. However, we suggest you modify the configuration file (**config.toml**) and set the theme as the default. +{{< /admonition >}} + +### 2.4 Create Your First Post + +Here is the way to create your first post: + +```bash +hugo new posts/first_post.md +``` + +Feel free to edit the post file by adding some sample content and replacing the title value in the beginning of the file. + +{{< admonition >}} +By default all posts and pages are created as a draft. If you want to render these pages, remove the property `draft: true` from the metadata, set the property `draft: false` or add `-D`/`--buildDrafts` parameter to `hugo` command. +{{< /admonition >}} + +### 2.5 Launching the Website Locally + +Launch by using the following command: + +```bash +hugo serve +``` + +Go to `http://localhost:1313`. + +![Basic configuration preview](basic-configuration-preview.png "Basic configuration preview") + +{{< admonition tip >}} +When you run `hugo serve`, when the contents of the files change, the page automatically refreshes with the changes. +{{< /admonition >}} + +{{< admonition >}} +Since the theme use `.Scratch` in Hugo to implement some features, +it is highly recommended that you add `--disableFastRender` parameter to `hugo server` command for the live preview of the page you are editing. + +```bash +hugo serve --disableFastRender +``` +{{< /admonition >}} + +### 2.6 Build the Website + +When your site is ready to deploy, run the following command: + +```bash +hugo +``` + +A `public` folder will be generated, containing all static content and assets for your website. It can now be deployed on any web server. + +{{< admonition tip >}} +The website can be automatically published and hosted with [Netlify](https://www.netlify.com/) (Read more about [Automated HUGO deployments with Netlify](https://www.netlify.com/blog/2015/07/30/hosting-hugo-on-netlifyinsanely-fast-deploys/)). +Alternatively, you can use [AWS Amplify](https://gohugo.io/hosting-and-deployment/hosting-on-aws-amplify/), [Github pages](https://gohugo.io/hosting-and-deployment/hosting-on-github/), [Render](https://gohugo.io/hosting-and-deployment/hosting-on-render/) and more... +{{< /admonition >}} + +## 3 Configuration + +### 3.1 Site Configuration {#site-configuration} + +In addition to [Hugo global configuration](https://gohugo.io/overview/configuration/) and [menu configuration](#basic-configuration), **LoveIt** lets you define the following parameters in your site configuration (here is a `config.toml`, whose values are default). + +Please open the code block below to view the complete sample configuration :(far fa-hand-point-down fa-fw):: + +```toml +[params] + # {{< version 0.2.0 changed >}} LoveIt theme version + version = "0.2.X" + # site description + description = "This is My New Hugo Site" + # site keywords + keywords = ["Theme", "Hugo"] + # site default theme ("light", "dark", "auto") + defaultTheme = "auto" + # public git repo url only then enableGitInfo is true + gitRepo = "" + # {{< version 0.1.1 >}} which hash function used for SRI, when empty, no SRI is used + # ("sha256", "sha384", "sha512", "md5") + fingerprint = "" + # {{< version 0.2.0 >}} date format + dateFormat = "2006-01-02" + # website images for Open Graph and Twitter Cards + images = ["/logo.png"] + + # {{< version 0.2.0 >}} App icon config + [params.app] + # optional site title override for the app when added to an iOS home screen or Android launcher + title = "LoveIt" + # whether to omit favicon resource links + noFavicon = false + # modern SVG favicon to use in place of older style .png and .ico files + svgFavicon = "" + # Android browser theme color + themeColor = "#ffffff" + # Safari mask icon color + iconColor = "#5bbad5" + # Windows v8-10 tile color + tileColor = "#da532c" + + # {{< version 0.2.0 >}} Search config + [params.search] + enable = true + # type of search engine ("lunr", "algolia") + type = "lunr" + # max index length of the chunked content + contentLength = 4000 + # placeholder of the search bar + placeholder = "" + # {{< version 0.2.1 >}} max number of results length + maxResultLength = 10 + # {{< version 0.2.3 >}} snippet length of the result + snippetLength = 30 + # {{< version 0.2.1 >}} HTML tag name of the highlight part in results + highlightTag = "em" + # {{< version 0.2.4 >}} whether to use the absolute URL based on the baseURL in search index + absoluteURL = false + [params.search.algolia] + index = "" + appID = "" + searchKey = "" + + # Header config + [params.header] + # desktop header mode ("fixed", "normal", "auto") + desktopMode = "fixed" + # mobile header mode ("fixed", "normal", "auto") + mobileMode = "auto" + # {{< version 0.2.0 >}} Header title config + [params.header.title] + # URL of the LOGO + logo = "" + # title name + name = "" + # you can add extra information before the name (HTML format is supported), such as icons + pre = "" + # you can add extra information after the name (HTML format is supported), such as icons + post = "" + # {{< version 0.2.5 >}} whether to use typeit animation for title name + typeit = false + + # Footer config + [params.footer] + enable = true + # {{< version 0.2.0 >}} Custom content (HTML format is supported) + custom = '' + # {{< version 0.2.0 >}} whether to show Hugo and theme info + hugo = true + # {{< version 0.2.0 >}} whether to show copyright info + copyright = true + # {{< version 0.2.0 >}} whether to show the author + author = true + # Site creation time + since = 2019 + # ICP info only in China (HTML format is supported) + icp = "" + # license info (HTML format is supported) + license = 'CC BY-NC 4.0' + + # {{< version 0.2.0 >}} Section (all posts) page config + [params.section] + # special amount of posts in each section page + paginate = 20 + # date format (month and day) + dateFormat = "01-02" + # amount of RSS pages + rss = 10 + + # {{< version 0.2.0 >}} List (category or tag) page config + [params.list] + # special amount of posts in each list page + paginate = 20 + # date format (month and day) + dateFormat = "01-02" + # amount of RSS pages + rss = 10 + + # Home page config + [params.home] + # {{< version 0.2.0 >}} amount of RSS pages + rss = 10 + # Home page profile + [params.home.profile] + enable = true + # Gravatar Email for preferred avatar in home page + gravatarEmail = "" + # URL of avatar shown in home page + avatarURL = "/images/avatar.png" + # {{< version 0.2.7 changed >}} title shown in home page (HTML format is supported) + title = "" + # subtitle shown in home page + subtitle = "This is My New Hugo Site" + # whether to use typeit animation for subtitle + typeit = true + # whether to show social links + social = true + # {{< version 0.2.0 >}} disclaimer (HTML format is supported) + disclaimer = "" + # Home page posts + [params.home.posts] + enable = true + # special amount of posts in each home posts page + paginate = 6 + # {{< version 0.2.0 deleted >}} replaced with hiddenFromHomePage in params.page + # default behavior when you don't set "hiddenFromHomePage" in front matter + defaultHiddenFromHomePage = false + + # Social config about the author + [params.social] + GitHub = "xxxx" + Linkedin = "" + Twitter = "xxxx" + Instagram = "xxxx" + Facebook = "xxxx" + Telegram = "xxxx" + Medium = "" + Gitlab = "" + Youtubelegacy = "" + Youtubecustom = "" + Youtubechannel = "" + Tumblr = "" + Quora = "" + Keybase = "" + Pinterest = "" + Reddit = "" + Codepen = "" + FreeCodeCamp = "" + Bitbucket = "" + Stackoverflow = "" + Weibo = "" + Odnoklassniki = "" + VK = "" + Flickr = "" + Xing = "" + Snapchat = "" + Soundcloud = "" + Spotify = "" + Bandcamp = "" + Paypal = "" + Fivehundredpx = "" + Mix = "" + Goodreads = "" + Lastfm = "" + Foursquare = "" + Hackernews = "" + Kickstarter = "" + Patreon = "" + Steam = "" + Twitch = "" + Strava = "" + Skype = "" + Whatsapp = "" + Zhihu = "" + Douban = "" + Angellist = "" + Slidershare = "" + Jsfiddle = "" + Deviantart = "" + Behance = "" + Dribbble = "" + Wordpress = "" + Vine = "" + Googlescholar = "" + Researchgate = "" + Mastodon = "" + Thingiverse = "" + Devto = "" + Gitea = "" + XMPP = "" + Matrix = "" + Bilibili = "" + Email = "xxxx@xxxx.com" + RSS = true # {{< version 0.2.0 >}} + + # {{< version 0.2.0 changed >}} Page config + [params.page] + # {{< version 0.2.0 >}} whether to hide a page from home page + hiddenFromHomePage = false + # {{< version 0.2.0 >}} whether to hide a page from search results + hiddenFromSearch = false + # {{< version 0.2.0 >}} whether to enable twemoji + twemoji = false + # whether to enable lightgallery + lightgallery = false + # {{< version 0.2.0 >}} whether to enable the ruby extended syntax + ruby = true + # {{< version 0.2.0 >}} whether to enable the fraction extended syntax + fraction = true + # {{< version 0.2.0 >}} whether to enable the fontawesome extended syntax + fontawesome = true + # whether to show link to Raw Markdown content of the content + linkToMarkdown = true + # {{< version 0.2.4 >}} whether to show the full text content in RSS + rssFullText = false + # {{< version 0.2.0 >}} Table of the contents config + [params.page.toc] + # whether to enable the table of the contents + enable = true + # {{< version 0.2.9 >}} whether to keep the static table of the contents in front of the post + keepStatic = true + # whether to make the table of the contents in the sidebar automatically collapsed + auto = true + # {{< version 0.2.0 changed >}} {{< link "https://katex.org/" KaTeX >}} mathematical formulas + [params.page.math] + enable = true + # default block delimiter is $$ ... $$ and \\[ ... \\] + blockLeftDelimiter = "" + blockRightDelimiter = "" + # default inline delimiter is $ ... $ and \\( ... \\) + inlineLeftDelimiter = "" + inlineRightDelimiter = "" + # KaTeX extension copy_tex + copyTex = true + # KaTeX extension mhchem + mhchem = true + # {{< version 0.2.0 >}} Code config + [params.page.code] + # whether to show the copy button of the code block + copy = true + # the maximum number of lines of displayed code by default + maxShownLines = 10 + # {{< version 0.2.0 >}} {{< link "https://docs.mapbox.com/mapbox-gl-js" "Mapbox GL JS" >}} config + [params.page.mapbox] + # access token of Mapbox GL JS + accessToken = "" + # style for the light theme + lightStyle = "mapbox://styles/mapbox/light-v9" + # style for the dark theme + darkStyle = "mapbox://styles/mapbox/dark-v9" + # whether to add {{< link "https://docs.mapbox.com/mapbox-gl-js/api#navigationcontrol" NavigationControl >}} + navigation = true + # whether to add {{< link "https://docs.mapbox.com/mapbox-gl-js/api#geolocatecontrol" GeolocateControl >}} + geolocate = true + # whether to add {{< link "https://docs.mapbox.com/mapbox-gl-js/api#scalecontrol" ScaleControl >}} + scale = true + # whether to add {{< link "https://docs.mapbox.com/mapbox-gl-js/api#fullscreencontrol" FullscreenControl >}} + fullscreen = true + # {{< version 0.2.0 changed >}} social share links in post page + [params.page.share] + enable = true + Twitter = true + Facebook = true + Linkedin = false + Whatsapp = true + Pinterest = false + Tumblr = false + HackerNews = false + Reddit = false + VK = false + Buffer = false + Xing = false + Line = true + Instapaper = false + Pocket = false + Digg = false + Stumbleupon = false + Flipboard = false + Weibo = true + Renren = false + Myspace = true + Blogger = true + Baidu = false + Odnoklassniki = false + Evernote = true + Skype = false + Trello = false + Mix = false + # {{< version 0.2.0 changed >}} Comment config + [params.page.comment] + enable = true + # {{< link "https://disqus.com/" Disqus >}} comment config + [params.page.comment.disqus] + # {{< version 0.1.1 >}} + enable = false + # Disqus shortname to use Disqus in posts + shortname = "" + # {{< link "https://github.com/gitalk/gitalk" Gitalk >}} comment config + [params.page.comment.gitalk] + # {{< version 0.1.1 >}} + enable = false + owner = "" + repo = "" + clientId = "" + clientSecret = "" + # {{< link "https://github.com/xCss/Valine" Valine >}} comment config + [params.page.comment.valine] + enable = false + appId = "" + appKey = "" + placeholder = "" + avatar = "mp" + meta= "" + pageSize = 10 + lang = "" + visitor = true + recordIP = true + highlight = true + enableQQ = false + serverURLs = "" + # {{< version 0.2.6 >}} emoji data file name, default is "google.yml" + # ("apple.yml", "google.yml", "facebook.yml", "twitter.yml") + # located in "themes/LoveIt/assets/data/emoji/" directory + # you can store your own data files in the same path under your project: + # "assets/data/emoji/" + emoji = "" + # {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook comment" >}} config + [params.page.comment.facebook] + enable = false + width = "100%" + numPosts = 10 + appId = "" + languageCode = "" + # {{< version 0.2.0 >}} {{< link "https://comments.app/" "Telegram comments" >}} config + [params.page.comment.telegram] + enable = false + siteID = "" + limit = 5 + height = "" + color = "" + colorful = true + dislikes = false + outlined = false + # {{< version 0.2.0 >}} {{< link "https://commento.io/" "Commento" >}} comment config + [params.page.comment.commento] + enable = false + # {{< version 0.2.5 >}} {{< link "https://utteranc.es/" "Utterances" >}} comment config + [params.page.comment.utterances] + enable = false + # owner/repo + repo = "" + issueTerm = "pathname" + label = "" + lightTheme = "github-light" + darkTheme = "github-dark" + # {{< version 0.2.7 >}} Third-party library config + [params.page.library] + [params.page.library.css] + # someCSS = "some.css" + # located in "assets/" + # Or + # someCSS = "https://cdn.example.com/some.css" + [params.page.library.js] + # someJavascript = "some.js" + # located in "assets/" + # Or + # someJavascript = "https://cdn.example.com/some.js" + # {{< version 0.2.10 changed >}} Page SEO config + [params.page.seo] + # image URL + images = [] + # Publisher info + [params.page.seo.publisher] + name = "" + logoUrl = "" + + # {{< version 0.2.5 >}} TypeIt config + [params.typeit] + # typing speed between each step (measured in milliseconds) + speed = 100 + # blinking speed of the cursor (measured in milliseconds) + cursorSpeed = 1000 + # character used for the cursor (HTML format is supported) + cursorChar = "|" + # cursor duration after typing finishing (measured in milliseconds, "-1" means unlimited) + duration = -1 + + # Site verification code config for Google/Bing/Yandex/Pinterest/Baidu + [params.verification] + google = "" + bing = "" + yandex = "" + pinterest = "" + baidu = "" + + # {{< version 0.2.10 >}} Site SEO config + [params.seo] + # image URL + image = "" + # thumbnail URL + thumbnailUrl = "" + + # {{< version 0.2.0 >}} Analytics config + [params.analytics] + enable = false + # Google Analytics + [params.analytics.google] + id = "" + # whether to anonymize IP + anonymizeIP = true + # Fathom Analytics + [params.analytics.fathom] + id = "" + # server url for your tracker if you're self hosting + server = "" + + # {{< version 0.2.7 >}} Cookie consent config + [params.cookieconsent] + enable = true + # text strings used for Cookie consent banner + [params.cookieconsent.content] + message = "" + dismiss = "" + link = "" + + # {{< version 0.2.7 changed >}} CDN config for third-party library files + [params.cdn] + # CDN data file name, disabled by default + # ("jsdelivr.yml") + # located in "themes/LoveIt/assets/data/cdn/" directory + # you can store your own data files in the same path under your project: + # "assets/data/cdn/" + data = "" + + # {{< version 0.2.8 >}} Compatibility config + [params.compatibility] + # whether to use Polyfill.io to be compatible with older browsers + polyfill = false + # whether to use object-fit-images to be compatible with older browsers + objectFit = false + +# Markup related config in Hugo +[markup] + # {{< link "https://gohugo.io/content-management/syntax-highlighting" "Syntax Highlighting" >}} + [markup.highlight] + codeFences = true + guessSyntax = true + lineNos = true + lineNumbersInTable = true + # false is a necessary configuration + # ({{< link "https://github.com/dillonzq/LoveIt/issues/158" >}}) + noClasses = false + # Goldmark is from Hugo 0.60 the default library used for Markdown + [markup.goldmark] + [markup.goldmark.extensions] + definitionList = true + footnote = true + linkify = true + strikethrough = true + table = true + taskList = true + typographer = true + [markup.goldmark.renderer] + # whether to use HTML tags directly in the document + unsafe = true + # Table Of Contents settings + [markup.tableOfContents] + startLevel = 2 + endLevel = 6 + +# Author config +[author] + name = "xxxx" + email = "" + link = "" + +# Sitemap config +[sitemap] + changefreq = "weekly" + filename = "sitemap.xml" + priority = 0.5 + +# {{< link "https://gohugo.io/content-management/urls#permalinks" "Permalinks config" >}} +[Permalinks] + # posts = ":year/:month/:filename" + posts = ":filename" + +# {{< link "https://gohugo.io/about/hugo-and-gdpr/" "Privacy config" >}} +[privacy] + # {{< version 0.2.0 deleted >}} privacy of the Google Analytics (replaced by params.analytics.google) + [privacy.googleAnalytics] + # ... + [privacy.twitter] + enableDNT = true + [privacy.youtube] + privacyEnhanced = true + +# Options to make output .md files +[mediaTypes] + [mediaTypes."text/plain"] + suffixes = ["md"] + +# Options to make output .md files +[outputFormats.MarkDown] + mediaType = "text/plain" + isPlainText = true + isHTML = false + +# Options to make hugo output files +[outputs] + # {{< version 0.2.0 changed >}} + home = ["HTML", "RSS", "JSON"] + page = ["HTML", "MarkDown"] + section = ["HTML", "RSS"] + taxonomy = ["HTML", "RSS"] + taxonomyTerm = ["HTML"] +``` + +{{< admonition >}} +Note that some of these parameters are explained in details in other sections of this documentation. +{{< /admonition >}} + +{{< admonition note "Hugo environments" >}} +Default environments are `development` with `hugo serve` and `production` with `hugo`. + +Due to limitations in the local `development` environment, +the **comment system**, **CDN** and **fingerprint** will not be enabled in the `development` environment. + +You could enable these features with `hugo serve -e production`. +{{< /admonition >}} + +{{< admonition tip "Tips about CDN Configuration" >}} +{{< version 0.2.7 changed >}} + +```toml +[params.cdn] + # CDN data file name, disabled by default + # ("jsdelivr.yml") + data = "" +```` + +The default CDN data file is located in `themes/LoveIt/assets/data/cdn/` directory. +You can store your own data file in the same path under your project: `assets/data/cdn/`. +{{< /admonition >}} + +{{< admonition tip "Tips about social Configuration" >}} +{{< version 0.2.0 >}} + +You can directly set your ID to get a default social link and its icon: + +```toml +[params.social] + Mastodon = "@xxxx" +``` + +The social link generated is `https://mastodon.technology/@xxxx`. + +Or You can set more options through a dict: + +```toml +[params.social] + [params.social.Mastodon] + # weight when arranging icons (the greater the weight, the later the icon is positioned) + weight = 0 + # your social ID + id = "@xxxx" + # prefix of your social link + prefix = "https://mastodon.social/" + # content hovering on the icon + title = "Mastodon" +``` + +The default data of all supported social links is located in `themes/LoveIt/assets/data/social.yaml`, +which is you can refer to. +{{< /admonition >}} + +![Complete configuration preview](complete-configuration-preview.png "Complete configuration preview") + +### 3.2 Favicons, Browserconfig, Manifest + +It is recommended to put your own favicons: + +* apple-touch-icon.png (180x180) +* favicon-32x32.png (32x32) +* favicon-16x16.png (16x16) +* mstile-150x150.png (150x150) +* android-chrome-192x192.png (192x192) +* android-chrome-512x512.png (512x512) + +into `/static`. They’re easily created via [https://realfavicongenerator.net/](https://realfavicongenerator.net/). + +Customize `browserconfig.xml` and `site.webmanifest` to set theme-color and background-color. + +### 3.3 Style Customization + +{{< version 0.2.8 changed >}} + +{{< admonition >}} +Hugo **extended** version is necessary for the style customization. +{{< /admonition >}} + +**LoveIt** theme has been built to be as configurable as possible by defining custom `.scss` style files. + +The directory including the custom `.scss` style files is `assets/css` relative to **your project root directory**. + +In `assets/css/_override.scss`, you can override the variables in `themes/LoveIt/assets/css/_variables.scss` to customize the style. + +Here is a example: + +```scss +@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,700&display=swap&subset=latin-ext'); +$code-font-family: Fira Mono, Source Code Pro, Menlo, Consolas, Monaco, monospace; +``` + +In `assets/css/_custom.scss`, you can add some css style code to customize the style. + +## 4 Multilingual and i18n + +**LoveIt** theme is fully compatible with Hugo multilingual mode, which provides in-browser language switching. + +![Language Switch](language-switch.gif "Language Switch") + +### 4.1 Compatibility {#language-compatibility} + +{{< version 0.2.10 changed >}} + +| Language | Hugo Code | HTML `lang` Attribute | Theme Docs | Lunr.js Support | +|:-------------------- |:---------:|:---------------------:|:-----------------------------:|:-----------------------------:| +| English | `en` | `en` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | +| Simplified Chinese | `zh-cn` | `zh-CN` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | +| French | `fr` | `fr` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Polish | `pl` | `pl` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | +| Brazilian Portuguese | `pt-br` | `pt-BR` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Italian | `it` | `it` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Spanish | `es` | `es` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Serbian | `sr` | `sr` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | +| Russian | `ru` | `ru` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Romanian | `ro` | `ro` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| Vietnamese | `vi` | `vi` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | + +### 4.2 Basic Configuration + +After learning [how Hugo handle multilingual websites](https://gohugo.io/content-management/multilingual), define your languages in your [site configuration](#site-configuration). + +For example with English, Chinese and French website: + +```toml +# [en, zh-cn, fr, pl, ...] determines default content language +defaultContentLanguage = "en" + +[languages] + [languages.en] + weight = 1 + title = "My New Hugo Site" + languageCode = "en" + languageName = "English" + [[languages.en.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "Posts" + url = "/posts/" + title = "" + weight = 1 + [[languages.en.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Tags" + url = "/tags/" + title = "" + weight = 2 + [[languages.en.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "Categories" + url = "/categories/" + title = "" + weight = 3 + + [languages.zh-cn] + weight = 2 + title = "我的全新 Hugo 网站" + # language code, CN only here + languageCode = "zh-CN" + languageName = "简体中文" + # whether to include Chinese/Japanese/Korean + hasCJKLanguage = true + [[languages.zh-cn.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "文章" + url = "/posts/" + title = "" + weight = 1 + [[languages.zh-cn.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "标签" + url = "/tags/" + title = "" + weight = 2 + [[languages.zh-cn.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "分类" + url = "/categories/" + title = "" + weight = 3 + + [languages.fr] + weight = 3 + title = "Mon nouveau site Hugo" + languageCode = "fr" + languageName = "Français" + [[languages.fr.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "Postes" + url = "/posts/" + title = "" + weight = 1 + [[languages.fr.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Balises" + url = "/tags/" + title = "" + weight = 2 + [[languages.fr.menu.main]] + identifier = "categories" + name = "Catégories" + pre = "" + post = "" + url = "/categories/" + title = "" + weight = 3 +``` + +Then, for each new page, append the language code to the file name. + +Single file `my-page.md` is split in three files: + +* in English: `my-page.en.md` +* in Chinese: `my-page.zh-cn.md` +* in French: `my-page.fr.md` + +{{< admonition >}} +Be aware that only translated pages are displayed in menu. It’s not replaced with default language content. +{{< /admonition >}} + +{{< admonition tip >}} +Use [Front Matter parameter](https://gohugo.io/content-management/multilingual#translate-your-content) to translate urls too. +{{< /admonition >}} + +### 4.3 Overwrite Translation Strings + +Translations strings are used for common default values used in the theme. Translations are available in [some languages](#language-compatibility), but you may use another language or want to override default values. + +To override these values, create a new file in your local i18n folder `i18n/.toml` and inspire yourself from `themes/LoveIt/i18n/en.toml`. + +By the way, as these translations could be used by other people, please take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! + +## 5 Search + +{{< version 0.2.0 >}} + +Based on [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/), searching is supported in **LoveIt** theme. + +### 5.1 Output Configuration + +In order to generate `index.json` for searching, add `JSON` output file type to the `home` of the `outputs` part in your [site configuration](#site-configuration). + +```toml +[outputs] + home = ["HTML", "RSS", "JSON"] +``` + +### 5.2 Search Configuration + +Based on `index.json` generated by Hugo, you could activate searching. + +Here is the search configuration in your [site configuration](#site-configuration): + +```toml +[params.search] + enable = true + # type of search engine ("lunr", "algolia") + type = "lunr" + # max index length of the chunked content + contentLength = 4000 + # placeholder of the search bar + placeholder = "" + # {{< version 0.2.1 >}} max number of results length + maxResultLength = 10 + # {{< version 0.2.3 >}} snippet length of the result + snippetLength = 30 + # {{< version 0.2.1 >}} HTML tag name of the highlight part in results + highlightTag = "em" + # {{< version 0.2.4 >}} whether to use the absolute URL based on the baseURL in search index + absoluteURL = false + [params.search.algolia] + index = "" + appID = "" + searchKey = "" +``` + +{{< admonition note "How to choose search engine?" >}} +The following is a comparison of two search engines: + +* `lunr`: simple, no need to synchronize `index.json`, no limit for `contentLength`, + but high bandwidth and low performance (Especially for Chinese which needs a large segmentit library) +* `algolia`: high performance and low bandwidth, but need to synchronize `index.json` and limit for `contentLength` + +{{< version 0.2.3 >}} The content of the post is separated by `h2` and `h3` HTML tag to improve query performance and basically implement full-text search. +`contentLength` is used to limit the max index length of the part starting with `h2` and `h3` HTML tag. +{{< /admonition >}} + +{{< admonition tip "Tips about algolia" >}} +You need to upload `index.json` files to algolia to activate searching. +You could upload the `index.json` files by browsers but a CLI tool may be better. +[Algolia Atomic](https://github.com/chrisdmacrae/atomic-algolia) is a good choice. +To be compatible with Hugo multilingual mode, +you need to upload different `index.json` for each language to the different index of algolia, such as `zh-cn/index.json` or `fr/index.json`... +{{< /admonition >}} diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md new file mode 100644 index 00000000..884e367d --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md @@ -0,0 +1,1042 @@ +--- +weight: 1 +title: "主题文档 - 基本概念" +date: 2020-03-06T21:40:32+08:00 +lastmod: 2020-03-06T21:40:32+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "探索 Hugo - LoveIt 主题的全部内容和背后的核心概念." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["installation", "configuration"] +categories: ["documentation"] + +lightgallery: true + +toc: + auto: false +--- + +探索 Hugo - **LoveIt** 主题的全部内容和背后的核心概念. + + + +## 1 准备 + +由于 Hugo 提供的便利性, [Hugo](https://gohugo.io/) 本身是这个主题唯一的依赖. + +直接安装满足你操作系统 (**Windows**, **Linux**, **macOS**) 的最新版本 [:(far fa-file-archive fa-fw): Hugo (> 0.62.0)](https://gohugo.io/getting-started/installing/). + +{{< admonition note "为什么不支持早期版本的 Hugo?" >}} +由于 [Markdown 渲染钩子函数](https://gohugo.io/getting-started/configuration-markup#markdown-render-hooks) 在 [Hugo 圣诞节版本](https://gohugo.io/news/0.62.0-relnotes/) 中被引入, 本主题只支持高于 **0.62.0** 的 Hugo 版本. +{{< /admonition >}} + +{{< admonition tip "推荐使用 Hugo extended 版本" >}} +由于这个主题的一些特性需要将 :(fab fa-sass fa-fw): SCSS 转换为 :(fab fa-css3 fa-fw): CSS, 推荐使用 Hugo **extended** 版本来获得更好的使用体验. +{{< /admonition >}} + +## 2 安装 + +以下步骤可帮助你初始化新网站. 如果你根本不了解 Hugo, 我们强烈建议你按照此 [快速入门文档](https://gohugo.io/getting-started/quick-start/) 进一步了解它. + +### 2.1 创建你的项目 + +Hugo 提供了一个 `new` 命令来创建一个新的网站: + +```bash +hugo new site my_website +cd my_website +``` + +### 2.2 安装主题 + +**LoveIt** 主题的仓库是: [https://github.com/dillonzq/LoveIt](https://github.com/dillonzq/LoveIt). + +你可以下载主题的 [最新版本 :(far fa-file-archive fa-fw): .zip 文件](https://github.com/dillonzq/LoveIt/releases) 并且解压放到 `themes` 目录. + +另外, 也可以直接把这个主题克隆到 `themes` 目录: + +```bash +git clone https://github.com/dillonzq/LoveIt.git themes/LoveIt +``` + +或者, 初始化你的项目目录为 git 仓库, 并且把主题仓库作为你的网站目录的子模块: + +```bash +git init +git submodule add https://github.com/dillonzq/LoveIt.git themes/LoveIt +``` + +### 2.3 基础配置 {#basic-configuration} + +以下是 LoveIt 主题的基本配置: + +```toml +baseURL = "http://example.org/" +# [en, zh-cn, fr, ...] 设置默认的语言 +defaultContentLanguage = "zh-cn" +# 网站语言, 仅在这里 CN 大写 +languageCode = "zh-CN" +# 是否包括中日韩文字 +hasCJKLanguage = true +# 网站标题 +title = "我的全新 Hugo 网站" + +# 更改使用 Hugo 构建网站时使用的默认主题 +theme = "LoveIt" + +[params] + # LoveIt 主题版本 + version = "0.2.X" + +[menu] + [[menu.main]] + identifier = "posts" + # 你可以在名称 (允许 HTML 格式) 之前添加其他信息, 例如图标 + pre = "" + # 你可以在名称 (允许 HTML 格式) 之后添加其他信息, 例如图标 + post = "" + name = "文章" + url = "/posts/" + # 当你将鼠标悬停在此菜单链接上时, 将显示的标题 + title = "" + weight = 1 + [[menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "标签" + url = "/tags/" + title = "" + weight = 2 + [[menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "分类" + url = "/categories/" + title = "" + weight = 3 + +# Hugo 解析文档的配置 +[markup] + # 语法高亮设置 (https://gohugo.io/content-management/syntax-highlighting) + [markup.highlight] + # false 是必要的设置 (https://github.com/dillonzq/LoveIt/issues/158) + noClasses = false +``` + +{{< admonition >}} +在构建网站时, 你可以使用 `--theme` 选项设置主题. 但是, 我建议你修改配置文件 (**config.toml**) 将本主题设置为默认主题. +{{< /admonition >}} + +### 2.4 创建你的第一篇文章 + +以下是创建第一篇文章的方法: + +```bash +hugo new posts/first_post.md +``` + +通过添加一些示例内容并替换文件开头的标题, 你可以随意编辑文章. + +{{< admonition >}} +默认情况下, 所有文章和页面均作为草稿创建. 如果想要渲染这些页面, 请从元数据中删除属性 `draft: true`, 设置属性 `draft: false` 或者为 `hugo` 命令添加 `-D`/`--buildDrafts` 参数. +{{< /admonition >}} + +### 2.5 在本地启动网站 + +使用以下命令启动网站: + +```bash +hugo serve +``` + +去查看 `http://localhost:1313`. + +![基本配置下的预览](basic-configuration-preview.zh-cn.png "基本配置下的预览") + +{{< admonition tip >}} +当你运行 `hugo serve` 时, 当文件内容更改时, 页面会随着更改自动刷新. +{{< /admonition >}} + +{{< admonition >}} +由于本主题使用了 Hugo 中的 `.Scratch` 来实现一些特性, +非常建议你为 `hugo server` 命令添加 `--disableFastRender` 参数来实时预览你正在编辑的文章页面. + +```bash +hugo serve --disableFastRender +``` +{{< /admonition >}} + +### 2.6 构建网站 + +当你准备好部署你的网站时, 运行以下命令: + +```bash +hugo +``` + +会生成一个 `public` 目录, 其中包含你网站的所有静态内容和资源. 现在可以将其部署在任何 Web 服务器上. + +{{< admonition tip >}} +网站内容可以通过 [Netlify](https://www.netlify.com/) 自动发布和托管 (了解有关[通过 Netlify 进行 HUGO 自动化部署](https://www.netlify.com/blog/2015/07/30/hosting-hugo-on-netlifyinsanely-fast-deploys/) 的更多信息). +或者, 您可以使用 [AWS Amplify](https://gohugo.io/hosting-and-deployment/hosting-on-aws-amplify/), [Github pages](https://gohugo.io/hosting-and-deployment/hosting-on-github/), [Render](https://gohugo.io/hosting-and-deployment/hosting-on-render/) 以及更多... +{{< /admonition >}} + +## 3 配置 + +### 3.1 网站配置 {#site-configuration} + +除了 [Hugo 全局配置](https://gohugo.io/overview/configuration/) 和 [菜单配置](#basic-configuration) 之外, **LoveIt** 主题还允许您在网站配置中定义以下参数 (这是一个示例 `config.toml`, 其内容为默认值). + +请打开下面的代码块查看完整的示例配置 :(far fa-hand-point-down fa-fw):: + +```toml +[params] + # {{< version 0.2.0 changed >}} LoveIt 主题版本 + version = "0.2.X" + # 网站描述 + description = "这是我的全新 Hugo 网站" + # 网站关键词 + keywords = ["Theme", "Hugo"] + # 网站默认主题样式 ("light", "dark", "auto") + defaultTheme = "auto" + # 公共 git 仓库路径,仅在 enableGitInfo 设为 true 时有效 + gitRepo = "" + # {{< version 0.1.1 >}} 哪种哈希函数用来 SRI, 为空时表示不使用 SRI + # ("sha256", "sha384", "sha512", "md5") + fingerprint = "" + # {{< version 0.2.0 >}} 日期格式 + dateFormat = "2006-01-02" + # 网站图片, 用于 Open Graph 和 Twitter Cards + images = ["/logo.png"] + + # {{< version 0.2.0 >}} 应用图标配置 + [params.app] + # 当添加到 iOS 主屏幕或者 Android 启动器时的标题, 覆盖默认标题 + title = "LoveIt" + # 是否隐藏网站图标资源链接 + noFavicon = false + # 更现代的 SVG 网站图标, 可替代旧的 .png 和 .ico 文件 + svgFavicon = "" + # Android 浏览器主题色 + themeColor = "#ffffff" + # Safari 图标颜色 + iconColor = "#5bbad5" + # Windows v8-10磁贴颜色 + tileColor = "#da532c" + + # {{< version 0.2.0 >}} 搜索配置 + [params.search] + enable = true + # 搜索引擎的类型 ("lunr", "algolia") + type = "lunr" + # 文章内容最长索引长度 + contentLength = 4000 + # 搜索框的占位提示语 + placeholder = "" + # {{< version 0.2.1 >}} 最大结果数目 + maxResultLength = 10 + # {{< version 0.2.3 >}} 结果内容片段长度 + snippetLength = 50 + # {{< version 0.2.1 >}} 搜索结果中高亮部分的 HTML 标签 + highlightTag = "em" + # {{< version 0.2.4 >}} 是否在搜索索引中使用基于 baseURL 的绝对路径 + absoluteURL = false + [params.search.algolia] + index = "" + appID = "" + searchKey = "" + + # 页面头部导航栏配置 + [params.header] + # 桌面端导航栏模式 ("fixed", "normal", "auto") + desktopMode = "fixed" + # 移动端导航栏模式 ("fixed", "normal", "auto") + mobileMode = "auto" + # {{< version 0.2.0 >}} 页面头部导航栏标题配置 + [params.header.title] + # LOGO 的 URL + logo = "" + # 标题名称 + name = "" + # 你可以在名称 (允许 HTML 格式) 之前添加其他信息, 例如图标 + pre = "" + # 你可以在名称 (允许 HTML 格式) 之后添加其他信息, 例如图标 + post = "" + # {{< version 0.2.5 >}} 是否为标题显示打字机动画 + typeit = false + + # 页面底部信息配置 + [params.footer] + enable = true + # {{< version 0.2.0 >}} 自定义内容 (支持 HTML 格式) + custom = '' + # {{< version 0.2.0 >}} 是否显示 Hugo 和主题信息 + hugo = true + # {{< version 0.2.0 >}} 是否显示版权信息 + copyright = true + # {{< version 0.2.0 >}} 是否显示作者 + author = true + # 网站创立年份 + since = 2019 + # ICP 备案信息,仅在中国使用 (支持 HTML 格式) + icp = "" + # 许可协议信息 (支持 HTML 格式) + license = 'CC BY-NC 4.0' + + # {{< version 0.2.0 >}} Section (所有文章) 页面配置 + [params.section] + # section 页面每页显示文章数量 + paginate = 20 + # 日期格式 (月和日) + dateFormat = "01-02" + # RSS 文章数目 + rss = 10 + + # {{< version 0.2.0 >}} List (目录或标签) 页面配置 + [params.list] + # list 页面每页显示文章数量 + paginate = 20 + # 日期格式 (月和日) + dateFormat = "01-02" + # RSS 文章数目 + rss = 10 + + # 主页配置 + [params.home] + # {{< version 0.2.0 >}} RSS 文章数目 + rss = 10 + # 主页个人信息 + [params.home.profile] + enable = true + # Gravatar 邮箱,用于优先在主页显示的头像 + gravatarEmail = "" + # 主页显示头像的 URL + avatarURL = "/images/avatar.png" + # {{< version 0.2.7 changed >}} 主页显示的网站标题 (支持 HTML 格式) + title = "" + # 主页显示的网站副标题 + subtitle = "这是我的全新 Hugo 网站" + # 是否为副标题显示打字机动画 + typeit = true + # 是否显示社交账号 + social = true + # {{< version 0.2.0 >}} 免责声明 (支持 HTML 格式) + disclaimer = "" + # 主页文章列表 + [params.home.posts] + enable = true + # 主页每页显示文章数量 + paginate = 6 + # {{< version 0.2.0 deleted >}} 被 params.page 中的 hiddenFromHomePage 替代 + # 当你没有在文章前置参数中设置 "hiddenFromHomePage" 时的默认行为 + defaultHiddenFromHomePage = false + + # 作者的社交信息设置 + [params.social] + GitHub = "xxxx" + Linkedin = "" + Twitter = "xxxx" + Instagram = "xxxx" + Facebook = "xxxx" + Telegram = "xxxx" + Medium = "" + Gitlab = "" + Youtubelegacy = "" + Youtubecustom = "" + Youtubechannel = "" + Tumblr = "" + Quora = "" + Keybase = "" + Pinterest = "" + Reddit = "" + Codepen = "" + FreeCodeCamp = "" + Bitbucket = "" + Stackoverflow = "" + Weibo = "" + Odnoklassniki = "" + VK = "" + Flickr = "" + Xing = "" + Snapchat = "" + Soundcloud = "" + Spotify = "" + Bandcamp = "" + Paypal = "" + Fivehundredpx = "" + Mix = "" + Goodreads = "" + Lastfm = "" + Foursquare = "" + Hackernews = "" + Kickstarter = "" + Patreon = "" + Steam = "" + Twitch = "" + Strava = "" + Skype = "" + Whatsapp = "" + Zhihu = "" + Douban = "" + Angellist = "" + Slidershare = "" + Jsfiddle = "" + Deviantart = "" + Behance = "" + Dribbble = "" + Wordpress = "" + Vine = "" + Googlescholar = "" + Researchgate = "" + Mastodon = "" + Thingiverse = "" + Devto = "" + Gitea = "" + XMPP = "" + Matrix = "" + Bilibili = "" + Email = "xxxx@xxxx.com" + RSS = true # {{< version 0.2.0 >}} + + # {{< version 0.2.0 changed >}} 文章页面配置 + [params.page] + # {{< version 0.2.0 >}} 是否在主页隐藏一篇文章 + hiddenFromHomePage = false + # {{< version 0.2.0 >}} 是否在搜索结果中隐藏一篇文章 + hiddenFromSearch = false + # {{< version 0.2.0 >}} 是否使用 twemoji + twemoji = false + # 是否使用 lightgallery + lightgallery = false + # {{< version 0.2.0 >}} 是否使用 ruby 扩展语法 + ruby = true + # {{< version 0.2.0 >}} 是否使用 fraction 扩展语法 + fraction = true + # {{< version 0.2.0 >}} 是否使用 fontawesome 扩展语法 + fontawesome = true + # 是否在文章页面显示原始 Markdown 文档链接 + linkToMarkdown = true + # {{< version 0.2.4 >}} 是否在 RSS 中显示全文内容 + rssFullText = false + # {{< version 0.2.0 >}} 目录配置 + [params.page.toc] + # 是否使用目录 + enable = true + # {{< version 0.2.9 >}} 是否保持使用文章前面的静态目录 + keepStatic = true + # 是否使侧边目录自动折叠展开 + auto = true + # {{< version 0.2.0 >}} 代码配置 + [params.page.code] + # 是否显示代码块的复制按钮 + copy = true + # 默认展开显示的代码行数 + maxShownLines = 10 + # {{< version 0.2.0 changed >}} {{< link "https://katex.org/" KaTeX >}} 数学公式 + [params.page.math] + enable = true + # 默认块定界符是 $$ ... $$ 和 \\[ ... \\] + blockLeftDelimiter = "" + blockRightDelimiter = "" + # 默认行内定界符是 $ ... $ 和 \\( ... \\) + inlineLeftDelimiter = "" + inlineRightDelimiter = "" + # KaTeX 插件 copy_tex + copyTex = true + # KaTeX 插件 mhchem + mhchem = true + # {{< version 0.2.0 >}} {{< link "https://docs.mapbox.com/mapbox-gl-js" "Mapbox GL JS" >}} 配置 + [params.page.mapbox] + # Mapbox GL JS 的 access token + accessToken = "" + # 浅色主题的地图样式 + lightStyle = "mapbox://styles/mapbox/light-v9" + # 深色主题的地图样式 + darkStyle = "mapbox://styles/mapbox/dark-v9" + # 是否添加 {{< link "https://docs.mapbox.com/mapbox-gl-js/api#navigationcontrol" NavigationControl >}} + navigation = true + # 是否添加 {{< link "https://docs.mapbox.com/mapbox-gl-js/api#geolocatecontrol" GeolocateControl >}} + geolocate = true + # 是否添加 {{< link "https://docs.mapbox.com/mapbox-gl-js/api#scalecontrol" ScaleControl >}} + scale = true + # 是否添加 {{< link "https://docs.mapbox.com/mapbox-gl-js/api#fullscreencontrol" FullscreenControl >}} + fullscreen = true + # {{< version 0.2.0 changed >}} 文章页面的分享信息设置 + [params.page.share] + enable = true + Twitter = true + Facebook = true + Linkedin = false + Whatsapp = true + Pinterest = false + Tumblr = false + HackerNews = false + Reddit = false + VK = false + Buffer = false + Xing = false + Line = true + Instapaper = false + Pocket = false + Digg = false + Stumbleupon = false + Flipboard = false + Weibo = true + Renren = false + Myspace = true + Blogger = true + Baidu = false + Odnoklassniki = false + Evernote = true + Skype = false + Trello = false + Mix = false + # {{< version 0.2.0 changed >}} 评论系统设置 + [params.page.comment] + enable = true + # {{< link "https://disqus.com/" Disqus >}} 评论系统设置 + [params.page.comment.disqus] + # {{< version 0.1.1 >}} + enable = false + # Disqus 的 shortname,用来在文章中启用 Disqus 评论系统 + shortname = "" + # {{< link "https://github.com/gitalk/gitalk" Gitalk >}} 评论系统设置 + [params.page.comment.gitalk] + # {{< version 0.1.1 >}} + enable = false + owner = "" + repo = "" + clientId = "" + clientSecret = "" + # {{< link "https://github.com/xCss/Valine" Valine >}} 评论系统设置 + [params.page.comment.valine] + enable = false + appId = "" + appKey = "" + placeholder = "" + avatar = "mp" + meta= "" + pageSize = 10 + lang = "" + visitor = true + recordIP = true + highlight = true + enableQQ = false + serverURLs = "" + # {{< version 0.2.6 >}} emoji 数据文件名称, 默认是 "google.yml" + # ("apple.yml", "google.yml", "facebook.yml", "twitter.yml") + # 位于 "themes/LoveIt/assets/data/emoji/" 目录 + # 可以在你的项目下相同路径存放你自己的数据文件: + # "assets/data/emoji/" + emoji = "" + # {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook 评论系统" >}}设置 + [params.page.comment.facebook] + enable = false + width = "100%" + numPosts = 10 + appId = "" + languageCode = "zh_CN" + # {{< version 0.2.0 >}} {{< link "https://comments.app/" "Telegram Comments" >}} 评论系统设置 + [params.page.comment.telegram] + enable = false + siteID = "" + limit = 5 + height = "" + color = "" + colorful = true + dislikes = false + outlined = false + # {{< version 0.2.0 >}} {{< link "https://commento.io/" "Commento" >}} 评论系统设置 + [params.page.comment.commento] + enable = false + # {{< version 0.2.5 >}} {{< link "https://utteranc.es/" "Utterances" >}} 评论系统设置 + [params.page.comment.utterances] + enable = false + # owner/repo + repo = "" + issueTerm = "pathname" + label = "" + lightTheme = "github-light" + darkTheme = "github-dark" + # {{< version 0.2.7 >}} 第三方库配置 + [params.page.library] + [params.page.library.css] + # someCSS = "some.css" + # 位于 "assets/" + # 或者 + # someCSS = "https://cdn.example.com/some.css" + [params.page.library.js] + # someJavascript = "some.js" + # 位于 "assets/" + # 或者 + # someJavascript = "https://cdn.example.com/some.js" + # {{< version 0.2.10 changed >}} 页面 SEO 配置 + [params.page.seo] + # 图片 URL + images = [] + # 出版者信息 + [params.page.seo.publisher] + name = "" + logoUrl = "" + + # {{< version 0.2.5 >}} TypeIt 配置 + [params.typeit] + # 每一步的打字速度 (单位是毫秒) + speed = 100 + # 光标的闪烁速度 (单位是毫秒) + cursorSpeed = 1000 + # 光标的字符 (支持 HTML 格式) + cursorChar = "|" + # 打字结束之后光标的持续时间 (单位是毫秒, "-1" 代表无限大) + duration = -1 + + # 网站验证代码,用于 Google/Bing/Yandex/Pinterest/Baidu + [params.verification] + google = "" + bing = "" + yandex = "" + pinterest = "" + baidu = "" + + # {{< version 0.2.10 >}} 网站 SEO 配置 + [params.seo] + # 图片 URL + image = "" + # 缩略图 URL + thumbnailUrl = "" + + # {{< version 0.2.0 >}} 网站分析配置 + [params.analytics] + enable = false + # Google Analytics + [params.analytics.google] + id = "" + # 是否匿名化用户 IP + anonymizeIP = true + # Fathom Analytics + [params.analytics.fathom] + id = "" + # 自行托管追踪器时的主机路径 + server = "" + + # {{< version 0.2.7 >}} Cookie 许可配置 + [params.cookieconsent] + enable = true + # 用于 Cookie 许可横幅的文本字符串 + [params.cookieconsent.content] + message = "" + dismiss = "" + link = "" + + # {{< version 0.2.7 changed >}} 第三方库文件的 CDN 设置 + [params.cdn] + # CDN 数据文件名称, 默认不启用 + # ("jsdelivr.yml") + # 位于 "themes/LoveIt/assets/data/cdn/" 目录 + # 可以在你的项目下相同路径存放你自己的数据文件: + # "assets/data/cdn/" + data = "" + + # {{< version 0.2.8 >}} 兼容性设置 + [params.compatibility] + # 是否使用 Polyfill.io 来兼容旧式浏览器 + polyfill = false + # 是否使用 object-fit-images 来兼容旧式浏览器 + objectFit = false + +# Hugo 解析文档的配置 +[markup] + # {{< link "https://gohugo.io/content-management/syntax-highlighting" "语法高亮设置" >}} + [markup.highlight] + codeFences = true + guessSyntax = true + lineNos = true + lineNumbersInTable = true + # false 是必要的设置 + # ({{< link "https://github.com/dillonzq/LoveIt/issues/158" >}}) + noClasses = false + # Goldmark 是 Hugo 0.60 以来的默认 Markdown 解析库 + [markup.goldmark] + [markup.goldmark.extensions] + definitionList = true + footnote = true + linkify = true + strikethrough = true + table = true + taskList = true + typographer = true + [markup.goldmark.renderer] + # 是否在文档中直接使用 HTML 标签 + unsafe = true + # 目录设置 + [markup.tableOfContents] + startLevel = 2 + endLevel = 6 + +# 作者配置 +[author] + name = "xxxx" + email = "" + link = "" + +# 网站地图配置 +[sitemap] + changefreq = "weekly" + filename = "sitemap.xml" + priority = 0.5 + +# {{< link "https://gohugo.io/content-management/urls#permalinks" "Permalinks 配置" >}} +[Permalinks] + # posts = ":year/:month/:filename" + posts = ":filename" + +# {{< link "https://gohugo.io/about/hugo-and-gdpr/" "隐私信息配置" >}} +[privacy] + # {{< version 0.2.0 deleted >}} Google Analytics 相关隐私 (被 params.analytics.google 替代) + [privacy.googleAnalytics] + # ... + [privacy.twitter] + enableDNT = true + [privacy.youtube] + privacyEnhanced = true + +# 用于输出 Markdown 格式文档的设置 +[mediaTypes] + [mediaTypes."text/plain"] + suffixes = ["md"] + +# 用于输出 Markdown 格式文档的设置 +[outputFormats.MarkDown] + mediaType = "text/plain" + isPlainText = true + isHTML = false + +# 用于 Hugo 输出文档的设置 +[outputs] + # {{< version 0.2.0 changed >}} + home = ["HTML", "RSS", "JSON"] + page = ["HTML", "MarkDown"] + section = ["HTML", "RSS"] + taxonomy = ["HTML", "RSS"] + taxonomyTerm = ["HTML"] +``` + +{{< admonition >}} +请注意, 本文档其他部分将详细解释其中一些参数. +{{< /admonition >}} + +{{< admonition note "Hugo 的运行环境" >}} +`hugo serve` 的默认运行环境是 `development`, +而 `hugo` 的默认运行环境是 `production`. + +由于本地 `development` 环境的限制, +**评论系统**, **CDN** 和 **fingerprint** 不会在 `development` 环境下启用. + +你可以使用 `hugo serve -e production` 命令来开启这些特性. +{{< /admonition >}} + +{{< admonition tip "关于 CDN 配置的技巧" >}} +{{< version 0.2.7 changed >}} + +```toml +[params.cdn] + # CDN 数据文件名称, 默认不启用 + # ("jsdelivr.yml") + data = "" +```` + +默认的 CDN 数据文件位于 `themes/LoveIt/assets/data/cdn/` 目录. +可以在你的项目下相同路径存放你自己的数据文件: `assets/data/cdn/`. +{{< /admonition >}} + +{{< admonition tip "关于社交链接配置的技巧" >}} +{{< version 0.2.0 >}} + +你可以直接配置你的社交 ID 来生成一个默认社交链接和图标: + +```toml +[params.social] + Mastodon = "@xxxx" +``` + +生成的社交链接是 `https://mastodon.technology/@xxxx`. + +或者你可以通过一个字典来设置更多的选项: + +```toml +[params.social] + [params.social.Mastodon] + # 排列图标时的权重 (权重越大, 图标的位置越靠后) + weight = 0 + # 你的社交 ID + id = "@xxxx" + # 你的社交链接的前缀 + prefix = "https://mastodon.social/" + # 当鼠标停留在图标上时的提示内容 + title = "Mastodon" +``` + +所有支持的社交链接的默认数据位于 `themes/LoveIt/assets/data/social.yaml`. +你可以参考它来配置你的社交链接. +{{< /admonition >}} + +![完整配置下的预览](complete-configuration-preview.zh-cn.png "完整配置下的预览") + +### 3.2 网站图标, 浏览器配置, 网站清单 + +强烈建议你把: + +* apple-touch-icon.png (180x180) +* favicon-32x32.png (32x32) +* favicon-16x16.png (16x16) +* mstile-150x150.png (150x150) +* android-chrome-192x192.png (192x192) +* android-chrome-512x512.png (512x512) + +放在 `/static` 目录. 利用 [https://realfavicongenerator.net/](https://realfavicongenerator.net/) 可以很容易地生成这些文件. + +可以自定义 `browserconfig.xml` 和 `site.webmanifest` 文件来设置 theme-color 和 background-color. + +### 3.3 自定义样式 + +{{< version 0.2.8 changed >}} + +{{< admonition >}} +Hugo **extended** 版本对于自定义样式是必需的. +{{< /admonition >}} + +通过定义自定义 `.scss` 样式文件, **LoveIt** 主题支持可配置的样式. + +包含自定义 `.scss` 样式文件的目录相对于 **你的项目根目录** 的路径为 `assets/css`. + +在 `assets/css/_override.scss` 中, 你可以覆盖 `themes/LoveIt/assets/css/_variables.scss` 中的变量以自定义样式. + +这是一个例子: + +```scss +@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,700&display=swap&subset=latin-ext'); +$code-font-family: Fira Mono, Source Code Pro, Menlo, Consolas, Monaco, monospace; +``` + +在 `assets/css/_custom.scss` 中, 你可以添加一些 CSS 样式代码以自定义样式. + +## 4 多语言和 i18n + +**LoveIt** 主题完全兼容 Hugo 的多语言模式, 并且支持在网页上切换语言. + +![语言切换](language-switch.gif "语言切换") + +### 4.1 兼容性 {#language-compatibility} + +{{< version 0.2.10 changed >}} + +| 语言 | Hugo 代码 | HTML `lang` 属性 | 主题文档 | Lunr.js 支持 | +|:---- |:----:|:----:|:----:|:----:| +| 英语 | `en` | `en` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | +| 简体中文 | `zh-cn` | `zh-CN` | :(far fa-check-square fa-fw): | :(far fa-check-square fa-fw): | +| 法语 | `fr` | `fr` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| 波兰语 | `pl` | `pl` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | +| 巴西葡萄牙语 | `pt-br` | `pt-BR` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| 意大利语 | `it` | `it` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| 西班牙语 | `es` | `es` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| 德语 | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| 塞尔维亚语 | `pl` | `pl` | :(far fa-square fa-fw): | :(far fa-square fa-fw): | +| 俄语 | `ru` | `ru` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| 罗马尼亚语 | `ro` | `ro` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | +| 越南语 | `vi` | `vi` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): | + +### 4.2 基本配置 + +学习了 [Hugo如何处理多语言网站](https://gohugo.io/content-management/multilingual) 之后, 请在 [站点配置](#site-configuration) 中定义你的网站语言. + +例如, 一个支持英语, 中文和法语的网站配置: + +```toml +# [en, zh-cn, fr, pl, ...] 设置默认的语言 +defaultContentLanguage = "zh-cn" + +[languages] + [languages.en] + weight = 1 + title = "My New Hugo Site" + languageCode = "en" + languageName = "English" + [[languages.en.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "Posts" + url = "/posts/" + title = "" + weight = 1 + [[languages.en.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Tags" + url = "/tags/" + title = "" + weight = 2 + [[languages.en.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "Categories" + url = "/categories/" + title = "" + weight = 3 + + [languages.zh-cn] + weight = 2 + title = "我的全新 Hugo 网站" + # 网站语言, 仅在这里 CN 大写 + languageCode = "zh-CN" + languageName = "简体中文" + # 是否包括中日韩文字 + hasCJKLanguage = true + [[languages.zh-cn.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "文章" + url = "/posts/" + title = "" + weight = 1 + [[languages.zh-cn.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "标签" + url = "/tags/" + title = "" + weight = 2 + [[languages.zh-cn.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "分类" + url = "/categories/" + title = "" + weight = 3 + + [languages.fr] + weight = 3 + title = "Mon nouveau site Hugo" + languageCode = "fr" + languageName = "Français" + [[languages.fr.menu.main]] + identifier = "posts" + pre = "" + post = "" + name = "Postes" + url = "/posts/" + title = "" + weight = 1 + [[languages.fr.menu.main]] + identifier = "tags" + pre = "" + post = "" + name = "Balises" + url = "/tags/" + title = "" + weight = 2 + [[languages.fr.menu.main]] + identifier = "categories" + pre = "" + post = "" + name = "Catégories" + url = "/categories/" + title = "" + weight = 3 +``` + +然后, 对于每个新页面, 将语言代码附加到文件名中. + +单个文件 `my-page.md` 需要分为三个文件: + +* 英语: `my-page.en.md` +* 中文: `my-page.zh-cn.md` +* 法语: `my-page.fr.md` + +{{< admonition >}} +请注意, 菜单中仅显示翻译的页面. 它不会替换为默认语言内容. +{{< /admonition >}} + +{{< admonition tip >}} +也可以使用 [文章前置参数](https://gohugo.io/content-management/multilingual#translate-your-content) 来翻译网址. +{{< /admonition >}} + +### 4.3 修改默认的翻译字符串 + +翻译字符串用于在主题中使用的常见默认值. +目前提供[一些语言](#language-compatibility)的翻译, 但你可能自定义其他语言或覆盖默认值. + +要覆盖默认值, 请在你项目的 i18n 目录 `i18n/.toml` 中创建一个新文件,并从 `themes/LoveIt/i18n/en.toml` 中获得提示. + +另外, 由于你的翻译可能会帮助到其他人, 请花点时间通过 [:(fas fa-code-branch fa-fw): 创建一个 PR](https://github.com/dillonzq/LoveIt/pulls) 来贡献主题翻译, 谢谢! + +## 5 搜索 + +{{< version 0.2.0 >}} + +基于 [Lunr.js](https://lunrjs.com/) 或 [algolia](https://www.algolia.com/), **LoveIt** 主题支持搜索功能. + +### 5.1 输出配置 + +为了生成搜索功能所需要的 `index.json`, 请在你的 [网站配置](#site-configuration) 中添加 `JSON` 输出文件类型到 `outputs` 部分的 `home` 字段中. + +```toml +[outputs] + home = ["HTML", "RSS", "JSON"] +``` + +### 5.2 搜索配置 + +基于 Hugo 生成的 `index.json` 文件, 你可以激活搜索功能. + +这是你的 [网站配置](#site-configuration) 中的搜索部分: + +```toml +[params.search] + enable = true + # 搜索引擎的类型 ("lunr", "algolia") + type = "lunr" + # 文章内容最长索引长度 + contentLength = 4000 + # 搜索框的占位提示语 + placeholder = "" + # {{< version 0.2.1 >}} 最大结果数目 + maxResultLength = 10 + # {{< version 0.2.3 >}} 结果内容片段长度 + snippetLength = 50 + # {{< version 0.2.1 >}} 搜索结果中高亮部分的 HTML 标签 + highlightTag = "em" + # {{< version 0.2.4 >}} 是否在搜索索引中使用基于 baseURL 的绝对路径 + absoluteURL = false + [params.search.algolia] + index = "" + appID = "" + searchKey = "" +``` + +{{< admonition note "怎样选择搜索引擎?" >}} +以下是两种搜索引擎的对比: + +* `lunr`: 简单, 无需同步 `index.json`, 没有 `contentLength` 的限制, 但占用带宽大且性能低 (特别是中文需要一个较大的分词依赖库) +* `algolia`: 高性能并且占用带宽低, 但需要同步 `index.json` 且有 `contentLength` 的限制 + +{{< version 0.2.3 >}} 文章内容被 `h2` 和 `h3` HTML 标签切分来提高查询效果并且基本实现全文搜索. +`contentLength` 用来限制 `h2` 和 `h3` HTML 标签开头的内容部分的最大长度. +{{< /admonition >}} + +{{< admonition tip "关于 algolia 的使用技巧" >}} +你需要上传 `index.json` 到 algolia 来激活搜索功能. 你可以使用浏览器来上传 `index.json` 文件但是一个自动化的脚本可能效果更好. +[Algolia Atomic](https://github.com/chrisdmacrae/atomic-algolia) 是一个不错的选择. +为了兼容 Hugo 的多语言模式, 你需要上传不同语言的 `index.json` 文件到对应的 algolia index, 例如 `zh-cn/index.json` 或 `fr/index.json`... +{{< /admonition >}} diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/language-switch.gif b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/language-switch.gif new file mode 100644 index 00000000..37066df5 Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-basics/language-switch.gif differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/featured-image.png b/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/featured-image.png new file mode 100644 index 00000000..2824a7ff Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/featured-image.png differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md new file mode 100644 index 00000000..9ddabed9 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md @@ -0,0 +1,182 @@ +--- +weight: 3 +title: "Theme Documentation - Built-in Shortcodes" +date: 2020-03-04T16:29:41+08:00 +lastmod: 2020-03-04T16:29:41+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Hugo provides multiple built-in shortcodes for author convenience and to keep your markdown content clean." +resources: +- name: "featured-image" + src: "featured-image.png" + +tags: ["shortcodes"] +categories: ["documentation"] + +lightgallery: true +--- + +**Hugo** provides multiple built-in shortcodes for author convenience and to keep your markdown content clean. + + + +Hugo uses Markdown for its simple content format. However, there are a lot of things that Markdown doesn’t support well. You could use pure HTML to expand possibilities. + +But this happens to be a bad idea. Everyone uses Markdown because it’s pure and simple to read even non-rendered. You should avoid HTML to keep it as simple as possible. + +To avoid this limitations, Hugo created [shortcodes](https://gohugo.io/extras/shortcodes/). +A shortcode is a simple snippet that can generate reasonable HTML code and conforms to Markdown's design philosophy. + +Hugo ships with a set of predefined shortcodes that represent very common usage. These shortcodes are provided for author convenience and to keep your markdown content clean. + +## 1 figure {#figure} + +[Documentation of `figure`](https://gohugo.io/content-management/shortcodes#figure) + +Example `figure` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< figure src="/images/lighthouse.jpg" title="Lighthouse (figure)" >}} + +The HTML looks like this: + +```html +
    + +
    +

    Lighthouse (figure)

    +
    +
    +``` + +## 2 gist + +[Documentation of `gist`](https://gohugo.io/content-management/shortcodes#gist) + +Example `gist` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< gist spf13 7896402 >}} + +The HTML looks like this: + +```html + +``` + +## 3 highlight + +[Documentation of `highlight`](https://gohugo.io/content-management/shortcodes#instagram) + +Example `highlight` input: + +```markdown +{{}} +
    +
    +

    {{ .Title }}

    + {{ range .Pages }} + {{ .Render "summary"}} + {{ end }} +
    +
    +{{}} +``` + +The rendered output looks like this: + +{{< highlight html >}} +
    +
    +

    {{ .Title }}

    + {{ range .Pages }} + {{ .Render "summary"}} + {{ end }} +
    +
    +{{< /highlight >}} + +## 4 instagram + +[Documentation of `instagram`](https://gohugo.io/content-management/shortcodes#instagram) + +Example `instagram` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< instagram BWNjjyYFxVx hidecaption >}} + +## 5 param + +[Documentation of `param`](https://gohugo.io/content-management/shortcodes#param) + +Example `param` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< param description >}} + +## 6 ref and relref {#ref-and-relref} + +[Documentation of `ref` and `relref`](https://gohugo.io/content-management/shortcodes#ref-and-relref) + +## 7 tweet + +[Documentation of `tweet`](https://gohugo.io/content-management/shortcodes#tweet) + +Example `tweet` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< tweet 877500564405444608 >}} + +## 8 vimeo + +[Documentation of `vimeo`](https://gohugo.io/content-management/shortcodes#vimeo) + +Example `vimeo` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< vimeo 146022717 >}} + +## 9 youtube + +[Documentation of `youtube`](https://gohugo.io/content-management/shortcodes#youtube) + +Example `youtube` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< youtube w7Ft2ymGmfc >}} diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.fr.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.fr.md new file mode 100644 index 00000000..fdb0bb19 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.fr.md @@ -0,0 +1,187 @@ +--- +weight: 3 +title: "Thème Documentation - Built-in Shortcodes" +date: 2020-03-04T16:29:59+08:00 +lastmod: 2020-03-04T16:29:59+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Hugo fournit plusieurs shortcodes intégrés pour la commodité de l'auteur et pour garder votre contenu de démarque propre." +resources: +- name: "featured" + src: "featured-image.png" + +tags: ["shortcodes"] +categories: ["documentation"] + +lightgallery: true +--- + +**Hugo** fournit plusieurs shortcodes intégrés pour la commodité de l'auteur et pour garder votre contenu de démarque propre. + + + +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + +Hugo uses Markdown for its simple content format. However, there are a lot of things that Markdown doesn’t support well. You could use pure HTML to expand possibilities. + +But this happens to be a bad idea. Everyone uses Markdown because it’s pure and simple to read even non-rendered. You should avoid HTML to keep it as simple as possible. + +To avoid this limitations, Hugo created [shortcodes](https://gohugo.io/extras/shortcodes/). +A shortcode is a simple snippet that can generate reasonable HTML code and conforms to Markdown's design philosophy. + +Hugo ships with a set of predefined shortcodes that represent very common usage. These shortcodes are provided for author convenience and to keep your markdown content clean. + +## 1 figure {#figure} + +[Documentation of `figure`](https://gohugo.io/content-management/shortcodes#figure) + +Example `figure` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< figure src="/images/lighthouse.jpg" title="Lighthouse (figure)" >}} + +The HTML looks like this: + +```html +
    + +
    +

    Lighthouse (figure)

    +
    +
    +``` + +## 2 gist + +[Documentation of `gist`](https://gohugo.io/content-management/shortcodes#gist) + +Example `gist` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< gist spf13 7896402 >}} + +The HTML looks like this: + +```html + +``` + +## 3 highlight + +[Documentation of `highlight`](https://gohugo.io/content-management/shortcodes#instagram) + +Example `highlight` input: + +```markdown +{{}} +
    +
    +

    {{ .Title }}

    + {{ range .Pages }} + {{ .Render "summary"}} + {{ end }} +
    +
    +{{}} +``` + +The rendered output looks like this: + +{{< highlight html >}} +
    +
    +

    {{ .Title }}

    + {{ range .Pages }} + {{ .Render "summary"}} + {{ end }} +
    +
    +{{< /highlight >}} + +## 4 instagram + +[Documentation of `instagram`](https://gohugo.io/content-management/shortcodes#instagram) + +Example `instagram` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< instagram BWNjjyYFxVx hidecaption >}} + +## 5 param + +[Documentation of `param`](https://gohugo.io/content-management/shortcodes#param) + +Example `param` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< param description >}} + +## 6 ref and relref {#ref-and-relref} + +[Documentation of `ref` and `relref`](https://gohugo.io/content-management/shortcodes#ref-and-relref) + +## 7 tweet + +[Documentation of `tweet`](https://gohugo.io/content-management/shortcodes#tweet) + +Example `tweet` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< tweet 877500564405444608 >}} + +## 8 vimeo + +[Documentation of `vimeo`](https://gohugo.io/content-management/shortcodes#vimeo) + +Example `vimeo` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< vimeo 146022717 >}} + +## 9 youtube + +[Documentation of `youtube`](https://gohugo.io/content-management/shortcodes#youtube) + +Example `youtube` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< youtube w7Ft2ymGmfc >}} diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md new file mode 100644 index 00000000..66d275aa --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md @@ -0,0 +1,183 @@ +--- +weight: 3 +title: "主题文档 - 内置 Shortcodes" +date: 2020-03-04T16:29:59+08:00 +lastmod: 2020-03-04T16:29:59+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Hugo 提供了多个内置的 Shortcodes, 以方便作者保持 Markdown 内容的整洁." +resources: +- name: "featured-image" + src: "featured-image.png" + +tags: ["shortcodes"] +categories: ["documentation"] + +lightgallery: true +--- + +**Hugo** 提供了多个内置的 Shortcodes, 以方便作者保持 Markdown 内容的整洁. + + + +Hugo 使用 Markdown 为其简单的内容格式. 但是, Markdown 在很多方面都无法很好地支持. 你可以使用纯 HTML 来扩展可能性. + +但这恰好是一个坏主意. 大家使用 Markdown, 正是因为它即使不经过渲染也可以轻松阅读. 应该尽可能避免使用 HTML 以保持内容简洁. + +为了避免这种限制, Hugo 创建了 [shortcodes](https://gohugo.io/extras/shortcodes/). +shortcode 是一个简单代码段, 可以生成合理的 HTML 代码, 并且符合 Markdown 的设计哲学. + +Hugo 附带了一组预定义的 shortcodes, 它们实现了一些非常常见的用法. +提供这些 shortcodes 是为了方便保持你的 Markdown 内容简洁. + +## 1 figure {#figure} + +[`figure` 的文档](https://gohugo.io/content-management/shortcodes#figure) + +一个 `figure` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< figure src="/images/lighthouse.jpg" title="Lighthouse (figure)" >}} + +输出的 HTML 看起来像这样: + +```html +
    + +
    +

    Lighthouse (figure)

    +
    +
    +``` + +## 2 gist + +[`gist` 的文档](https://gohugo.io/content-management/shortcodes#gist) + +一个 `gist` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< gist spf13 7896402 >}} + +输出的 HTML 看起来像这样: + +```html + +``` + +## 3 highlight + +[`highlight` 的文档](https://gohugo.io/content-management/shortcodes#instagram) + +一个 `highlight` 示例: + +```markdown +{{}} +
    +
    +

    {{ .Title }}

    + {{ range .Pages }} + {{ .Render "summary"}} + {{ end }} +
    +
    +{{}} +``` + +呈现的输出效果如下: + +{{< highlight html >}} +
    +
    +

    {{ .Title }}

    + {{ range .Pages }} + {{ .Render "summary"}} + {{ end }} +
    +
    +{{< /highlight >}} + +## 4 instagram + +[`instagram` 的文档](https://gohugo.io/content-management/shortcodes#instagram) + +一个 `instagram` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< instagram BWNjjyYFxVx hidecaption >}} + +## 5 param + +[`param` 的文档](https://gohugo.io/content-management/shortcodes#param) + +一个 `param` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< param description >}} + +## 6 ref 和 relref {#ref-and-relref} + +[`ref` 和 `relref` 的文档](https://gohugo.io/content-management/shortcodes#ref-and-relref) + +## 7 tweet + +[`tweet` 的文档](https://gohugo.io/content-management/shortcodes#tweet) + +一个 `tweet` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< tweet 877500564405444608 >}} + +## 8 vimeo + +[`vimeo` 的文档](https://gohugo.io/content-management/shortcodes#vimeo) + +一个 `vimeo` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< vimeo 146022717 >}} + +## 9 youtube + +[`youtube` 的文档](https://gohugo.io/content-management/shortcodes#youtube) + +一个 `youtube` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< youtube w7Ft2ymGmfc >}} diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/featured-image.jpg b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/featured-image.jpg new file mode 100644 index 00000000..102e1844 Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/featured-image.jpg differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.en.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.en.md new file mode 100644 index 00000000..dbd5a575 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.en.md @@ -0,0 +1,399 @@ +--- +weight: 2 +title: "Theme Documentation - Content" +date: 2020-03-05T15:58:26+08:00 +lastmod: 2020-03-05T15:58:26+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Find out how to create and organize your content quickly and intuitively in LoveIt theme." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["content", "Markdown"] +categories: ["documentation"] + +lightgallery: true + +toc: + auto: false +math: + enable: true +--- + +Find out how to create and organize your content quickly and intuitively in **LoveIt** theme. + + + +## 1 Contents Organization {#contents-organization} + +A few suggestions to help you get a good looking site quickly: + +* Keep post pages in the `content/posts` directory, for example: `content/posts/my-first-post.md` +* Keep other pages in the `content` directory, for example: `content/about.md` +* Local resources organization + +{{< admonition note "Local Resource Reference" >}} +{{< version 0.2.10 >}} + +There are three ways to reference local resources such as **images** and **music**: + +1. Using [page resources](https://gohugo.io/content-management/page-resources/) in [page bundles](https://gohugo.io/content-management/page-bundles/). + You can reference page resources by the value for `Resources.GetMatch` or the filepath of the resource relative to the page directory directly. +2. Store resources in the **assets** directory, which is `/assets` by default. + The filepath of the resource to reference in the post is relative to the assets directory. +3. Store resources in the **static** directory, which is `/static` by default. + The filepath of the resource to reference in the post is relative to the static directory. + +The **priority** of references is also in the above order. + +There are many places in the theme where the above local resource references can be used, +such as **links**, **images**, `image` shortcode, `music` shortcode and some params in the **front matter**. + +Images in page resources or assets directory [processing](https://gohugo.io/content-management/image-processing/) +will be supported in the future. +It's really cool! :(far fa-grin-squint fa-fw): +{{< /admonition >}} + +## 2 Front Matter {#front-matter} + +**Hugo** allows you to add front matter in `yaml`, `toml` or `json` to your content files. + +{{< admonition >}} +**Not all** of the below front matters need to be set in each of your posts. +It is necessary only if the front matters and the `page` part in your [site configuration](../theme-documentation-basics#site-configuration) are inconsistent. +{{< /admonition >}} + +Here is a front matter example: + +```yaml +--- +title: "My First Post" +subtitle: "" +date: 2020-03-04T15:58:26+08:00 +lastmod: 2020-03-04T15:58:26+08:00 +draft: true +author: "" +authorLink: "" +description: "" +license: "" +images: [] + +tags: [] +categories: [] +featuredImage: "" +featuredImagePreview: "" + +hiddenFromHomePage: false +hiddenFromSearch: false +twemoji: false +lightgallery: true +ruby: true +fraction: true +fontawesome: true +linkToMarkdown: true +rssFullText: false + +toc: + enable: true + auto: true +code: + copy: true + # ... +math: + enable: true + # ... +mapbox: + accessToken: "" + # ... +share: + enable: true + # ... +comment: + enable: true + # ... +library: + css: + # someCSS = "some.css" + # located in "assets/" + # Or + # someCSS = "https://cdn.example.com/some.css" + js: + # someJS = "some.js" + # located in "assets/" + # Or + # someJS = "https://cdn.example.com/some.js" +seo: + images: [] + # ... +--- +``` + +* **title**: the title for the content. +* **subtitle**: {{< version 0.2.0 >}} the subtitle for the content. +* **date**: the datetime assigned to this page, which is usually fetched from the `date` field in front matter, but this behaviour is configurabl in the [site configuration](../theme-documentation-basics#site-configuration). +* **lastmod**: the datetime at which the content was last modified. +* **draft**: if `true`, the content will not be rendered unless the `--buildDrafts`/`-D` flag is passed to the `hugo` command. +* **author**: the author for the content. +* **authorLink**: the link of the author. +* **description**: the description for the content. +* **license**: the special lisence for this content. +* **images**: page images for Open Graph and Twitter Cards. + +* **tags**: the tags for the content. +* **categories**: the categories for the content. +* **featuredImage**: the featured image for the content. +* **featuredImagePreview**: the featured image for the content preview in the home page. + +* **hiddenFromHomePage**: if `true`, the content will not be shown in the home page. +* **hiddenFromSearch**: {{< version 0.2.0 >}} if `true`, the content will not be shown in the search results. +* **twemoji**: {{< version 0.2.0 >}} if `true`, the content will enable the twemoji. +* **lightgallery**: if `true`, images in the content will be shown as the gallery. +* **ruby**: {{< version 0.2.0 >}} if `true`, the content will enable the [ruby extended syntax](#ruby). +* **fraction**: {{< version 0.2.0 >}} if `true`, the content will enable the [fraction extended syntax](#fraction). +* **fontawesome**: {{< version 0.2.0 >}} if `true`, the content will enable the [Font Awesome extended syntax](#fontawesome). +* **linkToMarkdown**: if `true`, the footer of the content will be shown the link to the orignal Markdown file. +* **rssFullText**: {{< version 0.2.4 >}} if `true`, the full text content will be shown in RSS. + +* **toc**: {{< version 0.2.9 changed >}} the same as the `params.page.toc` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **code**: {{< version 0.2.0 >}} the same as the `params.page.code` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **math**: {{< version 0.2.0 changed >}} the same as the `params.page.math` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **mapbox**: {{< version 0.2.0 >}} the same as the `params.page.mapbox` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **share**: the same as the `params.page.share` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **comment**: {{< version 0.2.0 changed >}} the same as the `params.page.comment` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **library**: {{< version 0.2.7 >}} the same as the `params.page.library` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **seo**: {{< version 0.2.10 >}} the same as the `params.page.seo` part in the [site configuration](../theme-documentation-basics#site-configuration). + +{{< admonition tip >}} +{{< version 0.2.10 >}} + +**featuredImage** and **featuredImagePreview** support the complete usage of [local resource references](#contents-organization). + +If the page resource with `name: featured-image` or `name: featured-image-preview` is set in the front matter, +it is not necessary to set the parameter `featuredImage` or `featuredImagePreview`: + +```yaml +resources: +- name: featured-image + src: featured-image.jpg +- name: featured-image-preview + src: featured-image-preview.jpg +``` +{{< /admonition >}} + +## 3 Content Summaries + +**LoveIt** theme uses the summary of the content to display abstract information in the home page. Hugo can generate summaries of your content. + +![Summary Preview](summary.png "Summary Preview") + +### Automatic Summary Splitting + +By default, Hugo automatically takes the first 70 words of your content as its summary. + +You may customize the summary length by setting `summaryLength` in the [site configuration](../theme-documentation-basics#site-configuration). + +If you are creating content in a [CJK]^(Chinese/Japanese/Korean) language and want to use Hugo’s automatic summary splitting, set `hasCJKLanguage` to `true` in your [site configuration](../theme-documentation-basics#site-configuration). + +### Manual Summary Splitting + +Alternatively, you may add the `` summary divider where you want to split the article. + +Content that comes before the summary divider will be used as that content’s summary. + +{{< admonition >}} +Be careful to enter `` exactly; i.e., all lowercase and with no whitespace. +{{< /admonition >}} + +### Front Matter Summary + +You might want your summary to be something other than the text that starts the article. In this case you can provide a separate summary in the `summary` variable of the article front matter. + +### Use Description as Summary + +You might want your description in the `description` variable of the article front matter as the summary. + +You may add the `` summary divider at the start of the article. Keep content that comes before the summary divider empty. Then **LoveIt** theme will use your description as the summary. + +### Priority Order of Summary Selection + +Because there are multiple ways in which a summary can be specified it is useful to understand the order. It is as follows: + +1. If there is a `` summary divider present in the article but no content is before the divider, the description will be used as the summary. +2. If there is a `` summary divider present in the article the text up to the divider will be provided as per the manual summary split method. +3. If there is a summary variable in the article front matter the value of the variable will be provided as per the front matter summary method. +4. The text at the start of the article will be provided as per the automatic summary split method. + +{{< admonition >}} +It is not recommended to include rich text block elements in the summary, which will cause typographic errors. Such as code blocks, pictures, tables, etc. +{{< /admonition >}} + +## 4 Basic Markdown Syntax + +This part is shown in the [basic markdown syntax page](../basic-markdown-syntax/). + +## 5 Extended Markdown Syntax {#extended-markdown-syntax} + +**LoveIt** theme has some extended syntax elements for you to write articles. + +### Emoji Support + +This part is shown in the [emoji support page](../emoji-support/). + +### Mathematical Formula + +**LoveIt** theme supports mathematical formulas based on [$ \KaTeX $](https://katex.org/). + +Set the property `enable = true` under `[params.math]` in your [site configuration](../theme-documentation-basics#site-configuration) +and the property `math: true` of the article front matter to enable the automatic rendering of mathematical formulas. + +{{< admonition tip >}} +Here is a list of [$ \TeX $ functions supported by $ \KaTeX $](https://katex.org/docs/supported.html). +{{< /admonition >}} + +#### Block Formula + +The default block delimiters are `$$`/`$$` and `\\[`/`\\]`: + +```markdown +$$ c = \pm\sqrt{a^2 + b^2} $$ + +\\[ f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\] +``` + +The rendered output looks like this: + +$$ c = \pm\sqrt{a^2 + b^2} $$ + +\\[ f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\] + +#### Inline Formula + +The default inline delimiters are `$`/`$` and `\\(`/`\\)`: + +```markdown +$ c = \pm\sqrt{a^2 + b^2} $ and \\( f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\) +``` + +The rendered output looks like this: + +$ c = \pm\sqrt{a^2 + b^2} $ and \\( f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\) + +{{< admonition tip >}} +You can add more block and inline delimiters in your [site configuration](../theme-documentation-basics#site-configuration). +{{< /admonition >}} + +#### Copy-tex + +**[Copy-tex](https://github.com/Khan/KaTeX/tree/master/contrib/copy-tex)** is an extension for **$ \KaTeX $**. + +By the extension, when selecting and copying $ \KaTeX $ rendered elements, copies their $ \LaTeX $ source to the clipboard. + +Set the property `copyTex = true` under `[params.math]` in your [site configuration](../theme-documentation-basics#site-configuration) to enable Copy-tex. + +Select and copy the formula rendered in the previous section, and you can find that the copied content is the LaTeX source code. + +#### mhchem + +**[mhchem](https://github.com/Khan/KaTeX/tree/master/contrib/mhchem)** is an extension for **$ \KaTeX $**. + +By the extension, you can write beautiful chemical equations easily in the article. + +Set the property `mhchem = true` under `[params.math]` in your [site configuration](../theme-documentation-basics#site-configuration) to enable mhchem. + +```markdown +$$ \ce{CO2 + C -> 2 CO} $$ + +$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$ +``` + +The rendered output looks like this: + +$$ \ce{CO2 + C -> 2 CO} $$ + +$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$ + +### Ruby Annotation {#ruby} + +An extended Markdown syntax for **ruby annotation** is supported in **LoveIt** theme: + +```markdown +[Hugo]{?^}(An open-source static site generator) +``` + +The rendered output looks like this: + +[Hugo]^(An open-source static site generator) + +### Fraction {#fraction} + +{{< version 0.2.0 >}} + +An extended Markdown syntax for **fraction** is supported in **LoveIt** theme: + +```markdown +[Light]{?/}[Dark] + +[99]{?/}[100] +``` + +The rendered output looks like this: + +[Light]/[Dark] + +[90]/[100] + +### Font Awesome {#fontawesome} + +**LoveIt** theme uses [Font Awesome](https://fontawesome.com/) as the icon library. +You can easily use these icons in your articles. + +Get the `class` of icons you wanted from the [Font Awesome website](https://fontawesome.com/icons?d=gallery). + +```markdown +Gone camping! {?:}(fas fa-campground fa-fw): Be back soon. + +That is so funny! {?:}(far fa-grin-tears): +``` + +The rendered output looks like this: + +Gone camping! :(fas fa-campground fa-fw): Be back soon. + +That is so funny! :(far fa-grin-tears): + +### Escape character {#escape-character} + +In some special cases (when writing this theme documentation :(far fa-grin-squint-tears):), +your content will conflict with basic or extended Markdown syntax, and it is inevitable. + +The escape character syntax can help you build the content you wanted: + +```markdown +{{??}X} -> X +``` + +For example, two `:` will enable emoji syntax, which is not the behavior you want. The escape character syntax is like this: + +```markdown +{{??}:}joy: +``` + +The rendered output looks like this: + +**{?:}joy{?:}** instead of **:joy:** + +{{< admonition tip >}} +This is related to **[an issue for Hugo](https://github.com/gohugoio/hugo/issues/4978)**, which has not been resolved. +{{< /admonition >}} + +Another example is: + +```markdown +[link{{??}]}(#escape-character) +``` + +The rendered output looks like this: + +**[link{?]}(#escape-character)** instead of **[link](#escape-character)**. diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.fr.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.fr.md new file mode 100644 index 00000000..9fdedd3d --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.fr.md @@ -0,0 +1,404 @@ +--- +weight: 2 +title: "Thème Documentation - Contenu" +date: 2020-03-05T16:30:05+08:00 +lastmod: 2020-03-05T16:30:05+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Découvrez comment créer et organiser votre contenu rapidement et intuitivement dans le thème LoveIt." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["content", "Markdown"] +categories: ["documentation"] + +lightgallery: true + +toc: + auto: false +math: + enable: true +--- + +Découvrez comment créer et organiser votre contenu rapidement et intuitivement dans le thème **LoveIt**. + + + +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + +## 1 Contents Organization {#contents-organization} + +A few suggestions to help you get a good looking site quickly: + +* Keep post pages in the `content/posts` directory, for example: `content/posts/my-first-post.md` +* Keep other pages in the `content` directory, for example: `content/about.md` +* Local resources organization + +{{< admonition note "Local Resource Reference" >}} +{{< version 0.2.10 >}} + +There are three ways to reference local resources such as **images** and **music**: + +1. Using [page resources](https://gohugo.io/content-management/page-resources/) in [page bundles](https://gohugo.io/content-management/page-bundles/). + You can reference page resources by the value for `Resources.GetMatch` or the filepath of the resource relative to the page directory directly. +2. Store resources in the **assets** directory, which is `/assets` by default. + The filepath of the resource to reference in the post is relative to the assets directory. +3. Store resources in the **static** directory, which is `/static` by default. + The filepath of the resource to reference in the post is relative to the static directory. + +The **priority** of references is also in the above order. + +There are many places in the theme where the above local resource references can be used, +such as **links**, **images**, `image` shortcode, `music` shortcode and some params in the **front matter**. + +Images in page resources or assets directory [processing](https://gohugo.io/content-management/image-processing/) +will be supported in the future. +It's really cool! :(far fa-grin-squint fa-fw): +{{< /admonition >}} + +## 2 Front Matter {#front-matter} + +**Hugo** allows you to add front matter in `yaml`, `toml` or `json` to your content files. + +{{< admonition >}} +**Not all** of the below front matters need to be set in each of your posts. +It is necessary only if the front matters and the `page` part in your [site configuration](../theme-documentation-basics#site-configuration) are inconsistent. +{{< /admonition >}} + +Here is a front matter example: + +```yaml +--- +title: "My First Post" +subtitle: "" +date: 2020-03-04T15:58:26+08:00 +lastmod: 2020-03-04T15:58:26+08:00 +draft: true +author: "" +authorLink: "" +description: "" +license: "" +images: [] + +tags: [] +categories: [] +featuredImage: "" +featuredImagePreview: "" + +hiddenFromHomePage: false +hiddenFromSearch: false +twemoji: false +lightgallery: true +ruby: true +fraction: true +fontawesome: true +linkToMarkdown: true +rssFullText: false + +toc: + enable: true + auto: true +code: + copy: true + # ... +math: + enable: true + # ... +mapbox: + accessToken: "" + # ... +share: + enable: true + # ... +comment: + enable: true + # ... +library: + css: + # someCSS = "some.css" + # located in "assets/" + # Or + # someCSS = "https://cdn.example.com/some.css" + js: + # someJS = "some.js" + # located in "assets/" + # Or + # someJS = "https://cdn.example.com/some.js" +seo: + images: [] + # ... +--- +``` + +* **title**: the title for the content. +* **subtitle**: {{< version 0.2.0 >}} the subtitle for the content. +* **date**: the datetime assigned to this page, which is usually fetched from the `date` field in front matter, but this behaviour is configurabl in the [site configuration](../theme-documentation-basics#site-configuration). +* **lastmod**: the datetime at which the content was last modified. +* **draft**: if `true`, the content will not be rendered unless the `--buildDrafts`/`-D` flag is passed to the `hugo` command. +* **author**: the author for the content. +* **authorLink**: the link of the author. +* **description**: the description for the content. +* **license**: the special lisence for this content. +* **images**: page images for Open Graph and Twitter Cards. + +* **tags**: the tags for the content. +* **categories**: the categories for the content. +* **featuredImage**: the featured image for the content. +* **featuredImagePreview**: the featured image for the content preview in the home page. + +* **hiddenFromHomePage**: if `true`, the content will not be shown in the home page. +* **hiddenFromSearch**: {{< version 0.2.0 >}} if `true`, the content will not be shown in the search results. +* **twemoji**: {{< version 0.2.0 >}} if `true`, the content will enable the twemoji. +* **lightgallery**: if `true`, images in the content will be shown as the gallery. +* **ruby**: {{< version 0.2.0 >}} if `true`, the content will enable the [ruby extended syntax](#ruby). +* **fraction**: {{< version 0.2.0 >}} if `true`, the content will enable the [fraction extended syntax](#fraction). +* **fontawesome**: {{< version 0.2.0 >}} if `true`, the content will enable the [Font Awesome extended syntax](#fontawesome). +* **linkToMarkdown**: if `true`, the footer of the content will be shown the link to the orignal Markdown file. +* **rssFullText**: {{< version 0.2.4 >}} if `true`, the full text content will be shown in RSS. + +* **toc**: {{< version 0.2.9 changed >}} the same as the `params.page.toc` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **code**: {{< version 0.2.0 >}} the same as the `params.page.code` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **math**: {{< version 0.2.0 changed >}} the same as the `params.page.math` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **mapbox**: {{< version 0.2.0 >}} the same as the `params.page.mapbox` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **share**: the same as the `params.page.share` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **comment**: {{< version 0.2.0 changed >}} the same as the `params.page.comment` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **library**: {{< version 0.2.7 >}} the same as the `params.page.library` part in the [site configuration](../theme-documentation-basics#site-configuration). +* **seo**: {{< version 0.2.10 >}} the same as the `params.page.seo` part in the [site configuration](../theme-documentation-basics#site-configuration). + +{{< admonition tip >}} +{{< version 0.2.10 >}} + +**featuredImage** and **featuredImagePreview** support the complete usage of [local resource references](#contents-organization). + +If the page resource with `name: featured-image` or `name: featured-image-preview` is set in the front matter, +it is not necessary to set the parameter `featuredImage` or `featuredImagePreview`: + +```yaml +resources: +- name: featured-image + src: featured-image.jpg +- name: featured-image-preview + src: featured-image-preview.jpg +``` +{{< /admonition >}} + +## 3 Content Summaries + +**LoveIt** theme uses the summary of the content to display abstract information in the home page. Hugo can generate summaries of your content. + +![Summary Preview](summary.png "Summary Preview") + +### Automatic Summary Splitting + +By default, Hugo automatically takes the first 70 words of your content as its summary. + +You may customize the summary length by setting `summaryLength` in the [site configuration](../theme-documentation-basics#site-configuration). + +If you are creating content in a [CJK]^(Chinese/Japanese/Korean) language and want to use Hugo’s automatic summary splitting, set `hasCJKLanguage` to `true` in your [site configuration](../theme-documentation-basics#site-configuration). + +### Manual Summary Splitting + +Alternatively, you may add the `` summary divider where you want to split the article. + +Content that comes before the summary divider will be used as that content’s summary. + +{{< admonition >}} +Be careful to enter `` exactly; i.e., all lowercase and with no whitespace. +{{< /admonition >}} + +### Front Matter Summary + +You might want your summary to be something other than the text that starts the article. In this case you can provide a separate summary in the `summary` variable of the article front matter. + +### Use Description as Summary + +You might want your description in the `description` variable of the article front matter as the summary. + +You may add the `` summary divider at the start of the article. Keep content that comes before the summary divider empty. Then **LoveIt** theme will use your description as the summary. + +### Priority Order of Summary Selection + +Because there are multiple ways in which a summary can be specified it is useful to understand the order. It is as follows: + +1. If there is a `` summary divider present in the article but no content is before the divider, the description will be used as the summary. +2. If there is a `` summary divider present in the article the text up to the divider will be provided as per the manual summary split method. +3. If there is a summary variable in the article front matter the value of the variable will be provided as per the front matter summary method. +4. The text at the start of the article will be provided as per the automatic summary split method. + +{{< admonition >}} +It is not recommended to include rich text block elements in the summary, which will cause typographic errors. Such as code blocks, pictures, tables, etc. +{{< /admonition >}} + +## 4 Basic Markdown Syntax + +This part is shown in the [basic markdown syntax page](../basic-markdown-syntax/). + +## 5 Extended Markdown Syntax {#extended-markdown-syntax} + +**LoveIt** theme has some extended syntax elements for you to write articles. + +### Emoji Support + +This part is shown in the [emoji support page](../emoji-support/). + +### Mathematical Formula + +**LoveIt** theme supports mathematical formulas based on [$ \KaTeX $](https://katex.org/). + +Set the property `enable = true` under `[params.math]` in your [site configuration](../theme-documentation-basics#site-configuration) +and the property `math: true` of the article front matter to enable the automatic rendering of mathematical formulas. + +{{< admonition tip >}} +Here is a list of [$ \TeX $ functions supported by $ \KaTeX $](https://katex.org/docs/supported.html). +{{< /admonition >}} + +#### Block Formula + +The default block delimiters are `$$`/`$$` and `\\[`/`\\]`: + +```markdown +$$ c = \pm\sqrt{a^2 + b^2} $$ + +\\[ f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\] +``` + +The rendered output looks like this: + +$$ c = \pm\sqrt{a^2 + b^2} $$ + +\\[ f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\] + +#### Inline Formula + +The default inline delimiters are `$`/`$` and `\\(`/`\\)`: + +```markdown +$ c = \pm\sqrt{a^2 + b^2} $ and \\( f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\) +``` + +The rendered output looks like this: + +$ c = \pm\sqrt{a^2 + b^2} $ and \\( f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\) + +{{< admonition tip >}} +You can add more block and inline delimiters in your [site configuration](../theme-documentation-basics#site-configuration). +{{< /admonition >}} + +#### Copy-tex + +**[Copy-tex](https://github.com/Khan/KaTeX/tree/master/contrib/copy-tex)** is an extension for **$ \KaTeX $**. + +By the extension, when selecting and copying $ \KaTeX $ rendered elements, copies their $ \LaTeX $ source to the clipboard. + +Set the property `copyTex = true` under `[params.math]` in your [site configuration](../theme-documentation-basics#site-configuration) to enable Copy-tex. + +Select and copy the formula rendered in the previous section, and you can find that the copied content is the LaTeX source code. + +#### mhchem + +**[mhchem](https://github.com/Khan/KaTeX/tree/master/contrib/mhchem)** is an extension for **$ \KaTeX $**. + +By the extension, you can write beautiful chemical equations easily in the article. + +Set the property `mhchem = true` under `[params.math]` in your [site configuration](../theme-documentation-basics#site-configuration) to enable mhchem. + +```markdown +$$ \ce{CO2 + C -> 2 CO} $$ + +$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$ +``` + +The rendered output looks like this: + +$$ \ce{CO2 + C -> 2 CO} $$ + +$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$ + +### Ruby Annotation {#ruby} + +An extended Markdown syntax for **ruby annotation** is supported in **LoveIt** theme: + +```markdown +[Hugo]{?^}(An open-source static site generator) +``` + +The rendered output looks like this: + +[Hugo]^(An open-source static site generator) + +### Fraction {#fraction} + +{{< version 0.2.0 >}} + +An extended Markdown syntax for **fraction** is supported in **LoveIt** theme: + +```markdown +[Light]{?/}[Dark] + +[99]{?/}[100] +``` + +The rendered output looks like this: + +[Light]/[Dark] + +[90]/[100] + +### Font Awesome {#fontawesome} + +**LoveIt** theme uses [Font Awesome](https://fontawesome.com/) as the icon library. +You can easily use these icons in your articles. + +Get the `class` of icons you wanted from the [Font Awesome website](https://fontawesome.com/icons?d=gallery). + +```markdown +Gone camping! {?:}(fas fa-campground fa-fw): Be back soon. + +That is so funny! {?:}(far fa-grin-tears): +``` + +The rendered output looks like this: + +Gone camping! :(fas fa-campground fa-fw): Be back soon. + +That is so funny! :(far fa-grin-tears): + +### Escape character {#escape-character} + +In some special cases (when writing this theme documentation :(far fa-grin-squint-tears):), +your content will conflict with basic or extended Markdown syntax, and it is inevitable. + +The escape character syntax can help you build the content you wanted: + +```markdown +{{??}X} -> X +``` + +For example, two `:` will enable emoji syntax, which is not the behavior you want. The escape character syntax is like this: + +```markdown +{{??}:}joy: +``` + +The rendered output looks like this: + +**{?:}joy{?:}** instead of **:joy:** + +{{< admonition tip >}} +This is related to **[an issue for Hugo](https://github.com/gohugoio/hugo/issues/4978)**, which has not been resolved. +{{< /admonition >}} + +Another example is: + +```markdown +[link{{??}]}(#escape-character) +``` + +The rendered output looks like this: + +**[link{?]}(#escape-character)** instead of **[link](#escape-character)**. diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md new file mode 100644 index 00000000..15b09262 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md @@ -0,0 +1,398 @@ +--- +weight: 2 +title: "主题文档 - 内容" +date: 2020-03-05T16:30:05+08:00 +lastmod: 2020-03-05T16:30:05+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "了解如何在 LoveIt 主题中快速, 直观地创建和组织内容." +resources: +- name: "featured-image" + src: "featured-image.jpg" + +tags: ["content", "Markdown"] +categories: ["documentation"] + +lightgallery: true + +toc: + auto: false +math: + enable: true +--- + +了解如何在 **LoveIt** 主题中快速, 直观地创建和组织内容. + + + +## 1 内容组织 {#contents-organization} + +以下是一些方便你清晰管理和生成文章的目录结构建议: + +* 保持博客文章存放在 `content/posts` 目录, 例如: `content/posts/我的第一篇文章.md` +* 保持简单的静态页面存放在 `content` 目录, 例如: `content/about.md` +* 本地资源组织 + +{{< admonition note "本地资源引用" >}} +{{< version 0.2.10 >}} + +有三种方法来引用**图片**和**音乐**等本地资源: + +1. 使用[页面包](https://gohugo.io/content-management/page-bundles/)中的[页面资源](https://gohugo.io/content-management/page-resources/). + 你可以使用适用于 `Resources.GetMatch` 的值或者直接使用相对于当前页面目录的文件路径来引用页面资源. +2. 将本地资源放在 **assets** 目录中, 默认路径是 `/assets`. + 引用资源的文件路径是相对于 assets 目录的. +3. 将本地资源放在 **static** 目录中, 默认路径是 `/static`. + 引用资源的文件路径是相对于 static 目录的. + +引用的**优先级**符合以上的顺序. + +在这个主题中的很多地方可以使用上面的本地资源引用, +例如 **链接**, **图片**, `image` shortcode, `music` shortcode 和**前置参数**中的部分参数. + +页面资源或者 **assets** 目录中的[图片处理](https://gohugo.io/content-management/image-processing/)会在未来的版本中得到支持. +非常酷的功能! :(far fa-grin-squint fa-fw): +{{< /admonition >}} + +## 2 前置参数 {#front-matter} + +**Hugo** 允许你在文章内容前面添加 `yaml`, `toml` 或者 `json` 格式的前置参数. + +{{< admonition >}} +**不是所有**的以下前置参数都必须在你的每篇文章中设置. +只有在文章的参数和你的 [网站设置](../theme-documentation-basics#site-configuration) 中的 `page` 部分不一致时才有必要这么做. +{{< /admonition >}} + +这是一个前置参数例子: + +```yaml +--- +title: "我的第一篇文章" +subtitle: "" +date: 2020-03-04T15:58:26+08:00 +lastmod: 2020-03-04T15:58:26+08:00 +draft: true +author: "" +authorLink: "" +description: "" +license: "" +images: [] + +tags: [] +categories: [] +featuredImage: "" +featuredImagePreview: "" + +hiddenFromHomePage: false +hiddenFromSearch: false +twemoji: false +lightgallery: true +ruby: true +fraction: true +fontawesome: true +linkToMarkdown: true +rssFullText: false + +toc: + enable: true + auto: true +code: + copy: true + # ... +math: + enable: true + # ... +mapbox: + accessToken: "" + # ... +share: + enable: true + # ... +comment: + enable: true + # ... +library: + css: + # someCSS = "some.css" + # 位于 "assets/" + # 或者 + # someCSS = "https://cdn.example.com/some.css" + js: + # someJS = "some.js" + # 位于 "assets/" + # 或者 + # someJS = "https://cdn.example.com/some.js" +seo: + images: [] + # ... +--- +``` + +* **title**: 文章标题. +* **subtitle**: {{< version 0.2.0 >}} 文章副标题. +* **date**: 这篇文章创建的日期时间. 它通常是从文章的前置参数中的 `date` 字段获取的, 但是也可以在 [网站配置](../theme-documentation-basics#site-configuration) 中设置. +* **lastmod**: 上次修改内容的日期时间. +* **draft**: 如果设为 `true`, 除非 `hugo` 命令使用了 `--buildDrafts`/`-D` 参数, 这篇文章不会被渲染. +* **author**: 文章作者. +* **authorLink**: 文章作者的链接. +* **description**: 文章内容的描述. +* **license**: 这篇文章特殊的许可. +* **images**: 页面图片, 用于 Open Graph 和 Twitter Cards. + +* **tags**: 文章的标签. +* **categories**: 文章所属的类别. +* **featuredImage**: 文章的特色图片. +* **featuredImagePreview**: 用在主页预览的文章特色图片. + +* **hiddenFromHomePage**: 如果设为 `true`, 这篇文章将不会显示在主页上. +* **hiddenFromSearch**: {{< version 0.2.0 >}} 如果设为 `true`, 这篇文章将不会显示在搜索结果中. +* **twemoji**: {{< version 0.2.0 >}} 如果设为 `true`, 这篇文章会使用 twemoji. +* **lightgallery**: 如果设为 `true`, 文章中的图片将可以按照画廊形式呈现. +* **ruby**: {{< version 0.2.0 >}} 如果设为 `true`, 这篇文章会使用 [上标注释扩展语法](#ruby). +* **fraction**: {{< version 0.2.0 >}} 如果设为 `true`, 这篇文章会使用 [分数扩展语法](#fraction). +* **fontawesome**: {{< version 0.2.0 >}} 如果设为 `true`, 这篇文章会使用 [Font Awesome 扩展语法](#fontawesome). +* **linkToMarkdown**: 如果设为 `true`, 内容的页脚将显示指向原始 Markdown 文件的链接. +* **rssFullText**: {{< version 0.2.4 >}} 如果设为 `true`, 在 RSS 中将会显示全文内容. + +* **toc**: {{< version 0.2.9 changed >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.toc` 部分相同. +* **code**: {{< version 0.2.0 >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.code` 部分相同. +* **math**: {{< version 0.2.0 changed >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.math` 部分相同. +* **mapbox**: {{< version 0.2.0 >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.mapbox` 部分相同. +* **share**: 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.share` 部分相同. +* **comment**: {{< version 0.2.0 changed >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.comment` 部分相同. +* **library**: {{< version 0.2.7 >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.library` 部分相同. +* **seo**: {{< version 0.2.10 >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.seo` 部分相同. + +{{< admonition tip >}} +{{< version 0.2.10 >}} + +**featuredImage** 和 **featuredImagePreview** 支持[本地资源引用](#contents-organization)的完整用法. + +如果带有在前置参数中设置了 `name: featured-image` 或 `name: featured-image-preview` 属性的页面资源, +没有必要在设置 `featuredImage` 或 `featuredImagePreview`: + +```yaml +resources: +- name: featured-image + src: featured-image.jpg +- name: featured-image-preview + src: featured-image-preview.jpg +``` +{{< /admonition >}} + +## 3 内容摘要 + +**LoveIt** 主题使用内容摘要在主页中显示大致文章信息。Hugo 支持生成文章的摘要. + +![文章摘要预览](summary.zh-cn.png "文章摘要预览") + +### 自动摘要拆分 + +默认情况下, Hugo 自动将内容的前 70 个单词作为摘要. + +你可以通过在 [网站配置](../theme-documentation-basics#site-configuration) 中设置 `summaryLength` 来自定义摘要长度. + +如果您要使用 [CJK]^(中文/日语/韩语) 语言创建内容, 并且想使用 Hugo 的自动摘要拆分功能,请在 [网站配置](../theme-documentation-basics#site-configuration) 中将 `hasCJKLanguage` 设置为 `true`. + +### 手动摘要拆分 + +另外, 你也可以添加 `` 摘要分割符来拆分文章生成摘要. + +摘要分隔符之前的内容将用作该文章的摘要. + +{{< admonition >}} +请小心输入`` ; 即全部为小写且没有空格. +{{< /admonition >}} + +### 前置参数摘要 + +你可能希望摘要不是文章开头的文字. 在这种情况下, 你可以在文章前置参数的 `summary` 变量中设置单独的摘要. + +### 使用文章描述作为摘要 + +你可能希望将文章前置参数中的 `description` 变量的内容作为摘要. + +你仍然需要在文章开头添加 `` 摘要分割符. 将摘要分隔符之前的内容保留为空. 然后 **LoveIt** 主题会将你的文章描述作为摘要. + +### 摘要选择的优先级顺序 + +由于可以通过多种方式指定摘要, 因此了解顺序很有用. 如下: + +1. 如果文章中有 `` 摘要分隔符, 但分隔符之前没有内容, 则使用描述作为摘要. +2. 如果文章中有 `` 摘要分隔符, 则将按照手动摘要拆分的方法获得摘要. +3. 如果文章前置参数中有摘要变量, 那么将以该值作为摘要. +4. 按照自动摘要拆分方法. + +{{< admonition >}} +不建议在摘要内容中包含富文本块元素, 这会导致渲染错误. 例如代码块, 图片, 表格等. +{{< /admonition >}} + +## 4 Markdown 基本语法 + +这部分内容在 [Markdown 基本语法页面](../basic-markdown-syntax/) 中介绍. + +## 5 Markdown 扩展语法 {#extended-markdown-syntax} + +**LoveIt** 主题提供了一些扩展的语法便于你撰写文章. + +### Emoji 支持 + +这部分内容在 [Emoji 支持页面](../emoji-support/) 中介绍. + +### 数学公式 + +**LoveIt** 基于 [$ \KaTeX $](https://katex.org/) 提供数学公式的支持. + +在你的 [网站配置](../theme-documentation-basics#site-configuration) 中的 `[params.math]` 下面设置属性 `enable = true`, +并在文章的前置参数中设置属性 `math: true`来启用数学公式的自动渲染. + +{{< admonition tip >}} +有一份 [$ \KaTeX $ 中支持的 $ \TeX $ 函数](https://katex.org/docs/supported.html) 清单. +{{< /admonition >}} + +#### 公式块 + +默认的公式块分割符是 `$$`/`$$` 和 `\\[`/`\\]`: + +```markdown +$$ c = \pm\sqrt{a^2 + b^2} $$ + +\\[ f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\] +``` + +呈现的输出效果如下: + +$$ c = \pm\sqrt{a^2 + b^2} $$ + +\\[ f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\] + +#### 行内公式 + +默认的行内公式分割符是 `$`/`$` 和 `\\(`/`\\)`: + +```markdown +$ c = \pm\sqrt{a^2 + b^2} $ 和 \\( f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\) +``` + +呈现的输出效果如下: + +$ c = \pm\sqrt{a^2 + b^2} $ 和 \\( f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \\) + +{{< admonition tip >}} +你可以在 [网站配置](../theme-documentation-basics#site-configuration) 中自定义公式块和行内公式的分割符. +{{< /admonition >}} + +#### Copy-tex + +**[Copy-tex](https://github.com/Khan/KaTeX/tree/master/contrib/copy-tex)** 是一个 **$ \KaTeX $** 的插件. + +通过这个扩展, 在选择并复制 $ \KaTeX $ 渲染的公式时, 会将其 $ \LaTeX $ 源代码复制到剪贴板. + +在你的 [网站配置](../theme-documentation-basics#site-configuration) 中的 `[params.math]` 下面设置属性 `copyTex = true` 来启用 Copy-tex. + +选择并复制上一节中渲染的公式, 可以发现复制的内容为 LaTeX 源代码. + +#### mhchem + +**[mhchem](https://github.com/Khan/KaTeX/tree/master/contrib/mhchem)** 是一个 **$ \KaTeX $** 的插件. + +通过这个扩展, 你可以在文章中轻松编写漂亮的化学方程式. + +在你的 [网站配置](../theme-documentation-basics#site-configuration) 中的 `[params.math]` 下面设置属性 `mhchem = true` 来启用 mhchem. + +```markdown +$$ \ce{CO2 + C -> 2 CO} $$ + +$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$ +``` + +呈现的输出效果如下: + +$$ \ce{CO2 + C -> 2 CO} $$ + +$$ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} $$ + +### 字符注音或者注释 {#ruby} + +**LoveIt** 主题支持一种 **字符注音或者注释** Markdown 扩展语法: + +```markdown +[Hugo]{?^}(一个开源的静态网站生成工具) +``` + +呈现的输出效果如下: + +[Hugo]^(一个开源的静态网站生成工具) + +### 分数 {#fraction} + +{{< version 0.2.0 >}} + +**LoveIt** 主题支持一种 **分数** Markdown 扩展语法: + +```markdown +[浅色]{?/}[深色] + +[99]{?/}[100] +``` + +呈现的输出效果如下: + +[浅色]/[深色] + +[90]/[100] + +### Font Awesome {#fontawesome} + +**LoveIt** 主题使用 [Font Awesome](https://fontawesome.com/) 作为图标库. +你同样可以在文章中轻松使用这些图标. + +从 [Font Awesome 网站](https://fontawesome.com/icons?d=gallery) 上获取所需的图标 `class`. + +```markdown +去露营啦! {?:}(fas fa-campground fa-fw): 很快就回来. + +真开心! {?:}(far fa-grin-tears): +``` + +呈现的输出效果如下: + +去露营啦! :(fas fa-campground fa-fw): 很快就回来. + +真开心! :(far fa-grin-tears): + +### 转义字符 {#escape-character} + +在某些特殊情况下 (编写这个主题文档时 :(far fa-grin-squint-tears):), +你的文章内容会与 Markdown 的基本或者扩展语法冲突, 并且无法避免. + +转义字符语法可以帮助你渲染出想要的内容: + +```markdown +{{??}X} -> X +``` + +例如, 两个 `:` 会启用 emoji 语法. 但有时候这不是你想要的结果. 可以像这样使用转义字符语法: + +```markdown +{{??}:}joy: +``` + +呈现的输出效果如下: + +**{?:}joy{?:}** 而不是 **:joy:** + +{{< admonition tip >}} +这个方法可以间接解决一个还未解决的 **[Hugo 的 issue](https://github.com/gohugoio/hugo/issues/4978)**. +{{< /admonition >}} + +另一个例子是: + +```markdown +[link{{??}]}(#escape-character) +``` + +呈现的输出效果如下: + +**[link{?]}(#escape-character)** 而不是 **[link](#escape-character)**. diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/summary.png b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/summary.png new file mode 100644 index 00000000..92c5cb43 Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/summary.png differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/summary.zh-cn.png b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/summary.zh-cn.png new file mode 100644 index 00000000..73d271a3 Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-content/summary.zh-cn.png differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/featured-image-preview.jpg b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/featured-image-preview.jpg new file mode 100644 index 00000000..bf079c8f Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/featured-image-preview.jpg differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/featured-image.jpg b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/featured-image.jpg new file mode 100644 index 00000000..5fa13831 Binary files /dev/null and b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/featured-image.jpg differ diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md new file mode 100644 index 00000000..cfb2220b --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md @@ -0,0 +1,1295 @@ +--- +weight: 4 +title: "Theme Documentation - Extended Shortcodes" +date: 2020-03-03T16:29:41+08:00 +lastmod: 2020-03-03T16:29:41+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "LoveIt theme provides multiple shortcodes on top of built-in ones in Hugo." +resources: +- name: "featured-image" + src: "featured-image.jpg" +- name: "featured-image-preview" + src: "featured-image-preview.jpg" + +tags: ["shortcodes"] +categories: ["documentation"] + +lightgallery: true +--- + +**LoveIt** theme provides multiple shortcodes on top of built-in ones in Hugo. + + + +## 1 style + +{{< version 0.2.0 changed >}} + +{{< admonition >}} +Hugo **extended** version is necessary for `style` shortcode. +{{< /admonition >}} + +`style` is a shortcode to insert custom style in your post. + +The `style` shortcode has two positional parameters. + +The **first** one is the custom style content, +which supports nesting syntax in [:(fab fa-sass fa-fw): SASS](https://sass-lang.com/documentation/style-rules/declarations#nesting) +and `&` referring to this parent HTML element. + +And the **second** one is the tag name of the HTML element wrapping the content you want to change style, and whose default value is `div`. + +Example `style` input: + +```markdown +{{}} +This is a **right-aligned** paragraph. +{{}} +``` + +The rendered output looks like this: + +{{< style "text-align:right; strong{color:#00b1ff;}" >}} +This is a **right-aligned** paragraph. +{{< /style >}} + +## 2 link + +{{< version 0.2.0 >}} + +`link` shortcode is an alternative to [Markdown link syntax](../basic-markdown-syntax#links). `link` shortcode can provide some other features and can be used in code blocks. + +{{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. + +The `link` shortcode has the following named parameters: + +* **href** *[required]* (**first** positional parameter) + + Destination of the link. + +* **content** *[optional]* (**second** positional parameter) + + Content of the link, default value is the value of **href** parameter. + + *Markdown or HTML format is supported.* + +* **title** *[optional]* (**third** positional parameter) + + `title` attribute of the HTML `a` tag, which will be shown when hovering on the link. + +* **class** *[optional]* + + `class` attribute of the HTML `a` tag. + +* **rel** *[optional]* + + Additional `rel` attributes of the HTML `a` tag. + +Example `link` input: + +```markdown +{{}} +Or +{{}} + +{{}} +Or +{{}} + +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +* {{< link "https://assemble.io" >}} +* {{< link "mailto:contact@revolunet.com" >}} +* {{< link "https://assemble.io" Assemble >}} + +Example `link` input with a title: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this (hover over the link, there should be a tooltip): + +{{< link "https://github.com/upstage/" Upstage "Visit Upstage!" >}} + +## 3 image {#image} + +{{< version 0.2.0 changed >}} + +`image` shortcode is an alternative to [`figure` shortcode](../theme-documentation-built-in-shortcodes#figure). `image` shortcode can take full advantage of the dependent libraries of [lazysizes](https://github.com/aFarkas/lazysizes) and [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js). + +{{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. + +The `image` shortcode has the following named parameters: + +* **src** *[required]* (**first** positional parameter) + + URL of the image to be displayed. + +* **alt** *[optional]* (**second** positional parameter) + + Alternate text for the image if the image cannot be displayed, default value is the value of **src** parameter. + + *Markdown or HTML format is supported.* + +* **caption** *[optional]* (**third** positional parameter) + + Image caption. + + *Markdown or HTML format is supported.* + +* **title** *[optional]* + + Image title that will be shown when hovering on the image. + +* **class** *[optional]* + + `class` attribute of the HTML `figure` tag. + +* **src_s** *[optional]* + + URL of the image thumbnail, used for lightgallery, default value is the value of **src** parameter. + +* **src_l** *[optional]* + + URL of the HD image, used for lightgallery, default value is the value of **src** parameter. + +* **height** *[optional]* + + `height` attribute of the image. + +* **width** *[optional]* + + `width` attribute of the image. + +* **linked** *[optional]* + + Whether the image needs to be hyperlinked, default value is `true`. + +* **rel** *[optional]* + + Additional `rel` attributes of the HTML `a` tag, if **linked** parameter is set to `true`. + +Example `image` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< image src="/images/lighthouse.jpg" caption="Lighthouse (`image`)" src_s="/images/lighthouse-small.jpg" src_l="/images/lighthouse-large.jpg" >}} + +## 4 admonition + +The `admonition` shortcode supports **12** types of banners to help you put notice in your page. + +*Markdown or HTML format in the content is supported.* + +{{< admonition >}} +A **note** banner +{{< /admonition >}} + +{{< admonition abstract >}} +An **abstract** banner +{{< /admonition >}} + +{{< admonition info >}} +A **info** banner +{{< /admonition >}} + +{{< admonition tip >}} +A **tip** banner +{{< /admonition >}} + +{{< admonition success >}} +A **success** banner +{{< /admonition >}} + +{{< admonition question >}} +A **question** banner +{{< /admonition >}} + +{{< admonition warning >}} +A **warning** banner +{{< /admonition >}} + +{{< admonition failure >}} +A **failure** banner +{{< /admonition >}} + +{{< admonition danger >}} +A **danger** banner +{{< /admonition >}} + +{{< admonition bug >}} +A **bug** banner +{{< /admonition >}} + +{{< admonition example >}} +An **example** banner +{{< /admonition >}} + +{{< admonition quote >}} +A **quote** banner +{{< /admonition >}} + +The `admonition` shortcode has the following named parameters: + +* **type** *[optional]* (**first** positional parameter) + + Type of the `admonition` banner, default value is `note`. + +* **title** *[optional]* (**second** positional parameter) + + Title of the `admonition` banner, default value is the value of **type** parameter. + +* **open** *[optional]* (**third** positional parameter) {{< version 0.2.0 changed >}} + + Whether the content will be expandable by default, default value is `true`. + +Example `admonition` input: + +```markdown +{{}} +A **tip** banner +{{}} +Or +{{}} +A **tip** banner +{{}} +``` + +The rendered output looks like this: + +{{< admonition tip "This is a tip" false >}} +A **tip** banner +{{< /admonition >}} + +## 5 mermaid + +[mermaid](https://mermaidjs.github.io/) is a library helping you to generate diagram and flowcharts from text, in a similar manner as Markdown. + +Just insert your mermaid code in the `mermaid` shortcode and that’s it. + +### 5.1 Flowchart {#flowchart} + +Example **flowchart** `mermaid` input: + +```markdown +{{}} +graph LR; + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +graph LR; + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +{{< /mermaid >}} + +### 5.2 Sequence Diagram {#sequence-diagram} + +Example **sequence diagram** `mermaid` input: + +```markdown +{{}} +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->John: Fight against hypochondria + end + Note right of John: Rational thoughts
    prevail... + John-->Alice: Great! + John->Bob: How about you? + Bob-->John: Jolly good! +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->John: Fight against hypochondria + end + Note right of John: Rational thoughts
    prevail... + John-->Alice: Great! + John->Bob: How about you? + Bob-->John: Jolly good! +{{< /mermaid >}} + +### 5.3 GANTT {#gantt} + +Example **GANTT** `mermaid` input: + +```markdown +{{}} +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d +{{< /mermaid >}} + +### 5.4 Class Diagram {#class-diagram} + +Example **class diagram** `mermaid` input: + +```markdown +{{}} +classDiagram + Class01 <|-- AveryLongClass : Cool + Class03 *-- Class04 + Class05 o-- Class06 + Class07 .. Class08 + Class09 --> C2 : Where am i? + Class09 --* C3 + Class09 --|> Class07 + Class07 : equals() + Class07 : Object[] elementData + Class01 : size() + Class01 : int chimp + Class01 : int gorilla + Class08 <--> C2: Cool label +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +classDiagram + Class01 <|-- AveryLongClass : Cool + Class03 *-- Class04 + Class05 o-- Class06 + Class07 .. Class08 + Class09 --> C2 : Where am i? + Class09 --* C3 + Class09 --|> Class07 + Class07 : equals() + Class07 : Object[] elementData + Class01 : size() + Class01 : int chimp + Class01 : int gorilla + Class08 <--> C2: Cool label +{{< /mermaid >}} + +### 5.5 State Diagram {#state-diagram} + +Example **state diagram** `mermaid` input: + +```markdown +{{}} +stateDiagram + [*] --> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +stateDiagram + [*] --> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +{{< /mermaid >}} + +### 5.6 Git Graph {#git-graph} + +Example **git graph** `mermaid` input: + +```markdown +{{}} +gitGraph: +options +{ + "nodeSpacing": 100, + "nodeRadius": 10 +} +end + commit + branch newbranch + checkout newbranch + commit + commit + checkout master + commit + commit + merge newbranch +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +gitGraph: +options +{ + "nodeSpacing": 100, + "nodeRadius": 10 +} +end + commit + branch newbranch + checkout newbranch + commit + commit + checkout master + commit + commit + merge newbranch +{{< /mermaid >}} + +### 5.7 Pie {#pie} + +Example **pie** `mermaid` input: + +```markdown +{{}} +pie + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +pie + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +{{< /mermaid >}} + +## 6 echarts + +[ECharts](https://echarts.apache.org/) is a library helping you to generate interactive data visualization. + +The basic chart types ECharts supports include [line series](https://echarts.apache.org/en/option.html#series-line), [bar series](https://echarts.apache.org/en/option.html#series-line), [scatter series](https://echarts.apache.org/en/option.html#series-scatter), [pie charts](https://echarts.apache.org/en/option.html#series-pie), [candle-stick series](https://echarts.apache.org/en/option.html#series-candlestick), [boxplot series](https://echarts.apache.org/en/option.html#series-boxplot) for statistics, [map series](https://echarts.apache.org/en/option.html#series-map), [heatmap series](https://echarts.apache.org/en/option.html#series-heatmap), [lines series](https://echarts.apache.org/en/option.html#series-lines) for directional information, [graph series](https://echarts.apache.org/en/option.html#series-graph) for relationships, [treemap series](https://echarts.apache.org/en/option.html#series-treemap), [sunburst series](https://echarts.apache.org/en/option.html#series-sunburst), [parallel series](https://echarts.apache.org/en/option.html#series-parallel) for multi-dimensional data, [funnel series](https://echarts.apache.org/en/option.html#series-funnel), [gauge series](https://echarts.apache.org/en/option.html#series-gauge). And it's extremely easy to create a combinition of them with ECharts. + +Just insert your ECharts option in `JSON`/`YAML`/`TOML` format in the `echarts` shortcode and that’s it. + +Example `echarts` input in `JSON` format: + +```json +{{}} +{ + "title": { + "text": "Summary Line Chart", + "top": "2%", + "left": "center" + }, + "tooltip": { + "trigger": "axis" + }, + "legend": { + "data": ["Email Marketing", "Affiliate Advertising", "Video Advertising", "Direct View", "Search Engine"], + "top": "10%" + }, + "grid": { + "left": "5%", + "right": "5%", + "bottom": "5%", + "top": "20%", + "containLabel": true + }, + "toolbox": { + "feature": { + "saveAsImage": { + "title": "Save as Image" + } + } + }, + "xAxis": { + "type": "category", + "boundaryGap": false, + "data": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] + }, + "yAxis": { + "type": "value" + }, + "series": [ + { + "name": "Email Marketing", + "type": "line", + "stack": "Total", + "data": [120, 132, 101, 134, 90, 230, 210] + }, + { + "name": "Affiliate Advertising", + "type": "line", + "stack": "Total", + "data": [220, 182, 191, 234, 290, 330, 310] + }, + { + "name": "Video Advertising", + "type": "line", + "stack": "Total", + "data": [150, 232, 201, 154, 190, 330, 410] + }, + { + "name": "Direct View", + "type": "line", + "stack": "Total", + "data": [320, 332, 301, 334, 390, 330, 320] + }, + { + "name": "Search Engine", + "type": "line", + "stack": "Total", + "data": [820, 932, 901, 934, 1290, 1330, 1320] + } + ] +} +{{}} +``` + +The same in `YAML` format: + +```yaml +{{}} +title: + text: Summary Line Chart + top: 2% + left: center +tooltip: + trigger: axis +legend: + data: + - Email Marketing + - Affiliate Advertising + - Video Advertising + - Direct View + - Search Engine + top: 10% +grid: + left: 5% + right: 5% + bottom: 5% + top: 20% + containLabel: true +toolbox: + feature: + saveAsImage: + title: Save as Image +xAxis: + type: category + boundaryGap: false + data: + - Monday + - Tuesday + - Wednesday + - Thursday + - Friday + - Saturday + - Sunday +yAxis: + type: value +series: + - name: Email Marketing + type: line + stack: Total + data: + - 120 + - 132 + - 101 + - 134 + - 90 + - 230 + - 210 + - name: Affiliate Advertising + type: line + stack: Total + data: + - 220 + - 182 + - 191 + - 234 + - 290 + - 330 + - 310 + - name: Video Advertising + type: line + stack: Total + data: + - 150 + - 232 + - 201 + - 154 + - 190 + - 330 + - 410 + - name: Direct View + type: line + stack: Total + data: + - 320 + - 332 + - 301 + - 334 + - 390 + - 330 + - 320 + - name: Search Engine + type: line + stack: Total + data: + - 820 + - 932 + - 901 + - 934 + - 1290 + - 1330 + - 1320 +{{}} +``` + +The same in `TOML` format: + +```toml +{{}} +[title] +text = "Summary Line Chart" +top = "2%" +left = "center" + +[tooltip] +trigger = "axis" + +[legend] +data = [ + "Email Marketing", + "Affiliate Advertising", + "Video Advertising", + "Direct View", + "Search Engine" +] +top = "10%" + +[grid] +left = "5%" +right = "5%" +bottom = "5%" +top = "20%" +containLabel = true + +[toolbox] +[toolbox.feature] +[toolbox.feature.saveAsImage] +title = "Save as Image" + +[xAxis] +type = "category" +boundaryGap = false +data = [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" +] + +[yAxis] +type = "value" + +[[series]] +name = "Email Marketing" +type = "line" +stack = "Total" +data = [ + 120.0, + 132.0, + 101.0, + 134.0, + 90.0, + 230.0, + 210.0 +] + +[[series]] +name = "Affiliate Advertising" +type = "line" +stack = "Total" +data = [ + 220.0, + 182.0, + 191.0, + 234.0, + 290.0, + 330.0, + 310.0 +] + +[[series]] +name = "Video Advertising" +type = "line" +stack = "Total" +data = [ + 150.0, + 232.0, + 201.0, + 154.0, + 190.0, + 330.0, + 410.0 +] + +[[series]] +name = "Direct View" +type = "line" +stack = "Total" +data = [ + 320.0, + 332.0, + 301.0, + 334.0, + 390.0, + 330.0, + 320.0 +] + +[[series]] +name = "Search Engine" +type = "line" +stack = "Total" +data = [ + 820.0, + 932.0, + 901.0, + 934.0, + 1290.0, + 1330.0, + 1320.0 +] +{{}} +``` + +The rendered output looks like this: + +{{< echarts >}} +{ + "title": { + "text": "Summary Line Chart", + "top": "2%", + "left": "center" + }, + "tooltip": { + "trigger": "axis" + }, + "legend": { + "data": ["Email Marketing", "Affiliate Advertising", "Video Advertising", "Direct View", "Search Engine"], + "top": "10%" + }, + "grid": { + "left": "5%", + "right": "5%", + "bottom": "5%", + "top": "20%", + "containLabel": true + }, + "toolbox": { + "feature": { + "saveAsImage": { + "title": "Save as Image" + } + } + }, + "xAxis": { + "type": "category", + "boundaryGap": false, + "data": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] + }, + "yAxis": { + "type": "value" + }, + "series": [ + { + "name": "Email Marketing", + "type": "line", + "stack": "Total", + "data": [120, 132, 101, 134, 90, 230, 210] + }, + { + "name": "Affiliate Advertising", + "type": "line", + "stack": "Total", + "data": [220, 182, 191, 234, 290, 330, 310] + }, + { + "name": "Video Advertising", + "type": "line", + "stack": "Total", + "data": [150, 232, 201, 154, 190, 330, 410] + }, + { + "name": "Direct View", + "type": "line", + "stack": "Total", + "data": [320, 332, 301, 334, 390, 330, 320] + }, + { + "name": "Search Engine", + "type": "line", + "stack": "Total", + "data": [820, 932, 901, 934, 1290, 1330, 1320] + } + ] +} +{{< /echarts >}} + +The `echarts` shortcode has also the following named parameters: + +* **width** *[optional]* (**first** positional parameter) + + {{< version 0.2.0 >}} Width of the data visualization, default value is `100%`. + +* **height** *[optional]* (**second** positional parameter) + + {{< version 0.2.0 >}} Height of the data visualization, default value is `30rem`. + +## 7 mapbox + +{{< version 0.2.0 >}} + +[Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) is a JavaScript library that uses WebGL to render interactive maps from [vector tiles](https://docs.mapbox.com/help/glossary/vector-tiles/) and [Mapbox styles](https://docs.mapbox.com/mapbox-gl-js/style-spec/). + +The `mapbox` shortcode has the following named parameters to use Mapbox GL JS: + +* **lng** *[required]* (**first** positional parameter) + + Longitude of the inital centerpoint of the map, measured in degrees. + +* **lat** *[required]* (**second** positional parameter) + + Latitude of the inital centerpoint of the map, measured in degrees. + +* **zoom** *[optional]* (**third** positional parameter) + + The initial zoom level of the map, default value is `10`. + +* **marked** *[optional]* (**fourth** positional parameter) + + Whether to add a marker at the inital centerpoint of the map, default value is `true`. + +* **light-style** *[optional]* (**fifth** positional parameter) + + Style for the light theme, default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **dark-style** *[optional]* (**sixth** positional parameter) + + Style for the dark theme, default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **navigation** *[optional]* + + Whether to add [NavigationControl](https://docs.mapbox.com/mapbox-gl-js/api#navigationcontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **geolocate** *[optional]* + + Whether to add [GeolocateControl](https://docs.mapbox.com/mapbox-gl-js/api#geolocatecontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **scale** *[optional]* + + Whether to add [ScaleControl](https://docs.mapbox.com/mapbox-gl-js/api#scalecontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **fullscreen** *[optional]* + + Whether to add [FullscreenControl](https://docs.mapbox.com/mapbox-gl-js/api#fullscreencontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **width** *[optional]* + + Width of the map, default value is `100%`. + +* **height** *[optional]* + + Height of the map, default value is `20rem`. + +Example simple `mapbox` input: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< mapbox 121.485 31.233 12 >}} + +Example `mapbox` input with the custom style: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< mapbox -122.252 37.453 10 false "mapbox://styles/mapbox/navigation-preview-day-v4?optimize=true" "mapbox://styles/mapbox/navigation-preview-night-v4?optimize=true" >}} + +## 8 music + +The `music` shortcode embeds a responsive music player based on [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS). + +There are three ways to use it the `music` shortcode. + +### 8.1 Custom Music URL {#custom-music-url} + +{{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. + +The `music` shortcode has the following named parameters by custom music URL: + +* **server** *[required]* + + URL of the custom music. + +* **name** *[optional]* + + Name of the custom music. + +* **artist** *[optional]* + + Artist of the custom music. + +* **cover** *[required]* + + URL of the custom music cover. + +Example `music` input by custom music URL: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< music url="/music/Wavelength.mp3" name=Wavelength artist=oldmanyoung cover="/images/Wavelength.jpg" >}} + +### 8.2 Music Platform URL Automatic Identification {#automatic-identification} + +The `music` shortcode has one named parameter by music platform URL automatic identification: + +* **auto** *[required]* (**first** positional parameter) + + URL of the music platform URL for automatic identification, + which supports `netease`, `tencent` and `xiami` music platform. + +Example `music` input by music platform URL automatic identification: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< music auto="https://music.163.com/#/playlist?id=60198" >}} + +### 8.3 Custom Server, Type and ID {#custom-server} + +The `music` shortcode has the following named parameters by custom music platform: + +* **server** *[required]* (**first** positional parameter) + + [`netease`, `tencent`, `kugou`, `xiami`, `baidu`] + + Music platform. + +* **type** *[required]* (**second** positional parameter) + + [`song`, `playlist`, `album`, `search`, `artist`] + + Type of the music. + +* **id** *[required]* (**third** positional parameter) + + Song ID, or playlist ID, or album ID, or search keyword, or artist ID. + +Example `music` input by custom music platform: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< music netease song 1868553 >}} + +### 8.4 Other Parameters {#other-parameters} + +The `music` shortcode has other named parameters applying to the above three ways: + +* **theme** *[optional]* + + {{< version 0.2.0 changed >}} Main color of the music player, default value is `#448aff`. + +* **fixed** *[optional]* + + Whether to enable fixed mode, default value is `false`. + +* **mini** *[optional]* + + Whether to enable mini mode, default value is `false`. + +* **autoplay** *[optional]* + + Whether to autoplay music, default value is `false`. + +* **volume** *[optional]* + + Default volume when the player is first opened, which will be remembered in the browser, default value is `0.7`. + +* **mutex** *[optional]* + + Whether to pause other players when this player starts playing, default value is `true`. + +The `music` shortcode has the following named parameters only applying to the type of music list: + +* **loop** *[optional]* + + [`all`, `one`, `none`] + + Loop mode of the music list, default value is `none`. + +* **order** *[optional]* + + [`list`, `random`] + + Play order of the music list, default value is `list`. + +* **list-folded** *[optional]* + + Whether the music list should be folded at first, default value is `false`. + +* **list-max-height** *[optional]* + + Max height of the music list, default value is `340px`. + +## 9 bilibili + +{{< version 0.2.0 changed >}} + +The `bilibili` shortcode embeds a responsive video player for bilibili videos. + +When the video only has one part, only the BV `id` of the video is required, e.g.: + +```code +https://www.bilibili.com/video/BV1Sx411T7QQ +``` + +Example `bilibili` input: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< bilibili id=BV1Sx411T7QQ >}} + +When the video has multiple parts, in addition to the BV `id` of the video, +`p` is also required, whose default value is `1`, e.g.: + +```code +https://www.bilibili.com/video/BV1TJ411C7An?p=3 +``` + +Example `bilibili` input with `p`: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< bilibili id=BV1TJ411C7An p=3 >}} + +## 10 typeit + +The `typeit` shortcode provides typing animation based on [TypeIt](https://typeitjs.com/). + +Just insert your content in the `typeit` shortcode and that’s it. + +### 10.1 Simple Content {#simple-content} + +Simple content is allowed in `Markdown` format and **without** rich block content such as images and more... + +Example `typeit` input: + +```markdown +{{}} +This is a *paragraph* with **typing animation** based on [TypeIt](https://typeitjs.com/)... +{{}} +``` + +The rendered output looks like this: + +{{< typeit >}} +This is a *paragraph* with **typing animation** based on [TypeIt](https://typeitjs.com/)... +{{< /typeit >}} + +Alternatively, you can use custom **HTML tags**. + +Example `typeit` input with `h4` tag: + +```markdown +{{}} +This is a *paragraph* with **typing animation** based on [TypeIt](https://typeitjs.com/)... +{{}} +``` + +The rendered output looks like this: + +{{< typeit tag=h4 >}} +This is a *paragraph* with **typing animation** based on [TypeIt](https://typeitjs.com/)... +{{< /typeit >}} + +### 10.2 Code Content {#code-content} + +Code content is allowed and will be highlighted by named parameter `code` for the type of code language. + +Example `typeit` input with `code`: + +```markdown +{{}} +public class HelloWorld { + public static void main(String []args) { + System.out.println("Hello World"); + } +} +{{}} +``` + +The rendered output looks like this: + +{{< typeit code=java >}} +public class HelloWorld { + public static void main(String []args) { + System.out.println("Hello World"); + } +} +{{< /typeit >}} + +### 10.3 Group Content {#group-content} + +All typing animations start at the same time by default. +But sometimes you may want to start a set of `typeit` contents in order. + +A set of `typeit` contents with the same value of named parameter `group` will start typing animation in sequence. + +Example `typeit` input with `group`: + +```markdown +{{}} +**First** this paragraph begins +{{}} + +{{}} +**Then** this paragraph begins +{{}} +``` + +The rendered output looks like this: + +{{< typeit group=paragraph >}} +**First** this paragraph begins +{{< /typeit >}} + +{{< typeit group=paragraph >}} +**Then** this paragraph begins +{{< /typeit >}} + +## 11 script + +{{< version 0.2.8 >}} + +`script` is a shortcode to insert custom **:(fab fa-js fa-fw): Javascript** in your post. + +{{< admonition >}} +The script content can be guaranteed to be executed in order after all third-party libraries are loaded. So you are free to use third-party libraries. +{{< /admonition >}} + +Example `script` input: + +```markdown +{{}} +console.log('Hello LoveIt!'); +{{}} +``` + +You can see the output in the console of the developer tool. + +{{< script >}} +console.log('Hello LoveIt!'); +{{< /script >}} diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.fr.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.fr.md new file mode 100644 index 00000000..8cbecea2 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.fr.md @@ -0,0 +1,1300 @@ +--- +weight: 4 +title: "Thème Documentation - Extended Shortcodes" +date: 2020-03-03T16:29:59+08:00 +lastmod: 2020-03-03T16:29:59+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "Le thème LoveIt fournit plusieurs shortcodes en plus de ceux intégrés dans Hugo." +resources: +- name: "featured-image" + src: "featured-image.jpg" +- name: "featured-image-preview" + src: "featured-image-preview.jpg" + +tags: ["shortcodes"] +categories: ["documentation"] + +lightgallery: true +--- + +Le thème **LoveIt** fournit plusieurs shortcodes en plus de ceux intégrés dans Hugo. + + + +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [:(fas fa-code-branch fa-fw): making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + +## 1 style + +{{< version 0.2.0 changed >}} + +{{< admonition >}} +Hugo **extended** version is necessary for `style` shortcode. +{{< /admonition >}} + +`style` is a shortcode to insert custom style in your post. + +The `style` shortcode has two positional parameters. + +The **first** one is the custom style content, +which supports nesting syntax in [:(fab fa-sass fa-fw): SASS](https://sass-lang.com/documentation/style-rules/declarations#nesting) +and `&` referring to this parent HTML element. + +And the **second** one is the tag name of the HTML element wrapping the content you want to change style, and whose default value is `div`. + +Example `style` input: + +```markdown +{{}} +This is a **right-aligned** paragraph. +{{}} +``` + +The rendered output looks like this: + +{{< style "text-align:right; strong{color:#00b1ff;}" >}} +This is a **right-aligned** paragraph. +{{< /style >}} + +## 2 link + +{{< version 0.2.0 >}} + +`link` shortcode is an alternative to [Markdown link syntax](../basic-markdown-syntax#links). `link` shortcode can provide some other features and can be used in code blocks. + +{{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. + +The `link` shortcode has the following named parameters: + +* **href** *[required]* (**first** positional parameter) + + Destination of the link. + +* **content** *[optional]* (**second** positional parameter) + + Content of the link, default value is the value of **href** parameter. + + *Markdown or HTML format is supported.* + +* **title** *[optional]* (**third** positional parameter) + + `title` attribute of the HTML `a` tag, which will be shown when hovering on the link. + +* **class** *[optional]* + + `class` attribute of the HTML `a` tag. + +* **rel** *[optional]* + + Additional `rel` attributes of the HTML `a` tag. + +Example `link` input: + +```markdown +{{}} +Or +{{}} + +{{}} +Or +{{}} + +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +* {{< link "https://assemble.io" >}} +* {{< link "mailto:contact@revolunet.com" >}} +* {{< link "https://assemble.io" Assemble >}} + +Example `link` input with a title: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this (hover over the link, there should be a tooltip): + +{{< link "https://github.com/upstage/" Upstage "Visit Upstage!" >}} + +## 3 image {#image} + +{{< version 0.2.0 changed >}} + +`image` shortcode is an alternative to [`figure` shortcode](../theme-documentation-built-in-shortcodes#figure). `image` shortcode can take full advantage of the dependent libraries of [lazysizes](https://github.com/aFarkas/lazysizes) and [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js). + +{{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. + +The `image` shortcode has the following named parameters: + +* **src** *[required]* (**first** positional parameter) + + URL of the image to be displayed. + +* **alt** *[optional]* (**second** positional parameter) + + Alternate text for the image if the image cannot be displayed, default value is the value of **src** parameter. + + *Markdown or HTML format is supported.* + +* **caption** *[optional]* (**third** positional parameter) + + Image caption. + + *Markdown or HTML format is supported.* + +* **title** *[optional]* + + Image title that will be shown when hovering on the image. + +* **class** *[optional]* + + `class` attribute of the HTML `figure` tag. + +* **src_s** *[optional]* + + URL of the image thumbnail, used for lightgallery, default value is the value of **src** parameter. + +* **src_l** *[optional]* + + URL of the HD image, used for lightgallery, default value is the value of **src** parameter. + +* **height** *[optional]* + + `height` attribute of the image. + +* **width** *[optional]* + + `width` attribute of the image. + +* **linked** *[optional]* + + Whether the image needs to be hyperlinked, default value is `true`. + +* **rel** *[optional]* + + Additional `rel` attributes of the HTML `a` tag, if **linked** parameter is set to `true`. + +Example `image` input: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< image src="/images/lighthouse.jpg" caption="Lighthouse (`image`)" src_s="/images/lighthouse-small.jpg" src_l="/images/lighthouse-large.jpg" >}} + +## 4 admonition + +The `admonition` shortcode supports **12** types of banners to help you put notice in your page. + +*Markdown or HTML format in the content is supported.* + +{{< admonition >}} +A **note** banner +{{< /admonition >}} + +{{< admonition abstract >}} +An **abstract** banner +{{< /admonition >}} + +{{< admonition info >}} +A **info** banner +{{< /admonition >}} + +{{< admonition tip >}} +A **tip** banner +{{< /admonition >}} + +{{< admonition success >}} +A **success** banner +{{< /admonition >}} + +{{< admonition question >}} +A **question** banner +{{< /admonition >}} + +{{< admonition warning >}} +A **warning** banner +{{< /admonition >}} + +{{< admonition failure >}} +A **failure** banner +{{< /admonition >}} + +{{< admonition danger >}} +A **danger** banner +{{< /admonition >}} + +{{< admonition bug >}} +A **bug** banner +{{< /admonition >}} + +{{< admonition example >}} +An **example** banner +{{< /admonition >}} + +{{< admonition quote >}} +A **quote** banner +{{< /admonition >}} + +The `admonition` shortcode has the following named parameters: + +* **type** *[optional]* (**first** positional parameter) + + Type of the `admonition` banner, default value is `note`. + +* **title** *[optional]* (**second** positional parameter) + + Title of the `admonition` banner, default value is the value of **type** parameter. + +* **open** *[optional]* (**third** positional parameter) {{< version 0.2.0 changed >}} + + Whether the content will be expandable by default, default value is `true`. + +Example `admonition` input: + +```markdown +{{}} +A **tip** banner +{{}} +Or +{{}} +A **tip** banner +{{}} +``` + +The rendered output looks like this: + +{{< admonition tip "This is a tip" false >}} +A **tip** banner +{{< /admonition >}} + +## 5 mermaid + +[mermaid](https://mermaidjs.github.io/) is a library helping you to generate diagram and flowcharts from text, in a similar manner as Markdown. + +Just insert your mermaid code in the `mermaid` shortcode and that’s it. + +### 5.1 Flowchart {#flowchart} + +Example **flowchart** `mermaid` input: + +```markdown +{{}} +graph LR; + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +graph LR; + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +{{< /mermaid >}} + +### 5.2 Sequence Diagram {#sequence-diagram} + +Example **sequence diagram** `mermaid` input: + +```markdown +{{}} +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->John: Fight against hypochondria + end + Note right of John: Rational thoughts
    prevail... + John-->Alice: Great! + John->Bob: How about you? + Bob-->John: Jolly good! +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->John: Fight against hypochondria + end + Note right of John: Rational thoughts
    prevail... + John-->Alice: Great! + John->Bob: How about you? + Bob-->John: Jolly good! +{{< /mermaid >}} + +### 5.3 GANTT {#gantt} + +Example **GANTT** `mermaid` input: + +```markdown +{{}} +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d +{{< /mermaid >}} + +### 5.4 Class Diagram {#class-diagram} + +Example **class diagram** `mermaid` input: + +```markdown +{{}} +classDiagram + Class01 <|-- AveryLongClass : Cool + Class03 *-- Class04 + Class05 o-- Class06 + Class07 .. Class08 + Class09 --> C2 : Where am i? + Class09 --* C3 + Class09 --|> Class07 + Class07 : equals() + Class07 : Object[] elementData + Class01 : size() + Class01 : int chimp + Class01 : int gorilla + Class08 <--> C2: Cool label +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +classDiagram + Class01 <|-- AveryLongClass : Cool + Class03 *-- Class04 + Class05 o-- Class06 + Class07 .. Class08 + Class09 --> C2 : Where am i? + Class09 --* C3 + Class09 --|> Class07 + Class07 : equals() + Class07 : Object[] elementData + Class01 : size() + Class01 : int chimp + Class01 : int gorilla + Class08 <--> C2: Cool label +{{< /mermaid >}} + +### 5.5 State Diagram {#state-diagram} + +Example **state diagram** `mermaid` input: + +```markdown +{{}} +stateDiagram + [*] --> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +stateDiagram + [*] --> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +{{< /mermaid >}} + +### 5.6 Git Graph {#git-graph} + +Example **git graph** `mermaid` input: + +```markdown +{{}} +gitGraph: +options +{ + "nodeSpacing": 100, + "nodeRadius": 10 +} +end + commit + branch newbranch + checkout newbranch + commit + commit + checkout master + commit + commit + merge newbranch +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +gitGraph: +options +{ + "nodeSpacing": 100, + "nodeRadius": 10 +} +end + commit + branch newbranch + checkout newbranch + commit + commit + checkout master + commit + commit + merge newbranch +{{< /mermaid >}} + +### 5.7 Pie {#pie} + +Example **pie** `mermaid` input: + +```markdown +{{}} +pie + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +{{}} +``` + +The rendered output looks like this: + +{{< mermaid >}} +pie + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +{{< /mermaid >}} + +## 6 echarts + +[ECharts](https://echarts.apache.org/) is a library helping you to generate interactive data visualization. + +The basic chart types ECharts supports include [line series](https://echarts.apache.org/en/option.html#series-line), [bar series](https://echarts.apache.org/en/option.html#series-line), [scatter series](https://echarts.apache.org/en/option.html#series-scatter), [pie charts](https://echarts.apache.org/en/option.html#series-pie), [candle-stick series](https://echarts.apache.org/en/option.html#series-candlestick), [boxplot series](https://echarts.apache.org/en/option.html#series-boxplot) for statistics, [map series](https://echarts.apache.org/en/option.html#series-map), [heatmap series](https://echarts.apache.org/en/option.html#series-heatmap), [lines series](https://echarts.apache.org/en/option.html#series-lines) for directional information, [graph series](https://echarts.apache.org/en/option.html#series-graph) for relationships, [treemap series](https://echarts.apache.org/en/option.html#series-treemap), [sunburst series](https://echarts.apache.org/en/option.html#series-sunburst), [parallel series](https://echarts.apache.org/en/option.html#series-parallel) for multi-dimensional data, [funnel series](https://echarts.apache.org/en/option.html#series-funnel), [gauge series](https://echarts.apache.org/en/option.html#series-gauge). And it's extremely easy to create a combinition of them with ECharts. + +Just insert your ECharts option in `JSON`/`YAML`/`TOML` format in the `echarts` shortcode and that’s it. + +Example `echarts` input in `JSON` format: + +```json +{{}} +{ + "title": { + "text": "Summary Line Chart", + "top": "2%", + "left": "center" + }, + "tooltip": { + "trigger": "axis" + }, + "legend": { + "data": ["Email Marketing", "Affiliate Advertising", "Video Advertising", "Direct View", "Search Engine"], + "top": "10%" + }, + "grid": { + "left": "5%", + "right": "5%", + "bottom": "5%", + "top": "20%", + "containLabel": true + }, + "toolbox": { + "feature": { + "saveAsImage": { + "title": "Save as Image" + } + } + }, + "xAxis": { + "type": "category", + "boundaryGap": false, + "data": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] + }, + "yAxis": { + "type": "value" + }, + "series": [ + { + "name": "Email Marketing", + "type": "line", + "stack": "Total", + "data": [120, 132, 101, 134, 90, 230, 210] + }, + { + "name": "Affiliate Advertising", + "type": "line", + "stack": "Total", + "data": [220, 182, 191, 234, 290, 330, 310] + }, + { + "name": "Video Advertising", + "type": "line", + "stack": "Total", + "data": [150, 232, 201, 154, 190, 330, 410] + }, + { + "name": "Direct View", + "type": "line", + "stack": "Total", + "data": [320, 332, 301, 334, 390, 330, 320] + }, + { + "name": "Search Engine", + "type": "line", + "stack": "Total", + "data": [820, 932, 901, 934, 1290, 1330, 1320] + } + ] +} +{{}} +``` + +The same in `YAML` format: + +```yaml +{{}} +title: + text: Summary Line Chart + top: 2% + left: center +tooltip: + trigger: axis +legend: + data: + - Email Marketing + - Affiliate Advertising + - Video Advertising + - Direct View + - Search Engine + top: 10% +grid: + left: 5% + right: 5% + bottom: 5% + top: 20% + containLabel: true +toolbox: + feature: + saveAsImage: + title: Save as Image +xAxis: + type: category + boundaryGap: false + data: + - Monday + - Tuesday + - Wednesday + - Thursday + - Friday + - Saturday + - Sunday +yAxis: + type: value +series: + - name: Email Marketing + type: line + stack: Total + data: + - 120 + - 132 + - 101 + - 134 + - 90 + - 230 + - 210 + - name: Affiliate Advertising + type: line + stack: Total + data: + - 220 + - 182 + - 191 + - 234 + - 290 + - 330 + - 310 + - name: Video Advertising + type: line + stack: Total + data: + - 150 + - 232 + - 201 + - 154 + - 190 + - 330 + - 410 + - name: Direct View + type: line + stack: Total + data: + - 320 + - 332 + - 301 + - 334 + - 390 + - 330 + - 320 + - name: Search Engine + type: line + stack: Total + data: + - 820 + - 932 + - 901 + - 934 + - 1290 + - 1330 + - 1320 +{{}} +``` + +The same in `TOML` format: + +```toml +{{}} +[title] +text = "Summary Line Chart" +top = "2%" +left = "center" + +[tooltip] +trigger = "axis" + +[legend] +data = [ + "Email Marketing", + "Affiliate Advertising", + "Video Advertising", + "Direct View", + "Search Engine" +] +top = "10%" + +[grid] +left = "5%" +right = "5%" +bottom = "5%" +top = "20%" +containLabel = true + +[toolbox] +[toolbox.feature] +[toolbox.feature.saveAsImage] +title = "Save as Image" + +[xAxis] +type = "category" +boundaryGap = false +data = [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" +] + +[yAxis] +type = "value" + +[[series]] +name = "Email Marketing" +type = "line" +stack = "Total" +data = [ + 120.0, + 132.0, + 101.0, + 134.0, + 90.0, + 230.0, + 210.0 +] + +[[series]] +name = "Affiliate Advertising" +type = "line" +stack = "Total" +data = [ + 220.0, + 182.0, + 191.0, + 234.0, + 290.0, + 330.0, + 310.0 +] + +[[series]] +name = "Video Advertising" +type = "line" +stack = "Total" +data = [ + 150.0, + 232.0, + 201.0, + 154.0, + 190.0, + 330.0, + 410.0 +] + +[[series]] +name = "Direct View" +type = "line" +stack = "Total" +data = [ + 320.0, + 332.0, + 301.0, + 334.0, + 390.0, + 330.0, + 320.0 +] + +[[series]] +name = "Search Engine" +type = "line" +stack = "Total" +data = [ + 820.0, + 932.0, + 901.0, + 934.0, + 1290.0, + 1330.0, + 1320.0 +] +{{}} +``` + +The rendered output looks like this: + +{{< echarts >}} +{ + "title": { + "text": "Summary Line Chart", + "top": "2%", + "left": "center" + }, + "tooltip": { + "trigger": "axis" + }, + "legend": { + "data": ["Email Marketing", "Affiliate Advertising", "Video Advertising", "Direct View", "Search Engine"], + "top": "10%" + }, + "grid": { + "left": "5%", + "right": "5%", + "bottom": "5%", + "top": "20%", + "containLabel": true + }, + "toolbox": { + "feature": { + "saveAsImage": { + "title": "Save as Image" + } + } + }, + "xAxis": { + "type": "category", + "boundaryGap": false, + "data": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] + }, + "yAxis": { + "type": "value" + }, + "series": [ + { + "name": "Email Marketing", + "type": "line", + "stack": "Total", + "data": [120, 132, 101, 134, 90, 230, 210] + }, + { + "name": "Affiliate Advertising", + "type": "line", + "stack": "Total", + "data": [220, 182, 191, 234, 290, 330, 310] + }, + { + "name": "Video Advertising", + "type": "line", + "stack": "Total", + "data": [150, 232, 201, 154, 190, 330, 410] + }, + { + "name": "Direct View", + "type": "line", + "stack": "Total", + "data": [320, 332, 301, 334, 390, 330, 320] + }, + { + "name": "Search Engine", + "type": "line", + "stack": "Total", + "data": [820, 932, 901, 934, 1290, 1330, 1320] + } + ] +} +{{< /echarts >}} + +The `echarts` shortcode has also the following named parameters: + +* **width** *[optional]* (**first** positional parameter) + + {{< version 0.2.0 >}} Width of the data visualization, default value is `100%`. + +* **height** *[optional]* (**second** positional parameter) + + {{< version 0.2.0 >}} Height of the data visualization, default value is `30rem`. + +## 7 mapbox + +{{< version 0.2.0 >}} + +[Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) is a JavaScript library that uses WebGL to render interactive maps from [vector tiles](https://docs.mapbox.com/help/glossary/vector-tiles/) and [Mapbox styles](https://docs.mapbox.com/mapbox-gl-js/style-spec/). + +The `mapbox` shortcode has the following named parameters to use Mapbox GL JS: + +* **lng** *[required]* (**first** positional parameter) + + Longitude of the inital centerpoint of the map, measured in degrees. + +* **lat** *[required]* (**second** positional parameter) + + Latitude of the inital centerpoint of the map, measured in degrees. + +* **zoom** *[optional]* (**third** positional parameter) + + The initial zoom level of the map, default value is `10`. + +* **marked** *[optional]* (**fourth** positional parameter) + + Whether to add a marker at the inital centerpoint of the map, default value is `true`. + +* **light-style** *[optional]* (**fifth** positional parameter) + + Style for the light theme, default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **dark-style** *[optional]* (**sixth** positional parameter) + + Style for the dark theme, default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **navigation** *[optional]* + + Whether to add [NavigationControl](https://docs.mapbox.com/mapbox-gl-js/api#navigationcontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **geolocate** *[optional]* + + Whether to add [GeolocateControl](https://docs.mapbox.com/mapbox-gl-js/api#geolocatecontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **scale** *[optional]* + + Whether to add [ScaleControl](https://docs.mapbox.com/mapbox-gl-js/api#scalecontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **fullscreen** *[optional]* + + Whether to add [FullscreenControl](https://docs.mapbox.com/mapbox-gl-js/api#fullscreencontrol), default value is the value set in the [front matter](../theme-documentation-content#front-matter) or the [site configuration](../theme-documentation-basics#site-configuration). + +* **width** *[optional]* + + Width of the map, default value is `100%`. + +* **height** *[optional]* + + Height of the map, default value is `20rem`. + +Example simple `mapbox` input: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< mapbox 121.485 31.233 12 >}} + +Example `mapbox` input with the custom style: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< mapbox -122.252 37.453 10 false "mapbox://styles/mapbox/navigation-preview-day-v4?optimize=true" "mapbox://styles/mapbox/navigation-preview-night-v4?optimize=true" >}} + +## 8 music + +The `music` shortcode embeds a responsive music player based on [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS). + +There are three ways to use it the `music` shortcode. + +### 8.1 Custom Music URL {#custom-music-url} + +{{< version 0.2.10 >}} The complete usage of [local resource references](../theme-documentation-content#contents-organization) is supported. + +The `music` shortcode has the following named parameters by custom music URL: + +* **server** *[required]* + + URL of the custom music. + +* **name** *[optional]* + + Name of the custom music. + +* **artist** *[optional]* + + Artist of the custom music. + +* **cover** *[required]* + + URL of the custom music cover. + +Example `music` input by custom music URL: + +```markdown +{{}} +``` + +The rendered output looks like this: + +{{< music url="/music/Wavelength.mp3" name=Wavelength artist=oldmanyoung cover="/images/Wavelength.jpg" >}} + +### 8.2 Music Platform URL Automatic Identification {#automatic-identification} + +The `music` shortcode has one named parameter by music platform URL automatic identification: + +* **auto** *[required]* (**first** positional parameter) + + URL of the music platform URL for automatic identification, + which supports `netease`, `tencent` and `xiami` music platform. + +Example `music` input by music platform URL automatic identification: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< music auto="https://music.163.com/#/playlist?id=60198" >}} + +### 8.3 Custom Server, Type and ID {#custom-server} + +The `music` shortcode has the following named parameters by custom music platform: + +* **server** *[required]* (**first** positional parameter) + + [`netease`, `tencent`, `kugou`, `xiami`, `baidu`] + + Music platform. + +* **type** *[required]* (**second** positional parameter) + + [`song`, `playlist`, `album`, `search`, `artist`] + + Type of the music. + +* **id** *[required]* (**third** positional parameter) + + Song ID, or playlist ID, or album ID, or search keyword, or artist ID. + +Example `music` input by custom music platform: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< music netease song 1868553 >}} + +### 8.4 Other Parameters {#other-parameters} + +The `music` shortcode has other named parameters applying to the above three ways: + +* **theme** *[optional]* + + {{< version 0.2.0 changed >}} Main color of the music player, default value is `#448aff`. + +* **fixed** *[optional]* + + Whether to enable fixed mode, default value is `false`. + +* **mini** *[optional]* + + Whether to enable mini mode, default value is `false`. + +* **autoplay** *[optional]* + + Whether to autoplay music, default value is `false`. + +* **volume** *[optional]* + + Default volume when the player is first opened, which will be remembered in the browser, default value is `0.7`. + +* **mutex** *[optional]* + + Whether to pause other players when this player starts playing, default value is `true`. + +The `music` shortcode has the following named parameters only applying to the type of music list: + +* **loop** *[optional]* + + [`all`, `one`, `none`] + + Loop mode of the music list, default value is `none`. + +* **order** *[optional]* + + [`list`, `random`] + + Play order of the music list, default value is `list`. + +* **list-folded** *[optional]* + + Whether the music list should be folded at first, default value is `false`. + +* **list-max-height** *[optional]* + + Max height of the music list, default value is `340px`. + +## 9 bilibili + +{{< version 0.2.0 changed >}} + +The `bilibili` shortcode embeds a responsive video player for bilibili videos. + +When the video only has one part, only the BV `id` of the video is required, e.g.: + +```code +https://www.bilibili.com/video/BV1Sx411T7QQ +``` + +Example `bilibili` input: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< bilibili id=BV1Sx411T7QQ >}} + +When the video has multiple parts, in addition to the BV `id` of the video, +`p` is also required, whose default value is `1`, e.g.: + +```code +https://www.bilibili.com/video/BV1TJ411C7An?p=3 +``` + +Example `bilibili` input with `p`: + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +{{< bilibili id=BV1TJ411C7An p=3 >}} + +## 10 typeit + +The `typeit` shortcode provides typing animation based on [TypeIt](https://typeitjs.com/). + +Just insert your content in the `typeit` shortcode and that’s it. + +### 10.1 Simple Content {#simple-content} + +Simple content is allowed in `Markdown` format and **without** rich block content such as images and more... + +Example `typeit` input: + +```markdown +{{}} +This is a *paragraph* with **typing animation** based on [TypeIt](https://typeitjs.com/)... +{{}} +``` + +The rendered output looks like this: + +{{< typeit >}} +This is a *paragraph* with **typing animation** based on [TypeIt](https://typeitjs.com/)... +{{< /typeit >}} + +Alternatively, you can use custom **HTML tags**. + +Example `typeit` input with `h4` tag: + +```markdown +{{}} +This is a *paragraph* with **typing animation** based on [TypeIt](https://typeitjs.com/)... +{{}} +``` + +The rendered output looks like this: + +{{< typeit tag=h4 >}} +This is a *paragraph* with **typing animation** based on [TypeIt](https://typeitjs.com/)... +{{< /typeit >}} + +### 10.2 Code Content {#code-content} + +Code content is allowed and will be highlighted by named parameter `code` for the type of code language. + +Example `typeit` input with `code`: + +```markdown +{{}} +public class HelloWorld { + public static void main(String []args) { + System.out.println("Hello World"); + } +} +{{}} +``` + +The rendered output looks like this: + +{{< typeit code=java >}} +public class HelloWorld { + public static void main(String []args) { + System.out.println("Hello World"); + } +} +{{< /typeit >}} + +### 10.3 Group Content {#group-content} + +All typing animations start at the same time by default. +But sometimes you may want to start a set of `typeit` contents in order. + +A set of `typeit` contents with the same value of named parameter `group` will start typing animation in sequence. + +Example `typeit` input with `group`: + +```markdown +{{}} +**First** this paragraph begins +{{}} + +{{}} +**Then** this paragraph begins +{{}} +``` + +The rendered output looks like this: + +{{< typeit group=paragraph >}} +**First** this paragraph begins +{{< /typeit >}} + +{{< typeit group=paragraph >}} +**Then** this paragraph begins +{{< /typeit >}} + +## 11 script + +{{< version 0.2.8 >}} + +`script` is a shortcode to insert custom **:(fab fa-js fa-fw): Javascript** in your post. + +{{< admonition >}} +The script content can be guaranteed to be executed in order after all third-party libraries are loaded. So you are free to use third-party libraries. +{{< /admonition >}} + +Example `script` input: + +```markdown +{{}} +console.log('Hello LoveIt!'); +{{}} +``` + +You can see the output in the console of the developer tool. + +{{< script >}} +console.log('Hello LoveIt!'); +{{< /script >}} diff --git a/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md new file mode 100644 index 00000000..d2845f55 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md @@ -0,0 +1,1297 @@ +--- +weight: 4 +title: "主题文档 - 扩展 Shortcodes" +date: 2020-03-03T16:29:59+08:00 +lastmod: 2020-03-03T16:29:59+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "LoveIt 主题在 Hugo 内置的 shortcode 的基础上提供多个扩展的 shortcode." +resources: +- name: "featured-image" + src: "featured-image.jpg" +- name: "featured-image-preview" + src: "featured-image-preview.jpg" + +tags: ["shortcodes"] +categories: ["documentation"] + +lightgallery: true +mapbox: + lightStyle: mapbox://styles/mapbox/light-zh-v1?optimize=true + darkStyle: mapbox://styles/mapbox/dark-zh-v1?optimize=true +--- + +**LoveIt** 主题在 Hugo 内置的 shortcode 的基础上提供多个扩展的 shortcode. + + + +## 1 style + +{{< version 0.2.0 changed >}} + +{{< admonition >}} +Hugo **extended** 版本对于 `style` shortcode 是必需的. +{{< /admonition >}} + +`style` shortcode 用来在你的文章中插入自定义样式. + +`style` shortcode 有两个位置参数. + +第一个参数是自定义样式的内容. 它支持 [:(fab fa-sass fa-fw): SASS](https://sass-lang.com/documentation/style-rules/declarations#nesting) 中的嵌套语法, +并且 `&` 指代这个父元素. + +第二个参数是包裹你要更改样式的内容的 HTML 标签, 默认值是 `div`. + +一个 `style` 示例: + +```markdown +{{}} +This is a **right-aligned** paragraph. +{{}} +``` + +呈现的输出效果如下: + +{{< style "text-align:right; strong{color:#00b1ff;}" >}} +This is a **right-aligned** paragraph. +{{< /style >}} + +## 2 link + +{{< version 0.2.0 >}} + +`link` shortcode 是 [Markdown 链接语法](../basic-markdown-syntax#links) 的替代. +`link` shortcode 可以提供一些其它的功能并且可以在代码块中使用. + +{{< version 0.2.10 >}} 支持[本地资源引用](../theme-documentation-content#contents-organization)的完整用法. + +`link` shortcode 有以下命名参数: + +* **href** *[必需]* (**第一个**位置参数) + + 链接的目标. + +* **content** *[可选]* (**第二个**位置参数) + + 链接的内容, 默认值是 **href** 参数的值. + + *支持 Markdown 或者 HTML 格式.* + +* **title** *[可选]* (**第三个**位置参数) + + HTML `a` 标签 的 `title` 属性, 当悬停在链接上会显示的提示. + +* **rel** *[可选]* + + HTML `a` 标签 的 `rel` 补充属性. + +* **class** *[可选]* + + HTML `a` 标签 的 `class` 属性. + +一个 `link` 示例: + +```markdown +{{}} +或者 +{{}} + +{{}} +或者 +{{}} + +{{}} +或者 +{{}} +``` + +呈现的输出效果如下: + +* {{< link "https://assemble.io" >}} +* {{< link "mailto:contact@revolunet.com" >}} +* {{< link "https://assemble.io" Assemble >}} + +一个带有标题的 `link` 示例: + +```markdown +{{}} +或者 +{{}} +``` + +呈现的输出效果如下 (将鼠标悬停在链接上,会有一行提示): + +{{< link "https://github.com/upstage/" Upstage "Visit Upstage!" >}} + +## 3 image {#image} + +{{< version 0.2.0 changed >}} + +`image` shortcode 是 [`figure` shortcode](../theme-documentation-built-in-shortcodes#figure) 的替代. `image` shortcode 可以充分利用 [lazysizes](https://github.com/aFarkas/lazysizes) 和 [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) 两个依赖库. + +{{< version 0.2.10 >}} 支持[本地资源引用](../theme-documentation-content#contents-organization)的完整用法. + +`image` shortcode 有以下命名参数: + +* **src** *[必需]* (**第一个**位置参数) + + 图片的 URL. + +* **alt** *[可选]* (**第二个**位置参数) + + 图片无法显示时的替代文本, 默认值是 **src** 参数的值. + + *支持 Markdown 或者 HTML 格式.* + +* **caption** *[可选]* (**第三个**位置参数) + + 图片标题. + + *支持 Markdown 或者 HTML 格式.* + +* **title** *[可选]* + + 当悬停在图片上会显示的提示. + +* **class** *[可选]* + + HTML `figure` 标签的 `class` 属性. + +* **src_s** *[可选]* + + 图片缩略图的 URL, 用在画廊模式中, 默认值是 **src** 参数的值. + +* **src_l** *[可选]* + + 高清图片的 URL, 用在画廊模式中, 默认值是 **src** 参数的值. + +* **height** *[可选]* + + 图片的 `height` 属性. + +* **width** *[可选]* + + 图片的 `width` 属性. + +* **linked** *[可选]* + + 图片是否需要被链接, 默认值是 `true`. + +* **rel** *[可选]* + + HTML `a` 标签 的 `rel` 补充属性, 仅在 **linked** 属性设置成 `true` 时有效. + +一个 `image` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< image src="/images/lighthouse.jpg" caption="Lighthouse (`image`)" src_s="/images/lighthouse-small.jpg" src_l="/images/lighthouse-large.jpg" >}} + +## 4 admonition + +`admonition` shortcode 支持 **12** 种 帮助你在页面中插入提示的横幅. + +*支持 Markdown 或者 HTML 格式.* + +{{< admonition >}} +一个 **注意** 横幅 +{{< /admonition >}} + +{{< admonition abstract >}} +一个 **摘要** 横幅 +{{< /admonition >}} + +{{< admonition info >}} +一个 **信息** 横幅 +{{< /admonition >}} + +{{< admonition tip >}} +一个 **技巧** 横幅 +{{< /admonition >}} + +{{< admonition success >}} +一个 **成功** 横幅 +{{< /admonition >}} + +{{< admonition question >}} +一个 **问题** 横幅 +{{< /admonition >}} + +{{< admonition warning >}} +一个 **警告** 横幅 +{{< /admonition >}} + +{{< admonition failure >}} +一个 **失败** 横幅 +{{< /admonition >}} + +{{< admonition danger >}} +一个 **危险** 横幅 +{{< /admonition >}} + +{{< admonition bug >}} +一个 **Bug** 横幅 +{{< /admonition >}} + +{{< admonition example >}} +一个 **示例** 横幅 +{{< /admonition >}} + +{{< admonition quote >}} +一个 **引用** 横幅 +{{< /admonition >}} + +`admonition` shortcode 有以下命名参数: + +* **type** *[必需]* (**第一个**位置参数) + + `admonition` 横幅的类型, 默认值是 `note`. + +* **title** *[可选]* (**第二个**位置参数) + + `admonition` 横幅的标题, 默认值是 **type** 参数的值. + +* **open** *[可选]* (**第三个**位置参数) {{< version 0.2.0 changed >}} + + 横幅内容是否默认展开, 默认值是 `true`. + +一个 `admonition` 示例: + +```markdown +{{}} +一个 **技巧** 横幅 +{{}} +或者 +{{}} +一个 **技巧** 横幅 +{{}} +``` + +呈现的输出效果如下: + +{{< admonition tip "This is a tip" false >}} +一个 **技巧** 横幅 +{{< /admonition >}} + +## 5 mermaid + +[mermaid](https://mermaidjs.github.io/) 是一个可以帮助你在文章中生成图表和流程图的库, 类似 Markdown 的语法. + +只需将你的 mermaid 代码插入 `mermaid` shortcode 中即可. + +### 5.1 流程图 {#flowchart} + +一个 **流程图** `mermaid` 示例: + +```markdown +{{}} +graph LR; + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +{{}} +``` + +呈现的输出效果如下: + +{{< mermaid >}} +graph LR; + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +{{< /mermaid >}} + +### 5.2 时序图 {#sequence-diagram} + +一个 **时序图** `mermaid` 示例: + +```markdown +{{}} +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->John: Fight against hypochondria + end + Note right of John: Rational thoughts
    prevail... + John-->Alice: Great! + John->Bob: How about you? + Bob-->John: Jolly good! +{{}} +``` + +呈现的输出效果如下: + +{{< mermaid >}} +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->John: Fight against hypochondria + end + Note right of John: Rational thoughts
    prevail... + John-->Alice: Great! + John->Bob: How about you? + Bob-->John: Jolly good! +{{< /mermaid >}} + +### 5.3 甘特图 {#gantt} + +一个 **甘特图** `mermaid` 示例: + +```markdown +{{}} +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d +{{}} +``` + +呈现的输出效果如下: + +{{< mermaid >}} +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d +{{< /mermaid >}} + +### 5.4 类图 {#class-diagram} + +一个 **类图** `mermaid` 示例: + +```markdown +{{}} +classDiagram + Class01 <|-- AveryLongClass : Cool + Class03 *-- Class04 + Class05 o-- Class06 + Class07 .. Class08 + Class09 --> C2 : Where am i? + Class09 --* C3 + Class09 --|> Class07 + Class07 : equals() + Class07 : Object[] elementData + Class01 : size() + Class01 : int chimp + Class01 : int gorilla + Class08 <--> C2: Cool label +{{}} +``` + +呈现的输出效果如下: + +{{< mermaid >}} +classDiagram + Class01 <|-- AveryLongClass : Cool + Class03 *-- Class04 + Class05 o-- Class06 + Class07 .. Class08 + Class09 --> C2 : Where am i? + Class09 --* C3 + Class09 --|> Class07 + Class07 : equals() + Class07 : Object[] elementData + Class01 : size() + Class01 : int chimp + Class01 : int gorilla + Class08 <--> C2: Cool label +{{< /mermaid >}} + +### 5.5 状态图 {#state-diagram} + +一个 **状态图** `mermaid` 示例: + +```markdown +{{}} +stateDiagram + [*] --> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +{{}} +``` + +呈现的输出效果如下: + +{{< mermaid >}} +stateDiagram + [*] --> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +{{< /mermaid >}} + +### 5.6 Git 图 {#git-graph} + +一个 **Git 图** `mermaid` 示例: + +```markdown +{{}} +gitGraph: +options +{ + "nodeSpacing": 100, + "nodeRadius": 10 +} +end + commit + branch newbranch + checkout newbranch + commit + commit + checkout master + commit + commit + merge newbranch +{{}} +``` + +呈现的输出效果如下: + +{{< mermaid >}} +gitGraph: +options +{ + "nodeSpacing": 100, + "nodeRadius": 10 +} +end + commit + branch newbranch + checkout newbranch + commit + commit + checkout master + commit + commit + merge newbranch +{{< /mermaid >}} + +### 5.7 饼图 {#pie} + +一个 **饼图** `mermaid` 示例: + +```markdown +{{}} +pie + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +{{}} +``` + +呈现的输出效果如下: + +{{< mermaid >}} +pie + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +{{< /mermaid >}} + +## 6 echarts + +[ECharts](https://echarts.apache.org/) 是一个帮助你生成交互式数据可视化的库. + +ECharts 提供了常规的 [折线图](https://echarts.apache.org/zh/option.html#series-line), [柱状图](https://echarts.apache.org/zh/option.html#series-line), [散点图](https://echarts.apache.org/zh/option.html#series-scatter), [饼图](https://echarts.apache.org/zh/option.html#series-pie), [K线图](https://echarts.apache.org/zh/option.html#series-candlestick), 用于统计的 [盒形图](https://echarts.apache.org/zh/option.html#series-boxplot), 用于地理数据可视化的 [地图](https://echarts.apache.org/zh/option.html#series-map), [热力图](https://echarts.apache.org/zh/option.html#series-heatmap), [线图](https://echarts.apache.org/zh/option.html#series-lines), 用于关系数据可视化的 [关系图](https://echarts.apache.org/zh/option.html#series-graph), [treemap](https://echarts.apache.org/zh/option.html#series-treemap), [旭日图](https://echarts.apache.org/zh/option.html#series-sunburst), 多维数据可视化的 [平行坐标](https://echarts.apache.org/zh/option.html#series-parallel), 还有用于 BI 的 [漏斗图](https://echarts.apache.org/zh/option.html#series-funnel), [仪表盘](https://echarts.apache.org/zh/option.html#series-gauge), 并且支持图与图之间的混搭. + +只需在 `echarts` shortcode 中以 `JSON`/`YAML`/`TOML`格式插入 ECharts 选项即可. + +一个 `JSON` 格式的 `echarts` 示例: + +```json +{{}} +{ + "title": { + "text": "折线统计图", + "top": "2%", + "left": "center" + }, + "tooltip": { + "trigger": "axis" + }, + "legend": { + "data": ["邮件营销", "联盟广告", "视频广告", "直接访问", "搜索引擎"], + "top": "10%" + }, + "grid": { + "left": "5%", + "right": "5%", + "bottom": "5%", + "top": "20%", + "containLabel": true + }, + "toolbox": { + "feature": { + "saveAsImage": { + "title": "保存为图片" + } + } + }, + "xAxis": { + "type": "category", + "boundaryGap": false, + "data": ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] + }, + "yAxis": { + "type": "value" + }, + "series": [ + { + "name": "邮件营销", + "type": "line", + "stack": "总量", + "data": [120, 132, 101, 134, 90, 230, 210] + }, + { + "name": "联盟广告", + "type": "line", + "stack": "总量", + "data": [220, 182, 191, 234, 290, 330, 310] + }, + { + "name": "视频广告", + "type": "line", + "stack": "总量", + "data": [150, 232, 201, 154, 190, 330, 410] + }, + { + "name": "直接访问", + "type": "line", + "stack": "总量", + "data": [320, 332, 301, 334, 390, 330, 320] + }, + { + "name": "搜索引擎", + "type": "line", + "stack": "总量", + "data": [820, 932, 901, 934, 1290, 1330, 1320] + } + ] +} +{{}} +``` + +一个 `YAML` 格式的 `echarts` 示例: + +```yaml +{{}} +title: + text: 折线统计图 + top: 2% + left: center +tooltip: + trigger: axis +legend: + data: + - 邮件营销 + - 联盟广告 + - 视频广告 + - 直接访问 + - 搜索引擎 + top: 10% +grid: + left: 5% + right: 5% + bottom: 5% + top: 20% + containLabel: true +toolbox: + feature: + saveAsImage: + title: 保存为图片 +xAxis: + type: category + boundaryGap: false + data: + - 周一 + - 周二 + - 周三 + - 周四 + - 周五 + - 周六 + - 周日 +yAxis: + type: value +series: + - name: 邮件营销 + type: line + stack: 总量 + data: + - 120 + - 132 + - 101 + - 134 + - 90 + - 230 + - 210 + - name: 联盟广告 + type: line + stack: 总量 + data: + - 220 + - 182 + - 191 + - 234 + - 290 + - 330 + - 310 + - name: 视频广告 + type: line + stack: 总量 + data: + - 150 + - 232 + - 201 + - 154 + - 190 + - 330 + - 410 + - name: 直接访问 + type: line + stack: 总量 + data: + - 320 + - 332 + - 301 + - 334 + - 390 + - 330 + - 320 + - name: 搜索引擎 + type: line + stack: 总量 + data: + - 820 + - 932 + - 901 + - 934 + - 1290 + - 1330 + - 1320 +{{}} +``` + +一个 `TOML` 格式的 `echarts` 示例: + +```toml +{{}} +[title] +text = "折线统计图" +top = "2%" +left = "center" + +[tooltip] +trigger = "axis" + +[legend] +data = [ + "邮件营销", + "联盟广告", + "视频广告", + "直接访问", + "搜索引擎" +] +top = "10%" + +[grid] +left = "5%" +right = "5%" +bottom = "5%" +top = "20%" +containLabel = true + +[toolbox] +[toolbox.feature] +[toolbox.feature.saveAsImage] +title = "保存为图片" + +[xAxis] +type = "category" +boundaryGap = false +data = [ + "周一", + "周二", + "周三", + "周四", + "周五", + "周六", + "周日" +] + +[yAxis] +type = "value" + +[[series]] +name = "邮件营销" +type = "line" +stack = "总量" +data = [ + 120.0, + 132.0, + 101.0, + 134.0, + 90.0, + 230.0, + 210.0 +] + +[[series]] +name = "联盟广告" +type = "line" +stack = "总量" +data = [ + 220.0, + 182.0, + 191.0, + 234.0, + 290.0, + 330.0, + 310.0 +] + +[[series]] +name = "视频广告" +type = "line" +stack = "总量" +data = [ + 150.0, + 232.0, + 201.0, + 154.0, + 190.0, + 330.0, + 410.0 +] + +[[series]] +name = "直接访问" +type = "line" +stack = "总量" +data = [ + 320.0, + 332.0, + 301.0, + 334.0, + 390.0, + 330.0, + 320.0 +] + +[[series]] +name = "搜索引擎" +type = "line" +stack = "总量" +data = [ + 820.0, + 932.0, + 901.0, + 934.0, + 1290.0, + 1330.0, + 1320.0 +] +{{}} +``` + +呈现的输出效果如下: + +{{< echarts >}} +{ + "title": { + "text": "折线统计图", + "top": "2%", + "left": "center" + }, + "tooltip": { + "trigger": "axis" + }, + "legend": { + "data": ["邮件营销", "联盟广告", "视频广告", "直接访问", "搜索引擎"], + "top": "10%" + }, + "grid": { + "left": "5%", + "right": "5%", + "bottom": "5%", + "top": "20%", + "containLabel": true + }, + "toolbox": { + "feature": { + "saveAsImage": { + "title": "保存为图片" + } + } + }, + "xAxis": { + "type": "category", + "boundaryGap": false, + "data": ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] + }, + "yAxis": { + "type": "value" + }, + "series": [ + { + "name": "邮件营销", + "type": "line", + "stack": "总量", + "data": [120, 132, 101, 134, 90, 230, 210] + }, + { + "name": "联盟广告", + "type": "line", + "stack": "总量", + "data": [220, 182, 191, 234, 290, 330, 310] + }, + { + "name": "视频广告", + "type": "line", + "stack": "总量", + "data": [150, 232, 201, 154, 190, 330, 410] + }, + { + "name": "直接访问", + "type": "line", + "stack": "总量", + "data": [320, 332, 301, 334, 390, 330, 320] + }, + { + "name": "搜索引擎", + "type": "line", + "stack": "总量", + "data": [820, 932, 901, 934, 1290, 1330, 1320] + } + ] +} +{{< /echarts >}} + +`echarts` shortcode 还有以下命名参数: + +* **width** *[可选]* (**第一个**位置参数) + + {{< version 0.2.0 >}} 数据可视化的宽度, 默认值是 `100%`. + +* **height** *[可选]* (**第二个**位置参数) + + {{< version 0.2.0 >}} 数据可视化的高度, 默认值是 `30rem`. + +## 7 mapbox + +{{< version 0.2.0 >}} + +[Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js) 是一个 JavaScript 库,它使用 WebGL, 以 [vector tiles](https://docs.mapbox.com/help/glossary/vector-tiles/) 和 [Mapbox styles](https://docs.mapbox.com/mapbox-gl-js/style-spec/) 为来源, 将它们渲染成互动式地图. + +`mapbox` shortcode 有以下命名参数来使用 Mapbox GL JS: + +* **lng** *[必需]* (**第一个**位置参数) + + 地图初始中心点的经度, 以度为单位. + +* **lat** *[必需]* (**第二个**位置参数) + + 地图初始中心点的纬度, 以度为单位. + +* **zoom** *[可选]* (**第三个**位置参数) + + 地图的初始缩放级别, 默认值是 `10`. + +* **marked** *[可选]* (**第四个**位置参数) + + 是否在地图的初始中心点添加图钉, 默认值是 `true`. + +* **light-style** *[可选]* (**第五个**位置参数) + + 浅色主题的地图样式, 默认值是[前置参数](../theme-documentation-content#front-matter)或者[网站配置](../theme-documentation-basics#site-configuration)中设置的值. + +* **dark-style** *[可选]* (**第六个**位置参数) + + 深色主题的地图样式, 默认值是[前置参数](../theme-documentation-content#front-matter)或者[网站配置](../theme-documentation-basics#site-configuration)中设置的值. + +* **navigation** *[可选]* + + 是否添加 [NavigationControl](https://docs.mapbox.com/mapbox-gl-js/api#navigationcontrol), 默认值是[前置参数](../theme-documentation-content#front-matter)或者[网站配置](../theme-documentation-basics#site-configuration)中设置的值. + +* **geolocate** *[可选]* + + 是否添加 [GeolocateControl](https://docs.mapbox.com/mapbox-gl-js/api#geolocatecontrol), 默认值是[前置参数](../theme-documentation-content#front-matter)或者[网站配置](../theme-documentation-basics#site-configuration)中设置的值. + +* **scale** *[可选]* + + 是否添加 [ScaleControl](https://docs.mapbox.com/mapbox-gl-js/api#scalecontrol), 默认值是[前置参数](../theme-documentation-content#front-matter)或者[网站配置](../theme-documentation-basics#site-configuration)中设置的值. + +* **fullscreen** *[可选]* + + 是否添加 [FullscreenControl](https://docs.mapbox.com/mapbox-gl-js/api#fullscreencontrol), 默认值是[前置参数](../theme-documentation-content#front-matter)或者[网站配置](../theme-documentation-basics#site-configuration)中设置的值. + +* **width** *[可选]* + + 地图的宽度, 默认值是 `100%`. + +* **height** *[可选]* + + 地图的高度, 默认值是 `20rem`. + +一个简单的 `mapbox` 示例: + +```markdown +{{}} +或者 +{{}} +``` + +呈现的输出效果如下: + +{{< mapbox 121.485 31.233 12 >}} + +一个带有自定义样式的 `mapbox` 示例: + +```markdown +{{}} +或者 +{{}} +``` + +呈现的输出效果如下: + +{{< mapbox -122.252 37.453 10 false "mapbox://styles/mapbox/streets-zh-v1?optimize=true" >}} + +## 8 music + +`music` shortcode 基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 提供了一个内嵌的响应式音乐播放器. + +有三种方式使用 `music` shortcode. + +### 8.1 自定义音乐 URL {#custom-music-url} + +{{< version 0.2.10 >}} 支持[本地资源引用](../theme-documentation-content#contents-organization)的完整用法. + +`music` shortcode 有以下命名参数来使用自定义音乐 URL: + +* **server** *[必需]* + + 音乐的链接. + +* **type** *[可选]* + + 音乐的名称. + +* **artist** *[可选]* + + 音乐的创作者. + +* **cover** *[可选]* + + 音乐的封面链接. + +一个使用自定义音乐 URL 的 `music` 示例: + +```markdown +{{}} +``` + +呈现的输出效果如下: + +{{< music url="/music/Wavelength.mp3" name=Wavelength artist=oldmanyoung cover="/images/Wavelength.jpg" >}} + +### 8.2 音乐平台 URL 的自动识别 {#automatic-identification} + +`music` shortcode 有一个命名参数来使用音乐平台 URL 的自动识别: + +* **auto** *[必需]]* (**第一个**位置参数) + + 用来自动识别的音乐平台 URL, 支持 `netease`, `tencent` 和 `xiami` 平台. + +一个使用音乐平台 URL 的自动识别的 `music` 示例: + +```markdown +{{}} +或者 +{{}} +``` + +呈现的输出效果如下: + +{{< music auto="https://music.163.com/#/playlist?id=60198" >}} + +### 8.3 自定义音乐平台, 类型和 ID {#custom-server} + +`music` shortcode 有以下命名参数来使用自定义音乐平台: + +* **server** *[必需]* (**第一个**位置参数) + + [`netease`, `tencent`, `kugou`, `xiami`, `baidu`] + + 音乐平台. + +* **type** *[必需]* (**第二个**位置参数) + + [`song`, `playlist`, `album`, `search`, `artist`] + + 音乐类型. + +* **id** *[必需]* (**第三个**位置参数) + + 歌曲 ID, 或者播放列表 ID, 或者专辑 ID, 或者搜索关键词, 或者创作者 ID. + +一个使用自定义音乐平台的 `music` 示例: + +```markdown +{{}} +或者 +{{}} +``` + +呈现的输出效果如下: + +{{< music netease song 1868553 >}} + +### 8.4 其它参数 {#other-parameters} + +`music` shortcode 有一些可以应用于以上三种方式的其它命名参数: + +* **theme** *[可选]* + + {{< version 0.2.0 changed >}} 音乐播放器的主题色, 默认值是 `#448aff`. + +* **fixed** *[可选]* + + 是否开启固定模式, 默认值是 `false`. + +* **mini** *[可选]* + + 是否开启迷你模式, 默认值是 `false`. + +* **autoplay** *[可选]* + + 是否自动播放音乐, 默认值是 `false`. + +* **volume** *[可选]* + + 第一次打开播放器时的默认音量, 会被保存在浏览器缓存中, 默认值是 `0.7`. + +* **mutex** *[可选]* + + 是否自动暂停其它播放器, 默认值是 `true`. + +`music` shortcode 还有一些只适用于音乐列表方式的其它命名参数: + +* **loop** *[可选]* + + [`all`, `one`, `none`] + + 音乐列表的循环模式, 默认值是 `none`. + +* **order** *[可选]* + + [`list`, `random`] + + 音乐列表的播放顺序, 默认值是 `list`. + +* **list-folded** *[可选]* + + 初次打开的时候音乐列表是否折叠, 默认值是 `false`. + +* **list-max-height** *[可选]* + + 音乐列表的最大高度, 默认值是 `340px`. + +## 9 bilibili + +{{< version 0.2.0 changed >}} + +`bilibili` shortcode 提供了一个内嵌的用来播放 bilibili 视频的响应式播放器. + +如果视频只有一个部分, 则仅需要视频的 BV `id`, 例如: + +```code +https://www.bilibili.com/video/BV1Sx411T7QQ +``` + +一个 `bilibili` 示例: + +```markdown +{{}} +或者 +{{}} +``` + +呈现的输出效果如下: + +{{< bilibili id=BV1Sx411T7QQ >}} + +如果视频包含多个部分, 则除了视频的 BV `id` 之外, 还需要 `p`, 默认值为 `1`, 例如: + +```code +https://www.bilibili.com/video/BV1TJ411C7An?p=3 +``` + +一个带有 `p` 参数的 `bilibili` 示例: + +```markdown +{{}} +或者 +{{}} +``` + +呈现的输出效果如下: + +{{< bilibili id=BV1TJ411C7An p=3 >}} + +## 10 typeit + +`typeit` shortcode 基于 [TypeIt](https://typeitjs.com/) 提供了打字动画. + +只需将你需要打字动画的内容插入 `typeit` shortcode 中即可. + +### 10.1 简单内容 {#simple-content} + +允许使用 `Markdown` 格式的简单内容, 并且 **不包含** 富文本的块内容, 例如图像等等... + +一个 `typeit` 示例: + +```markdown +{{}} +这一个带有基于 [TypeIt](https://typeitjs.com/) 的 **打字动画** 的 *段落*... +{{}} +``` + +呈现的输出效果如下: + +{{< typeit >}} +这一个带有基于 [TypeIt](https://typeitjs.com/) 的 **打字动画** 的 *段落*... +{{< /typeit >}} + +另外, 你也可以自定义 **HTML 标签**. + +一个带有 `h4` 标签的 `typeit` 示例: + +```markdown +{{}} +这一个带有基于 [TypeIt](https://typeitjs.com/) 的 **打字动画** 的 *段落*... +{{}} +``` + +呈现的输出效果如下: + +{{< typeit tag=h4 >}} +这一个带有基于 [TypeIt](https://typeitjs.com/) 的 **打字动画** 的 *段落*... +{{< /typeit >}} + +### 10.2 代码内容 {#code-content} + +代码内容也是允许的, 并且通过使用参数 `code` 指定语言类型可以实习语法高亮. + +一个带有 `code` 参数的 `typeit` 示例: + +```markdown +{{}} +public class HelloWorld { + public static void main(String []args) { + System.out.println("Hello World"); + } +} +{{}} +``` + +呈现的输出效果如下: + +{{< typeit code=java >}} +public class HelloWorld { + public static void main(String []args) { + System.out.println("Hello World"); + } +} +{{< /typeit >}} + +### 10.3 分组内容 {#code-content} + +默认情况下, 所有打字动画都是同时开始的. +但是有时你可能需要按顺序开始一组 `typeit` 内容的打字动画. + +一组具有相同 `group` 参数值的 `typeit` 内容将按顺序开始打字动画. + +一个带有 `group` 参数的 `typeit` 示例: + +```markdown +{{}} +**首先**, 这个段落开始 +{{}} + +{{}} +**然后**, 这个段落开始 +{{}} +``` + +呈现的输出效果如下: + +{{< typeit group=paragraph >}} +**首先**, 这个段落开始 +{{< /typeit >}} + +{{< typeit group=paragraph >}} +**然后**, 这个段落开始 +{{< /typeit >}} + +## 11 script + +{{< version 0.2.8 >}} + +`script` shortcode 用来在你的文章中插入 **:(fab fa-js fa-fw): Javascript** 脚本. + +{{< admonition >}} +脚本内容可以保证在所有的第三方库加载之后按顺序执行. +所以你可以自由地使用第三方库. +{{< /admonition >}} + +一个 `script` 示例: + +```markdown +{{}} +console.log('Hello LoveIt!'); +{{}} +``` + +你可以在开发者工具的控制台中看到输出. + +{{< script >}} +console.log('Hello LoveIt!'); +{{< /script >}} diff --git a/themes/LoveIt/exampleSite/content/tags/configuration/_index.zh-cn.md b/themes/LoveIt/exampleSite/content/tags/configuration/_index.zh-cn.md new file mode 100644 index 00000000..83cf3d53 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/tags/configuration/_index.zh-cn.md @@ -0,0 +1,3 @@ +--- +title: "配置" +--- diff --git a/themes/LoveIt/exampleSite/content/tags/content/_index.fr.md b/themes/LoveIt/exampleSite/content/tags/content/_index.fr.md new file mode 100644 index 00000000..92e06643 --- /dev/null +++ b/themes/LoveIt/exampleSite/content/tags/content/_index.fr.md @@ -0,0 +1,3 @@ +--- +title: "contenu" +--- diff --git a/themes/LoveIt/exampleSite/content/tags/content/_index.zh-cn.md b/themes/LoveIt/exampleSite/content/tags/content/_index.zh-cn.md new file mode 100644 index 00000000..80b3bf9b --- /dev/null +++ b/themes/LoveIt/exampleSite/content/tags/content/_index.zh-cn.md @@ -0,0 +1,3 @@ +--- +title: "内容" +--- diff --git a/themes/LoveIt/exampleSite/content/tags/installation/_index.zh-cn.md b/themes/LoveIt/exampleSite/content/tags/installation/_index.zh-cn.md new file mode 100644 index 00000000..74bb1b6b --- /dev/null +++ b/themes/LoveIt/exampleSite/content/tags/installation/_index.zh-cn.md @@ -0,0 +1,3 @@ +--- +title: "安装" +--- diff --git a/themes/LoveIt/exampleSite/static/_redirects b/themes/LoveIt/exampleSite/static/_redirects new file mode 100644 index 00000000..715fccc7 --- /dev/null +++ b/themes/LoveIt/exampleSite/static/_redirects @@ -0,0 +1,2 @@ +/zh-cn/* /zh-cn/404.html 404 +/fr/* /fr/404.html 404 diff --git a/themes/LoveIt/exampleSite/static/android-chrome-192x192.png b/themes/LoveIt/exampleSite/static/android-chrome-192x192.png new file mode 100644 index 00000000..87ba30b8 Binary files /dev/null and b/themes/LoveIt/exampleSite/static/android-chrome-192x192.png differ diff --git a/themes/LoveIt/exampleSite/static/android-chrome-512x512.png b/themes/LoveIt/exampleSite/static/android-chrome-512x512.png new file mode 100644 index 00000000..3e52be3b Binary files /dev/null and b/themes/LoveIt/exampleSite/static/android-chrome-512x512.png differ diff --git a/themes/LoveIt/exampleSite/static/apple-touch-icon.png b/themes/LoveIt/exampleSite/static/apple-touch-icon.png new file mode 100644 index 00000000..26f95ea8 Binary files /dev/null and b/themes/LoveIt/exampleSite/static/apple-touch-icon.png differ diff --git a/themes/LoveIt/exampleSite/static/browserconfig.xml b/themes/LoveIt/exampleSite/static/browserconfig.xml new file mode 100644 index 00000000..a47e5a5b --- /dev/null +++ b/themes/LoveIt/exampleSite/static/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #2d89ef + + + diff --git a/themes/LoveIt/exampleSite/static/favicon-16x16.png b/themes/LoveIt/exampleSite/static/favicon-16x16.png new file mode 100644 index 00000000..0594fcf0 Binary files /dev/null and b/themes/LoveIt/exampleSite/static/favicon-16x16.png differ diff --git a/themes/LoveIt/exampleSite/static/favicon-32x32.png b/themes/LoveIt/exampleSite/static/favicon-32x32.png new file mode 100644 index 00000000..1d3f09af Binary files /dev/null and b/themes/LoveIt/exampleSite/static/favicon-32x32.png differ diff --git a/themes/LoveIt/exampleSite/static/favicon.ico b/themes/LoveIt/exampleSite/static/favicon.ico new file mode 100644 index 00000000..52540216 Binary files /dev/null and b/themes/LoveIt/exampleSite/static/favicon.ico differ diff --git a/themes/LoveIt/exampleSite/static/mstile-150x150.png b/themes/LoveIt/exampleSite/static/mstile-150x150.png new file mode 100644 index 00000000..0332bbea Binary files /dev/null and b/themes/LoveIt/exampleSite/static/mstile-150x150.png differ diff --git a/themes/LoveIt/exampleSite/static/safari-pinned-tab.svg b/themes/LoveIt/exampleSite/static/safari-pinned-tab.svg new file mode 100644 index 00000000..05faebc3 --- /dev/null +++ b/themes/LoveIt/exampleSite/static/safari-pinned-tab.svg @@ -0,0 +1,28 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + diff --git a/themes/LoveIt/exampleSite/static/site.webmanifest b/themes/LoveIt/exampleSite/static/site.webmanifest new file mode 100644 index 00000000..73497a5c --- /dev/null +++ b/themes/LoveIt/exampleSite/static/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "LoveIt", + "short_name": "LoveIt", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/themes/LoveIt/i18n/de.toml b/themes/LoveIt/i18n/de.toml new file mode 100644 index 00000000..1c731d11 --- /dev/null +++ b/themes/LoveIt/i18n/de.toml @@ -0,0 +1,199 @@ +# Translations for German +# Übersetzung auf Deutsch +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "nach oben" + +[viewComments] +other = "Kommentare anzeigen" +# === baseof == + +# === Post === +[posts] +other = "Artikel" +# === Post === + +# === Taxonomy === +[allSome] +other = "Alle {{ .Some }}" + +[tag] +other = "Tag" + +[tags] +other = "Tags" + +[category] +other = "Kategorie" + +[categories] +other = "Kategorien" +# === Taxonomy === + +# === Pagination === +[more] +other = "Mehr" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Sprache wählen" + +[switchTheme] +other = "Thema wechseln" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Ermöglicht durch {{ .Hugo }} | Thema - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Ihr Kommentar ..." + +[facebookLanguageCode] +other = "de_DE" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Suche" + +[searchPlaceholder] +other = "Suche nach Titel und Inhalt..." + +[clear] +other = "Leeren" + +[cancel] +other = "Abbrechen" + +[noResultsFound] +other = "Keine Ergebnisse gefunden" + +[lunrLanguageCode] +other = "de" + +[lunrLanguageLib] +other = "lib/lunr/lunr.de.js" + +[copyToClipboard] +other = "In Zwischenablage kopieren" + +[cookieconsentMessage] +other = "Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern." + +[cookieconsentDismiss] +other = "Zustimmen" + +[cookieconsentLink] +other = "Erfahren Sie mehr" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Teilen auf" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Inhalt" + +[publishedOnDate] +other = "veröffentlicht auf {{ .Date }}" + +[includedInCategories] +other = "enthalten in {{ .Categories }}" + +[wordCount] +one = "Ein wort" +other = "{{ .Count }} wörter" + +[readingTime] +one = "Eine minute" +other = "{{ .Count }} minuten" + +[views] +other = "aufrufe" + +[author] +other = "Autor" + +[updatedOnDate] +other = "Aktualisiert am {{ .Date }}" + +[readMarkdown] +other = "Markdown anzeigen" + +[back] +other = "Zurück" + +[home] +other = "Startseite" + +[readMore] +other = "Mehr lesen" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Seite nicht gefunden" + +[pageNotFoundText] +other = "Leider konnte die von Ihnen angeforderte Seite nicht aufgerufen werden." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Notiz" + +[abstract] +other = "Ausblick" + +[info] +other = "Info" + +[tip] +other = "Tip" + +[success] +other = "Erfolg" + +[question] +other = "Frage" + +[warning] +other = "Warnung" + +[failure] +other = "Fehler" + +[danger] +other = "Gefahr" + +[bug] +other = "Bug" + +[example] +other = "Beispiel" + +[quote] +other = "Zitat" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "NEU" + +[changed] +other = "GEÄNDERT" + +[deleted] +other = "GELÖSCHT" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/en.toml b/themes/LoveIt/i18n/en.toml new file mode 100644 index 00000000..6f5a428a --- /dev/null +++ b/themes/LoveIt/i18n/en.toml @@ -0,0 +1,195 @@ +# Translations for English +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Back to Top" + +[viewComments] +other = "View Comments" +# === baseof == + +# === Post === +[posts] +other = "Posts" +# === Post === + +# === Taxonomy === +[allSome] +other = "All {{ .Some }}" + +[tag] +other = "Tag" + +[tags] +other = "Tags" + +[category] +other = "Category" + +[categories] +other = "Categories" +# === Taxonomy === + +# === Pagination === +[more] +other = "More" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Select Language" + +[switchTheme] +other = "Switch Theme" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Powered by {{ .Hugo }} | Theme - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Your comment ..." + +[facebookLanguageCode] +other = "en_US" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Search" + +[searchPlaceholder] +other = "Search titles or contents..." + +[clear] +other = "Clear" + +[cancel] +other = "Cancel" + +[noResultsFound] +other = "No results found" + +[lunrLanguageCode] +other = "en" + +[copyToClipboard] +other = "Copy to clipboard" + +[cookieconsentMessage] +other = "This website uses Cookies to improve your experience." + +[cookieconsentDismiss] +other = "Got it!" + +[cookieconsentLink] +other = "Learn more" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Share on" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Contents" + +[publishedOnDate] +other = "published on {{ .Date }}" + +[includedInCategories] +other = "included in {{ .Categories }}" + +[wordCount] +one = "One word" +other = "{{ .Count }} words" + +[readingTime] +one = "One minute" +other = "{{ .Count }} minutes" + +[views] +other = "views" + +[author] +other = "Author" + +[updatedOnDate] +other = "Updated on {{ .Date }}" + +[readMarkdown] +other = "Read Markdown" + +[back] +other = "Back" + +[home] +other = "Home" + +[readMore] +other = "Read More" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Page not found" + +[pageNotFoundText] +other = "The page you're looking for doesn't exist. Sorry." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Note" + +[abstract] +other = "Abstract" + +[info] +other = "Info" + +[tip] +other = "Tip" + +[success] +other = "Success" + +[question] +other = "Question" + +[warning] +other = "Warning" + +[failure] +other = "Failure" + +[danger] +other = "Danger" + +[bug] +other = "Bug" + +[example] +other = "Example" + +[quote] +other = "Quote" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "NEW" + +[changed] +other = "CHANGED" + +[deleted] +other = "DELETED" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/es.toml b/themes/LoveIt/i18n/es.toml new file mode 100644 index 00000000..b67324ab --- /dev/null +++ b/themes/LoveIt/i18n/es.toml @@ -0,0 +1,199 @@ +# Translations for Spanish +# Traducciones para español +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Volver arriba" + +[viewComments] +other = "Ver comentarios" +# === baseof == + +# === Post === +[posts] +other = "Artículos" +# === Post === + +# === Taxonomy === +[allSome] +other = "Todo {{ .Some }}" + +[tag] +other = "Etiqueta" + +[tags] +other = "Etiquetas" + +[category] +other = "Categoría" + +[categories] +other = "Categorías" +# === Taxonomy === + +# === Pagination === +[more] +other = "Más" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Selecciona el lenguage" + +[switchTheme] +other = "Cambia el tema" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Provisto por {{ .Hugo }} | Tema - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Tu comentario ..." + +[facebookLanguageCode] +other = "es_MX" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Buscar" + +[searchPlaceholder] +other = "Busca títulos o contenido..." + +[clear] +other = "Limpiar" + +[cancel] +other = "Cancelar" + +[noResultsFound] +other = "No se encontraron resultados" + +[lunrLanguageCode] +other = "es" + +[lunrLanguageLib] +other = "lib/lunr/lunr.es.js" + +[copyToClipboard] +other = "Copiar al portapapeles" + +[cookieconsentMessage] +other = "Este sitio web utiliza Cookies para mejorar su experiencia." + +[cookieconsentDismiss] +other = "De acuerdo" + +[cookieconsentLink] +other = "Aprende más" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Compartir en" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Contenido" + +[publishedOnDate] +other = "publicado el {{ .Date }}" + +[includedInCategories] +other = "incluido en {{ .Categories }}" + +[wordCount] +one = "Una palabra" +other = "{{ .Count }} palabras" + +[readingTime] +one = "Un minuto" +other = "{{ .Count }} minutos" + +[views] +other = "vistas" + +[author] +other = "Autor" + +[updatedOnDate] +other = "Actualizado el {{ .Date }}" + +[readMarkdown] +other = "Leer Markdown" + +[back] +other = "Regresar" + +[home] +other = "Inicio" + +[readMore] +other = "Leer más" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Página no encontrada" + +[pageNotFoundText] +other = "La página que estás buscando no existe. Lo siento." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Nota" + +[abstract] +other = "Resumen" + +[info] +other = "Información" + +[tip] +other = "Consejo" + +[success] +other = "Éxito" + +[question] +other = "Pregunta" + +[warning] +other = "Advertencia" + +[failure] +other = "Fallo" + +[danger] +other = "Peligro" + +[bug] +other = "Error" + +[example] +other = "Ejemplo" + +[quote] +other = "Cita" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "NUEVO" + +[changed] +other = "MODIFICADO" + +[deleted] +other = "ELIMINADO" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/fr.toml b/themes/LoveIt/i18n/fr.toml new file mode 100644 index 00000000..541f68c5 --- /dev/null +++ b/themes/LoveIt/i18n/fr.toml @@ -0,0 +1,199 @@ +# Translations for French +# Traductions pour le français +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Retour en Haut" + +[viewComments] +other = "Afficher les Commentaires" +# === baseof == + +# === Post === +[posts] +other = "Posts" +# === Post === + +# === Taxonomy === +[allSome] +other = "Tous {{ .Some }}" + +[tag] +other = "Balise" + +[tags] +other = "Balises" + +[category] +other = "Catégorie" + +[categories] +other = "Catégories" +# === Taxonomy === + +# === Pagination === +[more] +other = "Plus" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Choisir la langue" + +[switchTheme] +other = "Changer de Thème" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Propulsé par {{ .Hugo }} | Thème - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Votre commentaire ..." + +[facebookLanguageCode] +other = "fr" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Chercher" + +[searchPlaceholder] +other = "Rechercher des titres, des contenus..." + +[clear] +other = "Clair" + +[cancel] +other = "Annuler" + +[noResultsFound] +other = "Aucun résultat trouvé" + +[lunrLanguageCode] +other = "fr" + +[lunrLanguageLib] +other = "lib/lunr/lunr.fr.js" + +[copyToClipboard] +other = "Copier dans le presse-papiers" + +[cookieconsentMessage] +other = "Ce site Web utilise des Cookies pour améliorer votre expérience." + +[cookieconsentDismiss] +other = "Se mettre d'accord" + +[cookieconsentLink] +other = "Apprendre encore plus" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Partager sur" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Contenu" + +[publishedOnDate] +other = "publié le {{ .Date }}" + +[includedInCategories] +other = "inclus dans {{ .Categories }}" + +[wordCount] +one = "Un mot" +other = "{{ .Count }} mots" + +[readingTime] +one = "Une minute" +other = "{{ .Count }} minutes" + +[views] +other = "vues" + +[author] +other = "Auteur" + +[updatedOnDate] +other = "Mis à jour le {{ .Date }}" + +[readMarkdown] +other = "Lire Markdown" + +[back] +other = "Retour" + +[home] +other = "Accueil" + +[readMore] +other = "En savoir plus" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Page non trouvée" + +[pageNotFoundText] +other = "Désolé, la page recherchée n'existe pas." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Remarque" + +[abstract] +other = "Abstrait" + +[info] +other = "Info" + +[tip] +other = "Astuces" + +[success] +other = "Succès" + +[question] +other = "Question" + +[warning] +other = "Avertissement" + +[failure] +other = "Échec" + +[danger] +other = "Danger" + +[bug] +other = "Bug" + +[example] +other = "Exemple" + +[quote] +other = "Citation" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "NOUVEAU" + +[changed] +other = "CHANGE" + +[deleted] +other = "EFFACE" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/it.toml b/themes/LoveIt/i18n/it.toml new file mode 100644 index 00000000..2a8ea99f --- /dev/null +++ b/themes/LoveIt/i18n/it.toml @@ -0,0 +1,199 @@ +# Translations for Italian +# Traduzioni per l'italiano +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Torna all'inizio" + +[viewComments] +other = "Vedi commenti" +# === baseof == + +# === Post === +[posts] +other = "Articoli" +# === Post === + +# === Taxonomy === +[allSome] +other = "Tutti {{ .Some }}" + +[tag] +other = "Etichetta" + +[tags] +other = "Etichette" + +[category] +other = "Categoria" + +[categories] +other = "Categorie" +# === Taxonomy === + +# === Pagination === +[more] +other = "Più" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Scegliere la lingua" + +[switchTheme] +other = "Cambiare il tema" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Realizzato da {{ .Hugo }} | Tema - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Il tuo commento ..." + +[facebookLanguageCode] +other = "it" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Cerca" + +[searchPlaceholder] +other = "Cerca il titolo o il contenuto dell'articolo ..." + +[clear] +other = "Chiaro" + +[cancel] +other = "Annulla" + +[noResultsFound] +other = "Nessun risultato trovato" + +[lunrLanguageCode] +other = "it" + +[lunrLanguageLib] +other = "lib/lunr/lunr.it.js" + +[copyToClipboard] +other = "Copia negli appunti" + +[cookieconsentMessage] +other = "Questo sito Web utilizza i Cookies per migliorare la tua esperienza." + +[cookieconsentDismiss] +other = "Essere d'accordo" + +[cookieconsentLink] +other = "Per saperne di più" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Condividi su" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Contenuti" + +[publishedOnDate] +other = "pubblicato su {{ .Date }}" + +[includedInCategories] +other = "incluso in {{ .Categories }}" + +[wordCount] +one = "Una parola" +other = "{{ .Count }} parole" + +[readingTime] +one = "Un minuto" +other = "{{ .Count }} minuti" + +[views] +other = "visualizzazioni" + +[author] +other = "Autore" + +[updatedOnDate] +other = "Aggiornato il {{ .Date }}" + +[readMarkdown] +other = "Leggi Markdown" + +[back] +other = "Indietro" + +[home] +other = "Home" + +[readMore] +other = "Leggi di più" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Pagina non trovata" + +[pageNotFoundText] +other = "Mi spiace, la pagina cercata non esiste." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Note" + +[abstract] +other = "Sommario" + +[info] +other = "Info" + +[tip] +other = "Suggerimenti" + +[success] +other = "Successo" + +[question] +other = "Domande" + +[warning] +other = "Avvertimento" + +[failure] +other = "Fallimento" + +[danger] +other = "Pericolo" + +[bug] +other = "Bug" + +[example] +other = "Esempio" + +[quote] +other = "Citazione" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "NUOVO" + +[changed] +other = "CAMBIATO" + +[deleted] +other = "CANCELLATO" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/pl.toml b/themes/LoveIt/i18n/pl.toml new file mode 100644 index 00000000..b9aa2f72 --- /dev/null +++ b/themes/LoveIt/i18n/pl.toml @@ -0,0 +1,196 @@ +# Translations for Polish +# Tłumaczenie na język polski +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Powrót do góry" + +[viewComments] +other = "Zobacz komentarze" +# === baseof == + +# === Post === +[posts] +other = "Posty" +# === Post === + +# === Taxonomy === +[allSome] +other = "Wszystkie {{ .Some }}" + +[tag] +other = "Tag" + +[tags] +other = "Tagi" + +[category] +other = "Kategoria" + +[categories] +other = "Kategorie" +# === Taxonomy === + +# === Pagination === +[more] +other = "Więcej" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Wybierz język" + +[switchTheme] +other = "Przełącz schemat" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Napędzany przez {{ .Hugo }} | Szablon - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Twój komentarz ..." + +[facebookLanguageCode] +other = "pl" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Szukaj" + +[searchPlaceholder] +other = "Wyszukaj tytuł lub treść artykułu ..." + +[clear] +other = "Pusty" + +[cancel] +other = "Anuluj" + +[noResultsFound] +other = "Nie znaleziono wyników" + +[lunrLanguageCode] +other = "pl" + +[copyToClipboard] +other = "Skopiuj do schowka" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Udostępnij na" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Spis treści" + +[publishedOnDate] +other = "opublikowano {{ .Date }}" + +[includedInCategories] +other = "zawarty w {{ .Categories }}" + +[wordCount] +one = "Jedno słowo" +other = "{{ .Count }} słów" + +[readingTime] +one = "Jedna minuta" +other = "{{ .Count }} minuty" + +[views] +other = "wyświetleń" + +[author] +other = "Autor" + +[updatedOnDate] +other = "Zaktualizowano {{ .Date }}" + +[readMarkdown] +other = "Zobacz Markdown" + +[back] +other = "Wstecz" + +[home] +other = "Strona główna" + +[readMore] +other = "Czytaj więcej" + +[cookieconsentMessage] +other = "Ta strona korzysta z plików Cookies, aby poprawić komfort użytkowania." + +[cookieconsentDismiss] +other = "Zgodzić się" + +[cookieconsentLink] +other = "Ucz się więcej" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Nie znaleziono strony" + +[pageNotFoundText] +other = "Wybacz, chyba coś namieszaliśmy." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Notka" + +[abstract] +other = "Streszczenie" + +[info] +other = "Info" + +[tip] +other = "Wskazówka" + +[success] +other = "Sukces" + +[question] +other = "Pytanie" + +[warning] +other = "Ostrzeżenie" + +[failure] +other = "Błąd" + +[danger] +other = "Niebezpieczeństwo" + +[bug] +other = "Problem" + +[example] +other = "Przykład" + +[quote] +other = "Cytat" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "Dodano" + +[changed] +other = "Zmieniono" + +[deleted] +other = "Usunięte" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/pt-BR.toml b/themes/LoveIt/i18n/pt-BR.toml new file mode 100644 index 00000000..27cbb032 --- /dev/null +++ b/themes/LoveIt/i18n/pt-BR.toml @@ -0,0 +1,200 @@ +# Translations for Brazilian Portuguese +# Tradução para português do Brasil +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Voltar ao topo" + +[viewComments] +other = "Ver comentários" +# === baseof == + +# === Post === +[posts] +other = "Posts" +# === Post === + +# === Taxonomy === +[allSome] +other = "Todos {{ .Some }}" + +[tag] +other = "Tag" + +[tags] +other = "Tags" + +[category] +other = "Categoria" + +[categories] +other = "Categorias" +# === Taxonomy === + +# === Pagination === +[more] +other = "Mais" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Selecione o idioma" + +[switchTheme] +other = "Trocar tema" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Movido a {{ .Hugo }} | Tema - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "O seu comentário ..." + +[facebookLanguageCode] +other = "pt_BR" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Pesquisa" + +[searchPlaceholder] +other = "Pesquisar títulos ou conteúdos ..." + +[clear] +other = "Limpar" + +[cancel] +other = "Cancelar" + +[noResultsFound] +other = "Nenhum resultado encontrado" + +[lunrLanguageCode] +other = "pt" + +[lunrLanguageLib] +other = "lib/lunr/lunr.pt.js" + +[copyToClipboard] +other = "Copiar para a área de transferência" + +[cookieconsentMessage] +other = "Este site usa Cookies para melhorar sua experiência." + +[cookieconsentDismiss] +other = "Aceita" + +[cookieconsentLink] +other = "Saber mais" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Compartilhe em" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Conteúdos" + +[publishedOnDate] +other = "publicado em {{ .Date }}" + +[includedInCategories] +other = "incluido em {{ .Categories }}" + +[wordCount] +one = "Uma palavra" +other = "{{ .Count }} palavras" + +[readingTime] +one = "Um minuto" +other = "{{ .Count }} minutos" + +[views] +other = "visualizações" + +[author] +other = "Autor" + +[updatedOnDate] +other = "Atualizado em {{ .Date }}" + +[readMarkdown] +other = "Leia em Markdown" + +[back] +other = "Voltar" + +[home] +other = "Home" + +[readMore] +other = "Leia mais" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Página não encontrada" + +[pageNotFoundText] +other = "A página que você procura não existe. Desculpe" +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Nota" + +[abstract] +other = "Abstrato" + +[info] +other = "Info" + +[tip] +other = "Dica" + +[success] +other = "Sucesso" + +[question] +other = "Pergunta" + +[warning] +other = "Aviso" + +[failure] +other = "Falha" + +[danger] +other = "Perigo" + +[bug] +other = "Bug" + +[example] +other = "Exemplo" + +[quote] +other = "Citação" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "NOVO" + +[changed] +other = "ALTERADO" + +[deleted] +other = "EXCLUÍDO" +# === shortcodes/version.html === + diff --git a/themes/LoveIt/i18n/ro.toml b/themes/LoveIt/i18n/ro.toml new file mode 100644 index 00000000..7584dc6f --- /dev/null +++ b/themes/LoveIt/i18n/ro.toml @@ -0,0 +1,199 @@ +# Translations for Romanian +# Traduceri pentru limba română +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Înapoi Sus" + +[viewComments] +other = "Vizualizare Comentarii" +# === baseof == + +# === Post === +[posts] +other = "Articole" +# === Post === + +# === Taxonomy === +[allSome] +other = "Toate {{ .Some }}" + +[tag] +other = "Etichetă" + +[tags] +other = "Etichete" + +[category] +other = "Categorie" + +[categories] +other = "Categorii" +# === Taxonomy === + +# === Pagination === +[more] +other = "Mai mult" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Selectare Limbă" + +[switchTheme] +other = "Schimbare Temă" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Realizat de către {{ .Hugo }} | Temă - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Comentariul dvs ..." + +[facebookLanguageCode] +other = "ro_RO" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Căutare" + +[searchPlaceholder] +other = "Căutarea titlului sau conținutului articolului ..." + +[clear] +other = "Golire" + +[cancel] +other = "Anulare" + +[noResultsFound] +other = "Nici un rezultat gasit" + +[lunrLanguageCode] +other = "ro" + +[lunrLanguageLib] +other = "lib/lunr/lunr.ro.js" + +[copyToClipboard] +other = "Copiați în clipboard" + +[cookieconsentMessage] +other = "Acest site web utilizează Cookies pentru a vă îmbunătăți experiența." + +[cookieconsentDismiss] +other = "De acord" + +[cookieconsentLink] +other = "Aflați mai multe" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Distribuie pe" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Cuprins" + +[publishedOnDate] +other = "publicat la {{ .Date }}" + +[includedInCategories] +other = "inclus în {{ .Categories }}" + +[wordCount] +one = "Un cuvânt" +other = "{{ .Count }} cuvinte" + +[readingTime] +one = "Un minut" +other = "{{ .Count }} minute" + +[views] +other = "vizualizări" + +[author] +other = "Autor" + +[updatedOnDate] +other = "Actualizat la {{ .Date }}" + +[readMarkdown] +other = "Citire Markdown" + +[back] +other = "Înapoi" + +[home] +other = "Acasă" + +[readMore] +other = "Citește mai mult" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Pagina nu a fost găsită" + +[pageNotFoundText] +other = "Pagina pe care o căutați nu există. Ne cerem scuze." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Notă" + +[abstract] +other = "Rezumat" + +[info] +other = "Info" + +[tip] +other = "Sfat" + +[success] +other = "Succes" + +[question] +other = "Întrebare" + +[warning] +other = "Avertizare" + +[failure] +other = "Eșec" + +[danger] +other = "Pericol" + +[bug] +other = "Bug" + +[example] +other = "Exemplu" + +[quote] +other = "Citat" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "NOU" + +[changed] +other = "SCHIMBAT" + +[deleted] +other = "ȘTERS" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/ru.toml b/themes/LoveIt/i18n/ru.toml new file mode 100644 index 00000000..82a01851 --- /dev/null +++ b/themes/LoveIt/i18n/ru.toml @@ -0,0 +1,199 @@ +# Translations for Russian +# Переводы на русский +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Наверх" + +[viewComments] +other = "Посмотреть комментарии" +# === baseof == + +# === Post === +[posts] +other = "Статьи" +# === Post === + +# === Taxonomy === +[allSome] +other = "Все {{ .Some }}" + +[tag] +other = "Тэг" + +[tags] +other = "Тэги" + +[category] +other = "Категория" + +[categories] +other = "Категории" +# === Taxonomy === + +# === Pagination === +[more] +other = "Больше" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Выбор Языка" + +[switchTheme] +other = "Сменить Тему" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Сделано {{ .Hugo }} | Тема - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Ваш комментарий ..." + +[facebookLanguageCode] +other = "ru_RU" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Поиск" + +[searchPlaceholder] +other = "Поиск заголовков или содержимого ..." + +[clear] +other = "Очистить" + +[cancel] +other = "Отменить" + +[noResultsFound] +other = "Результатов не найдено" + +[lunrLanguageCode] +other = "ru" + +[lunrLanguageLib] +other = "lib/lunr/lunr.ru.js" + +[copyToClipboard] +other = "Копировать в буфер обмена" + +[cookieconsentMessage] +other = "Этот сайт использует Cookies для улучшения вашего опыта." + +[cookieconsentDismiss] +other = "Согласен" + +[cookieconsentLink] +other = "Учить больше" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Поделиться в" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Содержание" + +[publishedOnDate] +other = "Опубликовано {{ .Date }}" + +[includedInCategories] +other = "включен в {{ .Categories }}" + +[wordCount] +one = "Одно слово" +other = "{{ .Count }} слов" + +[readingTime] +one = "Одна минута" +other = "{{ .Count }} минут" + +[views] +other = "просмотров" + +[author] +other = "Автор" + +[updatedOnDate] +other = "Oбновлена {{ .Date }}" + +[readMarkdown] +other = "Читать Markdown" + +[back] +other = "Назад" + +[home] +other = "Домой" + +[readMore] +other = "Читать больше" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Страница не найдена" + +[pageNotFoundText] +other = "Страница, которую вы ищете, не существует. Приносим извинения." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Замечание" + +[abstract] +other = "Краткое описание" + +[info] +other = "Инфо" + +[tip] +other = "Совет" + +[success] +other = "Удачто" + +[question] +other = "Вопрос" + +[warning] +other = "Предупреждение" + +[failure] +other = "Отказ" + +[danger] +other = "Опасность" + +[bug] +other = "Ошибка" + +[example] +other = "Пример" + +[quote] +other = "Цитата" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "НОВЫЙ" + +[changed] +other = "ИЗМЕНЕН" + +[deleted] +other = "УДАЛЕН" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/sr.toml b/themes/LoveIt/i18n/sr.toml new file mode 100644 index 00000000..09b7d049 --- /dev/null +++ b/themes/LoveIt/i18n/sr.toml @@ -0,0 +1,196 @@ +# Translations for Serbian +# Превод на Српски +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Назад на Врх" + +[viewComments] +other = "Погледај Коментаре" +# === baseof == + +# === Post === +[posts] +other = "Постови" +# === Post === + +# === Taxonomy === +[allSome] +other = "Све {{ .Some }}" + +[tag] +other = "Таг" + +[tags] +other = "Тагови" + +[category] +other = "Категорија" + +[categories] +other = "Категорије" +# === Taxonomy === + +# === Pagination === +[more] +other = "Више" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Изабери Језик" + +[switchTheme] +other = "Промени Тему" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Покреће {{ .Hugo }} | Тема - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "sr" + +[valinePlaceholder] +other = "Ваш коментар ..." + +[facebookLanguageCode] +other = "sr_RS" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Претрага" + +[searchPlaceholder] +other = "Претражи наслове или садржај..." + +[clear] +other = "Очисти" + +[cancel] +other = "Поништи" + +[noResultsFound] +other = "Без резултата" + +[lunrLanguageCode] +other = "sr" + +[copyToClipboard] +other = "Копирај на радну таблу" + +[cookieconsentMessage] +other = "Ова веб локација користи Cookies да би побољшала ваше искуство." + +[cookieconsentDismiss] +other = "Договорити се" + +[cookieconsentLink] +other = "Сазнајте више" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Подели на" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Садржаји" + +[publishedOnDate] +other = "објављено {{ .Date }}" + +[includedInCategories] +other = "укључено {{ .Categories }}" + +[wordCount] +one = "Једна реч" +other = "{{ .Count }} речи" + +[readingTime] +one = "Један минут" +other = "{{ .Count }} минута" + +[views] +other = "прегледа" + +[author] +other = "Аутор" + +[updatedOnDate] +other = "Ажурирано {{ .Date }}" + +[readMarkdown] +other = "Читај Markdown" + +[back] +other = "Назад" + +[home] +other = "Почетна" + +[readMore] +other = "Прочитај више" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Страница није пронађена" + +[pageNotFoundText] +other = "Страница коју тражите не постоји. Жао нам је." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Напомена" + +[abstract] +other = "Сажетак" + +[info] +other = "Инфо" + +[tip] +other = "Савет" + +[success] +other = "Успех" + +[question] +other = "Питање" + +[warning] +other = "Упозорење" + +[failure] +other = "Неуспех" + +[danger] +other = "Опасност" + +[bug] +other = "Грешка" + +[example] +other = "Пример" + +[quote] +other = "Цитат" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "НОВО" + +[changed] +other = "ПРОМЕЊЕНО" + +[deleted] +other = "ОБРИСАНО" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/vi.toml b/themes/LoveIt/i18n/vi.toml new file mode 100644 index 00000000..04ac1ca6 --- /dev/null +++ b/themes/LoveIt/i18n/vi.toml @@ -0,0 +1,198 @@ +# Translations for Vietnamese +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "Lên trên" + +[viewComments] +other = "Xem bình luận" +# === baseof == + +# === Post === +[posts] +other = "Bài viết" +# === Post === + +# === Taxonomy === +[allSome] +other = "Tất cả {{ .Some }}" + +[tag] +other = "Nhãn" + +[tags] +other = "Nhãn" + +[category] +other = "Danh mục" + +[categories] +other = "Danh mục" +# === Taxonomy === + +# === Pagination === +[more] +other = "Thêm" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "Chọn Ngôn ngữ" + +[switchTheme] +other = "Đổi chủ đề" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "Cung cấp bởi {{ .Hugo }} | Chủ đề - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "en" + +[valinePlaceholder] +other = "Bình luận của bạn ..." + +[facebookLanguageCode] +other = "vi" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "Tìm kiếm" + +[searchPlaceholder] +other = "Tìm tiêu đề hoặc nội dung..." + +[clear] +other = "Xoá" + +[cancel] +other = "Huỷ" + +[noResultsFound] +other = "Không tìm thấy" + +[lunrLanguageCode] +other = "vi" + +[lunrLanguageLib] +other = "lib/lunr/lunr.vi.js" + +[copyToClipboard] +other = "Sao chép vào bộ nhớ tạm" + +[cookieconsentMessage] +other = "Trang web này sử dụng Cookies để cải thiện trải nghiệm của bạn." + +[cookieconsentDismiss] +other = "Đã hiểu!" + +[cookieconsentLink] +other = "Tìm hiểu thêm" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "Chia sẻ trên" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "Nội dung" + +[publishedOnDate] +other = "đăng ngày {{ .Date }}" + +[includedInCategories] +other = "trong {{ .Categories }}" + +[wordCount] +one = "One word" +other = "{{ .Count }} từ" + +[readingTime] +one = "One minute" +other = "{{ .Count }} phút" + +[views] +other = "lượt xem" + +[author] +other = "Tác giả" + +[updatedOnDate] +other = "Cập nhật ngày {{ .Date }}" + +[readMarkdown] +other = "Đọc với định dạng Markdown" + +[back] +other = "Quay lại" + +[home] +other = "Trang chủ" + +[readMore] +other = "Đọc thêm" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "Không tìm thấy trang" + +[pageNotFoundText] +other = "Trang bạn đang tìm kiếm không tồn tại. Xin lỗi." +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "Ghi chú" + +[abstract] +other = "Tóm tắt" + +[info] +other = "Thông tin" + +[tip] +other = "Mẹo" + +[success] +other = "Thành công" + +[question] +other = "Câu hỏi" + +[warning] +other = "Cảnh báo" + +[failure] +other = "Thất bại" + +[danger] +other = "Nguy hiểm" + +[bug] +other = "Lỗi" + +[example] +other = "Ví dụ" + +[quote] +other = "Trích dẫn" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "MỚI" + +[changed] +other = "THAY ĐỔI" + +[deleted] +other = "XOÁ" +# === shortcodes/version.html === diff --git a/themes/LoveIt/i18n/zh-CN.toml b/themes/LoveIt/i18n/zh-CN.toml new file mode 100644 index 00000000..a96a0b24 --- /dev/null +++ b/themes/LoveIt/i18n/zh-CN.toml @@ -0,0 +1,200 @@ +# Translations for Simplified Chinese +# 简体中文的翻译 +# https://gohugo.io/content-management/multilingual/#translation-of-strings + +# === baseof == +[backToTop] +other = "回到顶部" + +[viewComments] +other = "查看评论" +# === baseof == + +# === Post === +[posts] +other = "文章" +# === Post === + +# === Taxonomy === +[allSome] +other = "所有{{ .Some }}" + +[tag] +other = "标签" + +[tags] +other = "标签" + +[category] +other = "分类" + +[categories] +other = "分类" +# === Taxonomy === + +# === Pagination === +[more] +other = "更多" +# === Pagination === + +# === partials/header.html === +[selectLanguage] +other = "选择语言" + +[switchTheme] +other = "切换主题" +# === partials/header.html === + +# === partials/footer.html === +[poweredBySome] +other = "由 {{ .Hugo }} 强力驱动 | 主题 - {{ .Theme }}" +# === partials/footer.html === + +# === partials/comment.html === +[valineLang] +other = "zh-cn" + +[valinePlaceholder] +other = "你的评论 ..." + +[facebookLanguageCode] +other = "zh_CN" +# === partials/comment.html === + +# === partials/assets.html === +[search] +other = "搜索" + +[searchPlaceholder] +other = "搜索文章标题或内容..." + +[clear] +other = "清空" + +[cancel] +other = "取消" + +[noResultsFound] +other = "没有找到结果" + +[lunrLanguageCode] +other = "zh" + +[lunrLanguageLib] +other = "lib/lunr/lunr.zh.js" + +[lunrSegmentitLib] +other = "lib/lunr/lunr.segmentit.js" + +[copyToClipboard] +other = "复制到剪贴板" + +[cookieconsentMessage] +other = "本网站使用 Cookies 来改善您的浏览体验." + +[cookieconsentDismiss] +other = "同意" + +[cookieconsentLink] +other = "了解更多" +# === partials/assets.html === + +# === partials/plugin/share.html === +[shareOn] +other = "分享到" +# === partials/plugin/share.html === + +# === posts/single.html === +[contents] +other = "目录" + +[publishedOnDate] +other = "发布于 {{ .Date }}" + +[includedInCategories] +other = "收录于 {{ .Categories }}" + +[wordCount] +other = "约 {{ .Count }} 字" + +[readingTime] +other = "预计阅读 {{ .Count }} 分钟" + +[views] +other = "次阅读" + +[author] +other = "作者" + +[updatedOnDate] +other = "更新于 {{ .Date }}" + +[readMarkdown] +other = "阅读原始文档" + +[back] +other = "返回" + +[home] +other = "主页" + +[readMore] +other = "阅读全文" +# === posts/single.html === + +# === 404.html === +[pageNotFound] +other = "页面没找到" + +[pageNotFoundText] +other = "抱歉,您要查找的页面不存在。" +# === 404.html === + +# === shortcodes/admonition.html === +[note] +other = "注意" + +[abstract] +other = "摘要" + +[info] +other = "信息" + +[tip] +other = "技巧" + +[success] +other = "成功" + +[question] +other = "问题" + +[warning] +other = "警告" + +[failure] +other = "失败" + +[danger] +other = "危险" + +[bug] +other = "Bug" + +[example] +other = "示例" + +[quote] +other = "引用" +# === shortcodes/admonition.html === + +# === shortcodes/version.html === +[new] +other = "新增" + +[changed] +other = "更改" + +[deleted] +other = "删除" +# === shortcodes/version.html === diff --git a/themes/LoveIt/images/Alipay.jpg b/themes/LoveIt/images/Alipay.jpg new file mode 100644 index 00000000..dfb533bd Binary files /dev/null and b/themes/LoveIt/images/Alipay.jpg differ diff --git a/themes/LoveIt/images/Apple-Devices-Preview.png b/themes/LoveIt/images/Apple-Devices-Preview.png new file mode 100644 index 00000000..ac7709b3 Binary files /dev/null and b/themes/LoveIt/images/Apple-Devices-Preview.png differ diff --git a/themes/LoveIt/images/Wechat.jpg b/themes/LoveIt/images/Wechat.jpg new file mode 100644 index 00000000..8a843a93 Binary files /dev/null and b/themes/LoveIt/images/Wechat.jpg differ diff --git a/themes/LoveIt/images/screenshot.png b/themes/LoveIt/images/screenshot.png new file mode 100644 index 00000000..3fb6515f Binary files /dev/null and b/themes/LoveIt/images/screenshot.png differ diff --git a/themes/LoveIt/images/tn.png b/themes/LoveIt/images/tn.png new file mode 100644 index 00000000..49187300 Binary files /dev/null and b/themes/LoveIt/images/tn.png differ diff --git a/themes/LoveIt/layouts/404.html b/themes/LoveIt/layouts/404.html new file mode 100644 index 00000000..963ae583 --- /dev/null +++ b/themes/LoveIt/layouts/404.html @@ -0,0 +1,19 @@ +{{- define "title" }} + {{- T "pageNotFound" | printf "404 %v" }} - {{ .Site.Title -}} +{{- end -}} + +{{- define "content" -}} +
    +

    +

    + {{- T "pageNotFoundText" -}}  + +

    +
    + +{{- end -}} diff --git a/themes/LoveIt/layouts/_default/_markup/render-image.html b/themes/LoveIt/layouts/_default/_markup/render-image.html new file mode 100644 index 00000000..a79cddf0 --- /dev/null +++ b/themes/LoveIt/layouts/_default/_markup/render-image.html @@ -0,0 +1,10 @@ +{{- if .Title -}} +
    + {{- dict "Src" .Destination "Title" .Text "Caption" .Title "Linked" true "Resources" .Page.Resources | partial "plugin/image.html" -}} +
    + {{- .Title | safeHTML -}} +
    +
    +{{- else -}} + {{- dict "Src" .Destination "Title" .Text "Resources" .Page.Resources | partial "plugin/image.html" -}} +{{- end -}} diff --git a/themes/LoveIt/layouts/_default/_markup/render-link.html b/themes/LoveIt/layouts/_default/_markup/render-link.html new file mode 100644 index 00000000..0c053962 --- /dev/null +++ b/themes/LoveIt/layouts/_default/_markup/render-link.html @@ -0,0 +1,6 @@ +{{- $destination := .Destination -}} +{{- with dict "Path" $destination "Resources" .Page.Resources | partial "function/resource.html" -}} + {{- $destination = .RelPermalink -}} +{{- end -}} +{{- $options := dict "Destination" $destination "Title" .Title "Content" .Text -}} +{{- partial "plugin/link.html" $options -}} diff --git a/themes/LoveIt/layouts/_default/baseof.html b/themes/LoveIt/layouts/_default/baseof.html new file mode 100644 index 00000000..43030156 --- /dev/null +++ b/themes/LoveIt/layouts/_default/baseof.html @@ -0,0 +1,51 @@ +{{- partial "init.html" . -}} + + + + + + + + + + {{- block "title" . }}{{ .Site.Title }}{{ end -}} + + + {{- partial "head/meta.html" . -}} + {{- partial "head/link.html" . -}} + {{- partial "head/seo.html" . -}} + + + {{- /* Check theme isDark before body rendering */ -}} + {{- $theme := .Site.Params.defaulttheme -}} + + +
    + + {{- /* Body wrapper */ -}} +
    + {{- partial "header.html" . -}} +
    +
    + {{- block "content" . }}{{ end -}} +
    +
    + {{- partial "footer.html" . -}} +
    + +
    + {{- /* top button */ -}} + + + + + {{- /* comment button */ -}} + + + +
    + + {{- /* Load JavaScript scripts and CSS */ -}} + {{- partial "assets.html" . -}} + + diff --git a/themes/LoveIt/layouts/_default/section.html b/themes/LoveIt/layouts/_default/section.html new file mode 100644 index 00000000..56943174 --- /dev/null +++ b/themes/LoveIt/layouts/_default/section.html @@ -0,0 +1,36 @@ +{{- define "title" }} + {{- .Params.Title | default (T .Section) | default .Section | dict "Some" | T "allSome" }} - {{ .Site.Title -}} +{{- end -}} + +{{- define "content" -}} +
    + {{- /* Title */ -}} +

    + {{- .Params.Title | default (T .Section) | default .Section | dict "Some" | T "allSome" -}} +

    + + {{- /* Paginate */ -}} + {{- if .Pages -}} + {{- $pages := .Pages.GroupByDate "2006" -}} + {{- with .Site.Params.section.paginate | default .Site.Params.paginate -}} + {{- $pages = $.Paginate $pages . -}} + {{- else -}} + {{- $pages = .Paginate $pages -}} + {{- end -}} + {{- range $pages.PageGroups -}} +

    {{ .Key }}

    + {{- range .Pages -}} +
    + + {{- .Title -}} + + + {{- $.Site.Params.section.dateFormat | default "01-02" | .Date.Format -}} + +
    + {{- end -}} + {{- end -}} + {{- partial "paginator.html" . -}} + {{- end -}} +
    +{{- end -}} diff --git a/themes/LoveIt/layouts/_default/single.html b/themes/LoveIt/layouts/_default/single.html new file mode 100644 index 00000000..a34e22bd --- /dev/null +++ b/themes/LoveIt/layouts/_default/single.html @@ -0,0 +1,24 @@ +{{- define "title" }}{{ .Title }} - {{ .Site.Title }}{{ end -}} + +{{- define "content" -}} + {{- $params := .Scratch.Get "params" -}} +
    + {{- /* Title */ -}} +

    + {{- .Title -}} +

    + + {{- /* Subtitle */ -}} + {{- with $params.subtitle -}} +

    {{ . }}

    + {{- end -}} + + {{- /* Content */ -}} +
    + {{- dict "Content" .Content "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" | safeHTML -}} +
    + + {{- /* Comment */ -}} + {{- partial "comment.html" . -}} +
    +{{- end -}} diff --git a/themes/LoveIt/layouts/_default/single.md b/themes/LoveIt/layouts/_default/single.md new file mode 100644 index 00000000..e34c2d40 --- /dev/null +++ b/themes/LoveIt/layouts/_default/single.md @@ -0,0 +1,3 @@ +# {{ .Title }} + +{{ .RawContent }} diff --git a/themes/LoveIt/layouts/_default/summary.html b/themes/LoveIt/layouts/_default/summary.html new file mode 100644 index 00000000..990b6a9e --- /dev/null +++ b/themes/LoveIt/layouts/_default/summary.html @@ -0,0 +1,75 @@ +{{- $params := .Params | merge .Site.Params.page -}} + +
    + {{- /* Featured image */ -}} + {{- $image := $params.featuredimagepreview | default $params.featuredimage -}} + {{- with .Resources.GetMatch "featured-image" -}} + {{- $image = .RelPermalink -}} + {{- end -}} + {{- with .Resources.GetMatch "featured-image-preview" -}} + {{- $image = .RelPermalink -}} + {{- end -}} + {{- with $image -}} + + {{- end -}} + + {{- /* Title */ -}} +

    + {{ .Title }} +

    + + {{- /* Meta */ -}} + + + {{- /* Summary content */ -}} +
    + {{- with .Summary -}} + {{- dict "Content" . "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" | safeHTML -}} + {{- else -}} + {{- .Description | safeHTML -}} + {{- end -}} +
    + + {{- /* Footer */ -}} + +
    \ No newline at end of file diff --git a/themes/LoveIt/layouts/index.html b/themes/LoveIt/layouts/index.html new file mode 100644 index 00000000..44dd92a4 --- /dev/null +++ b/themes/LoveIt/layouts/index.html @@ -0,0 +1,41 @@ +{{- define "content" -}} + {{- $params := .Scratch.Get "params" -}} + {{- $profile := .Site.Params.home.profile -}} + {{- $posts := .Site.Params.home.posts -}} + +
    + {{- /* Profile */ -}} + {{- if ne $profile.enable false -}} + {{- partial "home/profile.html" . -}} + {{- end -}} + + {{- /* Content */ -}} + {{- if .Content -}} +
    +
    + {{- dict "Content" .Content "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" | safeHTML -}} +
    +
    + {{- end -}} + + {{- /* Posts */ -}} + {{- if ne $posts.enable false | and .Site.RegularPages -}} + {{- /* Paginate */ -}} + {{- $pages := where .Site.RegularPages "Type" "posts" -}} + {{- if .Site.Params.page.hiddenFromHomePage -}} + {{- $pages = where $pages "Params.hiddenfromhomepage" false -}} + {{- else -}} + {{- $pages = where $pages "Params.hiddenfromhomepage" "!=" true -}} + {{- end -}} + {{- with $posts.paginate | default .Site.Params.paginate -}} + {{- $pages = $.Paginate $pages . -}} + {{- else -}} + {{- $pages = .Paginate $pages -}} + {{- end -}} + {{- range $pages.Pages -}} + {{- .Render "summary" -}} + {{- end -}} + {{- partial "paginator.html" . -}} + {{- end -}} +
    +{{- end -}} diff --git a/themes/LoveIt/layouts/index.json b/themes/LoveIt/layouts/index.json new file mode 100644 index 00000000..4e810391 --- /dev/null +++ b/themes/LoveIt/layouts/index.json @@ -0,0 +1,46 @@ +{{- if .Site.Params.search -}} + {{- $index := slice -}} + {{- $pages := .Site.RegularPages -}} + {{- if .Site.Params.page.hiddenFromSearch -}} + {{- $pages = where $pages "Params.hiddenfromsearch" false -}} + {{- else -}} + {{- $pages = where $pages "Params.hiddenfromsearch" "!=" true -}} + {{- end -}} + {{- range $pages -}} + {{- $uri := .RelPermalink -}} + {{- if $.Site.Params.search.absoluteURL -}} + {{- $uri = .Permalink -}} + {{- end -}} + {{- $meta := dict "uri" $uri "title" .Title "tags" .Params.tags "categories" .Params.categories -}} + {{- $meta = $.Site.Params.dateFormat | default "2006-01-02" | .PublishDate.Format | dict "date" | merge $meta -}} + {{- with .Description -}} + {{- $index = $index | append (dict "content" . "objectID" $uri | merge $meta) -}} + {{- end -}} + {{- $params := .Params | merge $.Site.Params.page -}} + {{/* Extended Markdown syntax */}} + {{- $content := dict "Content" .Content "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" -}} + {{/* Remove line number for code */}} + {{- $content = $content | replaceRE ` *\d*\n?` "" -}} + {{- range $i, $contenti := split $content "

    + + + {{- .Site.Title -}} + + + {{- .Permalink -}} + + + {{- .Site.Params.description | default .Site.Title -}} + + Hugo -- gohugo.io + {{- with .Site.LanguageCode -}} + + {{- . -}} + + {{- end -}} + {{- with .Site.Author.email -}} + + {{- . }}{{ with $.Site.Author.name }} ({{ . }}){{ end -}} + + + {{- . }}{{ with $.Site.Author.name }} ({{ . }}){{ end -}} + + {{- end -}} + {{- with .Site.Copyright -}} + + {{- . -}} + + {{- end -}} + {{- if not .Date.IsZero -}} + + {{- .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" -}} + + {{- end -}} + {{ with .OutputFormats.Get "RSS" }} + {{ printf "" .Permalink .MediaType | safeHTML }} + {{ end }} + {{- range where .Site.RegularPages "Type" "posts" | first (.Site.Params.home.rss | default 10) -}} + {{- dict "Page" . "Site" .Site | partial "rss/item.html" -}} + {{- end -}} + + diff --git a/themes/LoveIt/layouts/partials/assets.html b/themes/LoveIt/layouts/partials/assets.html new file mode 100644 index 00000000..2ae78b75 --- /dev/null +++ b/themes/LoveIt/layouts/partials/assets.html @@ -0,0 +1,207 @@ +{{- $params := .Scratch.Get "params" -}} +{{- $cdn := .Scratch.Get "cdn" | default dict -}} +{{- $fingerprint := .Scratch.Get "fingerprint" -}} +{{- $config := (.Scratch.Get "this").config -}} + +{{- /* Smooth Scroll */ -}} +{{- $source := $cdn.smoothScrollJS | default "lib/smooth-scroll/smooth-scroll.min.js" -}} +{{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + +{{- /* Search */ -}} +{{- if .Site.Params.search | and .Site.Params.search.enable -}} + {{- $search := .Site.Params.search -}} + {{- $source := $cdn.autocompleteJS | default "lib/autocomplete/autocomplete.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $config = dict "maxResultLength" $search.maxResultLength "snippetLength" $search.snippetLength "highlightTag" $search.highlightTag "noResultsFound" (T "noResultsFound") | dict "search" | merge $config -}} + {{- if eq $search.type "lunr" -}} + {{- with .Site.Home.OutputFormats.Get "json" -}} + {{- $config = dict "type" "lunr" "lunrIndexURL" .RelPermalink | dict "search" | merge $config -}} + {{- end -}} + {{- $source := $cdn.lunrJS | default "lib/lunr/lunr.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- if T "lunrLanguageLib" -}} + {{- $config = T "lunrLanguageCode" | dict "lunrLanguageCode" | dict "search" | merge $config -}} + {{- with T "lunrSegmentitLib" -}} + {{- $config = dict "lunrSegmentitURL" (resources.Get .).RelPermalink | dict "search" | merge $config -}} + {{- end -}} + {{- dict "Source" "lib/lunr/lunr.stemmer.support.js" "Minify" true "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- dict "Source" (T "lunrLanguageLib") "Minify" true "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- end -}} + {{- else if eq $search.type "algolia" -}} + {{- $source := $cdn.algoliasearchJS | default "lib/algoliasearch/algoliasearch-lite.umd.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $config = dict "type" "algolia" "algoliaIndex" $search.algolia.index "algoliaAppID" $search.algolia.appID "algoliaSearchKey" $search.algolia.searchKey | dict "search" | merge $config -}} + {{- end -}} +{{- end -}} + +{{- /* lazysizes */ -}} +{{- $source := $cdn.lazysizesJS | default "lib/lazysizes/lazysizes.min.js" -}} +{{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + +{{- /* twemoji */ -}} +{{- if $params.twemoji -}} + {{- $source := $cdn.twemojiJS | default "lib/twemoji/twemoji.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $config = dict "twemoji" true | merge $config -}} +{{- end -}} + +{{- /* lightgallery.js */ -}} +{{- if $params.lightgallery -}} + {{- $source := $cdn.lightgalleryCSS | default "lib/lightgallery/lightgallery.min.css" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $source := $cdn.lightgalleryJS | default "lib/lightgallery/lightgallery.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $source := $cdn.lightgalleryThumbnailJS | default "lib/lightgallery/lg-thumbnail.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $source := $cdn.lightgalleryZoomJS | default "lib/lightgallery/lg-zoom.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $config = dict "selector" ".lightgallery" "speed" 400 "hideBarsDelay" 2000 "thumbnail" true "exThumbImage" "data-thumbnail" "thumbWidth" 80 "thumbContHeight" 80 "actualSize" false | dict "lightGallery" | merge $config -}} +{{- end -}} + +{{- $code := $params.code | default dict -}} +{{- $config = cond (ne $code.maxShownLines nil) $code.maxShownLines 10 | dict "maxShownLines" | dict "code" | merge $config -}} + +{{- /* clipboard.js */ -}} +{{- if ne $code.copy false -}} + {{- $source := $cdn.clipboardJS | default "lib/clipboard/clipboard.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $config = T "copyToClipboard" | dict "copyTitle" | dict "code" | merge $config -}} +{{- end -}} + +{{- /* Sharer.js */ -}} +{{- if $params.share.enable -}} + {{- $source := $cdn.sharerJS | default "lib/sharer/sharer.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} +{{- end -}} + +{{- /* TypeIt */ -}} +{{- with (.Scratch.Get "this").typeitMap -}} + {{- $typeit := $.Site.Params.typeit -}} + {{- $source := $cdn.typeitJS | default "lib/typeit/typeit.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}} + {{- $config = dict "speed" $typeit.speed "cursorSpeed" $typeit.cursorSpeed "cursorChar" $typeit.cursorChar "duration" $typeit.duration "data" . | dict "typeit" | merge $config -}} +{{- end -}} + +{{- /* KaTeX */ -}} +{{- $math := $params.math -}} +{{- if eq $math true -}} + {{- $math = .Site.Params.page.math | default dict -}} +{{- else if eq $math false -}} + {{- $math = dict "enable" false -}} +{{- end -}} +{{- if $math.enable -}} + {{- $source := $cdn.katexCSS | default "lib/katex/katex.min.css" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $source := $cdn.katexJS | default "lib/katex/katex.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $source := $cdn.katexAutoRenderJS | default "lib/katex/auto-render.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- if $math.copyTex -}} + {{- $source := $cdn.katexCopyTexCSS | default "lib/katex/copy-tex.min.css" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $source := $cdn.katexCopyTexJS | default "lib/katex/copy-tex.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- end -}} + {{- if $math.mhchem -}} + {{- $source := $cdn.katexMhchemJS | default "lib/katex/mhchem.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- end -}} + {{- $delimiters := slice (dict "left" "$$" "right" "$$" "display" true) (dict "left" "\\[" "right" "\\]" "display" true) -}} + {{- if and $math.blockLeftDelimiter $math.blockRightDelimiter -}} + {{- $delimiters = $delimiters | append (dict "left" $math.blockLeftDelimiter "right" $math.blockRightDelimiter "display" true) -}} + {{- end -}} + {{- $delimiters = $delimiters | append (dict "left" "$" "right" "$" "display" false) (dict "left" "\\(" "right" "\\)" "display" false) -}} + {{- if and $math.inlineLeftDelimiter $math.inlineRightDelimiter -}} + {{- $delimiters = $delimiters | append (dict "left" $math.inlineRightDelimiter "right" $math.inlineRightDelimiter "display" false) -}} + {{- end -}} + {{- $config = dict "strict" false "delimiters" $delimiters | dict "math" | merge $config -}} +{{- end -}} + +{{- /* mermaid */ -}} +{{- if (.Scratch.Get "this").mermaid -}} + {{- $source := $cdn.mermaidJS | default "lib/mermaid/mermaid.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $options := dict "targetPath" "lib/mermaid/mermaid.min.css" "enableSourceMap" true -}} + {{- dict "Source" "lib/mermaid/mermaid.scss" "ToCSS" $options "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} +{{- end -}} + +{{- /* ECharts */ -}} +{{- if (.Scratch.Get "this").echarts -}} + {{- $source := $cdn.echartsJS | default "lib/echarts/echarts.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $source := $cdn.echartsMacaronsJS | default "lib/echarts/macarons.js" -}} + {{- dict "Source" $source "Minify" true "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} +{{- end -}} + +{{- /* Mapbox GL */ -}} +{{- if (.Scratch.Get "this").mapbox -}} + {{- $source := $cdn.mapboxGLCSS | default "lib/mapbox-gl/mapbox-gl.min.css" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $source := $cdn.mapboxGLJS | default "lib/mapbox-gl/mapbox-gl.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- dict "Source" "lib/mapbox-gl/mapbox-gl-language.js" "Minify" true "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $config = dict "accessToken" $params.mapbox.accessToken "RTLTextPlugin" "https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.0/mapbox-gl-rtl-text.js" | dict "mapbox" | merge $config -}} +{{- end -}} + +{{- /* Music */ -}} +{{- if (.Scratch.Get "this").music -}} + {{- /* APlayer */ -}} + {{- $source := $cdn.aplayerCSS | default "lib/aplayer/APlayer.min.css" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $options := dict "targetPath" "lib/aplayer/dark.min.css" "enableSourceMap" true -}} + {{- dict "Source" "lib/aplayer/dark.scss" "ToCSS" $options "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $source := $cdn.aplayerJS | default "lib/aplayer/APlayer.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + + {{- /* MetingJS */ -}} + {{- $source := $cdn.metingJS | default "lib/meting/Meting.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} +{{- end -}} + +{{- /* Cookie Consent */ -}} +{{- if .Site.Params.cookieconsent | and .Site.Params.cookieconsent.enable -}} + {{- $source := $cdn.cookieconsentCSS | default "lib/cookieconsent/cookieconsent.min.css" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $source := $cdn.cookieconsentJS | default "lib/cookieconsent/cookieconsent.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $cookieconsentConfig := dict "popup" (dict "background" "#1aa3ff") "button" (dict "background" "#f0f0f0") | dict "theme" "edgeless" "palette" -}} + {{- $cookieconsentConfig = .Site.Params.cookieconsent | merge $cookieconsentConfig -}} + {{- $cookieconsentConfig = dict "message" ($cookieconsentConfig.content.message | default (T "cookieconsentMessage")) "dismiss" ($cookieconsentConfig.content.dismiss | default (T "cookieconsentDismiss")) "link" ($cookieconsentConfig.content.link | default (T "cookieconsentLink")) | dict "content" | merge $cookieconsentConfig -}} + {{- $config = $cookieconsentConfig | dict "cookieconsent" | merge $config -}} +{{- end -}} + +{{- range $params.library.css -}} + {{- dict "Source" . "Fingerprint" $fingerprint | dict "Scratch" $.Scratch "Data" | partial "scratch/style.html" -}} +{{- end -}} + +{{- range $params.library.js -}} + {{- dict "Source" . "Fingerprint" $fingerprint | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}} +{{- end -}} + +{{- with (.Scratch.Get "this").styleArr -}} + {{- $content := delimit . "" -}} + {{- $path := substr (md5 $content) 0 6 | printf "css/%v" -}} + {{- $options := printf "%v.min.css" $path | dict "targetPath" -}} + {{- dict "Content" $content "Path" (printf "%v.scss" $path) "ToCSS" $options | dict "Scratch" $.Scratch "Data" | partial "scratch/style.html" -}} +{{- end -}} + +{{- /* Config script */ -}} +{{- $config | jsonify | printf "window.config=%s;" | dict "Content" | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + +{{- /* Theme script */ -}} +{{- dict "Source" "js/theme.min.js" "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} +{{- $_ := (resources.Get "js/theme.min.js.map").RelPermalink -}} + +{{- with (.Scratch.Get "this").scriptArr -}} + {{- delimit . "\n" | dict "Content" | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}} +{{- end -}} + +{{- range (.Scratch.Get "this").style -}} + {{- partial "plugin/style.html" . -}} +{{- end -}} + +{{- range (.Scratch.Get "this").script -}} + {{- partial "plugin/script.html" . -}} +{{- end -}} + +{{- partial "plugin/analytics.html" . -}} diff --git a/themes/LoveIt/layouts/partials/comment.html b/themes/LoveIt/layouts/partials/comment.html new file mode 100644 index 00000000..0382ae11 --- /dev/null +++ b/themes/LoveIt/layouts/partials/comment.html @@ -0,0 +1,130 @@ +{{- $cdn := .Scratch.Get "cdn" | default dict -}} +{{- $fingerprint := .Scratch.Get "fingerprint" -}} +{{- $comment := .Scratch.Get "comment" | default dict -}} +{{- $commentConfig := dict -}} + +{{- if $comment.enable -}} +
    + {{- /* Disqus Comment System */ -}} + {{- $disqus := $comment.disqus | default dict -}} + {{- if $disqus.enable -}} +
    + {{- $source := printf "https://%v.disqus.com/embed.js" $disqus.shortname -}} + {{- dict "Source" $source "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + + {{- end -}} + + {{- /* Gitalk Comment System */ -}} + {{- $gitalk := $comment.gitalk | default dict -}} + {{- if $gitalk.enable -}} +
    + {{- $source := $cdn.gitalkCSS | default "lib/gitalk/gitalk.css" -}} + {{- dict "Source" $source "Minify" true "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $source := $cdn.gitalkJS | default "lib/gitalk/gitalk.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $commentConfig = dict "id" .Date "title" .Title "clientID" $gitalk.clientId "clientSecret" $gitalk.clientSecret "repo" $gitalk.repo "owner" $gitalk.owner "admin" (slice $gitalk.owner) | dict "gitalk" | merge $commentConfig -}} + + {{- end -}} + + {{- /* Valine Comment System */ -}} + {{- $valine := $comment.valine | default dict -}} + {{- if $valine.enable -}} +
    + {{- $options := dict "targetPath" "lib/valine/valine.min.css" -}} + {{- dict "Source" "lib/valine/valine.scss" "ToCSS" $options | dict "Scratch" .Scratch "Data" | partial "scratch/style.html" -}} + {{- $source := $cdn.valineJS | default "lib/valine/Valine.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + {{- $commentConfig = dict "el" "#valine" "appId" $valine.appId "appKey" $valine.appKey "lang" ($valine.lang | default (T "valineLang")) "visitor" $valine.visitor "recordIP" $valine.recordIP "placeholder" ($valine.placeholder | default (T "valinePlaceholder")) "highlight" (ne $valine.highlight false) "enableQQ" $valine.enableQQ | dict "valine" | merge $commentConfig -}} + {{- with $valine.avatar -}} + {{- $commentConfig = dict "avatar" . | dict "valine" | merge $commentConfig -}} + {{- end -}} + {{- with $valine.meta -}} + {{- $commentConfig = dict "meta" . | dict "valine" | merge $commentConfig -}} + {{- end -}} + {{- with $valine.pageSize -}} + {{- $commentConfig = dict "pageSize" . | dict "valine" | merge $commentConfig -}} + {{- end -}} + {{- with $valine.serverURLs -}} + {{- $commentConfig = dict "serverURLs" . | dict "valine" | merge $commentConfig -}} + {{- end -}} + {{- $commentConfig = $valine.emoji | default "google.yml" | printf "data/emoji/%v" | resources.Get | transform.Unmarshal | dict "valine" | merge $commentConfig -}} + + {{- end -}} + + {{- /* Facebook Comment System */ -}} + {{- $facebook := $comment.facebook | default dict -}} + {{- if $facebook.enable -}} +
    +
    + {{- $source := printf "https://connect.facebook.net/%v/sdk.js#xfbml=1&version=v5.0&appId=%v&autoLogAppEvents=1" ($facebook.languageCode | default (T "facebookLanguageCode")) $facebook.appId -}} + {{- dict "Source" $source "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + + {{- end -}} + + {{- /* Telegram Comments System */ -}} + {{- $telegram := $comment.telegram | default dict -}} + {{- if $telegram.enable -}} +
    + {{- $attr := printf `data-comments-app-website="%v"` $telegram.siteID -}} + {{- $attr = printf `%v data-limit="%v"` $attr ($telegram.limit | default 5) -}} + {{- with $telegram.height -}} + {{- $attr = printf `%v data-height="%v"` $attr . -}} + {{- end -}} + {{- with $telegram.color -}} + {{- $attr = printf `%v data-color="%v"` $attr . -}} + {{- end -}} + {{- if $telegram.colorful -}} + {{- $attr = printf `%v data-colorful="1"` $attr -}} + {{- end -}} + {{- if $telegram.dislikes -}} + {{- $attr = printf `%v data-dislikes="1"` $attr -}} + {{- end -}} + {{- if $telegram.outlined -}} + {{- $attr = printf `%v data-outlined="1"` $attr -}} + {{- end -}} + {{- dict "Source" "https://comments.app/js/widget.js?2" "Defer" true "Attr" $attr | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + + {{- end -}} + + {{- /* Commento Comment System */ -}} + {{- $commento := $comment.commento | default dict -}} + {{- if $commento.enable -}} +
    + {{- dict "Source" "https://cdn.commento.io/js/commento.js" "Defer" true | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} + + {{- end -}} + + {{- /* Utterances Comment System */ -}} + {{- $utterances := $comment.utterances | default dict -}} + {{- if $utterances.enable -}} +
    + {{- $commentConfig = dict "repo" $utterances.repo | dict "utterances" | merge $commentConfig -}} + {{- $commentConfig = $utterances.issueTerm | default "pathname" | dict "issueTerm" | dict "utterances" | merge $commentConfig -}} + {{- $commentConfig = dict "label" $utterances.label | dict "utterances" | merge $commentConfig -}} + {{- $commentConfig = $utterances.lightTheme | default "github-light" | dict "lightTheme" | dict "utterances" | merge $commentConfig -}} + {{- $commentConfig = $utterances.darkTheme | default "github-dark" | dict "darkTheme" | dict "utterances" | merge $commentConfig -}} + + {{- end -}} +
    +{{- end -}} + +{{- dict "comment" $commentConfig | dict "config" | merge (.Scratch.Get "this") | .Scratch.Set "this" -}} diff --git a/themes/LoveIt/layouts/partials/footer.html b/themes/LoveIt/layouts/partials/footer.html new file mode 100644 index 00000000..ca4b7850 --- /dev/null +++ b/themes/LoveIt/layouts/partials/footer.html @@ -0,0 +1,51 @@ +{{- if ne .Site.Params.footer.enable false -}} +
    + +
    +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/function/checkbox.html b/themes/LoveIt/layouts/partials/function/checkbox.html new file mode 100644 index 00000000..2283592b --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/checkbox.html @@ -0,0 +1,9 @@ +{{- /* Checkbox unchecked */ -}} +{{- $old := `` -}} +{{- $new := `` -}} +{{- $content := replace . $old $new -}} + +{{- /* Checkbox checked */ -}} +{{- $old = `` -}} +{{- $new = `` -}} +{{- return replace $content $old $new -}} diff --git a/themes/LoveIt/layouts/partials/function/content.html b/themes/LoveIt/layouts/partials/function/content.html new file mode 100644 index 00000000..f1d7ce81 --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/content.html @@ -0,0 +1,19 @@ +{{- $content := .Content -}} + +{{- if .Ruby -}} + {{- $content = partial "function/ruby.html" $content -}} +{{- end -}} + +{{- if .Fraction -}} + {{- $content = partial "function/fraction.html" $content -}} +{{- end -}} + +{{- if .Fontawesome -}} + {{- $content = partial "function/fontawesome.html" $content -}} +{{- end -}} + +{{- $content = partial "function/checkbox.html" $content -}} + +{{- $content = partial "function/escape.html" $content -}} + +{{- return $content -}} diff --git a/themes/LoveIt/layouts/partials/function/escape.html b/themes/LoveIt/layouts/partials/function/escape.html new file mode 100644 index 00000000..1ff794f9 --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/escape.html @@ -0,0 +1,5 @@ +{{- /* Escape character */ -}} +{{- /* {?X} -> X */ -}} +{{- $REin := `\{\?(.)\}` -}} +{{- $REout := `$1` -}} +{{- return replaceRE $REin $REout . -}} diff --git a/themes/LoveIt/layouts/partials/function/fontawesome.html b/themes/LoveIt/layouts/partials/function/fontawesome.html new file mode 100644 index 00000000..9d64c3dc --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/fontawesome.html @@ -0,0 +1,14 @@ +{{- /* Font Awesome */ -}} +{{- /* :(far fa-circle): -> */ -}} + +{{- $REin := ` (:\([\w- ]+?\):)` -}} +{{- $REout := ` $1` -}} +{{- $content := replaceRE $REin $REout . -}} + +{{- $REin = `(:\([\w- ]+?\):) ` -}} +{{- $REout = `$1 ` -}} +{{- $content = replaceRE $REin $REout . -}} + +{{- $REin = `:\(([\w- ]+?)\):` -}} +{{- $REout = `` -}} +{{- return replaceRE $REin $REout $content -}} diff --git a/themes/LoveIt/layouts/partials/function/fraction.html b/themes/LoveIt/layouts/partials/function/fraction.html new file mode 100644 index 00000000..9aa85d0f --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/fraction.html @@ -0,0 +1,5 @@ +{{- /* Fraction */ -}} +{{- /* [A]/[B] -> A/B */ -}} +{{- $REin := `\[(.+?)\]/\[(.+?)\]` -}} +{{- $REout := `$1/$2` -}} +{{- return replaceRE $REin $REout . -}} diff --git a/themes/LoveIt/layouts/partials/function/id.html b/themes/LoveIt/layouts/partials/function/id.html new file mode 100644 index 00000000..e84ef9c2 --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/id.html @@ -0,0 +1,8 @@ +{{- /* ID */ -}} +{{- $count := (.Scratch.Get "this").count | default 1 -}} +{{- $id := printf "id-%d" $count -}} +{{- $count | add 1 | .Scratch.SetInMap "this" "count" -}} +{{- with .Content -}} + {{- dict $id . | dict "data" | dict "config" | merge ($.Scratch.Get "this") | $.Scratch.Set "this" -}} +{{- end -}} +{{- return $id -}} diff --git a/themes/LoveIt/layouts/partials/function/path.html b/themes/LoveIt/layouts/partials/function/path.html new file mode 100644 index 00000000..ece426fe --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/path.html @@ -0,0 +1,3 @@ +{{- /* https://discourse.gohugo.io/t/how-decode-urls-in-hugo/7549/4 */ -}} +{{- $URL := . | urlize | urls.Parse -}} +{{- return $URL.Path -}} diff --git a/themes/LoveIt/layouts/partials/function/resource.html b/themes/LoveIt/layouts/partials/function/resource.html new file mode 100644 index 00000000..2febef3f --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/resource.html @@ -0,0 +1,16 @@ +{{- $resource := 0 -}} +{{- $url := urls.Parse .Path -}} +{{- if not $url.Host | and $url.Path | and (strings.HasSuffix $url.Path "/" | not) -}} + {{- if .Resources -}} + {{- with .Resources.GetMatch $url.Path -}} + {{- $resource = . -}} + {{- end -}} + {{- end -}} + {{- if not $resource -}} + {{- with resources.Get $url.Path -}} + {{- $resource = . -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- return $resource -}} diff --git a/themes/LoveIt/layouts/partials/function/ruby.html b/themes/LoveIt/layouts/partials/function/ruby.html new file mode 100644 index 00000000..49aa35be --- /dev/null +++ b/themes/LoveIt/layouts/partials/function/ruby.html @@ -0,0 +1,5 @@ +{{- /* Ruby */ -}} +{{- /* [EN]^(English) -> ENEnglish */ -}} +{{- $REin := `\[(.+?)\]\^\((.+?)\)` -}} +{{- $REout := `$1$2` -}} +{{- return replaceRE $REin $REout . -}} diff --git a/themes/LoveIt/layouts/partials/head/link.html b/themes/LoveIt/layouts/partials/head/link.html new file mode 100644 index 00000000..080a1f9c --- /dev/null +++ b/themes/LoveIt/layouts/partials/head/link.html @@ -0,0 +1,51 @@ +{{- $cdn := .Scratch.Get "cdn" | default dict -}} +{{- $fingerprint := .Scratch.Get "fingerprint" -}} + +{{- if not .Site.Params.app.noFavicon -}} + {{- with .Site.Params.app.svgFavicon -}} + + {{- else -}} + + + + {{- end -}} + + {{- with .Site.Params.app.iconColor -}} + + {{- end -}} + +{{- end -}} + + +{{- if .PrevInSection -}} + +{{- end -}} +{{- if .NextInSection -}} + +{{- end -}} + +{{- with .OutputFormats.Get "RSS" -}} + + +{{- end -}} + +{{- /* normalize.css */ -}} +{{- $source := $cdn.normalizeCSS | default "lib/normalize/normalize.min.css" -}} +{{- $style := dict "Source" $source "Fingerprint" $fingerprint -}} +{{- partial "plugin/style.html" $style -}} + +{{- /* style.min.css */ -}} +{{- $style := dict "Source" "css/style.scss" "Fingerprint" $fingerprint -}} +{{- $options := dict "targetPath" "css/style.min.css" "enableSourceMap" true -}} +{{- $style = dict "Context" . "ToCSS" $options | merge $style -}} +{{- partial "plugin/style.html" $style -}} + +{{- /* Font Awesome */ -}} +{{- $source := $cdn.fontawesomeFreeCSS | default "lib/fontawesome-free/all.min.css" -}} +{{- $style := dict "Source" $source "Fingerprint" $fingerprint -}} +{{- partial "plugin/style.html" $style -}} + +{{- /* Animate.css */ -}} +{{- $source := $cdn.animateCSS | default "lib/animate/animate.min.css" -}} +{{- $style := dict "Source" $source "Fingerprint" $fingerprint -}} +{{- partial "plugin/style.html" $style -}} diff --git a/themes/LoveIt/layouts/partials/head/meta.html b/themes/LoveIt/layouts/partials/head/meta.html new file mode 100644 index 00000000..0862b835 --- /dev/null +++ b/themes/LoveIt/layouts/partials/head/meta.html @@ -0,0 +1,17 @@ +{{- $params := .Scratch.Get "params" -}} + + + +{{- template "_internal/opengraph.html" . -}} +{{- template "_internal/twitter_cards.html" . -}} + + + + +{{- with .Site.Params.app.themeColor -}} + +{{- end -}} + +{{- with .Site.Params.app.tileColor -}} + +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/head/seo.html b/themes/LoveIt/layouts/partials/head/seo.html new file mode 100644 index 00000000..d431ad06 --- /dev/null +++ b/themes/LoveIt/layouts/partials/head/seo.html @@ -0,0 +1,153 @@ +{{- $params := .Scratch.Get "params" -}} + +{{- with .Site.Params.verification.google -}} + +{{- end -}} +{{- with .Site.Params.verification.bing -}} + +{{- end -}} +{{- with .Site.Params.verification.yandex -}} + +{{- end -}} +{{- with .Site.Params.verification.pinterest -}} + +{{- end -}} +{{- with .Site.Params.verification.baidu -}} + +{{- end -}} + +{{- /* Home SEO */ -}} +{{- if .IsHome -}} + + +{{- /* Page SEO */ -}} +{{- else if .IsPage -}} + +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/header.html b/themes/LoveIt/layouts/partials/header.html new file mode 100644 index 00000000..de3f9550 --- /dev/null +++ b/themes/LoveIt/layouts/partials/header.html @@ -0,0 +1,183 @@ +{{- /* Desktop header */ -}} +
    + +
    + +{{- /* Mobile header */ -}} +
    + +
    +
    +
    +
    +
    +
    +
    diff --git a/themes/LoveIt/layouts/partials/home/profile.html b/themes/LoveIt/layouts/partials/home/profile.html new file mode 100644 index 00000000..b37e1528 --- /dev/null +++ b/themes/LoveIt/layouts/partials/home/profile.html @@ -0,0 +1,95 @@ +{{- $profile := .Site.Params.home.profile -}} +
    + {{- $avatar := $profile.avatarURL -}} + {{- with $profile.gravatarEmail -}} + {{- $avatar = md5 . | printf "https://www.gravatar.com/avatar/%v?s=240&d=mp" -}} + {{- end -}} + {{- if $avatar -}} +
    + {{- $menus := $.Site.Menus.main | default slice -}} + {{- with index $menus 0 -}} + {{- $url := .URL | relLangURL -}} + {{- with .Page -}} + {{- $url = .RelPermalink -}} + {{- end -}} + + {{- dict "Src" $avatar | partial "plugin/image.html" -}} + + {{- else -}} + {{- dict "Src" $avatar | partial "plugin/image.html" -}} + {{- end -}} +
    + {{- end -}} + + {{- with $profile.title -}} +

    + {{- . | safeHTML -}} +

    + {{- end -}} + + {{- with $profile.subtitle -}} +

    + {{- if $profile.typeit -}} + {{- $id := dict "Content" . "Scratch" $.Scratch | partial "function/id.html" -}} +
    + {{- dict $id (slice $id) | dict "typeitMap" | merge ($.Scratch.Get "this") | $.Scratch.Set "this" -}} + {{- else -}} + {{- . -}} + {{- end -}} +

    + {{- end -}} + + {{- if $profile.social -}} + + {{- end -}} + + {{- with $profile.disclaimer -}} +

    + {{- . | safeHTML -}} +

    + {{- end -}} +
    diff --git a/themes/LoveIt/layouts/partials/init.html b/themes/LoveIt/layouts/partials/init.html new file mode 100644 index 00000000..fdb50d3e --- /dev/null +++ b/themes/LoveIt/layouts/partials/init.html @@ -0,0 +1,41 @@ +{{- .Scratch.Set "version" "0.2.10" -}} + +{{- /* LoveIt theme version detection */ -}} +{{- $VERSION := "0.2.X" -}} +{{- if eq .Site .Sites.First -}} + {{- if not .Site.Params.version -}} + {{- errorf "Configuration Error 配置文件错误\n\nYou haven't configured the LoveIt version param correctly yet. See https://hugoloveit.com/theme-documentation-basics/#basic-configuration\n你还没有正确配置 LoveIt 的版本参数. 参考 https://hugoloveit.com/zh-cn/theme-documentation-basics/#basic-configuration\n" -}} + {{- else if ne .Site.Params.version $VERSION -}} + {{- errorf (printf "Compatibility Error 兼容性错误\n\n%v -> %v:\nYou have an incompatible update. See https://github.com/dillonzq/LoveIt/releases\n你进行了一次不兼容的更新. 参考 https://github.com/dillonzq/LoveIt/releases\n" .Site.Params.version $VERSION) -}} + {{- end -}} +{{- end -}} + +{{- $params := .Params | merge .Site.Params.page -}} + +{{- if eq hugo.Environment "production" -}} + {{- $cdn := .Site.Params.cdn -}} + {{- with $cdn.data -}} + {{- $cdnData := printf "data/cdn/%v" . | resources.Get | transform.Unmarshal -}} + {{- $cdn = dict "simpleIconsPrefix" $cdnData.prefix.simpleIcons -}} + {{- $prefix := $cdnData.prefix.libFiles | default "" -}} + {{- range $key, $value := $cdnData.libFiles -}} + {{- $cdn = printf "%v%v" $prefix $value | dict $key | merge $cdn -}} + {{- end -}} + {{- end -}} + {{- .Scratch.Set "cdn" $cdn -}} + {{- .Scratch.Set "fingerprint" .Site.Params.fingerprint -}} + {{- .Scratch.Set "analytics" .Site.Params.analytics -}} + {{- .Scratch.Set "comment" $params.comment -}} + {{- if eq .Params.comment true -}} + {{- .Scratch.Set "comment" .Site.Params.comment -}} + {{- else if eq .Params.comment false -}} + {{- .Scratch.Set "comment" dict -}} + {{- end -}} +{{- else if eq .Site .Sites.First -}} + {{- warnf "\n\nCurrent environment is \"development\". The \"comment system\", \"CDN\" and \"fingerprint\" will be disabled.\n当前运行环境是 \"development\". \"评论系统\", \"CDN\" 和 \"fingerprint\" 不会启用.\n" -}} +{{- end -}} + +{{- .Scratch.Set "params" $params -}} +{{- .Scratch.Set "this" dict -}} + +{{- partial "plugin/compatibility.html" . -}} diff --git a/themes/LoveIt/layouts/partials/paginator.html b/themes/LoveIt/layouts/partials/paginator.html new file mode 100644 index 00000000..170144fb --- /dev/null +++ b/themes/LoveIt/layouts/partials/paginator.html @@ -0,0 +1,30 @@ +{{- if gt .Paginator.TotalPages 1 -}} +
      + {{- .Scratch.Set "paginator.ellipsed" false -}} + {{- range $.Paginator.Pagers -}} + {{- $right := sub .TotalPages .PageNumber -}} + {{- $showNumber := or (le .PageNumber 1) (eq $right 0) -}} + {{- $showNumber := or $showNumber (and (gt .PageNumber (sub $.Paginator.PageNumber 3)) (lt .PageNumber (add $.Paginator.PageNumber 3))) -}} + {{- if $showNumber -}} + {{- $.Scratch.Set "paginator.ellipsed" false -}} + {{- $.Scratch.Set "paginator.shouldEllipse" false -}} + {{- else -}} + {{- $.Scratch.Set "paginator.shouldEllipse" (not ($.Scratch.Get "paginator.ellipsed") ) -}} + {{- $.Scratch.Set "paginator.ellipsed" true -}} + {{- end -}} + {{- if $showNumber -}} +
    • + + + {{- .PageNumber -}} + + +
    • + {{- else if ($.Scratch.Get "paginator.shouldEllipse") -}} +
    • + +
    • + {{- end -}} + {{- end -}} +
    +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/plugin/analytics.html b/themes/LoveIt/layouts/partials/plugin/analytics.html new file mode 100644 index 00000000..c4c21fad --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/analytics.html @@ -0,0 +1,22 @@ +{{- $analytics := .Scratch.Get "analytics" | default dict -}} + +{{- if $analytics.enable -}} + {{- /* Google Analytics */ -}} + {{- with $analytics.google.id -}} + + {{- printf "https://www.googletagmanager.com/gtag/js?id=%v" . | dict "Async" true "Source" | partial "plugin/script.html" -}} + {{- end -}} + + {{- /* Fathom Analytics */ -}} + {{- with $analytics.fathom.id -}} + + {{- dict "Source" ($analytics.fathom.server | default "cdn.usefathom.com" | printf "https://%v/tracker.js") "Async" true "Attr" "id=fathom-script" | partial "plugin/script.html" -}} + {{- end -}} +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/plugin/compatibility.html b/themes/LoveIt/layouts/partials/plugin/compatibility.html new file mode 100644 index 00000000..b460f185 --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/compatibility.html @@ -0,0 +1,22 @@ +{{- $compatibility := .Site.Params.compatibility | default dict -}} +{{- $cdn := .Scratch.Get "cdn" | default dict -}} +{{- $fingerprint := .Scratch.Get "fingerprint" -}} + +{{- /* Polyfill.io */ -}} +{{- if $compatibility.polyfill -}} + {{- $features := slice -}} + {{- range resources.Get "data/polyfill.yml" | transform.Unmarshal -}} + {{- range . -}} + {{- $features = $features | append . -}} + {{- end -}} + {{- end -}} + {{- with $features | uniq -}} + {{- delimit . "%2C" | printf "https://polyfill.io/v3/polyfill.min.js?features=%v" | dict "Source" | dict "Scratch" $.Scratch "Data" | partial "scratch/script.html" -}} + {{- end -}} +{{- end -}} + +{{- /* object-fit-images */ -}} +{{- if $compatibility.objectFit -}} + {{- $source := $cdn.objectFitImagesJS | default "lib/object-fit-images/ofi.min.js" -}} + {{- dict "Source" $source "Fingerprint" $fingerprint | dict "Scratch" .Scratch "Data" | partial "scratch/script.html" -}} +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/plugin/icon.html b/themes/LoveIt/layouts/partials/plugin/icon.html new file mode 100644 index 00000000..5bc2a11f --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/icon.html @@ -0,0 +1,13 @@ +{{- with .Class -}} + +{{- else -}} + {{- $src := .Src -}} + {{- with .Simpleicons -}} + {{- $prefix := $.Prefix | default "lib/simple-icons/icons" | strings.TrimSuffix "/" -}} + {{- $src = printf "%v/%v.svg" $prefix . -}} + {{- end -}} + {{- if (urls.Parse $src).Host | not -}} + {{- $src = (resources.Get $src | minify).RelPermalink -}} + {{- end -}} + +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/plugin/image.html b/themes/LoveIt/layouts/partials/plugin/image.html new file mode 100644 index 00000000..84a61b3e --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/image.html @@ -0,0 +1,38 @@ +{{- /* lazysizes and lightgallery.js */ -}} +{{- $src := .Src -}} +{{- with dict "Path" .Src "Resources" .Resources | partial "function/resource.html" -}} + {{- $src = .RelPermalink -}} +{{- end -}} + +{{- $small := .SrcSmall | default $src -}} +{{- with dict "Path" .SrcSmall "Resources" .Resources | partial "function/resource.html" -}} + {{- $small = .RelPermalink -}} +{{- end -}} + +{{- $large := .SrcLarge | default $src -}} +{{- with dict "Path" .SrcLarge "Resources" .Resources | partial "function/resource.html" -}} + {{- $large = .RelPermalink -}} +{{- end -}} + +{{- $alt := .Alt | default $src -}} +{{- $loading := resources.Get "svg/loading.svg" | minify -}} +{{- if .Linked -}} + + {{ $alt }} + +{{- else -}} + {{ $alt }} +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/plugin/link.html b/themes/LoveIt/layouts/partials/plugin/link.html new file mode 100644 index 00000000..ceaefc62 --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/link.html @@ -0,0 +1,9 @@ +{{- $rel := "" -}} + + {{- with .Icon -}} + {{- partial "plugin/icon.html" . -}} + {{- end -}} + {{- with .Content -}} + {{- . | safeHTML -}} + {{- end -}} + \ No newline at end of file diff --git a/themes/LoveIt/layouts/partials/plugin/script.html b/themes/LoveIt/layouts/partials/plugin/script.html new file mode 100644 index 00000000..e12e74e2 --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/script.html @@ -0,0 +1,25 @@ +{{- if .Content -}} + +{{- else if strings.HasPrefix .Source " +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/plugin/share.html b/themes/LoveIt/layouts/partials/plugin/share.html new file mode 100644 index 00000000..941647cb --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/share.html @@ -0,0 +1,199 @@ +{{- $share := (.Scratch.Get "params").share | default dict -}} + +{{- if $share.enable -}} + {{- /* 001: Twitter */ -}} + {{- if $share.Twitter -}} + + {{- dict "Class" "fab fa-twitter fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 002: Facebook */ -}} + {{- if $share.Facebook -}} + + {{- dict "Class" "fab fa-facebook-square fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 003: Linkedin */ -}} + {{- if $share.Linkedin -}} + + {{- dict "Class" "fab fa-linkedin fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 004: WhatsApp */ -}} + {{- if $share.Whatsapp -}} + + {{- dict "Class" "fab fa-whatsapp fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 005: Viber */ -}} + {{- if $share.Viber -}} + + {{- dict "Class" "fab fa-viber fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 006: Pinterest */ -}} + {{- if $share.Pinterest -}} + + {{- dict "Class" "fab fa-pinterest fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 007: Tumblr */ -}} + {{- if $share.Tumblr -}} + + {{- dict "Class" "fab fa-tumblr fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 008: Hacker News */ -}} + {{- if $share.Hackernews -}} + + {{- dict "Class" "fab fa-hacker-news fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 009: Reddit */ -}} + {{- if $share.Reddit -}} + + {{- dict "Class" "fab fa-reddit fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 010: VK */ -}} + {{- if $share.VK -}} + + {{- dict "Class" "fab fa-vk fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 011: Buffer */ -}} + {{- if $share.Buffer -}} + + {{- dict "Class" "fab fa-buffer fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 012: Xing */ -}} + {{- if $share.Xing -}} + + {{- dict "Class" "fab fa-xing fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 013: Line */ -}} + {{- if $share.Line -}} + + {{- dict "Simpleicons" "line" "Prefix" (.Scratch.Get "cdn" | default dict).simpleIconsPrefix | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 014: Instapaper */ -}} + {{- if $share.Instapaper -}} + + {{- dict "Simpleicons" "instapaper" "Prefix" (.Scratch.Get "cdn" | default dict).simpleIconsPrefix | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 015: Pocket */ -}} + {{- if $share.Pocket -}} + + {{- dict "Class" "fab fa-get-pocket fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 016: Digg */ -}} + {{- if $share.Digg -}} + + {{- dict "Class" "fab fa-digg fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 017: StumbleUpon */ -}} + {{- if $share.Stumbleupon -}} + + {{- dict "Class" "fab fa-stumbleupon fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 018: Flipboard */ -}} + {{- if $share.Flipboard -}} + + {{- dict "Class" "fab fa-flipboard fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 019: 微博 */ -}} + {{- if $share.Weibo -}} + + {{- dict "Class" "fab fa-weibo fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 020: 人人 */ -}} + {{- if $share.Renren -}} + + {{- dict "Class" "fab fa-renren fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 021: Myspace */ -}} + {{- if $share.Myspace -}} + + {{- dict "Simpleicons" "myspace" "Prefix" (.Scratch.Get "cdn" | default dict).simpleIconsPrefix | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 022: Blogger */ -}} + {{- if $share.Blogger -}} + + {{- dict "Class" "fab fa-blogger fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 023: 百度 */ -}} + {{- if $share.Baidu -}} + + {{- dict "Simpleicons" "baidu" "Prefix" (.Scratch.Get "cdn" | default dict).simpleIconsPrefix | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 024: OK.RU */ -}} + {{- if $share.Odnoklassniki -}} + + {{- dict "Class" "fab fa-odnoklassniki fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 025: Evernote */ -}} + {{- if $share.Evernote -}} + + {{- dict "Class" "fab fa-evernote fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 026: Skype */ -}} + {{- if $share.Skype -}} + + {{- dict "Class" "fab fa-skype fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 027: Trello */ -}} + {{- if $share.Trello -}} + + {{- dict "Class" "fab fa-trello fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} + + {{- /* 028: Mix */ -}} + {{- if $share.Mix -}} + + {{- dict "Class" "fab fa-mix fa-fw" | partial "plugin/icon.html" -}} + + {{- end -}} +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/plugin/social.html b/themes/LoveIt/layouts/partials/plugin/social.html new file mode 100644 index 00000000..e6d20054 --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/social.html @@ -0,0 +1,11 @@ +{{- $destination := "" -}} +{{- with .Url -}} + {{- $destination = . | relLangURL -}} +{{- else -}} + {{- $template := .Template | default "%v" -}} + {{- with .Prefix -}} + {{- $template = . | strings.TrimSuffix "/" | printf "%v/%%v" -}} + {{- end -}} + {{- $destination = printf (string $template) .Id -}} +{{- end -}} +{{- dict "Destination" $destination "Rel" "me" | merge . | partial "plugin/link.html" -}} diff --git a/themes/LoveIt/layouts/partials/plugin/style.html b/themes/LoveIt/layouts/partials/plugin/style.html new file mode 100644 index 00000000..9c9c9895 --- /dev/null +++ b/themes/LoveIt/layouts/partials/plugin/style.html @@ -0,0 +1,31 @@ +{{- if strings.HasPrefix .Source " +{{- end -}} diff --git a/themes/LoveIt/layouts/partials/rss/item.html b/themes/LoveIt/layouts/partials/rss/item.html new file mode 100644 index 00000000..28256b49 --- /dev/null +++ b/themes/LoveIt/layouts/partials/rss/item.html @@ -0,0 +1,36 @@ +{{- $params := .Page.Params | merge .Site.Params.Page | merge (dict "author" .Site.Author.name) -}} + + + {{- .Page.Title -}} + + + {{- .Page.Permalink -}} + + + {{- .Page.Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" -}} + + + {{- .params.author | default (T "author") -}} + + + {{- .Page.Permalink -}} + + + {{- " + + + {{- end -}} + {{- $content := .Page.Description -}} + {{- if $params.rssFullText -}} + {{- $content = dict "Content" .Page.Content "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" -}} + {{- else -}} + {{- with .Page.Summary -}} + {{- $content = dict "Content" . "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" -}} + {{- end -}} + {{- end -}} + {{- $content | replaceRE `]*>.*` "" | replaceRE `]*( /)?>` "" | safeHTML -}} + {{- "]]>" | safeHTML -}} + + \ No newline at end of file diff --git a/themes/LoveIt/layouts/partials/scratch/script.html b/themes/LoveIt/layouts/partials/scratch/script.html new file mode 100644 index 00000000..480ad2f5 --- /dev/null +++ b/themes/LoveIt/layouts/partials/scratch/script.html @@ -0,0 +1,4 @@ +{{- $this := .Scratch.Get "this" -}} +{{- $script := $this.script | default slice -}} +{{- $script = $script | append (slice .Data) -}} +{{- .Scratch.SetInMap "this" "script" $script -}} diff --git a/themes/LoveIt/layouts/partials/scratch/style.html b/themes/LoveIt/layouts/partials/scratch/style.html new file mode 100644 index 00000000..8989ce1d --- /dev/null +++ b/themes/LoveIt/layouts/partials/scratch/style.html @@ -0,0 +1,4 @@ +{{- $this := .Scratch.Get "this" -}} +{{- $style := $this.style | default slice -}} +{{- $style = $style | append (slice .Data) -}} +{{- .Scratch.SetInMap "this" "style" $style -}} diff --git a/themes/LoveIt/layouts/partials/single/footer.html b/themes/LoveIt/layouts/partials/single/footer.html new file mode 100644 index 00000000..c5b682f4 --- /dev/null +++ b/themes/LoveIt/layouts/partials/single/footer.html @@ -0,0 +1,72 @@ +{{- $params := .Scratch.Get "params" -}} + + diff --git a/themes/LoveIt/layouts/posts/rss.xml b/themes/LoveIt/layouts/posts/rss.xml new file mode 100644 index 00000000..454cdec4 --- /dev/null +++ b/themes/LoveIt/layouts/posts/rss.xml @@ -0,0 +1,41 @@ + + + + {{- .Params.Title | default (T .Section) | default .Section | dict "Some" | T "allSome" }} - {{ .Site.Title -}} + + + {{- .Permalink -}} + + + {{- .Params.Title | default (T .Section) | default .Section | dict "Some" | T "allSome" }} | {{ .Site.Title -}} + + Hugo -- gohugo.io + {{- with .Site.LanguageCode -}} + + {{- . -}} + + {{- end -}} + {{- with .Site.Author.email -}} + + {{- . }}{{ with $.Site.Author.name }} ({{ . }}){{ end -}} + + + {{- . }}{{ with $.Site.Author.name }} ({{ . }}){{ end -}} + + {{- end -}} + {{- with .Site.Copyright -}} + + {{- . -}} + + {{- end -}} + {{- if not .Date.IsZero -}} + + {{- .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" -}} + + {{- end -}} + + {{- range .Pages | first (.Site.Params.section.rss | default 10) -}} + {{- dict "Page" . "Site" .Site | partial "rss/item.html" -}} + {{- end -}} + + diff --git a/themes/LoveIt/layouts/posts/single.html b/themes/LoveIt/layouts/posts/single.html new file mode 100644 index 00000000..8f788a2a --- /dev/null +++ b/themes/LoveIt/layouts/posts/single.html @@ -0,0 +1,101 @@ +{{- define "title" }}{{ .Title }} - {{ .Site.Title }}{{ end -}} + +{{- define "content" -}} + {{- $params := .Scratch.Get "params" -}} + + {{- $toc := $params.toc -}} + {{- if eq $toc true -}} + {{- $toc = .Site.Params.page.toc | default dict -}} + {{- else if eq $toc false -}} + {{- $toc = dict "enable" false -}} + {{- end -}} + + {{- /* Auto TOC */ -}} + {{- if ne $toc.enable false -}} +
    +

    {{ T "contents" }}

    +
    +
    + {{- end -}} + +
    + {{- /* Title */ -}} +

    {{ .Title }}

    + + {{- /* Subtitle */ -}} + {{- with $params.subtitle -}} +

    {{ . }}

    + {{- end -}} + + {{- /* Meta */ -}} + + + {{- /* Featured image */ -}} + {{- $image := $params.featuredimage -}} + {{- with .Resources.GetMatch "featured-image" -}} + {{- $image = .RelPermalink -}} + {{- end -}} + {{- with $image -}} + + {{- end -}} + + {{- /* Static TOC */ -}} + {{- if ne $toc.enable false -}} +
    +
    + {{ T "contents" }} + +
    +
    + {{- dict "Content" .TableOfContents "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" | safeHTML -}} +
    +
    + {{- end -}} + + {{- /* Content */ -}} +
    + {{- dict "Content" .Content "Ruby" $params.ruby "Fraction" $params.fraction "Fontawesome" $params.fontawesome | partial "function/content.html" | safeHTML -}} +
    + + {{- /* Footer */ -}} + {{- partial "single/footer.html" . -}} + + {{- /* Comment */ -}} + {{- partial "comment.html" . -}} +
    +{{- end -}} diff --git a/themes/LoveIt/layouts/robots.txt b/themes/LoveIt/layouts/robots.txt new file mode 100644 index 00000000..cefec37d --- /dev/null +++ b/themes/LoveIt/layouts/robots.txt @@ -0,0 +1,64 @@ +User-agent: * + +Disallow: /images/ +Disallow: /js/ +Disallow: /css/ + +User-agent: MJ12bot +Disallow: / + +User-agent: AhrefsBot +Disallow: / + +User-agent: BLEXBot +Disallow: / + +# Block SISTRIX +User-agent: SISTRIX Crawler +Disallow: / +User-agent: sistrix +Disallow: / +User-agent: 007ac9 +Disallow: / +User-agent: 007ac9 Crawler +Disallow: / + +# Block Uptime robot +User-agent: UptimeRobot/2.0 +Disallow: / + +# Block Ezooms Robot +User-agent: Ezooms Robot +Disallow: / + +# Block Perl LWP +User-agent: Perl LWP +Disallow: / + +# Block netEstate NE Crawler (+http://www.website-datenbank.de/) +User-agent: netEstate NE Crawler (+http://www.website-datenbank.de/) +Disallow: / + +# Block WiseGuys Robot +User-agent: WiseGuys Robot +Disallow: / + +# Block Turnitin Robot +User-agent: Turnitin Robot +Disallow: / + +# Block Heritrix +User-agent: Heritrix +Disallow: / + +# Block pricepi +User-agent: pimonster +Disallow: / + +User-agent: SurdotlyBot +Disallow: / + +User-agent: ZoominfoBot +Disallow: / + +Sitemap: {{ "/sitemap.xml" | absLangURL }} diff --git a/themes/LoveIt/layouts/shortcodes/admonition.html b/themes/LoveIt/layouts/shortcodes/admonition.html new file mode 100644 index 00000000..bfe14526 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/admonition.html @@ -0,0 +1,41 @@ +{{- $inner := .Inner | .Page.RenderString -}} + +{{- $iconMap := dict "note" "fas fa-pencil-alt fa-fw" -}} +{{- $iconMap = dict "abstract" "fas fa-list-ul fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "info" "fas fa-info-circle fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "tip" "fas fa-lightbulb fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "success" "fas fa-check-circle fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "question" "fas fa-question-circle fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "warning" "fas fa-exclamation-triangle fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "failure" "fas fa-times-circle fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "danger" "fas fa-skull-crossbones fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "bug" "fas fa-bug fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "example" "fas fa-list-ol fa-fw" | merge $iconMap -}} +{{- $iconMap = dict "quote" "fas fa-quote-right fa-fw" | merge $iconMap -}} +{{- $iconDetails := "fas fa-angle-right fa-fw" -}} + +{{- if .IsNamedParams -}} + {{- $type := .Get "type" | default "note" -}} +
    +
    + {{ .Get "title" | default (T $type) }} +
    +
    +
    + {{- $inner -}} +
    +
    +
    +{{- else -}} + {{- $type := .Get 0 | default "note" -}} +
    +
    + {{ .Get 1 | default (T $type) }} +
    +
    +
    + {{- $inner -}} +
    +
    +
    +{{- end -}} diff --git a/themes/LoveIt/layouts/shortcodes/bilibili.html b/themes/LoveIt/layouts/shortcodes/bilibili.html new file mode 100644 index 00000000..c14cdc96 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/bilibili.html @@ -0,0 +1,7 @@ +
    + {{- if .IsNamedParams -}} + + {{- else -}} + + {{- end -}} +
    diff --git a/themes/LoveIt/layouts/shortcodes/echarts.html b/themes/LoveIt/layouts/shortcodes/echarts.html new file mode 100644 index 00000000..f13be360 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/echarts.html @@ -0,0 +1,6 @@ +{{- $content := .Inner | transform.Unmarshal | jsonify -}} +{{- $id := dict "Content" $content "Scratch" .Page.Scratch | partial "function/id.html" -}} +{{- $width := cond .IsNamedParams (.Get "width") (.Get 0) | default "100%" -}} +{{- $height := cond .IsNamedParams (.Get "height") (.Get 1) | default "30rem" -}} +
    +{{- .Page.Scratch.SetInMap "this" "echarts" true -}} diff --git a/themes/LoveIt/layouts/shortcodes/image.html b/themes/LoveIt/layouts/shortcodes/image.html new file mode 100644 index 00000000..4bb365af --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/image.html @@ -0,0 +1,29 @@ +{{- $options := cond .IsNamedParams (.Get "src") (.Get 0) | dict "Src" -}} +{{- $options = cond .IsNamedParams (.Get "alt") (.Get 1) | .Page.RenderString | dict "Alt" | merge $options -}} +{{- $caption := cond .IsNamedParams (.Get "caption") (.Get 2) | .Page.RenderString -}} +{{- $options = dict "Caption" $caption | merge $options -}} + +{{- if .IsNamedParams -}} + {{- $options = dict "Title" (.Get "title") | merge $options -}} + {{- $options = dict "SrcSmall" (.Get "src_s") | merge $options -}} + {{- $options = dict "SrcLarge" (.Get "src_l") | merge $options -}} + {{- $options = dict "Height" (.Get "height") | merge $options -}} + {{- $options = dict "Width" (.Get "width") | merge $options -}} + {{- $options = .Get "linked" | ne false | dict "Linked" | merge $options -}} + {{- $options = dict "Rel" (.Get "rel") | merge $options -}} +{{- else -}} + {{- $options = cond $caption true false | dict "Linked" | merge $options -}} +{{- end -}} + +{{- $options = dict "Resources" .Page.Resources | merge $options -}} + +{{- with $caption -}} + + {{- partial "plugin/image.html" $options -}} +
    + {{- . | safeHTML -}} +
    + +{{- else -}} + {{- partial "plugin/image.html" $options -}} +{{- end -}} diff --git a/themes/LoveIt/layouts/shortcodes/link.html b/themes/LoveIt/layouts/shortcodes/link.html new file mode 100644 index 00000000..cac09e93 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/link.html @@ -0,0 +1,15 @@ +{{- $destination := cond .IsNamedParams (.Get "href") (.Get 0) -}} +{{- with dict "Path" $destination "Resources" .Page.Resources | partial "function/resource.html" -}} + {{- $destination = .RelPermalink -}} +{{- end -}} +{{- $options := dict "Destination" $destination -}} +{{- if .IsNamedParams -}} + {{- $options = dict "Content" (.Get "content") | merge $options -}} + {{- $options = dict "Title" (.Get "title") | merge $options -}} + {{- $options = dict "Class" (.Get "class") | merge $options -}} + {{- $options = dict "Rel" (.Get "rel") | merge $options -}} +{{- else -}} + {{- $options = dict "Content" (.Get 1 | default (.Get 0)) | merge $options -}} + {{- $options = dict "Title" (.Get 2) | merge $options -}} +{{- end -}} +{{- partial "plugin/link.html" $options -}} diff --git a/themes/LoveIt/layouts/shortcodes/mapbox.html b/themes/LoveIt/layouts/shortcodes/mapbox.html new file mode 100644 index 00000000..516d3703 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/mapbox.html @@ -0,0 +1,33 @@ +{{- $mapbox := (.Page.Scratch.Get "params").mapbox | default dict -}} + +{{- $lng := cond .IsNamedParams (.Get "lng") (.Get 0) -}} +{{- $lat := cond .IsNamedParams (.Get "lat") (.Get 1) -}} +{{- $zoom := cond .IsNamedParams (.Get "zoom") (.Get 2) | default 10 -}} +{{- $marked := cond .IsNamedParams (.Get "marked") (.Get 3) | ne false -}} +{{- $lightStyle := $mapbox.lightStyle -}} +{{- $darkStyle := $mapbox.darkStyle -}} +{{- $navigation := $mapbox.navigation -}} +{{- $geolocate := $mapbox.geolocate -}} +{{- $scale := $mapbox.scale -}} +{{- $fullscreen := $mapbox.fullscreen -}} +{{- $width := "100%" -}} +{{- $height := "20rem" -}} + +{{- if .IsNamedParams -}} + {{- $lightStyle = .Get "light-style" | default $lightStyle -}} + {{- $darkStyle = .Get "dark-style" | default $darkStyle -}} + {{- $navigation = .Get "navigation" | ne false | and $navigation -}} + {{- $geolocate = .Get "geolocate" | ne false | and $geolocate -}} + {{- $scale = .Get "scale" | ne false | and $scale -}} + {{- $fullscreen = .Get "fullscreen" | ne false | and $fullscreen -}} + {{- $width = .Get "width" | default $width -}} + {{- $height = .Get "height" | default $height -}} +{{- else -}} + {{- $lightStyle = .Get 4 | default $lightStyle -}} + {{- $darkStyle = .Get 5 | default $darkStyle -}} +{{- end -}} +{{- $darkStyle = $darkStyle | default $lightStyle -}} +{{- $options := dict "lng" $lng "lat" $lat "zoom" $zoom "marked" $marked "lightStyle" $lightStyle "darkStyle" $darkStyle "geolocate" $geolocate "navigation" $navigation "scale" $scale "fullscreen" $fullscreen -}} +{{- $id := dict "Content" $options "Scratch" .Page.Scratch | partial "function/id.html" -}} +
    +{{- .Page.Scratch.SetInMap "this" "mapbox" true -}} diff --git a/themes/LoveIt/layouts/shortcodes/mermaid.html b/themes/LoveIt/layouts/shortcodes/mermaid.html new file mode 100644 index 00000000..e96ead70 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/mermaid.html @@ -0,0 +1,3 @@ +{{- $id := dict "Content" (trim .Inner "\n") "Scratch" .Page.Scratch | partial "function/id.html" -}} +
    +{{- .Page.Scratch.SetInMap "this" "mermaid" true -}} diff --git a/themes/LoveIt/layouts/shortcodes/music.html b/themes/LoveIt/layouts/shortcodes/music.html new file mode 100644 index 00000000..904ad5b3 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/music.html @@ -0,0 +1,50 @@ +{{- $theme := "#448aff" -}} +{{- if .IsNamedParams -}} + {{- $theme = .Get "theme" | default $theme -}} + {{- if .Get "url" -}} + {{- $url := .Get "url" -}} + {{- with dict "Path" $url "Resources" .Page.Resources | partial "function/resource.html" -}} + {{- $url = .RelPermalink -}} + {{- end -}} + {{- $cover := .Get "cover" -}} + {{- with dict "Path" $cover "Resources" .Page.Resources | partial "function/resource.html" -}} + {{- $cover = .RelPermalink -}} + {{- end -}} + + {{- else if .Get "auto" -}} + + {{- else -}} + + {{- end -}} +{{- else if (.Get 0 | urls.Parse).Host -}} + +{{- else -}} + +{{- end -}} +{{- .Page.Scratch.SetInMap "this" "music" true -}} diff --git a/themes/LoveIt/layouts/shortcodes/script.html b/themes/LoveIt/layouts/shortcodes/script.html new file mode 100644 index 00000000..278232d3 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/script.html @@ -0,0 +1,2 @@ +{{- $scriptArr := (.Page.Scratch.Get "this").scriptArr | default slice -}} +{{- $scriptArr | append (trim .Inner "\n") | .Page.Scratch.SetInMap "this" "scriptArr" -}} diff --git a/themes/LoveIt/layouts/shortcodes/style.html b/themes/LoveIt/layouts/shortcodes/style.html new file mode 100644 index 00000000..8e035960 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/style.html @@ -0,0 +1,8 @@ +{{- $content := .Inner | .Page.RenderString -}} +{{- $id := dict "Scratch" .Page.Scratch | partial "function/id.html" -}} +{{- $tag := .Get 1 | default "div" -}} +{{- printf `<%v id="%v">%v` $tag $id $content $tag | safeHTML -}} + +{{- $style := .Get 0 | printf "#%v{%v}" $id -}} +{{- $styleArr := (.Page.Scratch.Get "this").styleArr | default slice -}} +{{- $styleArr | append $style | .Page.Scratch.SetInMap "this" "styleArr" -}} diff --git a/themes/LoveIt/layouts/shortcodes/typeit.html b/themes/LoveIt/layouts/shortcodes/typeit.html new file mode 100644 index 00000000..1d2ea012 --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/typeit.html @@ -0,0 +1,31 @@ +{{- $content := trim .Inner "\n" -}} +{{- $classList := .Get "class" | slice -}} +{{- $tag := .Get "tag" | default "div" -}} + +{{- with .Get "code" -}} + {{- /* highlight code content without line number */ -}} + {{- $content = highlight $content . "linenos=false" -}} + {{- /* delete outer label */ -}} + {{- $content = replaceRE `
    ]*>(?s)(.*)
    ` "$1" $content -}} + {{- /* parsing markdown links */ -}} + {{- $content = replaceRE `(]*>)([^<>]*)\[([^<>]+)\]\(([^<>]+)\)([^<>]*)()` "$1$2$6$3$1$5$6" $content -}} + {{- /* replace " " to " " and replace "\n" to "
    " */ -}} + {{- $content = replaceRE ` ` " " $content | replaceRE `(<\w+) ` "$1 " | replaceRE `\n` "
    " -}} + {{- /* fix "
    " location error which is a bug of Typeit HTML parser */ -}} + {{- $content = replaceRE `
    ` "
    " $content -}} + {{- $classList = $classList | append "highlight" -}} +{{- else -}} + {{- $content = $content | .Page.RenderString -}} +{{- end -}} + +{{- /* trim the newline */ -}} +{{- $id := dict "Content" $content "Scratch" .Page.Scratch | partial "function/id.html" -}} +{{- $key := .Get "group" | string | default $id -}} +{{- $typeitMap := (.Page.Scratch.Get "this").typeitMap | default dict -}} +{{- $group := index $typeitMap $key -}} +{{- $group = $group | default slice | append $id -}} +{{- dict $key $group | merge $typeitMap | .Page.Scratch.SetInMap "this" "typeitMap" -}} + +
    + {{- printf `<%v id="%v" class="%v">` $tag $id (delimit $classList " ") $tag | safeHTML -}} +
    diff --git a/themes/LoveIt/layouts/shortcodes/version.html b/themes/LoveIt/layouts/shortcodes/version.html new file mode 100644 index 00000000..904be2df --- /dev/null +++ b/themes/LoveIt/layouts/shortcodes/version.html @@ -0,0 +1,13 @@ +{{- $version := .Get 0 -}} +{{- $url := printf "https://github.com/dillonzq/LoveIt/releases/tag/v%v" $version -}} +{{- $type := .Get 1 | default "new" | lower -}} +{{- $label := T $type -}} +{{- $color := cond (eq $type "changed") "ff9101" "00b1ff" | cond (eq $type "deleted") "ff5252" -}} +{{- $pathTemplate := cond .Site.IsMultiLingual (printf "svg/version/%%v-%%v.%v.svg" .Page.Language.Lang) "svg/version/%v-%v.svg" -}} +{{- $path := printf $pathTemplate $version $type -}} +{{- $resource := resources.Get "svg/version.template.svg" -}} +{{- $resource = $resource | resources.ExecuteAsTemplate $path (dict "version" $version "label" $label "color" $color) | minify -}} +{{- $alt := printf "LoveIt %v | %v" $label $version -}} + + {{- dict "Src" $resource.RelPermalink "Alt" $alt "Class" "version" | partial "plugin/image.html" -}} + \ No newline at end of file diff --git a/themes/LoveIt/layouts/sitemap.xml b/themes/LoveIt/layouts/sitemap.xml new file mode 100644 index 00000000..f931c442 --- /dev/null +++ b/themes/LoveIt/layouts/sitemap.xml @@ -0,0 +1,47 @@ + + {{- range (where .Data.Pages "Section" "!=" "gallery") -}} + + + {{- .Permalink -}} + + {{- if not .Lastmod.IsZero -}} + + {{- .Lastmod.Format "2006-01-02T15:04:05-07:00" -}} + + {{- end -}} + {{- with .Sitemap.ChangeFreq -}} + + {{- . -}} + + {{- end -}} + + {{- if ge .Sitemap.Priority 0.0 -}} + {{- $weeks := div (sub now.Unix .Lastmod.Unix) 604800 -}} + {{- $priority := sub 1 (div $weeks 10.0 ) -}} + {{- if ge .Sitemap.Priority $priority -}} + {{ .Sitemap.Priority }} + {{- else -}} + {{ $priority }} + {{- end -}} + {{- end -}} + + {{- if .IsTranslated -}} + {{- range .Translations -}} + + {{- end -}} + + {{- end -}} + + {{- end -}} + diff --git a/themes/LoveIt/layouts/taxonomy/list.html b/themes/LoveIt/layouts/taxonomy/list.html new file mode 100644 index 00000000..b3328485 --- /dev/null +++ b/themes/LoveIt/layouts/taxonomy/list.html @@ -0,0 +1,43 @@ +{{- define "title" -}} + {{- .Title }} - {{ T .Data.Singular | default .Data.Singular }} - {{ .Site.Title -}} +{{- end -}} + +{{- define "content" -}} +
    + {{- /* Title */ -}} +

    + {{- $taxonomy := .Data.Singular -}} + {{- if eq $taxonomy "category" -}} +  {{ .Title }} + {{- else if eq $taxonomy "tag" -}} +  {{ .Title }} + {{- else -}} + {{- printf "%v - %v" (T $taxonomy | default $taxonomy) .Title -}} + {{- end -}} +

    + + {{- /* Paginate */ -}} + {{- if .Pages -}} + {{- $pages := .Pages.GroupByDate "2006" -}} + {{- with .Site.Params.list.paginate | default .Site.Params.paginate -}} + {{- $pages = $.Paginate $pages . -}} + {{- else -}} + {{- $pages = .Paginate $pages -}} + {{- end -}} + {{- range $pages.PageGroups -}} +

    {{ .Key }}

    + {{- range .Pages -}} +
    + + {{- .Title -}} + + + {{- $.Site.Params.list.dateFormat | default "01-02" | .Date.Format -}} + +
    + {{- end -}} + {{- end -}} + {{- partial "paginator.html" . -}} + {{- end -}} +
    +{{- end -}} diff --git a/themes/LoveIt/layouts/taxonomy/rss.xml b/themes/LoveIt/layouts/taxonomy/rss.xml new file mode 100644 index 00000000..a597e569 --- /dev/null +++ b/themes/LoveIt/layouts/taxonomy/rss.xml @@ -0,0 +1,41 @@ + + + + {{- .Title }} - {{ T .Data.Singular | default .Data.Singular }} - {{ .Site.Title -}} + + + {{- .Permalink -}} + + + {{- .Title }} - {{ T .Data.Singular | default .Data.Singular }} - {{ .Site.Title -}} + + Hugo -- gohugo.io + {{- with .Site.LanguageCode -}} + + {{- . -}} + + {{- end -}} + {{- with .Site.Author.email -}} + + {{- . }}{{ with $.Site.Author.name }} ({{ . }}){{ end -}} + + + {{- . }}{{ with $.Site.Author.name }} ({{ . }}){{ end -}} + + {{- end -}} + {{- with .Site.Copyright -}} + + {{- . -}} + + {{- end -}} + {{- if not .Date.IsZero -}} + + {{- .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" -}} + + {{- end -}} + + {{- range .Pages | first (.Site.Params.list.rss | default 10) -}} + {{- dict "Page" . "Site" .Site | partial "rss/item.html" -}} + {{- end -}} + + diff --git a/themes/LoveIt/layouts/taxonomy/terms.html b/themes/LoveIt/layouts/taxonomy/terms.html new file mode 100644 index 00000000..077f8bfa --- /dev/null +++ b/themes/LoveIt/layouts/taxonomy/terms.html @@ -0,0 +1,57 @@ +{{- define "title" -}} + {{- .Params.Title | default (T .Data.Plural) | default .Data.Plural | dict "Some" | T "allSome" }} - {{ .Site.Title -}} +{{- end -}} + +{{- define "content" -}} + {{- $taxonomies := .Data.Plural -}} + {{- $terms := .Data.Terms.ByCount -}} + {{- $type := .Type -}} + +
    + {{- /* Title */ -}} +

    + {{- .Params.Title | default (T $taxonomies) | default $taxonomies | dict "Some" | T "allSome" -}} +

    + + {{- /* Categories Page */ -}} + {{- if eq $taxonomies "categories" -}} +
    + {{- range $terms -}} + {{- $term := .Term -}} + {{- $pages := .Pages -}} + {{- with $.Site.GetPage "taxonomy" (printf "%v/%v" $type $term) -}} +
    +
    +

    + +  {{ .Page.Title }} + +

    + {{- range first 5 $pages -}} + + {{- end -}} + {{- if gt (len $pages) 5 -}} + + {{ T "more" }} >> + + {{- end -}} +
    +
    + {{- end -}} + {{- end -}} +
    + + {{- /* Tag Cloud Page */ -}} + {{- else if eq $taxonomies "tags" -}} +
    + {{- range $.Site.Taxonomies.tags.ByCount -}} + {{ .Page.Title }} {{ .Count }} + {{- end -}} +
    + {{- end -}} +
    +{{- end -}} diff --git a/themes/LoveIt/package-lock.json b/themes/LoveIt/package-lock.json new file mode 100644 index 00000000..e5533eee --- /dev/null +++ b/themes/LoveIt/package-lock.json @@ -0,0 +1,5254 @@ +{ + "name": "loveit-src", + "version": "0.2.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/cli": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.8.4.tgz", + "integrity": "sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + } + }, + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "dev": true, + "requires": { + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "dev": true, + "requires": { + "@babel/types": "^7.9.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + }, + "dependencies": { + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", + "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", + "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", + "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", + "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", + "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", + "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", + "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "optional": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "optional": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "optional": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "optional": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "optional": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true, + "optional": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "optional": true + }, + "babel-helper-evaluate-path": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", + "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", + "dev": true + }, + "babel-helper-flip-expressions": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", + "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", + "dev": true + }, + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true + }, + "babel-helper-is-void-0": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", + "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", + "dev": true + }, + "babel-helper-mark-eval-scopes": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", + "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", + "dev": true + }, + "babel-helper-remove-or-void": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", + "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", + "dev": true + }, + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", + "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", + "dev": true + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-minify-builtins": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", + "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", + "dev": true + }, + "babel-plugin-minify-constant-folding": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", + "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-minify-dead-code-elimination": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", + "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-mark-eval-scopes": "^0.4.3", + "babel-helper-remove-or-void": "^0.4.3", + "lodash": "^4.17.11" + } + }, + "babel-plugin-minify-flip-comparisons": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", + "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, + "babel-plugin-minify-guarded-expressions": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", + "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-flip-expressions": "^0.4.3" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", + "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", + "dev": true + }, + "babel-plugin-minify-mangle-names": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", + "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", + "dev": true, + "requires": { + "babel-helper-mark-eval-scopes": "^0.4.3" + } + }, + "babel-plugin-minify-numeric-literals": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", + "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", + "dev": true + }, + "babel-plugin-minify-replace": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", + "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", + "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-flip-expressions": "^0.4.3", + "babel-helper-is-nodes-equiv": "^0.0.1", + "babel-helper-to-multiple-sequence-expressions": "^0.5.0" + } + }, + "babel-plugin-minify-type-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", + "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, + "babel-plugin-preval": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-preval/-/babel-plugin-preval-4.0.0.tgz", + "integrity": "sha512-fZI/4cYneinlj2k/FsXw0/lTWSC5KKoepUueS1g25Gb5vx3GrRyaVwxWCshYqx11GEU4mZnbbFhee8vpquFS2w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "babel-plugin-macros": "^2.6.1", + "require-from-string": "^2.0.2" + } + }, + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", + "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", + "dev": true + }, + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", + "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", + "dev": true + }, + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", + "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", + "dev": true + }, + "babel-plugin-transform-minify-booleans": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", + "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", + "dev": true + }, + "babel-plugin-transform-property-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", + "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "babel-plugin-transform-regexp-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", + "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", + "dev": true + }, + "babel-plugin-transform-remove-console": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", + "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", + "dev": true + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", + "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", + "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", + "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", + "dev": true + }, + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", + "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", + "dev": true + }, + "babel-preset-minify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", + "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "^0.5.0", + "babel-plugin-minify-constant-folding": "^0.5.0", + "babel-plugin-minify-dead-code-elimination": "^0.5.1", + "babel-plugin-minify-flip-comparisons": "^0.4.3", + "babel-plugin-minify-guarded-expressions": "^0.4.4", + "babel-plugin-minify-infinity": "^0.4.3", + "babel-plugin-minify-mangle-names": "^0.5.0", + "babel-plugin-minify-numeric-literals": "^0.4.3", + "babel-plugin-minify-replace": "^0.5.0", + "babel-plugin-minify-simplify": "^0.5.1", + "babel-plugin-minify-type-constructors": "^0.4.3", + "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", + "babel-plugin-transform-member-expression-literals": "^6.9.4", + "babel-plugin-transform-merge-sibling-variables": "^6.9.4", + "babel-plugin-transform-minify-booleans": "^6.9.4", + "babel-plugin-transform-property-literals": "^6.9.4", + "babel-plugin-transform-regexp-constructors": "^0.4.3", + "babel-plugin-transform-remove-console": "^6.9.4", + "babel-plugin-transform-remove-debugger": "^6.9.4", + "babel-plugin-transform-remove-undefined": "^0.5.0", + "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", + "babel-plugin-transform-undefined-to-void": "^6.9.4", + "lodash": "^4.17.11" + } + }, + "babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "optional": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "optional": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.0.tgz", + "integrity": "sha512-6bfI3cl76YLAnCZ75AGu/XPOsqUhRyc0F/olGIJeCxtfxF2HvPKEcmjU9M8oAPxl4uBY1U7Nry33Q6koV3f2iw==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^1.11.0", + "browserify-zlib": "~0.2.0", + "buffer": "^5.0.2", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^2.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "mkdirp": "^0.5.0", + "module-deps": "^6.0.0", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.0.tgz", + "integrity": "sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.380", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" + } + }, + "buffer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", + "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "optional": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cached-path-relative": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", + "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001038", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", + "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "optional": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "optional": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "dev": true, + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + } + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "optional": true + }, + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "optional": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "optional": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dev": true, + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "electron-to-chromium": { + "version": "1.3.386", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.386.tgz", + "integrity": "sha512-M7JHfp32Bq6Am59AWgglh2d3nqe6y8Y94Vcb/AXUsO3DGvKUHYI5ML9+U5oNShfdOEfurrrjKSoSgFt2mz7mpw==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "optional": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "optional": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "optional": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "optional": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "requires": { + "semver-regex": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "optional": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "optional": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true, + "optional": true + } + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true, + "optional": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "optional": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "husky": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.3.tgz", + "integrity": "sha512-VxTsSTRwYveKXN4SaH1/FefRJYCtx+wx04sSVcOpD7N2zjoHxa+cEJ07Qg5NmV3HAK+IRKOyNVpi2YBIVccIfQ==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.5.1", + "cosmiconfig": "^6.0.0", + "find-versions": "^3.2.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "~0.5.3" + } + }, + "insert-module-globals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", + "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "optional": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "optional": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "optional": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "optional": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "optional": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json5": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "optional": true + }, + "labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "optional": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "optional": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "optional": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "module-deps": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.2.tgz", + "integrity": "sha512-a9y6yDv5u5I4A+IPHTnqFxcaKr4p50/zxTjcQJaX2ws9tN/W6J6YXnEKhqRyPhl494dkcxx951onSKVezmI+3w==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "optional": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "node-releases": { + "version": "1.1.52", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", + "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "optional": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "optional": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "optional": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "dev": true + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true, + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "optional": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true, + "optional": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "optional": true + }, + "preval.macro": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/preval.macro/-/preval.macro-4.0.0.tgz", + "integrity": "sha512-sJJnE71X+MPr64CVD2AurmUj4JEDqbudYbStav3L9Xjcqm4AR0ymMm6sugw1mUmfI/7gw4JWA4JXo/k6w34crw==", + "dev": true, + "requires": { + "babel-plugin-preval": "^4.0.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true, + "optional": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true, + "optional": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "optional": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true, + "optional": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "optional": true + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "optional": true, + "requires": { + "ret": "~0.1.10" + } + }, + "segmentit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/segmentit/-/segmentit-2.0.3.tgz", + "integrity": "sha512-7mn2XL3OdTUQ+AhHz7SbgyxLTaQRzTWQNVwiK+UlTO8aePGbSwvKUzTwE4238+OUY9MoR6ksAg35zl8sfTunQQ==", + "dev": true, + "requires": { + "preval.macro": "^4.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "dev": true, + "requires": { + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" + } + }, + "shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "dev": true, + "requires": { + "fast-safe-stringify": "^2.0.7" + } + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "optional": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "optional": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "optional": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "optional": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true, + "optional": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "optional": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.0.tgz", + "integrity": "sha512-cuB6RgO7BqC4FBYzmnvhob5Do3wIdIsXAgGycHJnW+981gHqoYcYz9lqjJrk8WXRddbwPuqPYRl+bag6mYv4lw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^3.0.6", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "^1.1.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "dev": true, + "requires": { + "acorn-node": "^1.2.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true, + "requires": { + "process": "~0.11.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "optional": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "dev": true + }, + "undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "dev": true, + "requires": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "optional": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "optional": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "optional": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "optional": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "optional": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true, + "optional": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "optional": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "yaml": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", + "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.6.3" + } + } + } +} diff --git a/themes/LoveIt/package.json b/themes/LoveIt/package.json new file mode 100644 index 00000000..8316c492 --- /dev/null +++ b/themes/LoveIt/package.json @@ -0,0 +1,51 @@ +{ + "name": "loveit-src", + "version": "0.2.0", + "description": "LoveIt theme source file", + "private": true, + "dependencies": {}, + "devDependencies": { + "@babel/cli": "^7.8.4", + "@babel/core": "^7.9.0", + "@babel/preset-env": "^7.9.0", + "babel-preset-minify": "^0.5.1", + "babelify": "^10.0.0", + "browserify": "^16.5.0", + "core-js": "^3.6.4", + "husky": "^4.2.3", + "minimist": "^1.2.5", + "segmentit": "^2.0.3" + }, + "scripts": { + "preinstall": "npx npm-force-resolutions", + "babel": "npx babel src/js --out-file assets/js/theme.min.js --source-maps", + "build": "npm run babel && hugo -v --source=exampleSite --themesDir ../.. --gc", + "build-lunr-segmentit": "browserify src/lib/lunr.segmentit.js -o assets/lib/lunr/lunr.segmentit.js -t babelify --presets @babel/preset-env --presets minify", + "start": "npm run babel && hugo server --source=exampleSite --themesDir ../.. -D --disableFastRender", + "start-production": "npm run babel && hugo server --source=exampleSite --themesDir ../.. -D --disableFastRender -e production", + "check": "htmlproofer exampleSite/public --check-html --allow-hash-href --empty-alt-ignore --disable-external", + "copy": "rm -rf resources && cp -rf exampleSite/resources resources" + }, + "resolutions": { + "minimist": "^1.2.5" + }, + "husky": { + "hooks": { + "pre-commit": "npm run build && npm run copy && git add resources assets/js" + } + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dillonzq/LoveIt.git" + }, + "keywords": [ + "hugo", + "theme" + ], + "author": "Dillon", + "license": "MIT", + "bugs": { + "url": "https://github.com/dillonzq/LoveIt/issues" + }, + "homepage": "https://github.com/dillonzq/LoveIt#readme" +} diff --git a/themes/LoveIt/resources/_gen/assets/scss/css/2f1ef0.scss_dd6b28f8de2423d755b68db23d9ed063.content b/themes/LoveIt/resources/_gen/assets/scss/css/2f1ef0.scss_dd6b28f8de2423d755b68db23d9ed063.content new file mode 100644 index 00000000..a34cf44d --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/css/2f1ef0.scss_dd6b28f8de2423d755b68db23d9ed063.content @@ -0,0 +1 @@ +#id-1{text-align:right}#id-1 strong{color:#00b1ff} diff --git a/themes/LoveIt/resources/_gen/assets/scss/css/2f1ef0.scss_dd6b28f8de2423d755b68db23d9ed063.json b/themes/LoveIt/resources/_gen/assets/scss/css/2f1ef0.scss_dd6b28f8de2423d755b68db23d9ed063.json new file mode 100644 index 00000000..d8dc49ac --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/css/2f1ef0.scss_dd6b28f8de2423d755b68db23d9ed063.json @@ -0,0 +1 @@ +{"Target":"css/2f1ef0.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/css/790698.scss_e6be5577c95b33ef41b4c8ab355ec8c5.content b/themes/LoveIt/resources/_gen/assets/scss/css/790698.scss_e6be5577c95b33ef41b4c8ab355ec8c5.content new file mode 100644 index 00000000..47de0983 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/css/790698.scss_e6be5577c95b33ef41b4c8ab355ec8c5.content @@ -0,0 +1 @@ +#id-1{text-align:right} diff --git a/themes/LoveIt/resources/_gen/assets/scss/css/790698.scss_e6be5577c95b33ef41b4c8ab355ec8c5.json b/themes/LoveIt/resources/_gen/assets/scss/css/790698.scss_e6be5577c95b33ef41b4c8ab355ec8c5.json new file mode 100644 index 00000000..e1288301 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/css/790698.scss_e6be5577c95b33ef41b4c8ab355ec8c5.json @@ -0,0 +1 @@ +{"Target":"css/790698.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/css/f79aa6.scss_19472c45f72842db329f68de46e6b738.content b/themes/LoveIt/resources/_gen/assets/scss/css/f79aa6.scss_19472c45f72842db329f68de46e6b738.content new file mode 100644 index 00000000..1011e762 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/css/f79aa6.scss_19472c45f72842db329f68de46e6b738.content @@ -0,0 +1 @@ +#id-1 img{height:1.25rem} diff --git a/themes/LoveIt/resources/_gen/assets/scss/css/f79aa6.scss_19472c45f72842db329f68de46e6b738.json b/themes/LoveIt/resources/_gen/assets/scss/css/f79aa6.scss_19472c45f72842db329f68de46e6b738.json new file mode 100644 index 00000000..e022fc45 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/css/f79aa6.scss_19472c45f72842db329f68de46e6b738.json @@ -0,0 +1 @@ +{"Target":"css/f79aa6.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/css/style.scss_d75fd08668b4bae707167bbce4d8ca46.content b/themes/LoveIt/resources/_gen/assets/scss/css/style.scss_d75fd08668b4bae707167bbce4d8ca46.content new file mode 100644 index 00000000..4b118551 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/css/style.scss_d75fd08668b4bae707167bbce4d8ca46.content @@ -0,0 +1,3 @@ +html{font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-display:swap;font-size:16px;line-height:1.5rem;width:100%}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background-color:rgba(53,166,247,0.25)}[theme=dark] ::selection{background-color:rgba(50,112,194,0.4)}body{background-color:#fff;color:#161209;word-wrap:break-word;overflow-wrap:break-word;scrollbar-color:auto}body[theme=dark]{color:#a9a9b3;background-color:#292a2d}input::-ms-clear{display:none}a,a::before,a::after{text-decoration:none;color:#161209}[theme=dark] a,[theme=dark] a::before,[theme=dark] a::after{color:#a9a9b3}a:active,a:hover{color:#2d96bd}[theme=dark] a:active,[theme=dark] a:hover{color:#fff}#mask{background-repeat:no-repeat;background-position:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background-color:rgba(0,0,0,0)}.blur #mask{z-index:100;background-color:rgba(0,0,0,0.25)}svg.icon{display:inline-block;width:1.25em;height:1em;text-align:center}svg.icon path{fill:currentColor}img.emoji{height:1em;width:1em;margin:0 .05em 0 .1em;vertical-align:-.1em}.details .details-summary:hover{cursor:pointer}.details i.details-icon{color:#a9a9b3;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}[theme=dark] .details i.details-icon{color:#5d5d5f}.details .details-content{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.details.open i.details-icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.details.open .details-content{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}#fixed-buttons{display:none}.fixed-button{display:none;z-index:100;position:fixed;right:1.5rem;font-size:1rem;line-height:1.3rem;padding:.6rem .6rem;color:#a9a9b3;background:#f8f8f8;-webkit-border-radius:2rem;-moz-border-radius:2rem;border-radius:2rem;-webkit-transition:color 0.4s ease;-moz-transition:color 0.4s ease;-o-transition:color 0.4s ease;transition:color 0.4s ease}.blur .fixed-button{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.fixed-button:hover,.fixed-button:active{color:#161209;cursor:pointer}.fixed-button:active,.fixed-button:focus,.fixed-button:hover{outline:none}[theme=dark] .fixed-button{color:#5d5d5f;background:#252627}[theme=dark] .fixed-button:hover,[theme=dark] .fixed-button:active{color:#a9a9b3}#back-to-top{display:block;bottom:1.5rem}#view-comments{bottom:4.5rem}.cc-window.cc-banner .cc-btn{color:#161209}.cc-window.cc-banner .cc-btn:hover,.cc-window.cc-banner .cc-btn:focus{background-color:#ccc}[theme=dark] .cc-window.cc-banner .cc-btn{color:#161209}[theme=dark] .cc-window.cc-banner .cc-btn:hover,[theme=dark] .cc-window.cc-banner .cc-btn:focus{background-color:#fff}img{-o-object-fit:contain;object-fit:contain;font-family:"object-fit: contain;"}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding:0 1rem}.page{position:relative;max-width:800px;width:60%;margin:0 auto}[header-desktop] .page{padding-top:3.5rem}[header-desktop=normal] .page{padding-top:0}.blur .page{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.toc .toc-title{font-size:1.2rem;font-weight:bold;text-transform:uppercase}.toc .toc-content{font-size:1rem}.toc .toc-content ul{text-indent:-0.85rem;padding-left:.8rem;list-style:none}.toc .toc-content ul a:first-child::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}[theme=dark] .toc .toc-content ul a:first-child::before{color:#55bde2}.toc .toc-content ul ul{padding-left:1.5rem}.toc ruby{background:#f5f5f5}.toc ruby rt{color:#a9a9b3}[theme=dark] .toc ruby{background:#272C34}[theme=dark] .toc ruby rt{color:#5d5d5f}#toc-auto{display:block;position:absolute;width:12000px;max-width:0;padding:0 .8rem;border-left:4px solid #f0f0f0;word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box;top:10rem;left:0;visibility:hidden}[header-desktop=normal] #toc-auto{top:5rem}.blur #toc-auto{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}[theme=dark] #toc-auto{border-left-color:#363636}#toc-auto .toc-title{margin:.8rem 0}#toc-auto .toc-content.always-active ul{display:block}#toc-auto .toc-content>nav>ul{margin:.625rem 0}#toc-auto .toc-content ul ul{display:none}#toc-auto .toc-content ul .has-active>ul{display:block}#toc-auto .toc-content a.active{font-weight:bold;color:#2d96bd}[theme=dark] #toc-auto .toc-content a.active{color:#55bde2}#toc-auto .toc-content a.active::before{color:#ef3982}[theme=dark] #toc-auto .toc-content a.active::before{color:#bdebfc}#toc-static{display:none;margin:.8rem 0}#toc-static[kept=true]{display:block}#toc-static .toc-title{display:flex;justify-content:space-between;line-height:2em;padding:0 .75rem;background:#e6e6e6}[theme=dark] #toc-static .toc-title{background:#1a1d23}#toc-static .toc-content{background-color:#f5f5f5}#toc-static .toc-content>nav>ul{margin:0;padding:.4rem 1rem .4rem 1.8rem}[theme=dark] #toc-static .toc-content{background-color:#272C34}#toc-static.open .toc-title{background:#ededed}[theme=dark] #toc-static.open .toc-title{background:#20252b}.single .single-title{margin:1rem 0 .5rem;font-size:1.6rem;font-weight:bold;line-height:140%}.single .single-subtitle{margin:.4rem 0;font-size:1.2rem;font-weight:normal;font-style:italic;line-height:100%}.single .post-meta{font-size:.875rem;color:#a9a9b3}.single .post-meta span{display:inline-block}[theme=dark] .single .post-meta{color:#5d5d5f}.single .post-meta a,.single .post-meta a::before,.single .post-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-meta a,[theme=dark] .single .post-meta a::before,[theme=dark] .single .post-meta a::after{color:#a9a9b3}.single .post-meta a:active,.single .post-meta a:hover{color:#ef3982}[theme=dark] .single .post-meta a:active,[theme=dark] .single .post-meta a:hover{color:#fff}.single .post-meta .author{font-size:1.05rem}.single .featured-image{margin:.5rem 0 1rem 0}.single .featured-image img{display:block;max-width:100%;height:auto;margin:0 auto;overflow:hidden}.single .featured-image img.lazyloaded{width:100%}.single .content>h2{font-size:1.5rem}.single .content>h2 code{font-size:1.25rem}.single .content>h3{font-size:1.375rem}.single .content>h3 code{font-size:1.125rem}.single .content>h4{font-size:1.25rem}.single .content>h4 code{font-size:1rem}.single .content>h5{font-size:1.125rem}.single .content>h6{font-size:1rem}.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}[theme=dark] .single .content h2,[theme=dark] .single .content h3,[theme=dark] .single .content h4,[theme=dark] .single .content h5,[theme=dark] .single .content h6{font-weight:bolder}.single .content>h2>.header-mark::before,.single .content>h3>.header-mark::before,.single .content>h4>.header-mark::before,.single .content>h5>.header-mark::before,.single .content>h6>.header-mark::before{content:"|";margin-right:.3125rem;color:#2d96bd}[theme=dark] .single .content>h2>.header-mark::before,[theme=dark] .single .content>h3>.header-mark::before,[theme=dark] .single .content>h4>.header-mark::before,[theme=dark] .single .content>h5>.header-mark::before,[theme=dark] .single .content>h6>.header-mark::before{color:#55bde2}.single .content>h2>.header-mark::before{content:"#"}.single .content p{margin:.5rem 0}.single .content b,.single .content strong{font-weight:bold}[theme=dark] .single .content b,[theme=dark] .single .content strong{color:#ddd}.single .content a,.single .content a::before,.single .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content a,[theme=dark] .single .content a::before,[theme=dark] .single .content a::after{color:#55bde2}.single .content a:active,.single .content a:hover{color:#ef3982}[theme=dark] .single .content a:active,[theme=dark] .single .content a:hover{color:#bdebfc}.single .content a{word-wrap:break-word;overflow-wrap:break-word}[theme=dark] .single .content a b,[theme=dark] .single .content a strong{color:#55bde2}.single .content [theme=dark] a:hover b,.single .content [theme=dark] a:hover strong{color:#bdebfc}.single .content ul,.single .content ol{margin:.5rem 0;padding-left:2.5rem}.single .content ul{list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}[theme=dark] .single .content ruby{background:#272C34}[theme=dark] .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}[theme=dark] .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff;border-collapse:collapse}[theme=dark] .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}[theme=dark] .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px solid #e8e8e8}[theme=dark] .single .content .table-wrapper>table th,[theme=dark] .single .content .table-wrapper>table td{border-color:#1c2025}.single .content img{max-width:100%;min-height:1em}.single .content figure{margin:.5rem;text-align:center}.single .content figure .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.5rem;margin:0 auto;font-size:.875rem;color:#969696}.single .content figure img{display:block;height:auto;margin:0 auto;overflow:hidden}.single .content .lazyloading{-o-object-fit:none;object-fit:none;font-family:"object-fit: none;"}.single .content blockquote{display:block;border-left:0.5rem solid #6bd6fd;background-color:rgba(107,214,253,0.2);padding:.25rem .75rem;margin:1rem 0}[theme=dark] .single .content blockquote{border-left-color:#59c5ec;background-color:rgba(89,197,236,0.2)}.single .content .footnotes{color:#a9a9b3}[theme=dark] .single .content .footnotes{color:#5d5d5f}.single .content .footnotes p{margin:.25rem 0}.single .content code{display:inline-block;max-width:100%;padding:0 .4rem;word-wrap:break-word;overflow-wrap:break-word;-webkit-line-break:anywhere;-ms-line-break:anywhere;line-break:anywhere;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content code{color:#E5BF78}.single .content pre{margin:0;padding:.25rem 0 .25rem .5rem;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.single .content pre code{padding:0}.single .content pre img{min-height:1em;max-height:1.2em;vertical-align:text-bottom}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}[theme=dark] .single .content code,[theme=dark] .single .content pre,[theme=dark] .single .content .highlight table,[theme=dark] .single .content .highlight tr,[theme=dark] .single .content .highlight td{background:#272C34}.single .content .highlight,.single .content .gist{font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem}.single .content .highlight .table-wrapper>table,.single .content .highlight .table-wrapper>table thead,.single .content .highlight .table-wrapper>table tr,.single .content .highlight .table-wrapper>table td,.single .content .gist .table-wrapper>table,.single .content .gist .table-wrapper>table thead,.single .content .gist .table-wrapper>table tr,.single .content .gist .table-wrapper>table td{margin:0;padding:0;border:none !important;white-space:nowrap}.single .content .highlight{line-height:1.4em;margin:.5rem 0}.single .content .highlight>.chroma{position:relative}.single .content .highlight>.chroma .code-header{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;color:#9c9c9c;background:#e1e1e1}[theme=dark] .single .content .highlight>.chroma .code-header{color:#b1b0b0;background:#1a1d23}.single .content .highlight>.chroma .code-header:hover{cursor:pointer}.single .content .highlight>.chroma .code-header .code-title{width:100%;padding:.4rem}.single .content .highlight>.chroma .code-header .code-title::after{padding-left:.2rem;content:'Code'}.single .content .highlight>.chroma .code-header.language-bash .code-title::after{content:"Bash"}.single .content .highlight>.chroma .code-header.language-c .code-title::after{content:"C"}.single .content .highlight>.chroma .code-header.language-cs .code-title::after{content:"C#"}.single .content .highlight>.chroma .code-header.language-cpp .code-title::after{content:"C++"}.single .content .highlight>.chroma .code-header.language-clojure .code-title::after{content:"Clojure"}.single .content .highlight>.chroma .code-header.language-coffeescript .code-title::after{content:"CoffeeScript"}.single .content .highlight>.chroma .code-header.language-css .code-title::after{content:"CSS"}.single .content .highlight>.chroma .code-header.language-dart .code-title::after{content:"Dart"}.single .content .highlight>.chroma .code-header.language-diff .code-title::after{content:"Diff"}.single .content .highlight>.chroma .code-header.language-erlang .code-title::after{content:"Erlang"}.single .content .highlight>.chroma .code-header.language-go .code-title::after{content:"Go"}.single .content .highlight>.chroma .code-header.language-go-html-template .code-title::after{content:"Go HTML Template"}.single .content .highlight>.chroma .code-header.language-groovy .code-title::after{content:"Groovy"}.single .content .highlight>.chroma .code-header.language-haskell .code-title::after{content:"Haskell"}.single .content .highlight>.chroma .code-header.language-html .code-title::after{content:"HTML"}.single .content .highlight>.chroma .code-header.language-http .code-title::after{content:"HTTP"}.single .content .highlight>.chroma .code-header.language-xml .code-title::after{content:"XML"}.single .content .highlight>.chroma .code-header.language-java .code-title::after{content:"Java"}.single .content .highlight>.chroma .code-header.language-js .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-javascript .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-json .code-title::after{content:"JSON"}.single .content .highlight>.chroma .code-header.language-kotlin .code-title::after{content:"Kotlin"}.single .content .highlight>.chroma .code-header.language-latex .code-title::after{content:"LaTeX"}.single .content .highlight>.chroma .code-header.language-less .code-title::after{content:"Less"}.single .content .highlight>.chroma .code-header.language-lisp .code-title::after{content:"Lisp"}.single .content .highlight>.chroma .code-header.language-lua .code-title::after{content:"Lua"}.single .content .highlight>.chroma .code-header.language-makefile .code-title::after{content:"Makefile"}.single .content .highlight>.chroma .code-header.language-markdown .code-title::after{content:"Markdown"}.single .content .highlight>.chroma .code-header.language-matlab .code-title::after{content:"Matlab"}.single .content .highlight>.chroma .code-header.language-objectivec .code-title::after{content:"Objective-C"}.single .content .highlight>.chroma .code-header.language-php .code-title::after{content:"PHP"}.single .content .highlight>.chroma .code-header.language-perl .code-title::after{content:"Perl"}.single .content .highlight>.chroma .code-header.language-python .code-title::after{content:"Python"}.single .content .highlight>.chroma .code-header.language-r .code-title::after{content:"R"}.single .content .highlight>.chroma .code-header.language-ruby .code-title::after{content:"Ruby"}.single .content .highlight>.chroma .code-header.language-rust .code-title::after{content:"Rust"}.single .content .highlight>.chroma .code-header.language-scala .code-title::after{content:"Scala"}.single .content .highlight>.chroma .code-header.language-scss .code-title::after{content:"Scss"}.single .content .highlight>.chroma .code-header.language-shell .code-title::after{content:"Shell"}.single .content .highlight>.chroma .code-header.language-sql .code-title::after{content:"SQL"}.single .content .highlight>.chroma .code-header.language-swift .code-title::after{content:"Swift"}.single .content .highlight>.chroma .code-header.language-tex .code-title::after{content:"TeX"}.single .content .highlight>.chroma .code-header.language-toml .code-title::after{content:"TOML"}.single .content .highlight>.chroma .code-header.language-ts .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-typescript .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-vue .code-title::after{content:"Vue"}.single .content .highlight>.chroma .code-header.language-yml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .code-header.language-yaml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .lntd:first-child{min-width:1.6rem;text-align:right}.single .content .highlight>.chroma .lntd:last-child{width:100%}.single .content .highlight>.chroma .lntd:last-child pre{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:intrinsic;min-width:max-content}.single .content .highlight>.chroma .ln{padding-right:.75rem}.single .content .highlight>.chroma .hl{display:block;background-color:#dcdcdc}[theme=dark] .single .content .highlight>.chroma .hl{background-color:#1c2025}.single .content .highlight>.chroma .ln,.single .content .highlight>.chroma .lnt{color:#a9a9b3}[theme=dark] .single .content .highlight>.chroma .ln,[theme=dark] .single .content .highlight>.chroma .lnt{color:#5d5d5f}.single .content .highlight>.chroma .arrow{padding:0 .2rem;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}.single .content .highlight>.chroma .ellipses{padding:.4rem}.single .content .highlight>.chroma .copy{display:none;padding:.4rem}.single .content .highlight>.chroma .copy:hover{cursor:pointer;color:#2d96bd}[theme=dark] .single .content .highlight>.chroma .copy:hover{color:#fff}.single .content .highlight>.chroma .table-wrapper{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.single .content .highlight>.chroma.open .code-header{background:#ededed}[theme=dark] .single .content .highlight>.chroma.open .code-header{background:#20252b}.single .content .highlight>.chroma.open .table-wrapper{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}.single .content .highlight>.chroma.open .arrow{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.single .content .highlight>.chroma.open .ellipses{display:none}.single .content .highlight>.chroma.open .copy{display:inline}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}[theme=dark] .single .content .highlight .p{color:#a9a9b3}[theme=dark] .single .content .highlight .k{color:#d371e3}[theme=dark] .single .content .highlight .kc{color:#d371e3}[theme=dark] .single .content .highlight .kd{color:#d371e3}[theme=dark] .single .content .highlight .kn{color:#d371e3}[theme=dark] .single .content .highlight .kp{color:#d371e3}[theme=dark] .single .content .highlight .kr{color:#d371e3}[theme=dark] .single .content .highlight .kt{color:#d371e3}[theme=dark] .single .content .highlight .n{color:#a9b2c0}[theme=dark] .single .content .highlight .na{color:#41b0f5}[theme=dark] .single .content .highlight .nb{color:#19b9c4}[theme=dark] .single .content .highlight .bp{color:#ecbf6f}[theme=dark] .single .content .highlight .nc{color:#ecbf6f}[theme=dark] .single .content .highlight .no{color:#41b0f5}[theme=dark] .single .content .highlight .nd{color:#ecbf6f}[theme=dark] .single .content .highlight .ni{color:#41b0f5}[theme=dark] .single .content .highlight .ne{color:#41b0f5}[theme=dark] .single .content .highlight .nf{color:#41b0f5}[theme=dark] .single .content .highlight .fm{color:#19b9c4}[theme=dark] .single .content .highlight .nl{color:#41b0f5}[theme=dark] .single .content .highlight .nn{color:#41b0f5}[theme=dark] .single .content .highlight .nx{color:#a9a9b3}[theme=dark] .single .content .highlight .py{color:#41b0f5}[theme=dark] .single .content .highlight .nt{color:#41b0f5}[theme=dark] .single .content .highlight .nv{color:#41b0f5}[theme=dark] .single .content .highlight .vc{color:#41b0f5}[theme=dark] .single .content .highlight .vg{color:#41b0f5}[theme=dark] .single .content .highlight .vi{color:#41b0f5}[theme=dark] .single .content .highlight .vm{color:#41b0f5}[theme=dark] .single .content .highlight .l{color:#2aa198}[theme=dark] .single .content .highlight .ld{color:#2aa198}[theme=dark] .single .content .highlight .s{color:#8cc570}[theme=dark] .single .content .highlight .sa{color:#8cc570}[theme=dark] .single .content .highlight .sb{color:#8cc570}[theme=dark] .single .content .highlight .sc{color:#8cc570}[theme=dark] .single .content .highlight .dl{color:#8cc570}[theme=dark] .single .content .highlight .sd{color:#8cc570}[theme=dark] .single .content .highlight .s2{color:#8cc570}[theme=dark] .single .content .highlight .se{color:#8cc570}[theme=dark] .single .content .highlight .sh{color:#8cc570}[theme=dark] .single .content .highlight .si{color:#8cc570}[theme=dark] .single .content .highlight .sx{color:#8cc570}[theme=dark] .single .content .highlight .sr{color:#8cc570}[theme=dark] .single .content .highlight .s1{color:#8cc570}[theme=dark] .single .content .highlight .ss{color:#8cc570}[theme=dark] .single .content .highlight .m{color:#db985c}[theme=dark] .single .content .highlight .mb{color:#db985c}[theme=dark] .single .content .highlight .mf{color:#db985c}[theme=dark] .single .content .highlight .mh{color:#db985c}[theme=dark] .single .content .highlight .mi{color:#db985c}[theme=dark] .single .content .highlight .il{color:#db985c}[theme=dark] .single .content .highlight .mo{color:#db985c}[theme=dark] .single .content .highlight .o{color:#ecbf6f}[theme=dark] .single .content .highlight .ow{color:#d371e3}[theme=dark] .single .content .highlight .c{color:#7e848f}[theme=dark] .single .content .highlight .ch{color:#7e848f}[theme=dark] .single .content .highlight .cm{color:#7e848f}[theme=dark] .single .content .highlight .c1{color:#7e848f}[theme=dark] .single .content .highlight .cs{color:#7e848f}[theme=dark] .single .content .highlight .cp{color:#7e848f}[theme=dark] .single .content .highlight .cpf{color:#7e848f}[theme=dark] .single .content .highlight .g{color:#f16372}[theme=dark] .single .content .highlight .gd{color:#f16372}[theme=dark] .single .content .highlight .ge{color:#f16372}[theme=dark] .single .content .highlight .gr{color:#f16372}[theme=dark] .single .content .highlight .gh{color:#f16372}[theme=dark] .single .content .highlight .gi{color:#f16372}[theme=dark] .single .content .highlight .go{color:#f16372}[theme=dark] .single .content .highlight .gp{color:#f16372}[theme=dark] .single .content .highlight .gs{color:#f16372}[theme=dark] .single .content .highlight .gu{color:#f16372}[theme=dark] .single .content .highlight .gt{color:#f16372}[theme=dark] .single .content .highlight .w{color:#bbb}.single .content .gist .gist-file,.single .content .gist .gist-data,.single .content .gist .gist-meta{border:none}.single .content .gist .gist-meta{padding:.4rem .8rem;background-color:#e8e8e8}.single .content .gist .gist-meta a,.single .content .gist .gist-meta a::before,.single .content .gist .gist-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content .gist .gist-meta a,[theme=dark] .single .content .gist .gist-meta a::before,[theme=dark] .single .content .gist .gist-meta a::after{color:#55bde2}.single .content .gist .gist-meta a:active,.single .content .gist .gist-meta a:hover{color:#ef3982}[theme=dark] .single .content .gist .gist-meta a:active,[theme=dark] .single .content .gist .gist-meta a:hover{color:#bdebfc}[theme=dark] .single .content .gist .gist-meta{background-color:#1c2025}[theme=dark] .single .content .gist .highlight{background:#141414}[theme=dark] .single .content .gist .blob-num,[theme=dark] .single .content .gist .blob-code-inner,[theme=dark] .single .content .gist .highlight,[theme=dark] .single .content .gist .pl-enm,[theme=dark] .single .content .gist .pl-ko,[theme=dark] .single .content .gist .pl-mo,[theme=dark] .single .content .gist .pl-mp1 .pl-sf,[theme=dark] .single .content .gist .pl-ms,[theme=dark] .single .content .gist .pl-pdc1,[theme=dark] .single .content .gist .pl-scp,[theme=dark] .single .content .gist .pl-smc,[theme=dark] .single .content .gist .pl-som,[theme=dark] .single .content .gist .pl-va,[theme=dark] .single .content .gist .pl-vpf,[theme=dark] .single .content .gist .pl-vpu,[theme=dark] .single .content .gist .pl-mdr{color:#aab1bf}[theme=dark] .single .content .gist .pl-mb,[theme=dark] .single .content .gist .pl-pdb{font-weight:700}[theme=dark] .single .content .gist .pl-c,[theme=dark] .single .content .gist .pl-c span,[theme=dark] .single .content .gist .pl-pdc{color:#5b6270;font-style:italic}[theme=dark] .single .content .gist .pl-sr .pl-cce{color:#56b5c2;font-weight:400}[theme=dark] .single .content .gist .pl-ef,[theme=dark] .single .content .gist .pl-en,[theme=dark] .single .content .gist .pl-enf,[theme=dark] .single .content .gist .pl-eoai,[theme=dark] .single .content .gist .pl-kos,[theme=dark] .single .content .gist .pl-mh .pl-pdh,[theme=dark] .single .content .gist .pl-mr{color:#61afef}[theme=dark] .single .content .gist .pl-ens,[theme=dark] .single .content .gist .pl-vi{color:#be5046}[theme=dark] .single .content .gist .pl-enti,[theme=dark] .single .content .gist .pl-mai .pl-sf,[theme=dark] .single .content .gist .pl-ml,[theme=dark] .single .content .gist .pl-sf,[theme=dark] .single .content .gist .pl-sr,[theme=dark] .single .content .gist .pl-sr .pl-sra,[theme=dark] .single .content .gist .pl-src,[theme=dark] .single .content .gist .pl-st,[theme=dark] .single .content .gist .pl-vo{color:#56b5c2}[theme=dark] .single .content .gist .pl-eoi,[theme=dark] .single .content .gist .pl-mri,[theme=dark] .single .content .gist .pl-pds,[theme=dark] .single .content .gist .pl-pse .pl-s1,[theme=dark] .single .content .gist .pl-s,[theme=dark] .single .content .gist .pl-s1{color:#97c279}[theme=dark] .single .content .gist .pl-k,[theme=dark] .single .content .gist .pl-kolp,[theme=dark] .single .content .gist .pl-mc,[theme=dark] .single .content .gist .pl-pde{color:#c578dd}[theme=dark] .single .content .gist .pl-mi,[theme=dark] .single .content .gist .pl-pdi{color:#c578dd;font-style:italic}[theme=dark] .single .content .gist .pl-mp,[theme=dark] .single .content .gist .pl-stp{color:#818896}[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi,[theme=dark] .single .content .gist .pl-mdr{font-weight:400}[theme=dark] .single .content .gist .pl-mdht,[theme=dark] .single .content .gist .pl-mi1{color:#97c279;background:#020}[theme=dark] .single .content .gist .pl-md,[theme=dark] .single .content .gist .pl-mdhf{color:#df6b75;background:#200}[theme=dark] .single .content .gist .pl-corl{color:#df6b75;text-decoration:underline}[theme=dark] .single .content .gist .pl-ib{background:#df6b75}[theme=dark] .single .content .gist .pl-ii{background:#e0c184;color:#fff}[theme=dark] .single .content .gist .pl-iu{background:#e05151}[theme=dark] .single .content .gist .pl-ms1{color:#aab1bf;background:#373b41}[theme=dark] .single .content .gist .pl-c1,[theme=dark] .single .content .gist .pl-cn,[theme=dark] .single .content .gist .pl-e,[theme=dark] .single .content .gist .pl-eoa,[theme=dark] .single .content .gist .pl-eoac,[theme=dark] .single .content .gist .pl-eoac .pl-pde,[theme=dark] .single .content .gist .pl-kou,[theme=dark] .single .content .gist .pl-mm,[theme=dark] .single .content .gist .pl-mp .pl-s3,[theme=dark] .single .content .gist .pl-mq,[theme=dark] .single .content .gist .pl-s3,[theme=dark] .single .content .gist .pl-sok,[theme=dark] .single .content .gist .pl-sv,[theme=dark] .single .content .gist .pl-mb{color:#d19965}[theme=dark] .single .content .gist .pl-enc,[theme=dark] .single .content .gist .pl-entc,[theme=dark] .single .content .gist .pl-pse .pl-s2,[theme=dark] .single .content .gist .pl-s2,[theme=dark] .single .content .gist .pl-sc,[theme=dark] .single .content .gist .pl-smp,[theme=dark] .single .content .gist .pl-sr .pl-sre,[theme=dark] .single .content .gist .pl-stj,[theme=dark] .single .content .gist .pl-v,[theme=dark] .single .content .gist .pl-pdb{color:#e4bf7a}[theme=dark] .single .content .gist .pl-ent,[theme=dark] .single .content .gist .pl-entl,[theme=dark] .single .content .gist .pl-entm,[theme=dark] .single .content .gist .pl-mh,[theme=dark] .single .content .gist .pl-pdv,[theme=dark] .single .content .gist .pl-smi,[theme=dark] .single .content .gist .pl-sol,[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi{color:#df6b75}[theme=dark] .single .content iframe.instagram-media{border:none !important}.single .content .admonition{position:relative;margin:1rem 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{font-weight:bold;margin:0 -0.75rem;padding:.25rem 1.8rem;border-bottom:1px solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition .admonition-content{padding:.5rem 0}.single .content .admonition i.icon{font-size:0.85rem;color:#448aff;position:absolute;top:.6rem;left:.4rem}.single .content .admonition i.details-icon{position:absolute;top:.6rem;right:.3rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.note.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.25)}.single .content .admonition.abstract.open .admonition-title{background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.25)}.single .content .admonition.info.open .admonition-title{background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.25)}.single .content .admonition.tip.open .admonition-title{background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.25)}.single .content .admonition.success.open .admonition-title{background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.25)}.single .content .admonition.question.open .admonition-title{background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.25)}.single .content .admonition.warning.open .admonition-title{background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.25)}.single .content .admonition.failure.open .admonition-title{background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.25)}.single .content .admonition.danger.open .admonition-title{background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.25)}.single .content .admonition.bug.open .admonition-title{background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.25)}.single .content .admonition.example.open .admonition-title{background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(159,159,159,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(159,159,159,0.1);background-color:rgba(159,159,159,0.25)}.single .content .admonition.quote.open .admonition-title{background-color:rgba(159,159,159,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content .echarts{margin:.5rem 0;text-align:center}.single .content .mapbox{margin:.5rem 0;padding:.5rem 0}.single .content meting-js{margin:.5rem 0}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #f0f0f0;border-bottom:none}[theme=dark] .single .content hr{border-top:1px dashed #363636}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #f0f0f0;border-bottom-color:#f0f0f0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #f0f0f0;box-shadow:inset 0 -1px 0 #f0f0f0;font-size:.8rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content kbd{background-color:#292a2d;border:1px solid #363636;border-bottom-color:#363636;-webkit-box-shadow:inset 0 -1px 0 #363636;box-shadow:inset 0 -1px 0 #363636;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;word-break:break-all}.single .content .version{height:1.25em;vertical-align:text-bottom}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #f0f0f0;padding:1rem 0 0.3rem}[theme=dark] .single .post-footer .post-info{border-bottom:1px solid #363636}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-mod a,.single .post-footer .post-info .post-info-line .post-info-mod a::before,.single .post-footer .post-info .post-info-line .post-info-mod a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-mod a:active,.single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-license a,.single .post-footer .post-info .post-info-line .post-info-license a::before,.single .post-footer .post-info .post-info-line .post-info-license a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-license a:active,.single .post-footer .post-info .post-info-line .post-info-license a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-md{font-size:0.8rem;width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a,.single .post-footer .post-info .post-info-line .post-info-md a::before,.single .post-footer .post-info .post-info-line .post-info-md a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-md a:active,.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-share a *{vertical-align:text-bottom}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-tags{max-width:65%}.single .post-footer .post-tags *{display:inline}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{-webkit-transform:translateX(-4px);-moz-transform:translateX(-4px);-ms-transform:translateX(-4px);-o-transform:translateX(-4px);transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{-webkit-transform:translateX(4px);-moz-transform:translateX(4px);-ms-transform:translateX(4px);-o-transform:translateX(4px);transform:translateX(4px)}.single #comments{padding:8rem 0 2rem}.lg-toolbar .lg-icon::after{color:#999}.special .single-title,.special .single-subtitle{text-align:right}.archive .single-title{text-align:right}.archive .group-title{margin-top:1.5rem;margin-bottom:1rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block;margin-top:1rem;margin-bottom:.75rem}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;margin:.25rem 0 .25rem 1.5rem}.archive .archive-item-link{min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}[theme=dark] .archive .archive-item-link{color:#a9a9b3}[theme=dark] .archive .archive-item-link:hover{color:#fff}.archive .archive-item-date{width:4em;text-align:right;color:#a9a9b3}[theme=dark] .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a,.archive .tag-cloud-tags a::before,.archive .tag-cloud-tags a::after{text-decoration:none;color:#161209}[theme=dark] .archive .tag-cloud-tags a,[theme=dark] .archive .tag-cloud-tags a::before,[theme=dark] .archive .tag-cloud-tags a::after{color:#a9a9b3}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:hover{color:#2d96bd}[theme=dark] .archive .tag-cloud-tags a:active,[theme=dark] .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;overflow-wrap:break-word;-webkit-transition:all ease-out 0.3s;-moz-transition:all ease-out 0.3s;-o-transition:all ease-out 0.3s;transition:all ease-out 0.3s}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.archive .tag-cloud-tags a sup{color:#a9a9b3}[theme=dark] .archive .tag-cloud-tags a sup{color:#5d5d5f}.home .home-profile{-webkit-transform:translateY(16vh);-moz-transform:translateY(16vh);-ms-transform:translateY(16vh);-o-transform:translateY(16vh);transform:translateY(16vh);padding:0 0 .5rem;text-align:center}.home .home-profile .home-avatar{padding:.5rem}.home .home-profile .home-avatar img{display:inline-block;width:8rem;height:auto;margin:0 auto;-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);-webkit-transition:all 0.4s ease;-moz-transition:all 0.4s ease;-o-transition:all 0.4s ease;transition:all 0.4s ease}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem)}.home .home-profile .home-title{font-size:1.25rem;font-weight:bold;margin:0;padding:.5rem}.home .home-profile .home-subtitle{font-size:1rem;font-weight:normal;margin:0;padding:.5rem}.home .home-profile .links{padding:.5rem;font-size:1.5rem}.home .home-profile .links a *{vertical-align:text-bottom}.home .home-profile .links img{height:1.5rem;padding:0 .25rem}.home .home-profile .home-disclaimer{font-size:1rem;line-height:1.5rem;font-weight:normal;margin:0;padding:.5rem;color:#a9a9b3}[theme=dark] .home .home-profile .home-disclaimer{color:#5d5d5f}.home[posts] .home-profile{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0);padding-top:2rem}.home[posts] .home-avatar img{width:6rem}.home[posts] .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #f0f0f0}[theme=dark] .home[posts] .summary{color:#a9a9b3;border-bottom:1px dashed #363636}.home[posts] .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto;-webkit-transition:transform 0.4s ease;-moz-transition:transform 0.4s ease;-o-transition:transform 0.4s ease;transition:transform 0.4s ease}.home[posts] .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;-o-object-fit:none;object-fit:none;font-family:"object-fit: none;"}.home[posts] .summary .featured-image-preview img.lazyloaded{-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.home[posts] .summary .featured-image-preview:hover{-webkit-transform:scale(1.01);-moz-transform:scale(1.01);-ms-transform:scale(1.01);-o-transform:scale(1.01);transform:scale(1.01)}.home[posts] .summary .single-title{font-size:1.25rem;line-height:140%;margin:0.4rem 0}.home[posts] .summary .content{display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .home[posts] .summary .content{color:#5d5d5f}.home[posts] .summary .content h2,.home[posts] .summary .content h3,.home[posts] .summary .content h4,.home[posts] .summary .content h5,.home[posts] .summary .content h6,.home[posts] .summary .content p{font-size:1rem;line-height:1.5;display:inline}.home[posts] .summary .content h2::after,.home[posts] .summary .content h3::after,.home[posts] .summary .content h4::after,.home[posts] .summary .content h5::after,.home[posts] .summary .content h6::after,.home[posts] .summary .content p::after{content:"\A";white-space:pre}.home[posts] .summary .content h2{font-size:1.125rem}.home[posts] .summary .content a,.home[posts] .summary .content a::before,.home[posts] .summary .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home[posts] .summary .content a,[theme=dark] .home[posts] .summary .content a::before,[theme=dark] .home[posts] .summary .content a::after{color:#a9a9b3}.home[posts] .summary .content a:active,.home[posts] .summary .content a:hover{color:#ef3982}[theme=dark] .home[posts] .summary .content a:active,[theme=dark] .home[posts] .summary .content a:hover{color:#fff}.home[posts] .summary .content b,.home[posts] .summary .content strong{color:#a9a9b3}[theme=dark] .home[posts] .summary .content b,[theme=dark] .home[posts] .summary .content strong{color:#5d5d5f}.home[posts] .summary .post-footer{margin-top:.4rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.home[posts] .summary .post-footer a,.home[posts] .summary .post-footer a::before,.home[posts] .summary .post-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home[posts] .summary .post-footer a,[theme=dark] .home[posts] .summary .post-footer a::before,[theme=dark] .home[posts] .summary .post-footer a::after{color:#55bde2}.home[posts] .summary .post-footer a:active,.home[posts] .summary .post-footer a:hover{color:#ef3982}[theme=dark] .home[posts] .summary .post-footer a:active,[theme=dark] .home[posts] .summary .post-footer a:hover{color:#bdebfc}.home[posts] .summary .post-footer .post-tags{padding:0}.home[posts] .summary .post-footer .post-tags a,.home[posts] .summary .post-footer .post-tags a::before,.home[posts] .summary .post-footer .post-tags a::after{text-decoration:none;color:#161209}[theme=dark] .home[posts] .summary .post-footer .post-tags a,[theme=dark] .home[posts] .summary .post-footer .post-tags a::before,[theme=dark] .home[posts] .summary .post-footer .post-tags a::after{color:#a9a9b3}.home[posts] .summary .post-footer .post-tags a:active,.home[posts] .summary .post-footer .post-tags a:hover{color:#2d96bd}[theme=dark] .home[posts] .summary .post-footer .post-tags a:active,[theme=dark] .home[posts] .summary .post-footer .post-tags a:hover{color:#fff}#content-404{font-size:1.8rem;line-height:3rem;-webkit-transform:translateY(30vh);-moz-transform:translateY(30vh);-ms-transform:translateY(30vh);-o-transform:translateY(30vh);transform:translateY(30vh);text-align:center}header{width:100%;z-index:150;background-color:#f8f8f8;-webkit-transition:box-shadow 0.3s ease;-moz-transition:box-shadow 0.3s ease;-o-transition:box-shadow 0.3s ease;transition:box-shadow 0.3s ease}[theme=dark] header{background-color:#252627}header .logo{min-height:1.5em;height:1.5em;vertical-align:text-bottom}header .logo,header .header-title-pre{padding-right:.25rem}header .header-title-post{padding-left:.25rem}header:hover{-webkit-box-shadow:0 0 1.5rem 0 rgba(0,0,0,0.1);box-shadow:0 0 1.5rem 0 rgba(0,0,0,0.1)}.header-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%}.header-title{font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;margin-right:.5rem;min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-flex:10;flex:10}.menu .menu-item{position:relative}.language-select{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%}.language-select:hover{cursor:pointer}.search{position:relative}.search input{color:transparent;box-sizing:border-box;height:2.5rem;width:2.5rem;-webkit-border-radius:.5rem;-moz-border-radius:.5rem;border-radius:.5rem;border:none;outline:none;background-color:#f8f8f8;vertical-align:baseline !important;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}[theme=dark] .search input{background-color:#252627}.search input::-webkit-input-placeholder{color:rgba(0,0,0,0)}.search input:-moz-placeholder{color:rgba(0,0,0,0)}.search input::-moz-placeholder{color:rgba(0,0,0,0)}.search input:-ms-input-placeholder{color:rgba(0,0,0,0)}.search input::placeholder{color:rgba(0,0,0,0)}.search .search-button{margin:0;position:absolute;left:auto;right:1rem}.search .search-toggle{left:.5rem;right:auto}.search .search-loading{display:none}.search .search-clear{display:none}.open .search input,.search.mobile input{color:#161209;background-color:#e9e9e9;padding:0 2rem 0 2rem}[theme=dark] .open .search input,[theme=dark] .search.mobile input{color:#a9a9b3;background-color:#363636}[theme=dark] .open .search input::-webkit-input-placeholder,[theme=dark] .search.mobile input::-webkit-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-moz-placeholder,[theme=dark] .search.mobile input:-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input::-moz-placeholder,[theme=dark] .search.mobile input::-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-ms-input-placeholder,[theme=dark] .search.mobile input:-ms-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input::placeholder,[theme=dark] .search.mobile input::placeholder{color:#5d5d5f}.open .search input::-webkit-input-placeholder,.search.mobile input::-webkit-input-placeholder{color:#a9a9b3}.open .search input:-moz-placeholder,.search.mobile input:-moz-placeholder{color:#a9a9b3}.open .search input::-moz-placeholder,.search.mobile input::-moz-placeholder{color:#a9a9b3}.open .search input:-ms-input-placeholder,.search.mobile input:-ms-input-placeholder{color:#a9a9b3}.open .search input::placeholder,.search.mobile input::placeholder{color:#a9a9b3}.open .search .search-button,.search.mobile .search-button{color:#a9a9b3}[theme=dark] .open .search .search-button,[theme=dark] .search.mobile .search-button{color:#5d5d5f}.open .search .search-clear:hover,.search.mobile .search-clear:hover{color:#ff6b6b}.open .search .search-toggle:hover,.search.mobile .search-toggle:hover{cursor:default}.theme-switch i{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}#header-desktop{display:block;position:fixed;height:3.5rem;line-height:3.5rem}[header-desktop=normal] #header-desktop{position:static}#header-desktop .header-wrapper{padding:0 2rem 0 10vh}#header-desktop .header-wrapper .header-title{font-size:1.5rem}#header-desktop .header-wrapper .menu{overflow:hidden;white-space:nowrap}#header-desktop .header-wrapper .menu .menu-inner{float:right}#header-desktop .header-wrapper .menu .menu-item{margin:0 .5rem}#header-desktop .header-wrapper .menu .menu-item.delimiter{border-left:1.5px solid #161209}[theme=dark] #header-desktop .header-wrapper .menu .menu-item.delimiter{border-left-color:#363636}#header-desktop .header-wrapper .menu .menu-item.language{margin-right:0}#header-desktop .header-wrapper .menu .menu-item.search{margin:0 -.5rem 0 0}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}[theme=dark] #header-desktop .header-wrapper .menu a.active{color:#fff}#header-desktop.open .header-wrapper .menu .menu-item.search{margin:0 .25rem 0 .5rem}#header-desktop.open .header-wrapper .menu .menu-item.search input{width:24rem}#header-mobile{display:none;position:fixed;height:3.5rem;line-height:3.5rem}[header-mobile=normal] #header-mobile{position:static}#header-mobile .header-container{padding:0;margin:0}#header-mobile .header-container .header-wrapper{padding:0 1rem;font-size:1.125rem;-webkit-transition:margin-top 0.3s ease;-moz-transition:margin-top 0.3s ease;-o-transition:margin-top 0.3s ease;transition:margin-top 0.3s ease}#header-mobile .header-container .header-wrapper .header-title{font-size:1.5rem;max-width:80%}#header-mobile .header-container .header-wrapper .menu-toggle{line-height:4rem;cursor:pointer;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}#header-mobile .header-container .header-wrapper .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}[theme=dark] #header-mobile .header-container .header-wrapper .menu-toggle span{background:#a9a9b3}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(1){-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-o-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(3){-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-o-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-container .menu{text-align:center;background:#f8f8f8;border-top:2px solid #f0f0f0;display:none;padding-top:.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}#header-mobile .header-container .menu .search-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;padding:.5rem 1rem;line-height:2.5rem}#header-mobile .header-container .menu .search{flex-grow:10}#header-mobile .header-container .menu .search .algolia-autocomplete,#header-mobile .header-container .menu .search input{width:100%}#header-mobile .header-container .menu .search-button{top:0}#header-mobile .header-container .menu .search-cancel{display:none;margin-left:.75rem}#header-mobile .header-container .menu .menu-item{display:block;line-height:2.5rem}#header-mobile .header-container .menu.active{display:block}[theme=dark] #header-mobile .header-container .menu{background:#252627;border-top-color:#363636}#header-mobile.open .header-wrapper{margin-top:-3.5rem}#header-mobile.open .menu{padding-top:0;border-top:none}#header-mobile.open .menu .menu-item{display:none}#header-mobile.open .menu .search-cancel{display:inline}.search-dropdown{position:fixed;z-index:200;top:3.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}.search-dropdown.desktop{right:2rem;width:30rem}.search-dropdown.mobile{right:0;width:100%}.search-dropdown .dropdown-menu{right:0 !important;background-color:#fff}[theme=dark] .search-dropdown .dropdown-menu{background-color:#292a2d}.search-dropdown .dropdown-menu .suggestions{overflow-y:auto;max-height:calc(100vh - 3.5rem)}.search-dropdown .dropdown-menu .suggestions .suggestion{padding:.75rem 1rem}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:bold;max-width:75%}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{font-size:.875rem;float:right;text-align:right;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{line-height:1.25rem;display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion em{font-style:normal;background-color:rgba(53,166,247,0.25)}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion em{background-color:rgba(50,112,194,0.4)}.search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#e8e8e8}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#323843}.search-dropdown .dropdown-menu .suggestions .suggestion:hover{cursor:pointer}.search-dropdown .dropdown-menu .search-empty{padding:1rem;text-align:center}.search-dropdown .dropdown-menu .search-empty .search-query{font-weight:bold}[theme=dark] .search-dropdown .dropdown-menu .search-empty .search-query{color:#ddd}.search-dropdown .dropdown-menu .search-footer{padding:.5rem 1rem;float:right;font-size:.8rem;color:#a9a9b3}.search-dropdown .dropdown-menu .search-footer [theme=dark]{color:#5d5d5f}.search-dropdown .dropdown-menu .search-footer a,.search-dropdown .dropdown-menu .search-footer a::before,.search-dropdown .dropdown-menu .search-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .search-dropdown .dropdown-menu .search-footer a,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::before,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::after{color:#55bde2}.search-dropdown .dropdown-menu .search-footer a:active,.search-dropdown .dropdown-menu .search-footer a:hover{color:#ef3982}[theme=dark] .search-dropdown .dropdown-menu .search-footer a:active,[theme=dark] .search-dropdown .dropdown-menu .search-footer a:hover{color:#bdebfc}.search-dropdown .dropdown-menu .search-footer a{font-size:1rem}footer{height:2rem;width:100%;text-align:center;line-height:1.25rem;padding:1rem 0}footer .footer-container{font-size:.875rem}footer .footer-container .footer-line{width:100%}footer .footer-container .footer-line .icp-br{display:none}.blur footer{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}[theme=dark] .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s;bottom:0px}[theme=dark] .pagination li:before,[theme=dark] .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}[theme=dark] .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1440px){.page{width:56%}}@media only screen and (max-width: 1200px){.page{width:52%}#header-desktop .header-wrapper{padding-right:1rem}.search-dropdown.desktop{right:1rem}}@media only screen and (max-width: 960px){#toc-auto{display:none}#toc-static{display:block}.page{width:80%}#header-desktop .header-wrapper{padding-left:1rem}}@media only screen and (max-width: 680px){#header-desktop{display:none}#header-mobile{display:block}body.blur{overflow:hidden}.page{width:100%}[header-mobile] .page{padding-top:3.5rem}[header-mobile=normal] .page{padding-top:0}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}} + +/*# sourceMappingURL=style.min.css.map */ \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/css/style.scss_d75fd08668b4bae707167bbce4d8ca46.json b/themes/LoveIt/resources/_gen/assets/scss/css/style.scss_d75fd08668b4bae707167bbce4d8ca46.json new file mode 100644 index 00000000..0095485d --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/css/style.scss_d75fd08668b4bae707167bbce4d8ca46.json @@ -0,0 +1 @@ +{"Target":"css/style.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/lib/aplayer/dark.scss_be0d6bec1a51ff037db8cc74d6ec1271.content b/themes/LoveIt/resources/_gen/assets/scss/lib/aplayer/dark.scss_be0d6bec1a51ff037db8cc74d6ec1271.content new file mode 100644 index 00000000..da387ce5 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/lib/aplayer/dark.scss_be0d6bec1a51ff037db8cc74d6ec1271.content @@ -0,0 +1,3 @@ +[theme=dark] .aplayer{background:#212121}[theme=dark] .aplayer.aplayer-withlist .aplayer-info{border-bottom-color:#5c5c5c}[theme=dark] .aplayer.aplayer-fixed .aplayer-list{border-color:#5c5c5c}[theme=dark] .aplayer .aplayer-body{background-color:#212121}[theme=dark] .aplayer .aplayer-info{border-top-color:#212121}[theme=dark] .aplayer .aplayer-info .aplayer-music .aplayer-title{color:#fff}[theme=dark] .aplayer .aplayer-info .aplayer-music .aplayer-author{color:#fff}[theme=dark] .aplayer .aplayer-info .aplayer-controller .aplayer-time{color:#eee}[theme=dark] .aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon path{fill:#eee}[theme=dark] .aplayer .aplayer-list{background-color:#212121}[theme=dark] .aplayer .aplayer-list::-webkit-scrollbar-thumb{background-color:#999}[theme=dark] .aplayer .aplayer-list::-webkit-scrollbar-thumb:hover{background-color:#bbb}[theme=dark] .aplayer .aplayer-list li{color:#fff;border-top-color:#666}[theme=dark] .aplayer .aplayer-list li:hover{background:#4e4e4e}[theme=dark] .aplayer .aplayer-list li.aplayer-list-light{background:#6c6c6c}[theme=dark] .aplayer .aplayer-list li .aplayer-list-index{color:#ddd}[theme=dark] .aplayer .aplayer-list li .aplayer-list-author{color:#ddd}[theme=dark] .aplayer .aplayer-lrc{text-shadow:-1px -1px 0 #666}[theme=dark] .aplayer .aplayer-lrc:before{background:-moz-linear-gradient(top, #212121 0%, rgba(33,33,33,0) 100%);background:-webkit-linear-gradient(top, #212121 0%, rgba(33,33,33,0) 100%);background:linear-gradient(to bottom, #212121 0%, rgba(33,33,33,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#212121', endColorstr='#00212121',GradientType=0 )}[theme=dark] .aplayer .aplayer-lrc:after{background:-moz-linear-gradient(top, rgba(33,33,33,0) 0%, rgba(33,33,33,0.8) 100%);background:-webkit-linear-gradient(top, rgba(33,33,33,0) 0%, rgba(33,33,33,0.8) 100%);background:linear-gradient(to bottom, rgba(33,33,33,0) 0%, rgba(33,33,33,0.8) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00212121', endColorstr='#cc212121',GradientType=0 )}[theme=dark] .aplayer .aplayer-lrc p{color:#fff}[theme=dark] .aplayer .aplayer-miniswitcher{background:#484848}[theme=dark] .aplayer .aplayer-miniswitcher .aplayer-icon path{fill:#eee} + +/*# sourceMappingURL=dark.min.css.map */ \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/lib/aplayer/dark.scss_be0d6bec1a51ff037db8cc74d6ec1271.json b/themes/LoveIt/resources/_gen/assets/scss/lib/aplayer/dark.scss_be0d6bec1a51ff037db8cc74d6ec1271.json new file mode 100644 index 00000000..d2c9d760 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/lib/aplayer/dark.scss_be0d6bec1a51ff037db8cc74d6ec1271.json @@ -0,0 +1 @@ +{"Target":"lib/aplayer/dark.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/lib/mermaid/mermaid.scss_43d09a0fb297c4cc88d4122515a2e889.content b/themes/LoveIt/resources/_gen/assets/scss/lib/mermaid/mermaid.scss_43d09a0fb297c4cc88d4122515a2e889.content new file mode 100644 index 00000000..1123e40d --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/lib/mermaid/mermaid.scss_43d09a0fb297c4cc88d4122515a2e889.content @@ -0,0 +1,3 @@ +.page .mermaid{width:100%;margin:3% auto;text-align:center}.page .mermaid>svg{max-width:100%}.page .mermaid .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.page .mermaid .label text{fill:#333}.page .mermaid .node rect,.page .mermaid .node circle,.page .mermaid .node ellipse,.page .mermaid .node polygon,.page .mermaid .node path{fill:#eee;stroke:#999;stroke-width:1px}.page .mermaid .node .label{text-align:center}.page .mermaid .node.clickable{cursor:pointer}.page .mermaid .arrowheadPath{fill:#333}.page .mermaid .edgePath .path{stroke:#666;stroke-width:1.5px}.page .mermaid .edgeLabel{background-color:#fff;text-align:center}.page .mermaid .edgeLabel rect{opacity:0.5}.page .mermaid .cluster rect{fill:#eaf2fb;stroke:#26a;stroke-width:1px}.page .mermaid .cluster text{fill:#333}.page .mermaid div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#eaf2fb;border:1px solid #26a;border-radius:2px;pointer-events:none;z-index:100}.page .mermaid .actor{stroke:#999;fill:#eee}.page .mermaid text.actor{fill:#333;stroke:none}.page .mermaid .actor-line{stroke:#666}.page .mermaid .messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.page .mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.page .mermaid #arrowhead{fill:#333}.page .mermaid .sequenceNumber{fill:#fff}.page .mermaid #sequencenumber{fill:#333}.page .mermaid #crosshead path{fill:#333 !important;stroke:#333 !important}.page .mermaid .messageText{fill:#333;stroke:none}.page .mermaid .labelBox{stroke:#999;fill:#eee}.page .mermaid .labelText{fill:#333;stroke:none}.page .mermaid .loopText{fill:#333;stroke:none}.page .mermaid .loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#999}.page .mermaid .note{stroke:#770;fill:#ffa}.page .mermaid .noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.page .mermaid .activation0{fill:#f4f4f4;stroke:#666}.page .mermaid .activation1{fill:#f4f4f4;stroke:#666}.page .mermaid .activation2{fill:#f4f4f4;stroke:#666}.page .mermaid .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid .section{stroke:none;opacity:0.2}.page .mermaid .section0{fill:#80b3e6}.page .mermaid .section2{fill:#80b3e6}.page .mermaid .section1,.page .mermaid .section3{fill:#fff;opacity:0.2}.page .mermaid .sectionTitle0{fill:#333}.page .mermaid .sectionTitle1{fill:#333}.page .mermaid .sectionTitle2{fill:#333}.page .mermaid .sectionTitle3{fill:#333}.page .mermaid .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid .grid .tick{stroke:#e6e6e6;opacity:0.8;shape-rendering:crispEdges}.page .mermaid .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333}.page .mermaid .grid path{stroke-width:0}.page .mermaid .today{fill:none;stroke:#d42;stroke-width:2px}.page .mermaid .task{stroke-width:2}.page .mermaid .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid .taskText:not([font-size]){font-size:11px}.page .mermaid .taskTextOutsideRight{fill:#333;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid .taskTextOutsideLeft{fill:#333;text-anchor:end;font-size:11px}.page .mermaid .task.clickable{cursor:pointer}.page .mermaid .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.page .mermaid .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.page .mermaid .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.page .mermaid .taskText0,.page .mermaid .taskText1,.page .mermaid .taskText2,.page .mermaid .taskText3{fill:#fff}.page .mermaid .task0,.page .mermaid .task1,.page .mermaid .task2,.page .mermaid .task3{fill:#26a;stroke:#1a4d80}.page .mermaid .taskTextOutside0,.page .mermaid .taskTextOutside2{fill:#333 !important}.page .mermaid .taskTextOutside1,.page .mermaid .taskTextOutside3{fill:#333 !important}.page .mermaid .active0,.page .mermaid .active1,.page .mermaid .active2,.page .mermaid .active3{fill:#eee;stroke:#1a4d80}.page .mermaid .activeText0,.page .mermaid .activeText1,.page .mermaid .activeText2,.page .mermaid .activeText3{fill:#333}.page .mermaid .done0,.page .mermaid .done1,.page .mermaid .done2,.page .mermaid .done3{stroke:#666;fill:#bbb;stroke-width:2}.page .mermaid .doneText0,.page .mermaid .doneText1,.page .mermaid .doneText2,.page .mermaid .doneText3{fill:#333}.page .mermaid .crit0,.page .mermaid .crit1,.page .mermaid .crit2,.page .mermaid .crit3{stroke:#b1361b;fill:#d42;stroke-width:2}.page .mermaid .activeCrit0,.page .mermaid .activeCrit1,.page .mermaid .activeCrit2,.page .mermaid .activeCrit3{stroke:#b1361b;fill:#eee;stroke-width:2}.page .mermaid .doneCrit0,.page .mermaid .doneCrit1,.page .mermaid .doneCrit2,.page .mermaid .doneCrit3{stroke:#b1361b;fill:#bbb;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.page .mermaid .milestone{transform:rotate(45deg) scale(0.8, 0.8)}.page .mermaid .milestoneText{font-style:italic}.page .mermaid .doneCritText0,.page .mermaid .doneCritText1,.page .mermaid .doneCritText2,.page .mermaid .doneCritText3{fill:#333}.page .mermaid .activeCritText0,.page .mermaid .activeCritText1,.page .mermaid .activeCritText2,.page .mermaid .activeCritText3{fill:#333}.page .mermaid .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid g.classGroup text{fill:#999;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}.page .mermaid g.classGroup text .title{font-weight:bolder}.page .mermaid g.clickable{cursor:pointer}.page .mermaid g.classGroup rect{fill:#eee;stroke:#999}.page .mermaid g.classGroup line{stroke:#999;stroke-width:1}.page .mermaid .classLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:0.5}.page .mermaid .classLabel .label{fill:#999;font-size:10px}.page .mermaid .relation{stroke:#999;stroke-width:1;fill:none}.page .mermaid .dashed-line{stroke-dasharray:3}.page .mermaid #compositionStart{fill:#999;stroke:#999;stroke-width:1}.page .mermaid #compositionEnd{fill:#999;stroke:#999;stroke-width:1}.page .mermaid #aggregationStart{fill:#eee;stroke:#999;stroke-width:1}.page .mermaid #aggregationEnd{fill:#eee;stroke:#999;stroke-width:1}.page .mermaid #dependencyStart{fill:#999;stroke:#999;stroke-width:1}.page .mermaid #dependencyEnd{fill:#999;stroke:#999;stroke-width:1}.page .mermaid #extensionStart{fill:#999;stroke:#999;stroke-width:1}.page .mermaid #extensionEnd{fill:#999;stroke:#999;stroke-width:1}.page .mermaid .commit-id,.page .mermaid .commit-msg,.page .mermaid .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid .pieTitleText{text-anchor:middle;font-size:25px;fill:#333;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid g.stateGroup text{fill:#999;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid g.stateGroup text{fill:#999;stroke:none;font-size:10px}.page .mermaid g.stateGroup .state-title{font-weight:bolder;fill:#000}.page .mermaid g.stateGroup rect{fill:#eee;stroke:#999}.page .mermaid g.stateGroup line{stroke:#999;stroke-width:1}.page .mermaid .transition{stroke:#999;stroke-width:1;fill:none}.page .mermaid .stateGroup .composit{fill:white;border-bottom:1px}.page .mermaid .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.page .mermaid .state-note{stroke:#770;fill:#ffa}.page .mermaid .state-note text{fill:black;stroke:none;font-size:10px}.page .mermaid .stateLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:0.5}.page .mermaid .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.page .mermaid .node circle.state-start{fill:black;stroke:black}.page .mermaid .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}.page .mermaid #statediagram-barbEnd{fill:#999}.page .mermaid .statediagram-cluster rect{fill:#eee;stroke:#999;stroke-width:1px}.page .mermaid .statediagram-cluster rect.outer{rx:5px;ry:5px}.page .mermaid .statediagram-state .divider{stroke:#999}.page .mermaid .statediagram-state .title-state{rx:5px;ry:5px}.page .mermaid .statediagram-cluster.statediagram-cluster .inner{fill:white}.page .mermaid .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}.page .mermaid .statediagram-cluster .inner{rx:0;ry:0}.page .mermaid .statediagram-state rect.basic{rx:5px;ry:5px}.page .mermaid .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}.page .mermaid .note-edge{stroke-dasharray:5}.page .mermaid .statediagram-note rect{fill:#ffa;stroke:#770;stroke-width:1px;rx:0;ry:0}.page .mermaid :root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}[theme=dark] .page .mermaid .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}[theme=dark] .page .mermaid .label text{fill:#333}[theme=dark] .page .mermaid .node rect,[theme=dark] .page .mermaid .node circle,[theme=dark] .page .mermaid .node ellipse,[theme=dark] .page .mermaid .node polygon,[theme=dark] .page .mermaid .node path{fill:#BDD5EA;stroke:purple;stroke-width:1px}[theme=dark] .page .mermaid .node .label{text-align:center}[theme=dark] .page .mermaid .node.clickable{cursor:pointer}[theme=dark] .page .mermaid .arrowheadPath{fill:#d3d3d3}[theme=dark] .page .mermaid .edgePath .path{stroke:#d3d3d3;stroke-width:1.5px}[theme=dark] .page .mermaid .edgeLabel{background-color:#e8e8e8;text-align:center}[theme=dark] .page .mermaid .edgeLabel rect{opacity:0.5}[theme=dark] .page .mermaid .cluster rect{fill:#6D6D65;stroke:rgba(255,255,255,0.25);stroke-width:1px}[theme=dark] .page .mermaid .cluster text{fill:#F9FFFE}[theme=dark] .page .mermaid div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#6D6D65;border:1px solid rgba(255,255,255,0.25);border-radius:2px;pointer-events:none;z-index:100}[theme=dark] .page .mermaid .actor{stroke:#81B1DB;fill:#BDD5EA}[theme=dark] .page .mermaid text.actor{fill:#000;stroke:none}[theme=dark] .page .mermaid .actor-line{stroke:#d3d3d3}[theme=dark] .page .mermaid .messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#d3d3d3}[theme=dark] .page .mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#d3d3d3}[theme=dark] .page .mermaid #arrowhead{fill:#d3d3d3}[theme=dark] .page .mermaid .sequenceNumber{fill:#fff}[theme=dark] .page .mermaid #sequencenumber{fill:#d3d3d3}[theme=dark] .page .mermaid #crosshead path{fill:#d3d3d3 !important;stroke:#d3d3d3 !important}[theme=dark] .page .mermaid .messageText{fill:#d3d3d3;stroke:none}[theme=dark] .page .mermaid .labelBox{stroke:#81B1DB;fill:#BDD5EA}[theme=dark] .page .mermaid .labelText{fill:#323D47;stroke:none}[theme=dark] .page .mermaid .loopText{fill:#d3d3d3;stroke:none}[theme=dark] .page .mermaid .loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#81B1DB}[theme=dark] .page .mermaid .note{stroke:rgba(255,255,255,0.25);fill:#fff5ad}[theme=dark] .page .mermaid .noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}[theme=dark] .page .mermaid .activation0{fill:#f4f4f4;stroke:#666}[theme=dark] .page .mermaid .activation1{fill:#f4f4f4;stroke:#666}[theme=dark] .page .mermaid .activation2{fill:#f4f4f4;stroke:#666}[theme=dark] .page .mermaid .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid .section{stroke:none;opacity:0.2}[theme=dark] .page .mermaid .section0{fill:rgba(255,255,255,0.3)}[theme=dark] .page .mermaid .section2{fill:#EAE8B9}[theme=dark] .page .mermaid .section1,[theme=dark] .page .mermaid .section3{fill:#fff;opacity:0.2}[theme=dark] .page .mermaid .sectionTitle0{fill:#F9FFFE}[theme=dark] .page .mermaid .sectionTitle1{fill:#F9FFFE}[theme=dark] .page .mermaid .sectionTitle2{fill:#F9FFFE}[theme=dark] .page .mermaid .sectionTitle3{fill:#F9FFFE}[theme=dark] .page .mermaid .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}[theme=dark] .page .mermaid .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#d3d3d3}[theme=dark] .page .mermaid .grid path{stroke-width:0}[theme=dark] .page .mermaid .today{fill:none;stroke:#DB5757;stroke-width:2px}[theme=dark] .page .mermaid .task{stroke-width:2}[theme=dark] .page .mermaid .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid .taskText:not([font-size]){font-size:11px}[theme=dark] .page .mermaid .taskTextOutsideRight{fill:#323D47;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid .taskTextOutsideLeft{fill:#323D47;text-anchor:end;font-size:11px}[theme=dark] .page .mermaid .task.clickable{cursor:pointer}[theme=dark] .page .mermaid .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}[theme=dark] .page .mermaid .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}[theme=dark] .page .mermaid .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}[theme=dark] .page .mermaid .taskText0,[theme=dark] .page .mermaid .taskText1,[theme=dark] .page .mermaid .taskText2,[theme=dark] .page .mermaid .taskText3{fill:#323D47}[theme=dark] .page .mermaid .task0,[theme=dark] .page .mermaid .task1,[theme=dark] .page .mermaid .task2,[theme=dark] .page .mermaid .task3{fill:#BDD5EA;stroke:rgba(255,255,255,0.5)}[theme=dark] .page .mermaid .taskTextOutside0,[theme=dark] .page .mermaid .taskTextOutside2{fill:#d3d3d3 !important}[theme=dark] .page .mermaid .taskTextOutside1,[theme=dark] .page .mermaid .taskTextOutside3{fill:#d3d3d3 !important}[theme=dark] .page .mermaid .active0,[theme=dark] .page .mermaid .active1,[theme=dark] .page .mermaid .active2,[theme=dark] .page .mermaid .active3{fill:#81B1DB;stroke:rgba(255,255,255,0.5)}[theme=dark] .page .mermaid .activeText0,[theme=dark] .page .mermaid .activeText1,[theme=dark] .page .mermaid .activeText2,[theme=dark] .page .mermaid .activeText3{fill:#323D47}[theme=dark] .page .mermaid .done0,[theme=dark] .page .mermaid .done1,[theme=dark] .page .mermaid .done2,[theme=dark] .page .mermaid .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}[theme=dark] .page .mermaid .doneText0,[theme=dark] .page .mermaid .doneText1,[theme=dark] .page .mermaid .doneText2,[theme=dark] .page .mermaid .doneText3{fill:#323D47}[theme=dark] .page .mermaid .crit0,[theme=dark] .page .mermaid .crit1,[theme=dark] .page .mermaid .crit2,[theme=dark] .page .mermaid .crit3{stroke:#E83737;fill:#E83737;stroke-width:2}[theme=dark] .page .mermaid .activeCrit0,[theme=dark] .page .mermaid .activeCrit1,[theme=dark] .page .mermaid .activeCrit2,[theme=dark] .page .mermaid .activeCrit3{stroke:#E83737;fill:#81B1DB;stroke-width:2}[theme=dark] .page .mermaid .doneCrit0,[theme=dark] .page .mermaid .doneCrit1,[theme=dark] .page .mermaid .doneCrit2,[theme=dark] .page .mermaid .doneCrit3{stroke:#E83737;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}[theme=dark] .page .mermaid .milestone{transform:rotate(45deg) scale(0.8, 0.8)}[theme=dark] .page .mermaid .milestoneText{font-style:italic}[theme=dark] .page .mermaid .doneCritText0,[theme=dark] .page .mermaid .doneCritText1,[theme=dark] .page .mermaid .doneCritText2,[theme=dark] .page .mermaid .doneCritText3{fill:#323D47}[theme=dark] .page .mermaid .activeCritText0,[theme=dark] .page .mermaid .activeCritText1,[theme=dark] .page .mermaid .activeCritText2,[theme=dark] .page .mermaid .activeCritText3{fill:#323D47}[theme=dark] .page .mermaid .titleText{text-anchor:middle;font-size:18px;fill:#d3d3d3;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid g.classGroup text{fill:purple;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}[theme=dark] .page .mermaid g.classGroup text .title{font-weight:bolder}[theme=dark] .page .mermaid g.clickable{cursor:pointer}[theme=dark] .page .mermaid g.classGroup rect{fill:#BDD5EA;stroke:purple}[theme=dark] .page .mermaid g.classGroup line{stroke:purple;stroke-width:1}[theme=dark] .page .mermaid .classLabel .box{stroke:none;stroke-width:0;fill:#BDD5EA;opacity:0.5}[theme=dark] .page .mermaid .classLabel .label{fill:purple;font-size:10px}[theme=dark] .page .mermaid .relation{stroke:purple;stroke-width:1;fill:none}[theme=dark] .page .mermaid .dashed-line{stroke-dasharray:3}[theme=dark] .page .mermaid #compositionStart{fill:purple;stroke:purple;stroke-width:1}[theme=dark] .page .mermaid #compositionEnd{fill:purple;stroke:purple;stroke-width:1}[theme=dark] .page .mermaid #aggregationStart{fill:#BDD5EA;stroke:purple;stroke-width:1}[theme=dark] .page .mermaid #aggregationEnd{fill:#BDD5EA;stroke:purple;stroke-width:1}[theme=dark] .page .mermaid #dependencyStart{fill:purple;stroke:purple;stroke-width:1}[theme=dark] .page .mermaid #dependencyEnd{fill:purple;stroke:purple;stroke-width:1}[theme=dark] .page .mermaid #extensionStart{fill:purple;stroke:purple;stroke-width:1}[theme=dark] .page .mermaid #extensionEnd{fill:purple;stroke:purple;stroke-width:1}[theme=dark] .page .mermaid .commit-id,[theme=dark] .page .mermaid .commit-msg,[theme=dark] .page .mermaid .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid .pieTitleText{text-anchor:middle;font-size:25px;fill:#323D47;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid g.stateGroup text{fill:purple;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid g.stateGroup text{fill:purple;stroke:none;font-size:10px}[theme=dark] .page .mermaid g.stateGroup .state-title{font-weight:bolder;fill:#000}[theme=dark] .page .mermaid g.stateGroup rect{fill:#BDD5EA;stroke:purple}[theme=dark] .page .mermaid g.stateGroup line{stroke:purple;stroke-width:1}[theme=dark] .page .mermaid .transition{stroke:purple;stroke-width:1;fill:none}[theme=dark] .page .mermaid .stateGroup .composit{fill:white;border-bottom:1px}[theme=dark] .page .mermaid .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}[theme=dark] .page .mermaid .state-note{stroke:rgba(255,255,255,0.25);fill:#fff5ad}[theme=dark] .page .mermaid .state-note text{fill:black;stroke:none;font-size:10px}[theme=dark] .page .mermaid .stateLabel .box{stroke:none;stroke-width:0;fill:#BDD5EA;opacity:0.5}[theme=dark] .page .mermaid .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}[theme=dark] .page .mermaid .node circle.state-start{fill:black;stroke:black}[theme=dark] .page .mermaid .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}[theme=dark] .page .mermaid #statediagram-barbEnd{fill:purple}[theme=dark] .page .mermaid .statediagram-cluster rect{fill:#BDD5EA;stroke:purple;stroke-width:1px}[theme=dark] .page .mermaid .statediagram-cluster rect.outer{rx:5px;ry:5px}[theme=dark] .page .mermaid .statediagram-state .divider{stroke:purple}[theme=dark] .page .mermaid .statediagram-state .title-state{rx:5px;ry:5px}[theme=dark] .page .mermaid .statediagram-cluster.statediagram-cluster .inner{fill:white}[theme=dark] .page .mermaid .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}[theme=dark] .page .mermaid .statediagram-cluster .inner{rx:0;ry:0}[theme=dark] .page .mermaid .statediagram-state rect.basic{rx:5px;ry:5px}[theme=dark] .page .mermaid .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}[theme=dark] .page .mermaid .note-edge{stroke-dasharray:5}[theme=dark] .page .mermaid .statediagram-note rect{fill:#fff5ad;stroke:rgba(255,255,255,0.25);stroke-width:1px;rx:0;ry:0}[theme=dark] .page .mermaid :root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}.page .mermaid div.mermaidTooltip{z-index:50} + +/*# sourceMappingURL=mermaid.min.css.map */ \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/lib/mermaid/mermaid.scss_43d09a0fb297c4cc88d4122515a2e889.json b/themes/LoveIt/resources/_gen/assets/scss/lib/mermaid/mermaid.scss_43d09a0fb297c4cc88d4122515a2e889.json new file mode 100644 index 00000000..16fb7670 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/lib/mermaid/mermaid.scss_43d09a0fb297c4cc88d4122515a2e889.json @@ -0,0 +1 @@ +{"Target":"lib/mermaid/mermaid.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/themes/LoveIt/resources/_gen/assets/scss/lib/valine/valine.scss_782a264805f83ff21e4b24d4d52cfa46.content b/themes/LoveIt/resources/_gen/assets/scss/lib/valine/valine.scss_782a264805f83ff21e4b24d4d52cfa46.content new file mode 100644 index 00000000..4eeeddc5 --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/lib/valine/valine.scss_782a264805f83ff21e4b24d4d52cfa46.content @@ -0,0 +1 @@ +.v[data-class=v] .vcards .vcard .vcontent.expand::before,.v[data-class=v] .vcards .vcard .vcontent.expand::after{z-index:50}.v[data-class=v] .vwrap,.v[data-class=v] .vwrap .vheader .vinput,.v[data-class=v] .vcards .vcard .vh,.v[data-class=v] .vcards .vcard .vquote,.v[data-class=v] blockquote{border-color:#f0f0f0}[theme=dark] .v[data-class=v] .vwrap,[theme=dark] .v[data-class=v] .vwrap .vheader .vinput,[theme=dark] .v[data-class=v] .vcards .vcard .vh,[theme=dark] .v[data-class=v] .vcards .vcard .vquote,[theme=dark] .v[data-class=v] blockquote{border-color:#363636}.v[data-class=v] code,.v[data-class=v] pre,.v[data-class=v] pre code{font-size:90%;word-wrap:break-word;overflow-wrap:break-word;-webkit-line-break:anywhere;-ms-line-break:anywhere;line-break:anywhere;-moz-tab-size:4;-o-tab-size:4;tab-size:4;color:#E74C3C;background:#f5f5f5}[theme=dark] .v[data-class=v] code,[theme=dark] .v[data-class=v] pre,[theme=dark] .v[data-class=v] pre code{color:#E5BF78;background:#272C34}.v[data-class=v] .emoji,.v[data-class=v] .vemoji{max-width:1.5em;vertical-align:text-bottom} diff --git a/themes/LoveIt/resources/_gen/assets/scss/lib/valine/valine.scss_782a264805f83ff21e4b24d4d52cfa46.json b/themes/LoveIt/resources/_gen/assets/scss/lib/valine/valine.scss_782a264805f83ff21e4b24d4d52cfa46.json new file mode 100644 index 00000000..f830c05c --- /dev/null +++ b/themes/LoveIt/resources/_gen/assets/scss/lib/valine/valine.scss_782a264805f83ff21e4b24d4d52cfa46.json @@ -0,0 +1 @@ +{"Target":"lib/valine/valine.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/themes/LoveIt/src/js/theme.js b/themes/LoveIt/src/js/theme.js new file mode 100644 index 00000000..ac2c4e58 --- /dev/null +++ b/themes/LoveIt/src/js/theme.js @@ -0,0 +1,742 @@ +class Util { + forEach(elements, handler) { + elements = elements || []; + for (let i = 0; i < elements.length; i++) handler(elements[i]); + } + + getScrollTop() { + return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop; + } + + isMobile() { + return window.matchMedia('only screen and (max-width: 680px)').matches; + } + + isTocStatic() { + return window.matchMedia('only screen and (max-width: 960px)').matches; + } + + animateCSS(element, animation, reserved, callback) { + if (!Array.isArray(animation)) animation = [animation]; + element.classList.add('animated', ...animation); + const handler = () => { + element.classList.remove('animated', ...animation); + element.removeEventListener('animationend', handler); + if (typeof callback === 'function') callback(); + }; + if (!reserved) element.addEventListener('animationend', handler, false); + } +} + +class Theme { + constructor() { + this.config = window.config; + this.data = this.config.data; + this.isDark = document.body.getAttribute('theme') === 'dark'; + this.util = new Util(); + this.newScrollTop = this.util.getScrollTop(); + this.oldScrollTop = this.newScrollTop; + this.scrollEventSet = new Set(); + this.resizeEventSet = new Set(); + this.switchThemeEventSet = new Set(); + this.clickMaskEventSet = new Set(); + if (window.objectFitImages) objectFitImages(); + } + + initSVGIcon() { + this.util.forEach(document.querySelectorAll('[data-svg-src]'), $icon => { + fetch($icon.getAttribute('data-svg-src')) + .then(response => response.text()) + .then(svg => { + const $temp = document.createElement('div'); + $temp.insertAdjacentHTML('afterbegin', svg); + const $svg = $temp.firstChild; + $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src')); + $svg.classList.add('icon'); + const $titleElements = $svg.getElementsByTagName('title'); + if ($titleElements.length) $svg.removeChild($titleElements[0]); + $icon.parentElement.replaceChild($svg, $icon); + }) + .catch(err => { console.error(err); }); + }); + } + + initTwemoji() { + if (this.config.twemoji) twemoji.parse(document.body); + } + + initMenuMobile() { + const $menuToggleMobile = document.getElementById('menu-toggle-mobile'); + const $menuMobile = document.getElementById('menu-mobile'); + $menuToggleMobile.addEventListener('click', () => { + document.body.classList.toggle('blur'); + $menuToggleMobile.classList.toggle('active'); + $menuMobile.classList.toggle('active'); + }, false); + this._menuMobileOnClickMask = this._menuMobileOnClickMask || (() => { + $menuToggleMobile.classList.remove('active'); + $menuMobile.classList.remove('active'); + }); + this.clickMaskEventSet.add(this._menuMobileOnClickMask); + } + + initSwitchTheme() { + this.util.forEach(document.getElementsByClassName('theme-switch'), $themeSwitch => { + $themeSwitch.addEventListener('click', () => { + if (document.body.getAttribute('theme') === 'dark') document.body.setAttribute('theme', 'light'); + else document.body.setAttribute('theme', 'dark'); + this.isDark = !this.isDark; + window.localStorage && localStorage.setItem('theme', this.isDark ? 'dark' : 'light'); + for (let event of this.switchThemeEventSet) event(); + }, false); + }); + } + + initSearch() { + const searchConfig = this.config.search; + const isMobile = this.util.isMobile(); + if (!searchConfig || isMobile && this._searchMobileOnce || !isMobile && this._searchDesktopOnce) return; + + const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10; + const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50; + const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em'; + + const suffix = isMobile ? 'mobile' : 'desktop'; + const $header = document.getElementById(`header-${suffix}`); + const $searchInput = document.getElementById(`search-input-${suffix}`); + const $searchToggle = document.getElementById(`search-toggle-${suffix}`); + const $searchLoading = document.getElementById(`search-loading-${suffix}`); + const $searchClear = document.getElementById(`search-clear-${suffix}`); + if (isMobile) { + this._searchMobileOnce = true; + $searchInput.addEventListener('focus', () => { + document.body.classList.add('blur'); + $header.classList.add('open'); + }, false); + document.getElementById('search-cancel-mobile').addEventListener('click', () => { + $header.classList.remove('open'); + document.body.classList.remove('blur'); + document.getElementById('menu-toggle-mobile').classList.remove('active'); + document.getElementById('menu-mobile').classList.remove('active'); + $searchLoading.style.display = 'none'; + $searchClear.style.display = 'none'; + this._searchMobile && this._searchMobile.autocomplete.setVal(''); + }, false); + $searchClear.addEventListener('click', () => { + $searchClear.style.display = 'none'; + this._searchMobile && this._searchMobile.autocomplete.setVal(''); + }, false); + this._searchMobileOnClickMask = this._searchMobileOnClickMask || (() => { + $header.classList.remove('open'); + $searchLoading.style.display = 'none'; + $searchClear.style.display = 'none'; + this._searchMobile && this._searchMobile.autocomplete.setVal(''); + }); + this.clickMaskEventSet.add(this._searchMobileOnClickMask); + } else { + this._searchDesktopOnce = true; + $searchToggle.addEventListener('click', () => { + document.body.classList.add('blur'); + $header.classList.add('open'); + $searchInput.focus(); + }, false); + $searchClear.addEventListener('click', () => { + $searchClear.style.display = 'none'; + this._searchDesktop && this._searchDesktop.autocomplete.setVal(''); + }, false); + this._searchDesktopOnClickMask = this._searchDesktopOnClickMask || (() => { + $header.classList.remove('open'); + $searchLoading.style.display = 'none'; + $searchClear.style.display = 'none'; + this._searchDesktop && this._searchDesktop.autocomplete.setVal(''); + }); + this.clickMaskEventSet.add(this._searchDesktopOnClickMask); + } + $searchInput.addEventListener('input', () => { + if ($searchInput.value === '') $searchClear.style.display = 'none'; + else $searchClear.style.display = 'inline'; + }, false); + + const initAutosearch = () => { + const autosearch = autocomplete(`#search-input-${suffix}`, { + hint: false, + autoselect: true, + dropdownMenuContainer: `#search-dropdown-${suffix}`, + clearOnSelected: true, + cssClasses: { noPrefix: true }, + debug: true, + }, { + name: 'search', + source: (query, callback) => { + $searchLoading.style.display = 'inline'; + $searchClear.style.display = 'none'; + const finish = (results) => { + $searchLoading.style.display = 'none'; + $searchClear.style.display = 'inline'; + callback(results); + }; + if (searchConfig.type === 'lunr') { + const search = () => { + if (lunr.queryHandler) query = lunr.queryHandler(query); + const results = {}; + this._index.search(query).forEach(({ ref, matchData: { metadata } }) => { + const matchData = this._indexData[ref]; + let { uri, title, content: context } = matchData; + if (results[uri]) return; + let position = 0; + Object.values(metadata).forEach(({ content }) => { + if (content) { + const matchPosition = content.position[0][0]; + if (matchPosition < position || position === 0) position = matchPosition; + } + }); + position -= snippetLength / 5; + if (position > 0) { + position += context.substr(position, 20).lastIndexOf(' ') + 1; + context = '...' + context.substr(position, snippetLength); + } else { + context = context.substr(0, snippetLength); + } + Object.keys(metadata).forEach(key => { + title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`); + context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1`); + }); + results[uri] = { + 'uri': uri, + 'title' : title, + 'date' : matchData.date, + 'context' : context, + }; + }); + return Object.values(results).slice(0, maxResultLength); + } + if (!this._index) { + fetch(searchConfig.lunrIndexURL) + .then(response => response.json()) + .then(data => { + const indexData = {}; + this._index = lunr(function () { + if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]); + this.ref('objectID'); + this.field('title', { boost: 50 }); + this.field('tags', { boost: 20 }); + this.field('categories', { boost: 20 }); + this.field('content', { boost: 10 }); + this.metadataWhitelist = ['position']; + data.forEach((record) => { + indexData[record.objectID] = record; + this.add(record); + }); + }); + this._indexData = indexData; + finish(search()); + }).catch(err => { + console.error(err); + finish([]); + }); + } else finish(search()); + } else if (searchConfig.type === 'algolia') { + this._algoliaIndex = this._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex); + this._algoliaIndex + .search(query, { + offset: 0, + length: maxResultLength * 8, + attributesToHighlight: ['title'], + attributesToSnippet: [`content:${snippetLength}`], + highlightPreTag: `<${highlightTag}>`, + highlightPostTag: ``, + }) + .then(({ hits }) => { + const results = {}; + hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => { + if (results[uri] && results[uri].context.length > content.value) return; + results[uri] = { + uri: uri, + title: title.value, + date: date, + context: content.value, + }; + }); + finish(Object.values(results).slice(0, maxResultLength)); + }) + .catch(err => { + console.error(err); + finish([]); + }); + } + }, + templates: { + suggestion: ({ title, date, context }) => `
    ${title}${date}
    ${context}
    `, + empty: ({ query }) => `
    ${searchConfig.noResultsFound}: "${query}"
    `, + footer: ({}) => { + const { searchType, icon, href } = searchConfig.type === 'algolia' ? { + searchType: 'algolia', + icon: '', + href: 'https://www.algolia.com/', + } : { + searchType: 'Lunr.js', + icon: '', + href: 'https://lunrjs.com/', + }; + return ``;}, + }, + }); + autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => { + window.location.assign(suggestion.uri); + }); + if (isMobile) this._searchMobile = autosearch; + else this._searchDesktop = autosearch; + }; + if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) { + const script = document.createElement('script'); + script.id = 'lunr-segmentit'; + script.type = 'text/javascript'; + script.src = searchConfig.lunrSegmentitURL; + script.async = true; + if (script.readyState) { + script.onreadystatechange = () => { + if (script.readyState == 'loaded' || script.readyState == 'complete'){ + script.onreadystatechange = null; + initAutosearch(); + } + }; + } else { + script.onload = () => { + initAutosearch(); + }; + } + document.body.appendChild(script); + } else initAutosearch(); + } + + initDetails() { + this.util.forEach(document.getElementsByClassName('details'), $details => { + const $summary = $details.getElementsByClassName('details-summary')[0]; + $summary.addEventListener('click', () => { + $details.classList.toggle('open'); + }, false); + }); + } + + initLightGallery() { + if (this.config.lightGallery) lightGallery(document.getElementById('content'), this.config.lightGallery); + } + + initHighlight() { + this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), $preChroma => { + const $chroma = document.createElement('div'); + $chroma.className = $preChroma.className; + const $table = document.createElement('table'); + $chroma.appendChild($table); + const $tbody = document.createElement('tbody'); + $table.appendChild($tbody); + const $tr = document.createElement('tr'); + $tbody.appendChild($tr); + const $td = document.createElement('td'); + $tr.appendChild($td); + $preChroma.parentElement.replaceChild($chroma, $preChroma); + $td.appendChild($preChroma); + }); + this.util.forEach(document.querySelectorAll('.highlight > .chroma'), $chroma => { + const $codeElements = $chroma.querySelectorAll('pre.chroma > code'); + if ($codeElements.length) { + const $code = $codeElements[$codeElements.length - 1]; + const $header = document.createElement('div'); + $header.className = 'code-header ' + $code.className.toLowerCase(); + const $title = document.createElement('span'); + $title.classList.add('code-title'); + $title.insertAdjacentHTML('afterbegin', ''); + $title.addEventListener('click', () => { + $chroma.classList.toggle('open'); + }, false); + $header.appendChild($title); + const $ellipses = document.createElement('span'); + $ellipses.insertAdjacentHTML('afterbegin', ''); + $ellipses.classList.add('ellipses'); + $ellipses.addEventListener('click', () => { + $chroma.classList.add('open'); + }, false); + $header.appendChild($ellipses); + const $copy = document.createElement('span'); + $copy.insertAdjacentHTML('afterbegin', ''); + $copy.classList.add('copy'); + const code = $code.innerText; + if (this.config.code.maxShownLines < 0 || code.split('\n').length < this.config.code.maxShownLines + 2) $chroma.classList.add('open'); + if (this.config.code.copyTitle) { + $copy.setAttribute('data-clipboard-text', code); + $copy.title = this.config.code.copyTitle; + const clipboard = new ClipboardJS($copy); + clipboard.on('success', _e => { + this.util.animateCSS($code, 'flash'); + }); + $header.appendChild($copy); + } + $chroma.insertBefore($header, $chroma.firstChild); + } + }); + } + + initTable() { + this.util.forEach(document.querySelectorAll('.content table'), $table => { + const $wrapper = document.createElement('div'); + $wrapper.className = 'table-wrapper'; + $table.parentElement.replaceChild($wrapper, $table); + $wrapper.appendChild($table); + }); + } + + initHeaderLink() { + for (let num = 1; num <= 6; num++) { + this.util.forEach(document.querySelectorAll('.single .content > h' + num), $header => { + $header.classList.add('headerLink'); + $header.insertAdjacentHTML('afterbegin', ``); + }); + } + } + + initToc() { + const $tocCore = document.getElementById('TableOfContents'); + if ($tocCore === null) return; + if (document.getElementById('toc-static').getAttribute('kept') || this.util.isTocStatic()) { + const $tocContentStatic = document.getElementById('toc-content-static'); + if ($tocCore.parentElement !== $tocContentStatic) { + $tocCore.parentElement.removeChild($tocCore); + $tocContentStatic.appendChild($tocCore); + } + if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll); + } else { + const $tocContentAuto = document.getElementById('toc-content-auto'); + if ($tocCore.parentElement !== $tocContentAuto) { + $tocCore.parentElement.removeChild($tocCore); + $tocContentAuto.appendChild($tocCore); + } + const $toc = document.getElementById('toc-auto'); + const $page = document.getElementsByClassName('page')[0]; + const rect = $page.getBoundingClientRect(); + $toc.style.left = `${rect.left + rect.width + 20}px`; + $toc.style.maxWidth = `${$page.getBoundingClientRect().left - 20}px`; + $toc.style.visibility = 'visible'; + const $tocLinkElements = $tocCore.querySelectorAll('a:first-child'); + const $tocLiElements = $tocCore.getElementsByTagName('li'); + const $headerLinkElements = document.getElementsByClassName('headerLink'); + const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal'; + const headerHeight = document.getElementById('header-desktop').offsetHeight; + const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0); + const minTocTop = $toc.offsetTop; + const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight); + this._tocOnScroll = this._tocOnScroll || (() => { + const footerTop = document.getElementById('post-footer').offsetTop; + const maxTocTop = footerTop - $toc.getBoundingClientRect().height; + const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight); + if (this.newScrollTop < minScrollTop) { + $toc.style.position = 'absolute'; + $toc.style.top = `${minTocTop}px`; + } else if (this.newScrollTop > maxScrollTop) { + $toc.style.position = 'absolute'; + $toc.style.top = `${maxTocTop}px`; + } else { + $toc.style.position = 'fixed'; + $toc.style.top = `${TOP_SPACING}px`; + } + + this.util.forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); }); + this.util.forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); }); + const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0); + let activeTocIndex = $headerLinkElements.length - 1; + for (let i = 0; i < $headerLinkElements.length - 1; i++) { + const thisTop = $headerLinkElements[i].getBoundingClientRect().top; + const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top; + if ((i == 0 && thisTop > INDEX_SPACING) + || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) { + activeTocIndex = i; + break; + } + } + if (activeTocIndex !== -1) { + $tocLinkElements[activeTocIndex].classList.add('active'); + let $parent = $tocLinkElements[activeTocIndex].parentElement; + while ($parent !== $tocCore) { + $parent.classList.add('has-active'); + $parent = $parent.parentElement.parentElement; + } + } + }); + this._tocOnScroll(); + this.scrollEventSet.add(this._tocOnScroll); + } + } + + initMath() { + if (this.config.math) renderMathInElement(document.body, this.config.math); + } + + initMermaid() { + const $mermaidElements = document.getElementsByClassName('mermaid'); + if ($mermaidElements.length) { + mermaid.initialize({startOnLoad: false, theme: 'null'}); + this.util.forEach($mermaidElements, $mermaid => { + mermaid.mermaidAPI.render('svg-' + $mermaid.id, this.data[$mermaid.id], svgCode => { + $mermaid.insertAdjacentHTML('afterbegin', svgCode); + }, $mermaid); + }); + } + } + + initEcharts() { + this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || (() => { + this._echartsArr = this._echartsArr || []; + for (let i = 0; i < this._echartsArr.length; i++) { + this._echartsArr[i].dispose(); + } + this._echartsArr = []; + this.util.forEach(document.getElementsByClassName('echarts'), $echarts => { + const chart = echarts.init($echarts, this.isDark ? 'dark' : 'macarons', {renderer: 'svg'}); + chart.setOption(JSON.parse(this.data[$echarts.id])); + this._echartsArr.push(chart); + }); + }); + this.switchThemeEventSet.add(this._echartsOnSwitchTheme); + this._echartsOnSwitchTheme(); + this._echartsOnResize = this._echartsOnResize || (() => { + for (let i = 0; i < this._echartsArr.length; i++) { + this._echartsArr[i].resize(); + } + }); + this.resizeEventSet.add(this._echartsOnResize); + } + + initMapbox() { + if (this.config.mapbox) { + mapboxgl.accessToken = this.config.mapbox.accessToken; + mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin); + this._mapboxArr = this._mapboxArr || []; + this.util.forEach(document.getElementsByClassName('mapbox'), $mapbox => { + const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = this.data[$mapbox.id]; + const mapbox = new mapboxgl.Map({ + container: $mapbox, + center: [lng, lat], + zoom: zoom, + minZoom: .2, + style: this.isDark ? darkStyle : lightStyle, + attributionControl: false, + }); + if (marked) { + new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox); + } + if (navigation) { + mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right'); + } + if (geolocate) { + mapbox.addControl(new mapboxgl.GeolocateControl({ + positionOptions: { + enableHighAccuracy: true, + }, + showUserLocation: true, + trackUserLocation: true, + }), 'bottom-right'); + } + if (scale) { + mapbox.addControl(new mapboxgl.ScaleControl()); + } + if (fullscreen) { + mapbox.addControl(new mapboxgl.FullscreenControl()); + } + mapbox.addControl(new MapboxLanguage()); + this._mapboxArr.push(mapbox); + }); + this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || (() => { + this.util.forEach(this._mapboxArr, mapbox => { + const $mapbox = mapbox.getContainer(); + const { lightStyle, darkStyle } = this.data[$mapbox.id]; + mapbox.setStyle(this.isDark ? darkStyle : lightStyle); + mapbox.addControl(new MapboxLanguage()); + }); + }); + this.switchThemeEventSet.add(this._mapboxOnSwitchTheme); + } + } + + initTypeit() { + if (this.config.typeit) { + const typeitConfig = this.config.typeit; + const speed = typeitConfig.speed ? typeitConfig.speed : 100; + const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000; + const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|'; + Object.values(typeitConfig.data).forEach(group => { + const typeone = (i) => { + const id = group[i]; + const instance = new TypeIt(`#${id}`, { + strings: this.data[id], + speed: speed, + lifeLike: true, + cursorSpeed: cursorSpeed, + cursorChar: cursorChar, + waitUntilVisible: true, + afterComplete: () => { + if (i === group.length - 1) { + if (typeitConfig.duration >= 0) window.setTimeout(() => { + instance.destroy(); + }, typeitConfig.duration); + return; + } + instance.destroy(); + typeone(i + 1); + }, + }).go(); + }; + typeone(0); + }); + } + } + + initComment() { + if (this.config.comment) { + if (this.config.comment.gitalk) { + this.config.comment.gitalk.body = decodeURI(window.location.href); + const gitalk = new Gitalk(this.config.comment.gitalk); + gitalk.render('gitalk'); + } + if (this.config.comment.valine) new Valine(this.config.comment.valine); + if (this.config.comment.utterances) { + const utterancesConfig = this.config.comment.utterances; + const script = document.createElement('script'); + script.src = 'https://utteranc.es/client.js'; + script.type = 'text/javascript'; + script.setAttribute('repo', utterancesConfig.repo); + script.setAttribute('issue-term', utterancesConfig.issueTerm); + if (utterancesConfig.label) script.setAttribute('label', utterancesConfig.label); + script.setAttribute('theme', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme); + script.crossOrigin = 'anonymous'; + script.async = true; + document.getElementById('utterances').appendChild(script); + this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || (() => { + const message = { + type: 'set-theme', + theme: this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme, + }; + const iframe = document.querySelector('.utterances-frame'); + iframe.contentWindow.postMessage(message, 'https://utteranc.es'); + }); + this.switchThemeEventSet.add(this._utterancesOnSwitchTheme); + } + } + } + + initSmoothScroll() { + if (SmoothScroll) new SmoothScroll('[href^="#"]', { speed: 300, speedAsDuration: true, header: '#header-desktop' }); + } + + initCookieconsent() { + if (this.config.cookieconsent) cookieconsent.initialise(this.config.cookieconsent); + } + + onScroll() { + const $headers = []; + if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop')); + if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile')); + if (document.getElementById('comments')) { + const $viewComments = document.getElementById('view-comments'); + $viewComments.href = `#comments`; + $viewComments.style.display = 'block'; + } + const $fixedButtons = document.getElementById('fixed-buttons'); + const ACCURACY = 20, MINIMUM = 100; + window.addEventListener('scroll', () => { + this.newScrollTop = this.util.getScrollTop(); + const scroll = this.newScrollTop - this.oldScrollTop; + const isMobile = this.util.isMobile(); + this.util.forEach($headers, $header => { + if (scroll > ACCURACY) { + $header.classList.remove('fadeInDown'); + this.util.animateCSS($header, ['fadeOutUp', 'faster'], true); + } else if (scroll < - ACCURACY) { + $header.classList.remove('fadeOutUp'); + this.util.animateCSS($header, ['fadeInDown', 'faster'], true); + } + }); + if (this.newScrollTop > MINIMUM) { + if (isMobile && scroll > ACCURACY) { + $fixedButtons.classList.remove('fadeIn'); + this.util.animateCSS($fixedButtons, ['fadeOut', 'faster'], true); + } else if (!isMobile || scroll < - ACCURACY) { + $fixedButtons.style.display = 'block'; + $fixedButtons.classList.remove('fadeOut'); + this.util.animateCSS($fixedButtons, ['fadeIn', 'faster'], true); + } + } else { + if (!isMobile) { + $fixedButtons.classList.remove('fadeIn'); + this.util.animateCSS($fixedButtons, ['fadeOut', 'faster'], true); + } + $fixedButtons.style.display = 'none'; + } + for (let event of this.scrollEventSet) event(); + this.oldScrollTop = this.newScrollTop; + }, false); + } + + onResize() { + window.addEventListener('resize', () => { + if (!this._resizeTimeout) { + this._resizeTimeout = window.setTimeout(() => { + this._resizeTimeout = null; + for (let event of this.resizeEventSet) event(); + this.initToc(); + this.initMermaid(); + this.initSearch(); + }, 100); + } + }, false); + } + + onClickMask() { + document.getElementById('mask').addEventListener('click', () => { + for (let event of this.clickMaskEventSet) event(); + document.body.classList.remove('blur'); + }, false); + } + + init() { + try { + this.initSVGIcon(); + this.initTwemoji(); + this.initMenuMobile(); + this.initSwitchTheme(); + this.initSearch(); + this.initDetails(); + this.initLightGallery(); + this.initHighlight(); + this.initTable(); + this.initHeaderLink(); + this.initSmoothScroll(); + this.initMath(); + this.initMermaid(); + this.initEcharts(); + this.initTypeit(); + this.initMapbox(); + this.initCookieconsent(); + } catch (err) { + console.error(err); + } + + window.setTimeout(() => { + this.initToc(); + this.initComment(); + + this.onScroll(); + this.onResize(); + this.onClickMask(); + }, 100); + } +} + +const themeInit = () => { + const theme = new Theme(); + theme.init(); +}; + +if (document.readyState !== 'loading') { + themeInit(); +} else { + document.addEventListener('DOMContentLoaded', themeInit, false); +} diff --git a/themes/LoveIt/src/lib/lunr.segmentit.js b/themes/LoveIt/src/lib/lunr.segmentit.js new file mode 100644 index 00000000..570274c4 --- /dev/null +++ b/themes/LoveIt/src/lib/lunr.segmentit.js @@ -0,0 +1,8 @@ +import { Segment, useDefault } from 'segmentit'; + +const segmentit = useDefault(new Segment()); +lunr.segmentit = segmentit; +lunr.queryHandler = query => { + if (/^[\u4e00-\u9fa5]+$/.test(query)) query = lunr.segmentit.doSegment(query).map(seg => '+' + seg.w).join(' '); + return query; +}; diff --git a/themes/LoveIt/static/lib/fonts/lg.eot b/themes/LoveIt/static/lib/fonts/lg.eot new file mode 100644 index 00000000..51264c4f Binary files /dev/null and b/themes/LoveIt/static/lib/fonts/lg.eot differ diff --git a/themes/LoveIt/static/lib/fonts/lg.svg b/themes/LoveIt/static/lib/fonts/lg.svg new file mode 100644 index 00000000..83d681f1 --- /dev/null +++ b/themes/LoveIt/static/lib/fonts/lg.svg @@ -0,0 +1,47 @@ + + + + + + +{ + "fontFamily": "lg", + "majorVersion": 1, + "minorVersion": 0, + "fontURL": "https://github.com/sachinchoolur/lightgallery.js", + "copyright": "sachin", + "license": "MLT", + "licenseURL": "http://opensource.org/licenses/MIT", + "version": "Version 1.0", + "fontId": "lg", + "psName": "lg", + "subFamily": "Regular", + "fullName": "lg", + "description": "Font generated by IcoMoon." +} + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/themes/LoveIt/static/lib/fonts/lg.ttf b/themes/LoveIt/static/lib/fonts/lg.ttf new file mode 100644 index 00000000..8ad81996 Binary files /dev/null and b/themes/LoveIt/static/lib/fonts/lg.ttf differ diff --git a/themes/LoveIt/static/lib/fonts/lg.woff b/themes/LoveIt/static/lib/fonts/lg.woff new file mode 100644 index 00000000..d98ff605 Binary files /dev/null and b/themes/LoveIt/static/lib/fonts/lg.woff differ diff --git a/themes/LoveIt/static/lib/img/loading.gif b/themes/LoveIt/static/lib/img/loading.gif new file mode 100644 index 00000000..d3bbc806 Binary files /dev/null and b/themes/LoveIt/static/lib/img/loading.gif differ diff --git a/themes/LoveIt/static/lib/img/video-play.png b/themes/LoveIt/static/lib/img/video-play.png new file mode 100644 index 00000000..48935403 Binary files /dev/null and b/themes/LoveIt/static/lib/img/video-play.png differ diff --git a/themes/LoveIt/static/lib/img/vimeo-play.png b/themes/LoveIt/static/lib/img/vimeo-play.png new file mode 100644 index 00000000..ef7d2457 Binary files /dev/null and b/themes/LoveIt/static/lib/img/vimeo-play.png differ diff --git a/themes/LoveIt/static/lib/img/youtube-play.png b/themes/LoveIt/static/lib/img/youtube-play.png new file mode 100644 index 00000000..dfebb91f Binary files /dev/null and b/themes/LoveIt/static/lib/img/youtube-play.png differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.ttf new file mode 100644 index 00000000..afcd2eb4 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.woff new file mode 100644 index 00000000..4f575152 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.woff2 new file mode 100644 index 00000000..b982d6ea Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_AMS-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.ttf new file mode 100644 index 00000000..f84148db Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.woff new file mode 100644 index 00000000..ab56ab7f Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.woff2 new file mode 100644 index 00000000..710c2617 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Bold.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.ttf new file mode 100644 index 00000000..97814db7 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.woff new file mode 100644 index 00000000..aec8a333 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.woff2 new file mode 100644 index 00000000..ee5193d7 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Caligraphic-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.ttf new file mode 100644 index 00000000..483a7cdd Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.woff new file mode 100644 index 00000000..189fea5e Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.woff2 new file mode 100644 index 00000000..dc3bd4c0 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Bold.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.ttf new file mode 100644 index 00000000..9aa5f674 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.woff new file mode 100644 index 00000000..d01450e9 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.woff2 new file mode 100644 index 00000000..7eeba377 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Fraktur-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.ttf new file mode 100644 index 00000000..dc0185a1 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.woff new file mode 100644 index 00000000..acf48e66 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.woff2 new file mode 100644 index 00000000..cf5ababf Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Bold.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.ttf new file mode 100644 index 00000000..4346f173 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.woff new file mode 100644 index 00000000..d2cfe4e3 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.woff2 new file mode 100644 index 00000000..d0178f42 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-BoldItalic.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.ttf new file mode 100644 index 00000000..f2c3ebae Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.woff new file mode 100644 index 00000000..1184295d Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.woff2 new file mode 100644 index 00000000..aa05e142 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Italic.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.ttf new file mode 100644 index 00000000..8acb3654 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.woff new file mode 100644 index 00000000..9f8228fc Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.woff2 new file mode 100644 index 00000000..e3f71eb7 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Main-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.ttf new file mode 100644 index 00000000..a645df64 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.woff new file mode 100644 index 00000000..87d4f223 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 00000000..83b49962 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-BoldItalic.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.ttf new file mode 100644 index 00000000..9c38359c Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.woff new file mode 100644 index 00000000..959746ef Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.woff2 new file mode 100644 index 00000000..e3ea522a Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Math-Italic.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.ttf new file mode 100644 index 00000000..ff108512 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.woff new file mode 100644 index 00000000..f0d6ea73 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.woff2 new file mode 100644 index 00000000..4cf8f146 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Bold.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.ttf new file mode 100644 index 00000000..3dd76713 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.woff new file mode 100644 index 00000000..9da0dfe3 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.woff2 new file mode 100644 index 00000000..ce19ae03 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Italic.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.ttf new file mode 100644 index 00000000..f117cd61 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.woff new file mode 100644 index 00000000..6ed98780 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.woff2 new file mode 100644 index 00000000..27611491 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_SansSerif-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.ttf new file mode 100644 index 00000000..e6f34542 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.woff new file mode 100644 index 00000000..4a48e65f Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.woff2 new file mode 100644 index 00000000..b0aed195 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Script-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.ttf new file mode 100644 index 00000000..37faa0f9 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.woff new file mode 100644 index 00000000..0832f7a4 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.woff2 new file mode 100644 index 00000000..483e7b66 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size1-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.ttf new file mode 100644 index 00000000..cf326236 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.woff new file mode 100644 index 00000000..14f6485a Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.woff2 new file mode 100644 index 00000000..5ff70606 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size2-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.ttf new file mode 100644 index 00000000..ff7e2b90 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.woff new file mode 100644 index 00000000..d3626cef Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.woff2 new file mode 100644 index 00000000..e45ca49d Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size3-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.ttf new file mode 100644 index 00000000..3034091c Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.woff new file mode 100644 index 00000000..93c57a6f Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.woff2 new file mode 100644 index 00000000..53b65afc Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Size4-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.ttf b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.ttf new file mode 100644 index 00000000..2fd85294 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.ttf differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.woff b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.woff new file mode 100644 index 00000000..e90fa2bc Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.woff differ diff --git a/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.woff2 new file mode 100644 index 00000000..e40ab151 Binary files /dev/null and b/themes/LoveIt/static/lib/katex/fonts/KaTeX_Typewriter-Regular.woff2 differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-brands-400.eot b/themes/LoveIt/static/lib/webfonts/fa-brands-400.eot new file mode 100644 index 00000000..a1bc094a Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-brands-400.eot differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-brands-400.svg b/themes/LoveIt/static/lib/webfonts/fa-brands-400.svg new file mode 100644 index 00000000..46ad237a --- /dev/null +++ b/themes/LoveIt/static/lib/webfonts/fa-brands-400.svg @@ -0,0 +1,3570 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/LoveIt/static/lib/webfonts/fa-brands-400.ttf b/themes/LoveIt/static/lib/webfonts/fa-brands-400.ttf new file mode 100644 index 00000000..948a2a6c Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-brands-400.ttf differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-brands-400.woff b/themes/LoveIt/static/lib/webfonts/fa-brands-400.woff new file mode 100644 index 00000000..2a89d521 Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-brands-400.woff differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-brands-400.woff2 b/themes/LoveIt/static/lib/webfonts/fa-brands-400.woff2 new file mode 100644 index 00000000..141a90a9 Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-brands-400.woff2 differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-regular-400.eot b/themes/LoveIt/static/lib/webfonts/fa-regular-400.eot new file mode 100644 index 00000000..38cf2517 Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-regular-400.eot differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-regular-400.svg b/themes/LoveIt/static/lib/webfonts/fa-regular-400.svg new file mode 100644 index 00000000..48634a9a --- /dev/null +++ b/themes/LoveIt/static/lib/webfonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/LoveIt/static/lib/webfonts/fa-regular-400.ttf b/themes/LoveIt/static/lib/webfonts/fa-regular-400.ttf new file mode 100644 index 00000000..abe99e20 Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-regular-400.ttf differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-regular-400.woff b/themes/LoveIt/static/lib/webfonts/fa-regular-400.woff new file mode 100644 index 00000000..24de566a Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-regular-400.woff differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-regular-400.woff2 b/themes/LoveIt/static/lib/webfonts/fa-regular-400.woff2 new file mode 100644 index 00000000..7e0118e5 Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-regular-400.woff2 differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-solid-900.eot b/themes/LoveIt/static/lib/webfonts/fa-solid-900.eot new file mode 100644 index 00000000..d3b77c22 Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-solid-900.eot differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-solid-900.svg b/themes/LoveIt/static/lib/webfonts/fa-solid-900.svg new file mode 100644 index 00000000..7742838b --- /dev/null +++ b/themes/LoveIt/static/lib/webfonts/fa-solid-900.svg @@ -0,0 +1,4938 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/LoveIt/static/lib/webfonts/fa-solid-900.ttf b/themes/LoveIt/static/lib/webfonts/fa-solid-900.ttf new file mode 100644 index 00000000..5b979039 Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-solid-900.ttf differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-solid-900.woff b/themes/LoveIt/static/lib/webfonts/fa-solid-900.woff new file mode 100644 index 00000000..beec7917 Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-solid-900.woff differ diff --git a/themes/LoveIt/static/lib/webfonts/fa-solid-900.woff2 b/themes/LoveIt/static/lib/webfonts/fa-solid-900.woff2 new file mode 100644 index 00000000..978a681a Binary files /dev/null and b/themes/LoveIt/static/lib/webfonts/fa-solid-900.woff2 differ diff --git a/themes/LoveIt/theme.toml b/themes/LoveIt/theme.toml new file mode 100644 index 00000000..69ba85b6 --- /dev/null +++ b/themes/LoveIt/theme.toml @@ -0,0 +1,34 @@ +# theme.toml template for a Hugo theme +# See https://github.com/gohugoio/hugoThemes#themetoml for an example + +name = "LoveIt" +license = "MIT" +licenselink = "https://github.com/dillonzq/LoveIt/blob/master/LICENSE" +description = "A Clean, Elegant but Advanced Hugo Theme for Hugo." +homepage = "https://hugoloveit.com" +tags = [ + "blog", + "clean", + "responsive", + "dark", + "theme" +] +features = [ + "cover-image", + "favicon", + "multilingual", + "pagination", + "social-menu", + "syntax-highlighting", + "SEO Optimized" +] +min_version = "0.62.0" + +[author] + name = "Dillon" + homepage = "https://dillonzq.com/" + +[original] + name = "Fastbyte01" + homepage = "https://www.fsb01.com/" + repo = "https://github.com/Fastbyte01/KeepIt"