diff options
74 files changed, 12178 insertions, 0 deletions
diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..c6f3fce --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,5 @@ ++++ +title = '{{ replace .File.ContentBaseName "-" " " | title }}' +date = {{ .Date }} +draft = true ++++ diff --git a/blog.org b/blog.org new file mode 100644 index 0000000..3d55df4 --- /dev/null +++ b/blog.org @@ -0,0 +1,46 @@ +#+title: lowest case +#+author: santi +#+hugo_base_dir: . +#+hugo_auto_set_lastmod: t + +* lowest case +:PROPERTIES: +:EXPORT_HUGO_SECTION: / +:EXPORT_FILE_NAME: index +:END: + +a lower case only blog, purely for aesthetics. + +here I talk about discrete mathematics (mostly computer science), including compilers, language theory, type theory, computability theory, software correctness, formal verification, and any other (entirely theoretical almost non-applicable) nerd topic you can think of. + + +* about +:PROPERTIES: +:EXPORT_HUGO_SECTION: /about +:EXPORT_FILE_NAME: index +:END: + +i'm leonardo santiago, a software engineer based in brazil. my interests are in compiler design, programming tools (emacs) and functional programming, usually dabbliing in related topics too. i'm most confortable in nix and rust, but i know a fair share of other languages. + +currently, software engineer @ [[https://mixrank.com][Mixrank]]. + +this blog was built using [[https://github.com/gohugoio/hugo][hugo]], and it's source code is openly available here: +@@hugo:{{< github repo="o-santi/nixos" >}}@@ + +you can find me at: @@hugo:[{{< icon "email" >}}](mailto:[email protected])@@ @@hugo:[{{< icon "linkedin" >}}](https://www.linkedin.com/in/leonardo-ribeiro-santiago/)@@ @@hugo:[{{< icon "github" >}}](https://github.com/o-santi)@@ @@hugo:[{{< icon "telegram" >}}](https://t.me/osanti4)@@ @@hugo:[{{< icon "twitter" >}}](https://twitter.com/o_santi_)@@ + +* blog +:PROPERTIES: +:EXPORT_HUGO_SECTION: /posts +:END: +** rust is not about memory safety :coq:rust: +:PROPERTIES: +:EXPORT_FILE_NAME: correctness-is-all-you-need +:END: + + + +* COMMENT Local Variables :ARCHIVE: +# Local Variables: +# eval: (org-hugo-auto-export-mode) +# End: diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml new file mode 100644 index 0000000..41a40d6 --- /dev/null +++ b/config/_default/hugo.toml @@ -0,0 +1,66 @@ +# -- Site Configuration -- +# Refer to the theme docs for more details about each of these parameters. +# https://blowfish.page/docs/getting-started/ + +theme = "blowfish" +baseURL = "https://o-santi.github.io" +defaultContentLanguage = "en" + +enableRobotsTXT = true +paginate = 10 +summaryLength = 0 + +capitalizeListTitles = false +pluralizeListTitles = false + +buildDrafts = false +buildFuture = false + +# googleAnalytics = "G-XXXXXXXXX" + +[imaging] + anchor = 'Center' + +[taxonomies] + tag = "tags" + category = "categories" + author = "authors" + series = "series" + +[sitemap] + changefreq = 'daily' + filename = 'sitemap.xml' + priority = 0.5 + +[outputs] + home = ["HTML", "RSS", "JSON"] + +[related] + threshold = 0 + toLower = false + + [[related.indices]] + name = "tags" + weight = 100 + + [[related.indices]] + name = "categories" + weight = 100 + + [[related.indices]] + name = "series" + weight = 50 + + [[related.indices]] + name = "authors" + weight = 20 + + [[related.indices]] + name = "date" + weight = 10 + + [[related.indices]] + applyFilter = false + name = 'fragmentrefs' + type = 'fragments' + weight = 10 diff --git a/config/_default/languages.en.toml b/config/_default/languages.en.toml new file mode 100644 index 0000000..949dc35 --- /dev/null +++ b/config/_default/languages.en.toml @@ -0,0 +1,28 @@ +languageCode = "en" +languageName = "English" +weight = 1 +title = "lowest case" + +[params] + displayName = "EN" + isoCode = "en" + rtl = false + dateFormat = "2 January 2006" + # logo = "static/shin.png" + # secondaryLogo = "img/secondary-logo.png" + # description = "My awesome website" + # copyright = "Copy, _right?_ :thinking_face:" + +[author] + name = "leonardo santiago" +# image = "img/blowfish_logo.png" +# headline = "I'm only human" +# bio = "A little bit about you" + links = [ + { email = "mailto:[email protected]" }, + { github = "https://github.com/o-santi" }, + { gitlab = "https://gitlab.com/o-santi" }, + { linkedin = "https://www.linkedin.com/in/leonardo-ribeiro-santiago/" }, + { telegram = "https://t.me/osanti4" }, + { twitter = "https://twitter.com/o-santi" }, + ] diff --git a/config/_default/markup.toml b/config/_default/markup.toml new file mode 100644 index 0000000..c5449fc --- /dev/null +++ b/config/_default/markup.toml @@ -0,0 +1,13 @@ +# -- Markup -- +# These settings are required for the theme to function. + +[goldmark] +[goldmark.renderer] + unsafe = true + +[highlight] + noClasses = false + +[tableOfContents] + startLevel = 2 + endLevel = 4 diff --git a/config/_default/menus.en.toml b/config/_default/menus.en.toml new file mode 100644 index 0000000..65abe45 --- /dev/null +++ b/config/_default/menus.en.toml @@ -0,0 +1,67 @@ +# -- Main Menu -- +# The main menu is displayed in the header at the top of the page. +# Acceptable parameters are name, pageRef, page, url, title, weight. +# +# The simplest menu configuration is to provide: +# name = The name to be displayed for this menu link +# pageRef = The identifier of the page or section to link to +# +# By default the menu is ordered alphabetically. This can be +# overridden by providing a weight value. The menu will then be +# ordered by weight from lowest to highest. + +[[main]] + name = "blog" + pageRef = "posts" + +[[main]] + name = "about" + pageRef = "/about" + +[[main]] + name = "tags" + pageRef = "/tags" + + +#[[main]] +# name = "example sub-menu 1" +# parent = "Parent" +# pageRef = "posts" +# weight = 20 + +#[[main]] +# name = "example sub-menu 2" +# parent = "Parent" +# pageRef = "posts" +# weight = 20 + +#[[subnavigation]] +# name = "An interesting topic" +# pageRef = "tags/interesting-topic" +# weight = 10 + +#[[subnavigation]] +# name = "My Awesome Category" +# pre = "github" +# pageRef = "categories/awesome" +# weight = 20 + +#[[main]] +# name = "Categories" +# pageRef = "categories" +# weight = 20 + +# -- Footer Menu -- +# The footer menu is displayed at the bottom of the page, just before +# the copyright notice. Configure as per the main menu above. + + +# [[footer]] +# name = "github" +# pre = "github" +# url = "https://github.com/o-santi" + +# [[footer]] +# name = "Categories" +# pageRef = "categories" +# weight = 20 diff --git a/config/_default/module.toml b/config/_default/module.toml new file mode 100644 index 0000000..74f7727 --- /dev/null +++ b/config/_default/module.toml @@ -0,0 +1,3 @@ +[hugoVersion] + extended = false + min = "0.87.0" diff --git a/config/_default/params.toml b/config/_default/params.toml new file mode 100644 index 0000000..2c5dab2 --- /dev/null +++ b/config/_default/params.toml @@ -0,0 +1,146 @@ +# -- Theme Options -- +# These options control how the theme functions and allow you to +# customise the display of your website. +# +# Refer to the theme docs for more details about each of these parameters. +# https://blowfish.page/docs/configuration/#theme-parameters + +colorScheme = "fire" +defaultAppearance = "dark" # valid options: light or dark +autoSwitchAppearance = true + +enableSearch = true +enableCodeCopy = false + +mainSections = ["posts"] + +disableImageOptimization = false +disableTextInHeader = false + +# defaultBackgroundImage = "IMAGE.jpg" # used as default for background images +# defaultFeaturedImage = "IMAGE.jpg" # used as default for featured images in all articles + +highlightCurrentMenuArea = true +# smartTOC = true +# smartTOCHideUnfocusedChildren = true + +[header] + layout = "basic" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur + +[footer] + showMenu = true + showCopyright = true + showThemeAttribution = true + showAppearanceSwitcher = true + showScrollToTop = true + +[homepage] + layout = "page" # valid options: page, profile, hero, card, background, custom + #homepageImage = "IMAGE.jpg" # used in: hero, and card + showRecent = true + showRecentItems = 5 + showMoreLink = true + showMoreLinkDest = "/posts" + cardView = false + cardViewScreenWidth = false + layoutBackgroundBlur = false # only used when layout equals background + +[article] + showDate = true + showViews = false + showLikes = false + showDateOnlyInArticle = false + showDateUpdated = false + showAuthor = false + # showAuthorBottom = false + showHero = false + # heroStyle = "basic" # valid options: basic, big, background, thumbAndBackground + layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground + layoutBackgroundHeaderSpace = true # only used when heroStyle equals background + showBreadcrumbs = true + showDraftLabel = true + showEdit = false + # editURL = "https://github.com/username/repo/" + editAppendPath = true + seriesOpened = false + showHeadingAnchors = true + showPagination = true + invertPagination = false + showReadingTime = true + showTableOfContents = true + # showRelatedContent = false + # relatedContentLimit = 3 + showTaxonomies = true + showAuthorsBadges = false + showWordCount = false + showZenMode = false + +[list] + showHero = false + # heroStyle = "background" # valid options: basic, big, background, thumbAndBackground + layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground + layoutBackgroundHeaderSpace = true # only used when heroStyle equals background + showBreadcrumbs = false + showSummary = false + showViews = false + showLikes = false + showTableOfContents = false + showCards = false + groupByYear = true + cardView = false + cardViewScreenWidth = false + constrainItemsWidth = false + +[sitemap] + excludedKinds = ["taxonomy", "term"] + +[taxonomy] + showTermCount = false + showHero = false + # heroStyle = "background" # valid options: basic, big, background, thumbAndBackground + showBreadcrumbs = false + showViews = false + showLikes = false + showTableOfContents = false + cardView = false + +[term] + showHero = false + # heroStyle = "background" # valid options: basic, big, background, thumbAndBackground + showBreadcrumbs = false + showViews = false + showLikes = false + showTableOfContents = true + groupByYear = false + cardView = false + cardViewScreenWidth = false + +[firebase] + # apiKey = "XXXXXX" + # authDomain = "XXXXXX" + # projectId = "XXXXXX" + # storageBucket = "XXXXXX" + # messagingSenderId = "XXXXXX" + # appId = "XXXXXX" + # measurementId = "XXXXXX" + +[fathomAnalytics] + # site = "ABC12345" + # domain = "llama.yoursite.com" + +[umamiAnalytics] + # websiteid = "ABC12345" + # domain = "llama.yoursite.com" + +[buymeacoffee] + # identifier = "" + # globalWidget = true + # globalWidgetMessage = "Hello" + # globalWidgetColor = "#FFDD00" + # globalWidgetPosition = "Right" + +[verification] + # google = "" + # bing = "" + # pinterest = "" + # yandex = "" diff --git a/content/about/index.md b/content/about/index.md new file mode 100644 index 0000000..831e9ec --- /dev/null +++ b/content/about/index.md @@ -0,0 +1,15 @@ ++++ +title = "about" +author = ["santi"] +lastmod = 2024-05-01T11:53:23-03:00 +draft = false ++++ + +i'm leonardo santiago, a software engineer based in brazil. my interests are in compiler design, programming tools (emacs) and functional programming, usually dabbliing in related topics too. i'm most confortable in nix and rust, but i know a fair share of other languages. + +currently, software engineer @ [Mixrank](https://mixrank.com). + +this blog was built using [hugo](https://github.com/gohugoio/hugo), and it's source code is openly available here: +{{< github repo="o-santi/nixos" >}} + +you can find me at: [{{< icon "email" >}}](mailto:[email protected]) [{{< icon "linkedin" >}}](https://www.linkedin.com/in/leonardo-ribeiro-santiago/) [{{< icon "github" >}}](https://github.com/o-santi) [{{< icon "telegram" >}}](https://t.me/osanti4) [{{< icon "twitter" >}}](https://twitter.com/o_santi_) diff --git a/content/index.md b/content/index.md new file mode 100644 index 0000000..9e4122e --- /dev/null +++ b/content/index.md @@ -0,0 +1,10 @@ ++++ +title = "lowest case" +author = ["santi"] +lastmod = 2024-05-01T11:53:23-03:00 +draft = false ++++ + +a lower case only blog, purely for aesthetics. + +here I talk about discrete mathematics (mostly computer science), including compilers, language theory, type theory, computability theory, software correctness, formal verification, and any other (entirely theoretical almost non-applicable) nerd topic you can think of. diff --git a/content/posts/.#correctness-is-all-you-need.md b/content/posts/.#correctness-is-all-you-need.md new file mode 120000 index 0000000..0aea4a6 --- /dev/null +++ b/content/posts/.#correctness-is-all-you-need.md @@ -0,0 +1 @@ [email protected]:1715192908
\ No newline at end of file diff --git a/content/posts/correctness-is-all-you-need.md b/content/posts/correctness-is-all-you-need.md new file mode 100644 index 0000000..20ded9a --- /dev/null +++ b/content/posts/correctness-is-all-you-need.md @@ -0,0 +1,32 @@ ++++ +title = "correctness is all you need" +author = ["santi"] +lastmod = 2024-05-09T23:35:32-03:00 +tags = ["coq", "rust"] +draft = false ++++ + +```python +>>> 0.1 + 0.2 +0.30000000000000004 +``` + +which of course is an annoying encounter for the unitiated in floats, but there's a much bigger problem, that usually isn't noticed at all until much later, that float addition itself isn't even associative: + +```python +>>> (0.1 + 0.2) + 0.3 +0.6000000000000001 +>>> 0.1 + (0.2 + 0.3) +0.6 +>>> 0.1 + (0.2 + 0.3) == (0.1 + 0.2) + 0.3 +False +>>> +``` + +and this is a problem, because associativity is a big underlying assumption that we commonly have for numbers, when, for example, summing a list in reverse. other common pitfalls include: + +- not all numbers have an additive inverse, ie. for some number `n`, `n + (-n) != n`. +- not all numbers different than 0 have a multiplicative inverse, ie. for some number `n`, `n / n != 1`. +- addition is not commutative, ie. for numbers `a` `b`, `a + b != b + a`. + +and the list goes you on, you get the idea. this usually isn't thought of the main problems in diff --git a/curriculum/answer.org b/curriculum/answer.org new file mode 100644 index 0000000..84bf413 --- /dev/null +++ b/curriculum/answer.org @@ -0,0 +1,101 @@ +#+TITLE: Rust Engineering Lead +#+AUTHOR: Leonardo Ribeiro Santiago (120036072) +#+OPTIONS: toc:nil date:nil +#+LATEX_HEADER: \usepackage[portuguese]{babel} + +* Engineering experience +** Describe a skill or knowledge you acquired recently that has been impactful for you. Why did you make this investment? What has the outcome been? +I've been investing the last year to learning NixOS, and nix systems (especially flakes) in general, and it honestly has paid off so much. As everyone says, it's a technology with a very steep learning curve, as the documentation is sparse and most of the times outdated, and to get up to date info you almost always need to look at the source code. + +Still, nixpgks is amazing and been able to provide me with never breaking software and fearless upgrades, so that I can confidently keep my machines up to date. Nowadays I use it both in my main machine and in my laptop, using different configs derived from the same flake (sharing almost everything). + +** What new skill would you like to learn? Why do you think this is important or timely or interesting? Why do you think you will be good at it? + +NixOS got me very interested in the DevOps field, as I find it very good at managing multiple computers' configurations and setups. I also think I'm a good fit for that side of programming, as it usually requires a very rich understanding of linux, as well as integration between different systems. + +** What kinds of software projects have you worked on before? Which operating systems, development environments, languages, databases? + +Professionally, I daily deal with Python, Rust, PostgreSQL and Nix (and NixOS). In the past I've also worked in other languages, such as Haskell, a fair bit of Javascript, LaTex and XML, and C. For some smaller projects I've interacted with OCaml (built my old blog generator from scratch on it), Coq and Lean (proof assistants), common-lisp (for the NES emulator) and emacs lisp (daily). As far as operating systems go, I've started on WSL, then quickly hopped on Ubuntu, had some graphics card drivers issues, hopped to Arch linux, also had driver issues, hopped on to Manjaro, suffered from the same issues, then back to windows for a while where my laptop worked. Last year I decided to go full time on NixOS, and I've been happily using it ever since. + +** Why Rust? What is your history with this language? + +My history in Rust is very tangled with my history with functional languages in general. I have a very non-standard history, in that I learned functional programming through a friend, while trying to implement a more powerful parser at my first (junior) job. He explained to me about parser combinators and introduced me to the language he was working on, called Kind. I loved programming in Kind, as it's syntax was very much javascript like (on purpose) but it was dependently typed (used a very simple non-standard theory called self-types). I tried writing a parser to fit for my needs at the time, but I was clearly not knowledgeable enough (and looking back what I was trying to acchieve wasn't even possible). + +Curiously enough, two years later I went to the same company that my friend was working on, and they were using Rust (to build a functional runtime). I had heard it about it by then, and certainly knew a thing or two, but had no experience in it professionally so getting to work with it gave me the same feeling as I had with Kind. It was a very powerful language, with very high performance (which Kind didn't have), and a strict compiler that does not take a whole minute to verify? Neat! I loved it, and started quickly munching through every piece of rust info I could find on the internet: blogs, conference talks (I love seeing those), tutorials, etc. I then learned about how the borrow checker works, why it works, and got even more in love with it, and still to this day I try writing everything I can on it. + +The thing that always makes me motivated to work around Rust is the fact that it makes it possible to make invalid states unrepresentable (which is the whole point of correctness). The prime example to this is the way errors are handled in Go: you return a tuple, with a good value and an error value, and you *must* only set only one of them, while the other is null. This begs for the obvious question: what happens when you set both of them? Most of the time, this leads to undefined behaviour, because often it will rely on the assumption that only one of them is set in the code, but Go *has no way of ensuring that*. Rust on the other hand handles this gracefully by using type variants, so that instead of a tuple containing both, it can be statically asserted that it always returns one of the kind. + +** Would you describe yourself as a high quality coder? Why? + +I think the main quality any serious developer should value the most is correctness, in so far as accurately describing your problem, then accurately describing your algorithm (and how it *always* solve your problem, not /mostly/ or /generally/, *always*), then finally making sure that the code you write implements the algorithm faithfully (possibly making use of proof assistants to verify certain key pro. If code is done this way, thoroughly and paying due diligence, then the resulting product will always be of the highest quality, without a doubt. And I'm a programmer who always strive for doing this process, which makes me a high quality coder. + +Of course, it isn't possible to always strictly adhere to this schedule, be it because of tight business schedules, or maybe your project's ambitions are just too broad to accurately describe every facet in a humans' life span, but I still think that following as much as you can will still get you to a high quality product in the end. + +** Outline your thoughts on open source software development. What is important to get right in open source projects? What open source projects have you worked on? Have you been an open source maintainer, on which projects, and what was your role? + +I value very much open source software, and I try as much as possible to keep my personal projects open source. My NixOS config is the best example, where I openly strived to make it open source, even though I had to keep personal secrets in it. Due to this, I went through a lengthy span of time searching for possible solutions and finally arrived at the current one I use (agenix, where the secrets are encrypted with my systems public ssh keys, and having one private key is enough to decrypt them), and I will always happily share it with everyone, as open source is probably the main reason I know everything that I know today. + +The main thing to get correctly right in open source projects is to have a clear, specified goal that it tries to solve, in order to make it possible to probe whether or not it is in the right direction (which incidentally aligns very well with the Unix philosophy). I believe this to be necessary because projects with very broad ambitions tend to either get everything done in a half baked way or simply to ditch some parts in favor of others, or just to be abandoned altogether due to the sheer complexity. This is further supported by the fact that there are very few everlasting monolythical open source projects, with emacs and the linux kernel being the only ones that come to mind (and both of them have very clear flaws, though I'm much more knowledgeable in emacs). Most successful projects tend then to be done in layers developed separately with different goals, with the best example being the very-common-in-linux hierarchy: kernel -> OS -> window servers -> window managers -> applications, and still composing is a common source of problems (X11 vs wayland). + +Personally, I have contributed to a few open source projects that are not my own, with the biggest one that comes to mind being [[https://github.com/o-santi/nocargo][nocargo]], a rust build tool intended to supersede cargo inside nix, written entirely in nix. It has solves some very clear problems that cargo can't really tackle (while being a rust build tool), like crate level caching (which is the best you can do with rustc, as crates are it's unit of compilation) that are globally shared through different projects, and probably the most important one being clearly expressing dependencies on non-rust software. My role was mostly to extend it's features, because it remained unmantained for almost 2 years, in order to support new cargo features that were breaking compatibility otherwise. Though I got it to a good state (where I use it daily with no problems), I haven't had time to properly merge it to the main branch (neither has oxalica) so it remains an open [[https://github.com/oxalica/nocargo/pull/17][pull request]] to this day. I still intend to finish it once I have more free time. + +** Describe your experience building large systems with many services - web front ends, REST APIs, data stores, event processing and other kinds of integration between components. What are the key things to think about in regard to architecture, maintainability, and reliability in these large systems? + +Working with large systems with many services is my main job at Mixrank. We have a lot of public API's, dozens of databases, client deliveries schemes and most importantly, in-house tooling to dealing with all of the requirements (some of which are open source). + +I believe there are three key facets to think about when building this kind of software, which are clear structure, static checkers (be it compiler, linter or other kind of tools) and good documentation. They are needed to solve the most common source of problems in big systems: the overwhelmingly big context you need to hold in your mind in order to make any simple change. +- Good project structure makes it so that all of your changes are local (they won't break other parts elsewhere) and that you don't need to keep track of multiple places to update (eg. having to update the same address in 7 separate parts of the codebase). +- Static checkers give you confidence to structure code in a way such that preventable mistakes (such as type errors or forgetable edge cases) can be seen before they get to production. +- Good documentation makes information accessible to newcomers and introduces them to the codebase, while also keeping clear what the semantics of certain parts of the code is assumed to be (eg. what does it mean when this field is null in this API call?). + +** How comprehensive would you say your knowledge of a Linux distribution is, from the kernel up? How familiar are you with low-level system architecture, runtimes and Linux distro packaging? How have you gained this knowledge? + +I'd say I'm not that confident at the kernel, since I don't have much experience working with. Though, I have built some low-level systems and runtimes (both my at my previous company and my current one), that give me confidence when interacting with the kernel. In distro packaging, I have a lot of experience in packaging software to NixOS, both because of using it daily to solve my own problems, and to solve needs for my current job. It also gives me a lot of insights into other distros packaging system too (how to do it correctly). + +** Outline your thoughts on quality in software development. What practices are most effective to drive improvements in quality? + +First we must define what quality is: for me, it boils down to two predicates: +1. Predictability, in so far as always doing the same thing with the same input, and having specifiable outputs on different inputs. +2. Reliability, as in it won't break because of unexpected inputs, or strange edge cases that aren't handled well. + +This kind of software quality must strictly come from strict adherence to correctness, as I've answered before. The more you formally specify semantics around your code, the more reliable and predictable it will become, and thus higher the quality. Ideally you'd like your whole software to be a single state machine, which clearly defined transitions for each state; though this isn't always feasible, mostly due to scale. Small scale software can and should be state machines with clear state trasitions - think of rust builder patterns, regexes, parsers and http requests - and composing them simply and correctly is the best way to ensure highest software quality. + +** Outline your thoughts on documentation in large software projects. What practices should teams follow? What are great examples of open source docs? + +I think source code will always be the best documentation. People tend to forget to update documentation (especially in lesser important parts of the project) and it can't be expected to always be updated. Since there's no way to verify that the semantics in the comments will always match the one in the code (and the code being the actual thing that we can verify), we shouldn't realy on it being up to date. + +A good practice is to make documentation automatically generated from source code (and automatically updated by CI), especialely when it can then be indexed later by a searching tool, with the best examples that come to mind being [[https://hoogle.haskell.org/][hoogle]] and rust docs themselves, which optionally let you include comments for functions and type definitions. + +** Outline your thoughts on user experience, usability and design in software. How do you lead teams to deliver outstanding user experience? + +Outstanding user experience always comes from reliability, and making sure that outcomes are clearly defined. Does you software expect a filepath as an input? Then, it must gracefully handle the case where the input is *not* a file path, clearly explaining to the user how to correctly use the software. + +You must also have consistent behavior around your codebase: you either accept relative paths or you don't, throughout your commands/subcommands/inputs, that is, you can't tell the user you expect a certain pattern in input A and then have that same pattern fail in input B. + +** Outline your thoughts on performance in software engineering. How do you ensure that your product is fast? + +Performance always come from good design. There's no such thing as "implement first, optmize later" as it always lead to huge software refactors whenever performance isn't satisfactory enough. One must always predict how certain algorithms can be implemented *correctly* through the designing phase, to then try to predict whether or not the expected performance is going to be satisfactory. + +Sometimes the only way to correctly handle all the inputs is through a slow and memory heavy O(n^5) algorithm. A good engineer should then consider: why is this algorithm so slow? Can I expect it to be faster? Are most cases actually O(n) and only edge cases perform worse? Maybe you can consider limiting your input to only good performing algorithms, and explain to the user that in the edge cases it won't perform so well - or maybe you can outright prohibit the user of inputting these edge cases. + +** Outline your thoughts on security in software engineering. How do you lead your engineers to improve their security posture and awareness? + +To increase security and awareness is to increase understanding around the codebase, mainly around the semantics. Most security mistakes comes from not handling *correctly* (the word I always mention) edge cases in your software be them: +1. unexpected inputs are not correctly handled. +2. null pointer dereference - when you assume some pointer points to valid memory when it really doesn't. +3. out of bounds memory access - when you incorrectly assert the size of the array you're reading from, most common when there are complicated loop relationships in indexes. +4. unexpected semantics in language design - think of mutable default arguments in python, that are a common source of headaches (when someone expects them to be reset every call, but in fact they're shared through multiple calls). +5. wrong ownership semantics - assuming it's fine to modify some non-local variable inside a function (that should not modify it). + +A generally safe language will solve *1*, *2* and *3*, through static types, ~Option~, ~Result~, and bounds checking. A well designed language can also solve *4*. But only Rust can solve *5*, through the complicated analysis of the borrow checker. When using a language that does not solve any of these problems, we then force the programmer to keep these complicated relationships in their head, *at all times*, and it is not reasonable to assume that people won't make mistakes - even the most experienced programmer will spew out a few problems per week. Then, Rust's job on software security is clear: empower people to write correct software, and allow them to focus on actually delivering value (instead of fighting a data race condition). + +Also, I don't think unit testing (or any kind of testing) significantly improve security. Of course, in dynamic languages, where static analyzers are hard to get, they are important in assuring that you are not forgeting anything, but I absolutely do not think that adding one thousand tests will solve issues. Issues happen exactly because you did not think of them and instead of adding a test to handle a specific edge case, you're much better off ensuring that your program handles *all* classes of edge cases. Ideally, you'd like to formally specify your software - with the prime example being [[https://compcert.org/man/manual001.html][CompCert]], where reportedly Csmith (a C code fuzzy tester) couldn't find any bugs in the well-verified and checked middle-end (compiler optimizations passes) that other major compilers (gcc, llvm) were infested (300+); the only bugs found in the compiler where in the non-verified front end (the C parser), measly 9 bugs. + +** Outline your thoughts on DevOps and DevSecOps. Which practices are effective, and which are overrated? + +Mostly I think what really makes DevOps efective is being able to *completely* reason about your system before sending them off to the production servers. Being able to describe the exact end state of the software in your system beforehand lets you ensure key properties (eg. user X must always have ssh key Y when condition Z happens). + +This is exactly why I like NixOS: it's whole idea is to separate build from recipe. That is, you're able to describe and instantiate a complete recipe for a system, ranging from installed programs, to users configurations, to installed fonts, to services that must run on startup and their configurations as well, all while using a powerful turing complete language - which is great for structuring your code and making it readable and sharable. + +Then, you are also able to, before installing the whole spec in the machine, inspect the end state of it inside a common repl. For example, lets say you have a list of users with roles and ssh keys, and you'd like to give each user permissions to machines based on their roles. In NixOS, this is as simple as importing the users, doing a common loop (in functional programming, a fold) and then assingning the correct value to each field of the configuration. To ensure you are correct, you're also able to instantiate, and see exactly which users have access to that machine *before installing*, and NixOS ensures you that those are the exact ones that will have access to it. + diff --git a/curriculum/cv.aux b/curriculum/cv.aux new file mode 100644 index 0000000..d94a749 --- /dev/null +++ b/curriculum/cv.aux @@ -0,0 +1,14 @@ +\relax +\providecommand\babel@aux[2]{} +\@nameuse{bbl@beforestart} +\abx@aux@refcontext{ynt/global//global/global} +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\babel@aux{english}{} +\@writefile{toc}{\contentsline {section}{\numberline {1}Work Experience}{1}{section.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}Projects}{1}{section.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3}Education}{2}{section.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}Skills}{2}{section.4}\protected@file@percent } +\abx@aux@read@bbl@mdfivesum{nobblfile} +\gdef \@abspage@last{2} diff --git a/curriculum/cv.bcf b/curriculum/cv.bcf new file mode 100644 index 0000000..694199d --- /dev/null +++ b/curriculum/cv.bcf @@ -0,0 +1,2393 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bcf:controlfile version="3.10" bltxversion="3.19" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- BIBER OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>output_encoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>input_encoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minxrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- BIBLATEX OPTIONS --> + <!-- GLOBAL --> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>extradatecontext</bcf:key> + <bcf:value order="1">labelname</bcf:value> + <bcf:value order="2">labeltitle</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeltitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labeltitlespec</bcf:key> + <bcf:value order="1">shorttitle</bcf:value> + <bcf:value order="2">title</bcf:value> + <bcf:value order="3">maintitle</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeltitleyear</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeldateparts</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labeldatespec</bcf:key> + <bcf:value order="1" type="field">date</bcf:value> + <bcf:value order="2" type="field">year</bcf:value> + <bcf:value order="3" type="field">eventdate</bcf:value> + <bcf:value order="4" type="field">origdate</bcf:value> + <bcf:value order="5" type="field">urldate</bcf:value> + <bcf:value order="6" type="string">nodate</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>julian</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>gregorianstart</bcf:key> + <bcf:value>1582-10-15</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxalphanames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxbibnames</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxcitenames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxsortnames</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minalphanames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minbibnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincitenames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minsortnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>nohashothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>noroman</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>nosortothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>pluralothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skipbib</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skipbiblist</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skiplab</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlocale</bcf:key> + <bcf:value>english</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortingtemplatename</bcf:key> + <bcf:value>ynt</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortsets</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquelist</bcf:key> + <bcf:value>true</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>full</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniqueprimaryauthor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquetitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquebaretitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquework</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useafterword</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useannotator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usebookauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usecommentator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditora</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditorb</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditorc</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useforeword</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useholder</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useintroduction</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenamea</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenameb</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenamec</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useshortauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useshorteditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- online --> + <bcf:options component="biblatex" type="online"> + <bcf:option type="multivalued"> + <bcf:key>extradatecontext</bcf:key> + <bcf:value order="1">labelname</bcf:value> + <bcf:value order="2">labeltitle</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeltitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labeltitlespec</bcf:key> + <bcf:value order="1">shorttitle</bcf:value> + <bcf:value order="2">title</bcf:value> + <bcf:value order="3">maintitle</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeltitleyear</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labeldateparts</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labeldatespec</bcf:key> + <bcf:value order="1" type="field">date</bcf:value> + <bcf:value order="2" type="field">year</bcf:value> + <bcf:value order="3" type="field">eventdate</bcf:value> + <bcf:value order="4" type="field">origdate</bcf:value> + <bcf:value order="5" type="field">urldate</bcf:value> + <bcf:value order="6" type="string">nodate</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxalphanames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxbibnames</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxcitenames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxsortnames</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minalphanames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minbibnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincitenames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minsortnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>nohashothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>noroman</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>nosortothers</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skipbib</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skipbiblist</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>skiplab</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquelist</bcf:key> + <bcf:value>true</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>full</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniqueprimaryauthor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquetitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquebaretitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquework</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useafterword</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useannotator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usebookauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usecommentator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditora</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditorb</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditorc</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useforeword</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useholder</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useintroduction</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenamea</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenameb</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usenamec</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useshortauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useshorteditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- BIBLATEX OPTION SCOPE --> + <bcf:optionscope type="GLOBAL"> + <bcf:option datatype="xml">datamodel</bcf:option> + <bcf:option datatype="xml">labelalphanametemplate</bcf:option> + <bcf:option datatype="xml">labelalphatemplate</bcf:option> + <bcf:option datatype="xml">inheritance</bcf:option> + <bcf:option datatype="xml">translit</bcf:option> + <bcf:option datatype="xml">uniquenametemplate</bcf:option> + <bcf:option datatype="xml">sortingnamekeytemplate</bcf:option> + <bcf:option datatype="xml">sortingtemplate</bcf:option> + <bcf:option datatype="xml">extradatespec</bcf:option> + <bcf:option datatype="xml">extradatecontext</bcf:option> + <bcf:option datatype="xml">labelnamespec</bcf:option> + <bcf:option datatype="xml">labeltitlespec</bcf:option> + <bcf:option datatype="xml">labeldatespec</bcf:option> + <bcf:option datatype="string">controlversion</bcf:option> + <bcf:option datatype="string">alphaothers</bcf:option> + <bcf:option datatype="string">sortalphaothers</bcf:option> + <bcf:option datatype="string">presort</bcf:option> + <bcf:option datatype="string">texencoding</bcf:option> + <bcf:option datatype="string">bibencoding</bcf:option> + <bcf:option datatype="string">sortingtemplatename</bcf:option> + <bcf:option datatype="string">sortlocale</bcf:option> + <bcf:option datatype="string">language</bcf:option> + <bcf:option datatype="string">autolang</bcf:option> + <bcf:option datatype="string">langhook</bcf:option> + <bcf:option datatype="string">indexing</bcf:option> + <bcf:option datatype="string">hyperref</bcf:option> + <bcf:option datatype="string">backrefsetstyle</bcf:option> + <bcf:option datatype="string">block</bcf:option> + <bcf:option datatype="string">pagetracker</bcf:option> + <bcf:option datatype="string">citecounter</bcf:option> + <bcf:option datatype="string">citetracker</bcf:option> + <bcf:option datatype="string">ibidtracker</bcf:option> + <bcf:option datatype="string">idemtracker</bcf:option> + <bcf:option datatype="string">opcittracker</bcf:option> + <bcf:option datatype="string">loccittracker</bcf:option> + <bcf:option datatype="string">labeldate</bcf:option> + <bcf:option datatype="string">labeltime</bcf:option> + <bcf:option datatype="string">dateera</bcf:option> + <bcf:option datatype="string">date</bcf:option> + <bcf:option datatype="string">time</bcf:option> + <bcf:option datatype="string">eventdate</bcf:option> + <bcf:option datatype="string">eventtime</bcf:option> + <bcf:option datatype="string">origdate</bcf:option> + <bcf:option datatype="string">origtime</bcf:option> + <bcf:option datatype="string">urldate</bcf:option> + <bcf:option datatype="string">urltime</bcf:option> + <bcf:option datatype="string">alldatesusetime</bcf:option> + <bcf:option datatype="string">alldates</bcf:option> + <bcf:option datatype="string">alltimes</bcf:option> + <bcf:option datatype="string">gregorianstart</bcf:option> + <bcf:option datatype="string">autocite</bcf:option> + <bcf:option datatype="string">notetype</bcf:option> + <bcf:option datatype="string">uniquelist</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="string">refsection</bcf:option> + <bcf:option datatype="string">refsegment</bcf:option> + <bcf:option datatype="string">citereset</bcf:option> + <bcf:option datatype="string">sortlos</bcf:option> + <bcf:option datatype="string">babel</bcf:option> + <bcf:option datatype="string">datelabel</bcf:option> + <bcf:option datatype="string">backrefstyle</bcf:option> + <bcf:option datatype="string">arxiv</bcf:option> + <bcf:option datatype="boolean">familyinits</bcf:option> + <bcf:option datatype="boolean">giveninits</bcf:option> + <bcf:option datatype="boolean">prefixinits</bcf:option> + <bcf:option datatype="boolean">suffixinits</bcf:option> + <bcf:option datatype="boolean">useafterword</bcf:option> + <bcf:option datatype="boolean">useannotator</bcf:option> + <bcf:option datatype="boolean">useauthor</bcf:option> + <bcf:option datatype="boolean">usebookauthor</bcf:option> + <bcf:option datatype="boolean">usecommentator</bcf:option> + <bcf:option datatype="boolean">useeditor</bcf:option> + <bcf:option datatype="boolean">useeditora</bcf:option> + <bcf:option datatype="boolean">useeditorb</bcf:option> + <bcf:option datatype="boolean">useeditorc</bcf:option> + <bcf:option datatype="boolean">useforeword</bcf:option> + <bcf:option datatype="boolean">useholder</bcf:option> + <bcf:option datatype="boolean">useintroduction</bcf:option> + <bcf:option datatype="boolean">usenamea</bcf:option> + <bcf:option datatype="boolean">usenameb</bcf:option> + <bcf:option datatype="boolean">usenamec</bcf:option> + <bcf:option datatype="boolean">usetranslator</bcf:option> + <bcf:option datatype="boolean">useshortauthor</bcf:option> + <bcf:option datatype="boolean">useshorteditor</bcf:option> + <bcf:option datatype="boolean">debug</bcf:option> + <bcf:option datatype="boolean">loadfiles</bcf:option> + <bcf:option datatype="boolean">safeinputenc</bcf:option> + <bcf:option datatype="boolean">sortcase</bcf:option> + <bcf:option datatype="boolean">sortupper</bcf:option> + <bcf:option datatype="boolean">terseinits</bcf:option> + <bcf:option datatype="boolean">abbreviate</bcf:option> + <bcf:option datatype="boolean">dateabbrev</bcf:option> + <bcf:option datatype="boolean">clearlang</bcf:option> + <bcf:option datatype="boolean">sortcites</bcf:option> + <bcf:option datatype="boolean">sortsets</bcf:option> + <bcf:option datatype="boolean">backref</bcf:option> + <bcf:option datatype="boolean">backreffloats</bcf:option> + <bcf:option datatype="boolean">trackfloats</bcf:option> + <bcf:option datatype="boolean">parentracker</bcf:option> + <bcf:option datatype="boolean">labeldateusetime</bcf:option> + <bcf:option datatype="boolean">datecirca</bcf:option> + <bcf:option datatype="boolean">dateuncertain</bcf:option> + <bcf:option datatype="boolean">dateusetime</bcf:option> + <bcf:option datatype="boolean">eventdateusetime</bcf:option> + <bcf:option datatype="boolean">origdateusetime</bcf:option> + <bcf:option datatype="boolean">urldateusetime</bcf:option> + <bcf:option datatype="boolean">julian</bcf:option> + <bcf:option datatype="boolean">datezeros</bcf:option> + <bcf:option datatype="boolean">timezeros</bcf:option> + <bcf:option datatype="boolean">timezones</bcf:option> + <bcf:option datatype="boolean">seconds</bcf:option> + <bcf:option datatype="boolean">autopunct</bcf:option> + <bcf:option datatype="boolean">punctfont</bcf:option> + <bcf:option datatype="boolean">labelnumber</bcf:option> + <bcf:option datatype="boolean">labelalpha</bcf:option> + <bcf:option datatype="boolean">labeltitle</bcf:option> + <bcf:option datatype="boolean">labeltitleyear</bcf:option> + <bcf:option datatype="boolean">labeldateparts</bcf:option> + <bcf:option datatype="boolean">pluralothers</bcf:option> + <bcf:option datatype="boolean">nohashothers</bcf:option> + <bcf:option datatype="boolean">nosortothers</bcf:option> + <bcf:option datatype="boolean">noroman</bcf:option> + <bcf:option datatype="boolean">singletitle</bcf:option> + <bcf:option datatype="boolean">uniquetitle</bcf:option> + <bcf:option datatype="boolean">uniquebaretitle</bcf:option> + <bcf:option datatype="boolean">uniquework</bcf:option> + <bcf:option datatype="boolean">uniqueprimaryauthor</bcf:option> + <bcf:option datatype="boolean">defernumbers</bcf:option> + <bcf:option datatype="boolean">locallabelwidth</bcf:option> + <bcf:option datatype="boolean">bibwarn</bcf:option> + <bcf:option datatype="boolean">useprefix</bcf:option> + <bcf:option datatype="boolean">skipbib</bcf:option> + <bcf:option datatype="boolean">skipbiblist</bcf:option> + <bcf:option datatype="boolean">skiplab</bcf:option> + <bcf:option datatype="boolean">dataonly</bcf:option> + <bcf:option datatype="boolean">defernums</bcf:option> + <bcf:option datatype="boolean">firstinits</bcf:option> + <bcf:option datatype="boolean">sortfirstinits</bcf:option> + <bcf:option datatype="boolean">sortgiveninits</bcf:option> + <bcf:option datatype="boolean">labelyear</bcf:option> + <bcf:option datatype="boolean">isbn</bcf:option> + <bcf:option datatype="boolean">url</bcf:option> + <bcf:option datatype="boolean">doi</bcf:option> + <bcf:option datatype="boolean">eprint</bcf:option> + <bcf:option datatype="boolean">related</bcf:option> + <bcf:option datatype="boolean">dashed</bcf:option> + <bcf:option datatype="boolean">mergedate</bcf:option> + <bcf:option datatype="boolean">bibtexcaseprotection</bcf:option> + <bcf:option datatype="integer">mincrossrefs</bcf:option> + <bcf:option datatype="integer">minxrefs</bcf:option> + <bcf:option datatype="integer">maxnames</bcf:option> + <bcf:option datatype="integer">minnames</bcf:option> + <bcf:option datatype="integer">maxbibnames</bcf:option> + <bcf:option datatype="integer">minbibnames</bcf:option> + <bcf:option datatype="integer">maxcitenames</bcf:option> + <bcf:option datatype="integer">mincitenames</bcf:option> + <bcf:option datatype="integer">maxsortnames</bcf:option> + <bcf:option datatype="integer">minsortnames</bcf:option> + <bcf:option datatype="integer">maxitems</bcf:option> + <bcf:option datatype="integer">minitems</bcf:option> + <bcf:option datatype="integer">maxalphanames</bcf:option> + <bcf:option datatype="integer">minalphanames</bcf:option> + <bcf:option datatype="integer">maxparens</bcf:option> + <bcf:option datatype="integer">dateeraauto</bcf:option> + </bcf:optionscope> + <bcf:optionscope type="ENTRYTYPE"> + <bcf:option datatype="string">alphaothers</bcf:option> + <bcf:option datatype="string">sortalphaothers</bcf:option> + <bcf:option datatype="string">presort</bcf:option> + <bcf:option datatype="string">indexing</bcf:option> + <bcf:option datatype="string">citetracker</bcf:option> + <bcf:option datatype="string">ibidtracker</bcf:option> + <bcf:option datatype="string">idemtracker</bcf:option> + <bcf:option datatype="string">opcittracker</bcf:option> + <bcf:option datatype="string">loccittracker</bcf:option> + <bcf:option datatype="string">uniquelist</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="boolean">familyinits</bcf:option> + <bcf:option datatype="boolean">giveninits</bcf:option> + <bcf:option datatype="boolean">prefixinits</bcf:option> + <bcf:option datatype="boolean">suffixinits</bcf:option> + <bcf:option datatype="boolean">useafterword</bcf:option> + <bcf:option datatype="boolean">useannotator</bcf:option> + <bcf:option datatype="boolean">useauthor</bcf:option> + <bcf:option datatype="boolean">usebookauthor</bcf:option> + <bcf:option datatype="boolean">usecommentator</bcf:option> + <bcf:option datatype="boolean">useeditor</bcf:option> + <bcf:option datatype="boolean">useeditora</bcf:option> + <bcf:option datatype="boolean">useeditorb</bcf:option> + <bcf:option datatype="boolean">useeditorc</bcf:option> + <bcf:option datatype="boolean">useforeword</bcf:option> + <bcf:option datatype="boolean">useholder</bcf:option> + <bcf:option datatype="boolean">useintroduction</bcf:option> + <bcf:option datatype="boolean">usenamea</bcf:option> + <bcf:option datatype="boolean">usenameb</bcf:option> + <bcf:option datatype="boolean">usenamec</bcf:option> + <bcf:option datatype="boolean">usetranslator</bcf:option> + <bcf:option datatype="boolean">useshortauthor</bcf:option> + <bcf:option datatype="boolean">useshorteditor</bcf:option> + <bcf:option datatype="boolean">terseinits</bcf:option> + <bcf:option datatype="boolean">abbreviate</bcf:option> + <bcf:option datatype="boolean">dateabbrev</bcf:option> + <bcf:option datatype="boolean">clearlang</bcf:option> + <bcf:option datatype="boolean">labelnumber</bcf:option> + <bcf:option datatype="boolean">labelalpha</bcf:option> + <bcf:option datatype="boolean">labeltitle</bcf:option> + <bcf:option datatype="boolean">labeltitleyear</bcf:option> + <bcf:option datatype="boolean">labeldateparts</bcf:option> + <bcf:option datatype="boolean">nohashothers</bcf:option> + <bcf:option datatype="boolean">nosortothers</bcf:option> + <bcf:option datatype="boolean">noroman</bcf:option> + <bcf:option datatype="boolean">singletitle</bcf:option> + <bcf:option datatype="boolean">uniquetitle</bcf:option> + <bcf:option datatype="boolean">uniquebaretitle</bcf:option> + <bcf:option datatype="boolean">uniquework</bcf:option> + <bcf:option datatype="boolean">uniqueprimaryauthor</bcf:option> + <bcf:option datatype="boolean">useprefix</bcf:option> + <bcf:option datatype="boolean">skipbib</bcf:option> + <bcf:option datatype="boolean">skipbiblist</bcf:option> + <bcf:option datatype="boolean">skiplab</bcf:option> + <bcf:option datatype="boolean">dataonly</bcf:option> + <bcf:option datatype="boolean">skiplos</bcf:option> + <bcf:option datatype="boolean">labelyear</bcf:option> + <bcf:option datatype="boolean">isbn</bcf:option> + <bcf:option datatype="boolean">url</bcf:option> + <bcf:option datatype="boolean">doi</bcf:option> + <bcf:option datatype="boolean">eprint</bcf:option> + <bcf:option datatype="boolean">related</bcf:option> + <bcf:option datatype="boolean">mergedate</bcf:option> + <bcf:option datatype="boolean">bibtexcaseprotection</bcf:option> + <bcf:option datatype="xml">labelalphatemplate</bcf:option> + <bcf:option datatype="xml">translit</bcf:option> + <bcf:option datatype="xml">sortexclusion</bcf:option> + <bcf:option datatype="xml">sortinclusion</bcf:option> + <bcf:option datatype="xml">extradatecontext</bcf:option> + <bcf:option datatype="xml">labelnamespec</bcf:option> + <bcf:option datatype="xml">labeltitlespec</bcf:option> + <bcf:option datatype="xml">labeldatespec</bcf:option> + <bcf:option datatype="integer">maxnames</bcf:option> + <bcf:option datatype="integer">minnames</bcf:option> + <bcf:option datatype="integer">maxbibnames</bcf:option> + <bcf:option datatype="integer">minbibnames</bcf:option> + <bcf:option datatype="integer">maxcitenames</bcf:option> + <bcf:option datatype="integer">mincitenames</bcf:option> + <bcf:option datatype="integer">maxsortnames</bcf:option> + <bcf:option datatype="integer">minsortnames</bcf:option> + <bcf:option datatype="integer">maxitems</bcf:option> + <bcf:option datatype="integer">minitems</bcf:option> + <bcf:option datatype="integer">maxalphanames</bcf:option> + <bcf:option datatype="integer">minalphanames</bcf:option> + </bcf:optionscope> + <bcf:optionscope type="ENTRY"> + <bcf:option datatype="string">noinherit</bcf:option> + <bcf:option datatype="string" backendin="sortingnamekeytemplatename,uniquenametemplatename,labelalphanametemplatename">nametemplates</bcf:option> + <bcf:option datatype="string" backendout="1">labelalphanametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">uniquenametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">sortingnamekeytemplatename</bcf:option> + <bcf:option datatype="string">presort</bcf:option> + <bcf:option datatype="string" backendout="1">indexing</bcf:option> + <bcf:option datatype="string" backendout="1">citetracker</bcf:option> + <bcf:option datatype="string" backendout="1">ibidtracker</bcf:option> + <bcf:option datatype="string" backendout="1">idemtracker</bcf:option> + <bcf:option datatype="string" backendout="1">opcittracker</bcf:option> + <bcf:option datatype="string" backendout="1">loccittracker</bcf:option> + <bcf:option datatype="string">uniquelist</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="boolean" backendout="1">familyinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">giveninits</bcf:option> + <bcf:option datatype="boolean" backendout="1">prefixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">suffixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">useafterword</bcf:option> + <bcf:option datatype="boolean" backendout="1">useannotator</bcf:option> + <bcf:option datatype="boolean" backendout="1">useauthor</bcf:option> + <bcf:option datatype="boolean" backendout="1">usebookauthor</bcf:option> + <bcf:option datatype="boolean" backendout="1">usecommentator</bcf:option> + <bcf:option datatype="boolean" backendout="1">useeditor</bcf:option> + <bcf:option datatype="boolean" backendout="1">useeditora</bcf:option> + <bcf:option datatype="boolean" backendout="1">useeditorb</bcf:option> + <bcf:option datatype="boolean" backendout="1">useeditorc</bcf:option> + <bcf:option datatype="boolean" backendout="1">useforeword</bcf:option> + <bcf:option datatype="boolean" backendout="1">useholder</bcf:option> + <bcf:option datatype="boolean" backendout="1">useintroduction</bcf:option> + <bcf:option datatype="boolean" backendout="1">usenamea</bcf:option> + <bcf:option datatype="boolean" backendout="1">usenameb</bcf:option> + <bcf:option datatype="boolean" backendout="1">usenamec</bcf:option> + <bcf:option datatype="boolean" backendout="1">usetranslator</bcf:option> + <bcf:option datatype="boolean" backendout="1">useshortauthor</bcf:option> + <bcf:option datatype="boolean" backendout="1">useshorteditor</bcf:option> + <bcf:option datatype="boolean" backendout="1">terseinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">abbreviate</bcf:option> + <bcf:option datatype="boolean" backendout="1">dateabbrev</bcf:option> + <bcf:option datatype="boolean" backendout="1">clearlang</bcf:option> + <bcf:option datatype="boolean" backendout="1">labelnumber</bcf:option> + <bcf:option datatype="boolean" backendout="1">labelalpha</bcf:option> + <bcf:option datatype="boolean" backendout="1">labeltitle</bcf:option> + <bcf:option datatype="boolean" backendout="1">labeltitleyear</bcf:option> + <bcf:option datatype="boolean" backendout="1">labeldateparts</bcf:option> + <bcf:option datatype="boolean">nohashothers</bcf:option> + <bcf:option datatype="boolean">nosortothers</bcf:option> + <bcf:option datatype="boolean">noroman</bcf:option> + <bcf:option datatype="boolean">singletitle</bcf:option> + <bcf:option datatype="boolean">uniquetitle</bcf:option> + <bcf:option datatype="boolean">uniquebaretitle</bcf:option> + <bcf:option datatype="boolean">uniquework</bcf:option> + <bcf:option datatype="boolean">uniqueprimaryauthor</bcf:option> + <bcf:option datatype="boolean" backendout="1">useprefix</bcf:option> + <bcf:option datatype="boolean" backendout="1">skipbib</bcf:option> + <bcf:option datatype="boolean" backendout="1">skipbiblist</bcf:option> + <bcf:option datatype="boolean" backendout="1">skiplab</bcf:option> + <bcf:option datatype="boolean" backendin="uniquename=false,uniquelist=false,skipbib=true,skipbiblist=true,skiplab=true">dataonly</bcf:option> + <bcf:option datatype="boolean" backendout="1">skiplos</bcf:option> + <bcf:option datatype="boolean" backendout="1">isbn</bcf:option> + <bcf:option datatype="boolean" backendout="1">url</bcf:option> + <bcf:option datatype="boolean" backendout="1">doi</bcf:option> + <bcf:option datatype="boolean" backendout="1">eprint</bcf:option> + <bcf:option datatype="boolean" backendout="1">related</bcf:option> + <bcf:option datatype="boolean" backendout="1">mergedate</bcf:option> + <bcf:option datatype="boolean" backendout="1">bibtexcaseprotection</bcf:option> + <bcf:option datatype="integer" backendin="maxcitenames,maxbibnames,maxsortnames">maxnames</bcf:option> + <bcf:option datatype="integer" backendin="mincitenames,minbibnames,minsortnames">minnames</bcf:option> + <bcf:option datatype="integer" backendout="1">maxbibnames</bcf:option> + <bcf:option datatype="integer" backendout="1">minbibnames</bcf:option> + <bcf:option datatype="integer" backendout="1">maxcitenames</bcf:option> + <bcf:option datatype="integer" backendout="1">mincitenames</bcf:option> + <bcf:option datatype="integer" backendout="1">maxsortnames</bcf:option> + <bcf:option datatype="integer" backendout="1">minsortnames</bcf:option> + <bcf:option datatype="integer" backendout="1">maxitems</bcf:option> + <bcf:option datatype="integer" backendout="1">minitems</bcf:option> + <bcf:option datatype="integer" backendout="1">maxalphanames</bcf:option> + <bcf:option datatype="integer" backendout="1">minalphanames</bcf:option> + </bcf:optionscope> + <bcf:optionscope type="NAMELIST"> + <bcf:option datatype="string" backendin="sortingnamekeytemplatename,uniquenametemplatename,labelalphanametemplatename">nametemplates</bcf:option> + <bcf:option datatype="string" backendout="1">labelalphanametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">uniquenametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">sortingnamekeytemplatename</bcf:option> + <bcf:option datatype="string">uniquelist</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="boolean" backendout="1">familyinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">giveninits</bcf:option> + <bcf:option datatype="boolean" backendout="1">prefixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">suffixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">terseinits</bcf:option> + <bcf:option datatype="boolean">nohashothers</bcf:option> + <bcf:option datatype="boolean">nosortothers</bcf:option> + <bcf:option datatype="boolean" backendout="1">useprefix</bcf:option> + </bcf:optionscope> + <bcf:optionscope type="NAME"> + <bcf:option datatype="string" backendin="sortingnamekeytemplatename,uniquenametemplatename,labelalphanametemplatename">nametemplates</bcf:option> + <bcf:option datatype="string" backendout="1">labelalphanametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">uniquenametemplatename</bcf:option> + <bcf:option datatype="string" backendout="1">sortingnamekeytemplatename</bcf:option> + <bcf:option datatype="string">uniquename</bcf:option> + <bcf:option datatype="boolean" backendout="1">familyinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">giveninits</bcf:option> + <bcf:option datatype="boolean" backendout="1">prefixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">suffixinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">terseinits</bcf:option> + <bcf:option datatype="boolean" backendout="1">useprefix</bcf:option> + </bcf:optionscope> + <!-- DATAFIELDSETS --> + <bcf:datafieldset name="setnames"> + <bcf:member datatype="name" fieldtype="list"/> + </bcf:datafieldset> + <bcf:datafieldset name="settitles"> + <bcf:member field="title"/> + <bcf:member field="booktitle"/> + <bcf:member field="eventtitle"/> + <bcf:member field="issuetitle"/> + <bcf:member field="journaltitle"/> + <bcf:member field="maintitle"/> + <bcf:member field="origtitle"/> + </bcf:datafieldset> + <!-- SOURCEMAP --> + <bcf:sourcemap> + <bcf:maps datatype="bibtex" level="driver"> + <bcf:map> + <bcf:map_step map_field_set="day" map_null="1"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_type_source="conference" map_type_target="inproceedings"/> + <bcf:map_step map_type_source="electronic" map_type_target="online"/> + <bcf:map_step map_type_source="www" map_type_target="online"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_type_source="mastersthesis" map_type_target="thesis" map_final="1"/> + <bcf:map_step map_field_set="type" map_field_value="mathesis"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_type_source="phdthesis" map_type_target="thesis" map_final="1"/> + <bcf:map_step map_field_set="type" map_field_value="phdthesis"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_type_source="techreport" map_type_target="report" map_final="1"/> + <bcf:map_step map_field_set="type" map_field_value="techreport"/> + </bcf:map> + <bcf:map> + <bcf:map_step map_field_source="hyphenation" map_field_target="langid"/> + <bcf:map_step map_field_source="address" map_field_target="location"/> + <bcf:map_step map_field_source="school" map_field_target="institution"/> + <bcf:map_step map_field_source="annote" map_field_target="annotation"/> + <bcf:map_step map_field_source="archiveprefix" map_field_target="eprinttype"/> + <bcf:map_step map_field_source="journal" map_field_target="journaltitle"/> + <bcf:map_step map_field_source="primaryclass" map_field_target="eprintclass"/> + <bcf:map_step map_field_source="key" map_field_target="sortkey"/> + <bcf:map_step map_field_source="pdf" map_field_target="file"/> + </bcf:map> + </bcf:maps> + </bcf:sourcemap> + <!-- LABELALPHA NAME TEMPLATE --> + <bcf:labelalphanametemplate name="global"> + <bcf:namepart order="1" use="1" pre="1" substring_width="1" substring_compound="1">prefix</bcf:namepart> + <bcf:namepart order="2">family</bcf:namepart> + </bcf:labelalphanametemplate> + <!-- LABELALPHA TEMPLATE --> + <bcf:labelalphatemplate type="global"> + <bcf:labelelement order="1"> + <bcf:labelpart final="1">shorthand</bcf:labelpart> + <bcf:labelpart>label</bcf:labelpart> + <bcf:labelpart substring_width="3" substring_side="left" ifnames="1">labelname</bcf:labelpart> + <bcf:labelpart substring_width="1" substring_side="left">labelname</bcf:labelpart> + </bcf:labelelement> + <bcf:labelelement order="2"> + <bcf:labelpart substring_width="2" substring_side="right">year</bcf:labelpart> + </bcf:labelelement> + </bcf:labelalphatemplate> + <!-- EXTRADATE --> + <bcf:extradatespec> + <bcf:scope> + <bcf:field order="1">labelyear</bcf:field> + <bcf:field order="2">year</bcf:field> + </bcf:scope> + </bcf:extradatespec> + <!-- INHERITANCE --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="reference"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="inreference"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:type_pair source="mvreference" target="collection"/> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="incollection"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:type_pair source="mvreference" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="inreference"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:type_pair source="reference" target="incollection"/> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:type_pair source="reference" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + <bcf:field source="titleaddon" target="journaltitleaddon"/> + <bcf:field source="shorttitle" skip="true"/> + <bcf:field source="sorttitle" skip="true"/> + <bcf:field source="indextitle" skip="true"/> + <bcf:field source="indexsorttitle" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="*" target="*"/> + <bcf:field source="ids" skip="true"/> + <bcf:field source="crossref" skip="true"/> + <bcf:field source="xref" skip="true"/> + <bcf:field source="entryset" skip="true"/> + <bcf:field source="entrysubtype" skip="true"/> + <bcf:field source="execute" skip="true"/> + <bcf:field source="label" skip="true"/> + <bcf:field source="options" skip="true"/> + <bcf:field source="presort" skip="true"/> + <bcf:field source="related" skip="true"/> + <bcf:field source="relatedoptions" skip="true"/> + <bcf:field source="relatedstring" skip="true"/> + <bcf:field source="relatedtype" skip="true"/> + <bcf:field source="shorthand" skip="true"/> + <bcf:field source="shorthandintro" skip="true"/> + <bcf:field source="sortkey" skip="true"/> + </bcf:inherit> + </bcf:inheritance> + <!-- UNIQUENAME TEMPLATES --> + <bcf:uniquenametemplate name="global"> + <bcf:namepart order="1" use="1" base="1">prefix</bcf:namepart> + <bcf:namepart order="2" base="1">family</bcf:namepart> + <bcf:namepart order="3">given</bcf:namepart> + </bcf:uniquenametemplate> + <!-- SORTING NAME KEY TEMPLATES --> + <bcf:sortingnamekeytemplate name="global" visibility="sort"> + <bcf:keypart order="1"> + <bcf:part type="namepart" order="1" use="1">prefix</bcf:part> + <bcf:part type="namepart" order="2">family</bcf:part> + </bcf:keypart> + <bcf:keypart order="2"> + <bcf:part type="namepart" order="1">given</bcf:part> + </bcf:keypart> + <bcf:keypart order="3"> + <bcf:part type="namepart" order="1">suffix</bcf:part> + </bcf:keypart> + <bcf:keypart order="4"> + <bcf:part type="namepart" order="1" use="0">prefix</bcf:part> + </bcf:keypart> + </bcf:sortingnamekeytemplate> + <bcf:presort>mm</bcf:presort> + <!-- DATA MODEL --> + <bcf:datamodel> + <bcf:constants> + <bcf:constant type="list" name="gender">sf,sm,sn,pf,pm,pn,pp</bcf:constant> + <bcf:constant type="list" name="nameparts">family,given,prefix,suffix</bcf:constant> + <bcf:constant type="list" name="optiondatatypes">boolean,integer,string,xml</bcf:constant> + <bcf:constant type="list" name="multiscriptforms">default,transliteration,transcription,translation</bcf:constant> + </bcf:constants> + <bcf:entrytypes> + <bcf:entrytype>article</bcf:entrytype> + <bcf:entrytype>artwork</bcf:entrytype> + <bcf:entrytype>audio</bcf:entrytype> + <bcf:entrytype>bibnote</bcf:entrytype> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>commentary</bcf:entrytype> + <bcf:entrytype>customa</bcf:entrytype> + <bcf:entrytype>customb</bcf:entrytype> + <bcf:entrytype>customc</bcf:entrytype> + <bcf:entrytype>customd</bcf:entrytype> + <bcf:entrytype>custome</bcf:entrytype> + <bcf:entrytype>customf</bcf:entrytype> + <bcf:entrytype>dataset</bcf:entrytype> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:entrytype>image</bcf:entrytype> + <bcf:entrytype>jurisdiction</bcf:entrytype> + <bcf:entrytype>legal</bcf:entrytype> + <bcf:entrytype>legislation</bcf:entrytype> + <bcf:entrytype>letter</bcf:entrytype> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>movie</bcf:entrytype> + <bcf:entrytype>music</bcf:entrytype> + <bcf:entrytype>mvcollection</bcf:entrytype> + <bcf:entrytype>mvreference</bcf:entrytype> + <bcf:entrytype>mvproceedings</bcf:entrytype> + <bcf:entrytype>mvbook</bcf:entrytype> + <bcf:entrytype>online</bcf:entrytype> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:entrytype>performance</bcf:entrytype> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>report</bcf:entrytype> + <bcf:entrytype>review</bcf:entrytype> + <bcf:entrytype>set</bcf:entrytype> + <bcf:entrytype>software</bcf:entrytype> + <bcf:entrytype>standard</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>suppperiodical</bcf:entrytype> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:entrytype>video</bcf:entrytype> + <bcf:entrytype skip_output="true">xdata</bcf:entrytype> + </bcf:entrytypes> + <bcf:fields> + <bcf:field fieldtype="field" datatype="integer">sortyear</bcf:field> + <bcf:field fieldtype="field" datatype="integer">volume</bcf:field> + <bcf:field fieldtype="field" datatype="integer">volumes</bcf:field> + <bcf:field fieldtype="field" datatype="literal">abstract</bcf:field> + <bcf:field fieldtype="field" datatype="literal">addendum</bcf:field> + <bcf:field fieldtype="field" datatype="literal">annotation</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booksubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">chapter</bcf:field> + <bcf:field fieldtype="field" datatype="literal">edition</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eid</bcf:field> + <bcf:field fieldtype="field" datatype="literal">entrysubtype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprintclass</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprinttype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventtitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">gender</bcf:field> + <bcf:field fieldtype="field" datatype="literal">howpublished</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indexsorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indextitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isan</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isbn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">ismn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isrn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issue</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuesubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuetitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuetitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">iswc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journalsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journaltitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journaltitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">label</bcf:field> + <bcf:field fieldtype="field" datatype="literal">langid</bcf:field> + <bcf:field fieldtype="field" datatype="literal">langidopts</bcf:field> + <bcf:field fieldtype="field" datatype="literal">library</bcf:field> + <bcf:field fieldtype="field" datatype="literal">mainsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">nameaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">note</bcf:field> + <bcf:field fieldtype="field" datatype="literal">number</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">pagetotal</bcf:field> + <bcf:field fieldtype="field" datatype="literal">part</bcf:field> + <bcf:field fieldtype="field" datatype="literal">relatedstring</bcf:field> + <bcf:field fieldtype="field" datatype="literal">relatedtype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">reprinttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">series</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorthandintro</bcf:field> + <bcf:field fieldtype="field" datatype="literal">subtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">title</bcf:field> + <bcf:field fieldtype="field" datatype="literal">titleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usera</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userb</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userd</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usere</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userf</bcf:field> + <bcf:field fieldtype="field" datatype="literal">venue</bcf:field> + <bcf:field fieldtype="field" datatype="literal">version</bcf:field> + <bcf:field fieldtype="field" datatype="literal" label="true">shorthand</bcf:field> + <bcf:field fieldtype="field" datatype="literal" label="true">shortjournal</bcf:field> + <bcf:field fieldtype="field" datatype="literal" label="true">shortseries</bcf:field> + <bcf:field fieldtype="field" datatype="literal" label="true">shorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortshorthand</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortkey</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">presort</bcf:field> + <bcf:field fieldtype="list" datatype="literal">institution</bcf:field> + <bcf:field fieldtype="list" datatype="literal">lista</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listb</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listc</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listd</bcf:field> + <bcf:field fieldtype="list" datatype="literal">liste</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listf</bcf:field> + <bcf:field fieldtype="list" datatype="literal">location</bcf:field> + <bcf:field fieldtype="list" datatype="literal">organization</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origlocation</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origpublisher</bcf:field> + <bcf:field fieldtype="list" datatype="literal">publisher</bcf:field> + <bcf:field fieldtype="list" datatype="name">afterword</bcf:field> + <bcf:field fieldtype="list" datatype="name">annotator</bcf:field> + <bcf:field fieldtype="list" datatype="name">author</bcf:field> + <bcf:field fieldtype="list" datatype="name">bookauthor</bcf:field> + <bcf:field fieldtype="list" datatype="name">commentator</bcf:field> + <bcf:field fieldtype="list" datatype="name">editor</bcf:field> + <bcf:field fieldtype="list" datatype="name">editora</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorb</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorc</bcf:field> + <bcf:field fieldtype="list" datatype="name">foreword</bcf:field> + <bcf:field fieldtype="list" datatype="name">holder</bcf:field> + <bcf:field fieldtype="list" datatype="name">introduction</bcf:field> + <bcf:field fieldtype="list" datatype="name">namea</bcf:field> + <bcf:field fieldtype="list" datatype="name">nameb</bcf:field> + <bcf:field fieldtype="list" datatype="name">namec</bcf:field> + <bcf:field fieldtype="list" datatype="name">translator</bcf:field> + <bcf:field fieldtype="list" datatype="name" label="true">shortauthor</bcf:field> + <bcf:field fieldtype="list" datatype="name" label="true">shorteditor</bcf:field> + <bcf:field fieldtype="list" datatype="name" skip_output="true">sortname</bcf:field> + <bcf:field fieldtype="field" datatype="key">authortype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editoratype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorbtype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorctype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editortype</bcf:field> + <bcf:field fieldtype="field" datatype="key">bookpagination</bcf:field> + <bcf:field fieldtype="field" datatype="key">nameatype</bcf:field> + <bcf:field fieldtype="field" datatype="key">namebtype</bcf:field> + <bcf:field fieldtype="field" datatype="key">namectype</bcf:field> + <bcf:field fieldtype="field" datatype="key">pagination</bcf:field> + <bcf:field fieldtype="field" datatype="key">pubstate</bcf:field> + <bcf:field fieldtype="field" datatype="key">type</bcf:field> + <bcf:field fieldtype="list" datatype="key">language</bcf:field> + <bcf:field fieldtype="list" datatype="key">origlanguage</bcf:field> + <bcf:field fieldtype="field" datatype="entrykey">crossref</bcf:field> + <bcf:field fieldtype="field" datatype="entrykey">xref</bcf:field> + <bcf:field fieldtype="field" datatype="date" skip_output="true">date</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">endyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">year</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">month</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">day</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">hour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">minute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">second</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">timezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">yeardivision</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">endyeardivision</bcf:field> + <bcf:field fieldtype="field" datatype="date" skip_output="true">eventdate</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">eventendyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">eventyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventyeardivision</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">eventendyeardivision</bcf:field> + <bcf:field fieldtype="field" datatype="date" skip_output="true">origdate</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">origendyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">origyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">orighour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origyeardivision</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">origendyeardivision</bcf:field> + <bcf:field fieldtype="field" datatype="date" skip_output="true">urldate</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">urlendyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart" nullok="true">urlyear</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urltimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlyeardivision</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendday</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendhour</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendminute</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendsecond</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendtimezone</bcf:field> + <bcf:field fieldtype="field" datatype="datepart">urlendyeardivision</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">doi</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">eprint</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">file</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verba</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbb</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbc</bcf:field> + <bcf:field fieldtype="field" datatype="uri">url</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="entrykey" skip_output="true">xdata</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="entrykey" skip_output="true">ids</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="entrykey" skip_output="true">entryset</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="entrykey">related</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="keyword">keywords</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="option" skip_output="true">options</bcf:field> + <bcf:field fieldtype="field" format="xsv" datatype="option" skip_output="true">relatedoptions</bcf:field> + <bcf:field fieldtype="field" datatype="range">pages</bcf:field> + <bcf:field fieldtype="field" datatype="code">execute</bcf:field> + </bcf:fields> + <bcf:entryfields> + <bcf:field>abstract</bcf:field> + <bcf:field>annotation</bcf:field> + <bcf:field>authortype</bcf:field> + <bcf:field>bookpagination</bcf:field> + <bcf:field>crossref</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endhour</bcf:field> + <bcf:field>endminute</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endsecond</bcf:field> + <bcf:field>endtimezone</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>endyeardivision</bcf:field> + <bcf:field>entryset</bcf:field> + <bcf:field>entrysubtype</bcf:field> + <bcf:field>execute</bcf:field> + <bcf:field>file</bcf:field> + <bcf:field>gender</bcf:field> + <bcf:field>hour</bcf:field> + <bcf:field>ids</bcf:field> + <bcf:field>indextitle</bcf:field> + <bcf:field>indexsorttitle</bcf:field> + <bcf:field>isan</bcf:field> + <bcf:field>ismn</bcf:field> + <bcf:field>iswc</bcf:field> + <bcf:field>keywords</bcf:field> + <bcf:field>label</bcf:field> + <bcf:field>langid</bcf:field> + <bcf:field>langidopts</bcf:field> + <bcf:field>library</bcf:field> + <bcf:field>lista</bcf:field> + <bcf:field>listb</bcf:field> + <bcf:field>listc</bcf:field> + <bcf:field>listd</bcf:field> + <bcf:field>liste</bcf:field> + <bcf:field>listf</bcf:field> + <bcf:field>minute</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>namea</bcf:field> + <bcf:field>nameb</bcf:field> + <bcf:field>namec</bcf:field> + <bcf:field>nameatype</bcf:field> + <bcf:field>namebtype</bcf:field> + <bcf:field>namectype</bcf:field> + <bcf:field>nameaddon</bcf:field> + <bcf:field>options</bcf:field> + <bcf:field>origday</bcf:field> + <bcf:field>origendday</bcf:field> + <bcf:field>origendhour</bcf:field> + <bcf:field>origendminute</bcf:field> + <bcf:field>origendmonth</bcf:field> + <bcf:field>origendsecond</bcf:field> + <bcf:field>origendtimezone</bcf:field> + <bcf:field>origendyear</bcf:field> + <bcf:field>origendyeardivision</bcf:field> + <bcf:field>orighour</bcf:field> + <bcf:field>origminute</bcf:field> + <bcf:field>origmonth</bcf:field> + <bcf:field>origsecond</bcf:field> + <bcf:field>origtimezone</bcf:field> + <bcf:field>origyear</bcf:field> + <bcf:field>origyeardivision</bcf:field> + <bcf:field>origlocation</bcf:field> + <bcf:field>origpublisher</bcf:field> + <bcf:field>origtitle</bcf:field> + <bcf:field>pagination</bcf:field> + <bcf:field>presort</bcf:field> + <bcf:field>related</bcf:field> + <bcf:field>relatedoptions</bcf:field> + <bcf:field>relatedstring</bcf:field> + <bcf:field>relatedtype</bcf:field> + <bcf:field>second</bcf:field> + <bcf:field>shortauthor</bcf:field> + <bcf:field>shorteditor</bcf:field> + <bcf:field>shorthand</bcf:field> + <bcf:field>shorthandintro</bcf:field> + <bcf:field>shortjournal</bcf:field> + <bcf:field>shortseries</bcf:field> + <bcf:field>shorttitle</bcf:field> + <bcf:field>sortkey</bcf:field> + <bcf:field>sortname</bcf:field> + <bcf:field>sortshorthand</bcf:field> + <bcf:field>sorttitle</bcf:field> + <bcf:field>sortyear</bcf:field> + <bcf:field>timezone</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendhour</bcf:field> + <bcf:field>urlendminute</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendsecond</bcf:field> + <bcf:field>urlendtimezone</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlhour</bcf:field> + <bcf:field>urlminute</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlsecond</bcf:field> + <bcf:field>urltimezone</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>usera</bcf:field> + <bcf:field>userb</bcf:field> + <bcf:field>userc</bcf:field> + <bcf:field>userd</bcf:field> + <bcf:field>usere</bcf:field> + <bcf:field>userf</bcf:field> + <bcf:field>verba</bcf:field> + <bcf:field>verbb</bcf:field> + <bcf:field>verbc</bcf:field> + <bcf:field>xdata</bcf:field> + <bcf:field>xref</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>yeardivision</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>set</bcf:entrytype> + <bcf:field>entryset</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>article</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>issn</bcf:field> + <bcf:field>issue</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>issuetitleaddon</bcf:field> + <bcf:field>journalsubtitle</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>journaltitleaddon</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>version</bcf:field> + <bcf:field>volume</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>bibnote</bcf:entrytype> + <bcf:field>note</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>book</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>mvbook</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>bookauthor</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>mvcollection</bcf:entrytype> + <bcf:entrytype>mvreference</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>dataset</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>software</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>online</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>holder</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>issn</bcf:field> + <bcf:field>issue</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>issuetitleaddon</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>yeardivision</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>mvproceedings</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendhour</bcf:field> + <bcf:field>eventendminute</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendsecond</bcf:field> + <bcf:field>eventendtimezone</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventendyeardivision</bcf:field> + <bcf:field>eventhour</bcf:field> + <bcf:field>eventminute</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventsecond</bcf:field> + <bcf:field>eventtimezone</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventyeardivision</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>eventtitleaddon</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendhour</bcf:field> + <bcf:field>eventendminute</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendsecond</bcf:field> + <bcf:field>eventendtimezone</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventendyeardivision</bcf:field> + <bcf:field>eventhour</bcf:field> + <bcf:field>eventminute</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventsecond</bcf:field> + <bcf:field>eventtimezone</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventyeardivision</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>eventtitleaddon</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editortype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendhour</bcf:field> + <bcf:field>eventendminute</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendsecond</bcf:field> + <bcf:field>eventendtimezone</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventendyeardivision</bcf:field> + <bcf:field>eventhour</bcf:field> + <bcf:field>eventminute</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventsecond</bcf:field> + <bcf:field>eventtimezone</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventyeardivision</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>eventtitleaddon</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>report</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>isrn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendhour</bcf:field> + <bcf:field>eventendminute</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendsecond</bcf:field> + <bcf:field>eventendtimezone</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventendyeardivision</bcf:field> + <bcf:field>eventhour</bcf:field> + <bcf:field>eventminute</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventsecond</bcf:field> + <bcf:field>eventtimezone</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventyeardivision</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>eventtitleaddon</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>venue</bcf:field> + </bcf:entryfields> + <bcf:multiscriptfields> + <bcf:field>abstract</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>bookauthor</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>holder</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>issuetitleaddon</bcf:field> + <bcf:field>journalsubtitle</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>journaltitleaddon</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>nameaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>origlocation</bcf:field> + <bcf:field>origpublisher</bcf:field> + <bcf:field>origtitle</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>relatedstring</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>shortauthor</bcf:field> + <bcf:field>shorteditor</bcf:field> + <bcf:field>shorthand</bcf:field> + <bcf:field>shortjournal</bcf:field> + <bcf:field>shortseries</bcf:field> + <bcf:field>shorttitle</bcf:field> + <bcf:field>sortname</bcf:field> + <bcf:field>sortshorthand</bcf:field> + <bcf:field>sorttitle</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>venue</bcf:field> + </bcf:multiscriptfields> + <bcf:constraints> + <bcf:entrytype>article</bcf:entrytype> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>mvbook</bcf:entrytype> + <bcf:entrytype>mvcollection</bcf:entrytype> + <bcf:entrytype>online</bcf:entrytype> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:entrytype>suppperiodical</bcf:entrytype> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:entrytype>report</bcf:entrytype> + <bcf:entrytype>set</bcf:entrytype> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:fieldxor> + <bcf:field>date</bcf:field> + <bcf:field>year</bcf:field> + </bcf:fieldxor> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>set</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>entryset</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>article</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>mvbook</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:fieldor> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + </bcf:fieldor> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>mvcollection</bcf:entrytype> + <bcf:entrytype>mvreference</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>dataset</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>software</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>online</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + <bcf:fieldor> + <bcf:field>url</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + </bcf:fieldor> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>number</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>mvproceedings</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>report</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:constraint type="data" datatype="isbn"> + <bcf:field>isbn</bcf:field> + </bcf:constraint> + <bcf:constraint type="data" datatype="issn"> + <bcf:field>issn</bcf:field> + </bcf:constraint> + <bcf:constraint type="data" datatype="ismn"> + <bcf:field>ismn</bcf:field> + </bcf:constraint> + <bcf:constraint type="data" datatype="pattern" pattern="(?:sf|sm|sn|pf|pm|pn|pp)"> + <bcf:field>gender</bcf:field> + </bcf:constraint> + </bcf:constraints> + </bcf:datamodel> + <!-- CITATION DATA --> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex" glob="false">citations.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + </bcf:section> + <!-- SORTING TEMPLATES --> + <bcf:sortingtemplate name="ynt"> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + <bcf:sortitem literal="1" order="3">9999</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + </bcf:sortingtemplate> + <!-- DATALISTS --> +</bcf:controlfile> diff --git a/curriculum/cv.log b/curriculum/cv.log new file mode 100644 index 0000000..88ff4c7 --- /dev/null +++ b/curriculum/cv.log @@ -0,0 +1,939 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/nixos.org) (preloaded format=pdflatex 1980.1.1) 9 MAY 2024 19:17 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**cv.tex +(./cv.tex +LaTeX2e <2023-11-01> patch level 1 +L3 programming layer <2024-02-20> + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/base/article.cls +Document Class: article 2023/05/17 v1.4n Standard LaTeX document class + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/base/size12.clo +File: size12.clo 2023/05/17 v1.4n Standard LaTeX file (size option) +) +\c@part=\count188 +\c@section=\count189 +\c@subsection=\count190 +\c@subsubsection=\count191 +\c@paragraph=\count192 +\c@subparagraph=\count193 +\c@figure=\count194 +\c@table=\count195 +\abovecaptionskip=\skip48 +\belowcaptionskip=\skip49 +\bibindent=\dimen140 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/url/url.sty +\Urlmuskip=\muskip16 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/parskip/parskip.sty +Package: parskip 2021-03-14 v2.0h non-zero parskip adjustments + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/kvoptions/kvoptions.sty +Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics/keyval.sty +Package: keyval 2022/05/29 v1.15 key=value parser (DPC) +\KV@toks@=\toks17 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO) +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO) +)) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/etoolbox/etoolbox.sty +Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count196 +)) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/babel/babel.sty +Package: babel 2024/02/07 v24.2 The Babel package +\babel@savecnt=\count197 +\U@D=\dimen141 +\l@unhyphenated=\language5 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/babel/txtbabel.def) +\bbl@readstream=\read2 +\bbl@dirlevel=\count198 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/babel-english/english.ldf +Language: english 2017/06/06 v3.3r English support from the babel system +Package babel Info: Hyphen rules for 'british' set to \l@english +(babel) (\language0). Reported on input line 82. +Package babel Info: Hyphen rules for 'UKenglish' set to \l@english +(babel) (\language0). Reported on input line 83. +Package babel Info: Hyphen rules for 'canadian' set to \l@english +(babel) (\language0). Reported on input line 102. +Package babel Info: Hyphen rules for 'australian' set to \l@english +(babel) (\language0). Reported on input line 105. +Package babel Info: Hyphen rules for 'newzealand' set to \l@english +(babel) (\language0). Reported on input line 108. +)) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/babel/locale/en/babel-english.tex +Package babel Info: Importing font and identification data for english +(babel) from babel-en.ini. Reported on input line 11. +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics/color.sty +Package: color 2022/01/06 v1.3d Standard LaTeX Color (DPC) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package color Info: Driver file: pdftex.def on input line 149. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics-def/pdftex.def +File: pdftex.def 2022/09/22 v1.2b Graphics/color driver for pdftex +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics/mathcolor.ltx)) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics/graphicx.sty +Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics/graphics.sty +Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics/trig.sty +Package: trig 2021/08/11 v1.11 sin cos tan (DPC) +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 107. +) +\Gin@req@height=\dimen142 +\Gin@req@width=\dimen143 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/xcolor/xcolor.sty +Package: xcolor 2023/11/15 v3.01 LaTeX color extensions (UK) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) + +Package xcolor Warning: Package option `usenames' is obsolete and ignored on in +put line 266. + +Package xcolor Info: Driver file: pdftex.def on input line 274. +LaTeX Info: Redefining \color on input line 758. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics/mathcolor.ltx) +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1350. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1354. +Package xcolor Info: Model `RGB' extended on input line 1366. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1368. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1370. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1371. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1372. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1373. +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/graphics/dvipsnam.def +File: dvipsnam.def 2016/06/17 v3.0m Driver-dependent file (DPC,SPQR) +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/iftex/iftex.sty +Package: iftex 2022/02/03 v1.0f TeX engine tests +)) +\Gm@cnth=\count199 +\Gm@cntv=\count266 +\c@Gm@tempcnt=\count267 +\Gm@bindingoffset=\dimen144 +\Gm@wd@mp=\dimen145 +\Gm@odd@mp=\dimen146 +\Gm@even@mp=\dimen147 +\Gm@layoutwidth=\dimen148 +\Gm@layoutheight=\dimen149 +\Gm@layouthoffset=\dimen150 +\Gm@layoutvoffset=\dimen151 +\Gm@dimlist=\toks18 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/tools/tabularx.sty +Package: tabularx 2023/07/08 v2.11c `tabularx' package (DPC) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/tools/array.sty +Package: array 2023/10/16 v2.5g Tabular extension package (FMi) +\col@sep=\dimen152 +\ar@mcellbox=\box51 +\extrarowheight=\dimen153 +\NC@list=\toks19 +\extratabsurround=\skip50 +\backup@length=\skip51 +\ar@cellbox=\box52 +) +\TX@col@width=\dimen154 +\TX@old@table=\dimen155 +\TX@old@col=\dimen156 +\TX@target=\dimen157 +\TX@delta=\dimen158 +\TX@cols=\count268 +\TX@ftn=\toks20 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/enumitem/enumitem.sty +Package: enumitem 2019/06/20 v3.9 Customized lists +\labelindent=\skip52 +\enit@outerparindent=\dimen159 +\enit@toks=\toks21 +\enit@inbox=\box53 +\enit@count@id=\count269 +\enitdp@description=\count270 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/supertabular/supertabular.sty +Package: supertabular 2020/02/02 v4.1g the supertabular environment +\c@tracingst=\count271 +\ST@wd=\dimen160 +\ST@rightskip=\skip53 +\ST@leftskip=\skip54 +\ST@parfillskip=\skip55 +\ST@pageleft=\dimen161 +\ST@headht=\dimen162 +\ST@tailht=\dimen163 +\ST@pagesofar=\dimen164 +\ST@pboxht=\dimen165 +\ST@lineht=\dimen166 +\ST@prevht=\dimen167 +\ST@toadd=\dimen168 +\ST@dimen=\dimen169 +\ST@pbox=\box54 +) +\fullcollw=\skip56 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/titlesec/titlesec.sty +Package: titlesec 2023/10/27 v2.16 Sectioning titles +\ttl@box=\box55 +\beforetitleunit=\skip57 +\aftertitleunit=\skip58 +\ttl@plus=\dimen170 +\ttl@minus=\dimen171 +\ttl@toksa=\toks22 +\titlewidth=\dimen172 +\titlewidthlast=\dimen173 +\titlewidthfirst=\dimen174 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/tools/multicol.sty +Package: multicol 2023/03/30 v1.9f multicolumn formatting (FMi) +\c@tracingmulticols=\count272 + + +Package multicol Warning: May not work with the twocolumn option on input line +143. + +\mult@box=\box56 +\multicol@leftmargin=\dimen175 +\c@unbalance=\count273 +\c@collectmore=\count274 +\doublecol@number=\count275 +\multicoltolerance=\count276 +\multicolpretolerance=\count277 +\full@width=\dimen176 +\page@free=\dimen177 +\premulticols=\dimen178 +\postmulticols=\dimen179 +\multicolsep=\skip59 +\multicolbaselineskip=\skip60 +\partial@page=\box57 +\last@line=\box58 +\mc@boxedresult=\box59 +\maxbalancingoverflow=\dimen180 +\mult@rightbox=\box60 +\mult@grightbox=\box61 +\mult@firstbox=\box62 +\mult@gfirstbox=\box63 +\@tempa=\box64 +\@tempa=\box65 +\@tempa=\box66 +\@tempa=\box67 +\@tempa=\box68 +\@tempa=\box69 +\@tempa=\box70 +\@tempa=\box71 +\@tempa=\box72 +\@tempa=\box73 +\@tempa=\box74 +\@tempa=\box75 +\@tempa=\box76 +\@tempa=\box77 +\@tempa=\box78 +\@tempa=\box79 +\@tempa=\box80 +\@tempa=\box81 +\@tempa=\box82 +\@tempa=\box83 +\@tempa=\box84 +\@tempa=\box85 +\@tempa=\box86 +\@tempa=\box87 +\@tempa=\box88 +\@tempa=\box89 +\@tempa=\box90 +\@tempa=\box91 +\@tempa=\box92 +\@tempa=\box93 +\@tempa=\box94 +\@tempa=\box95 +\@tempa=\box96 +\@tempa=\box97 +\@tempa=\box98 +\@tempa=\box99 +\c@minrows=\count278 +\c@columnbadness=\count279 +\c@finalcolumnbadness=\count280 +\last@try=\dimen181 +\multicolovershoot=\dimen182 +\multicolundershoot=\dimen183 +\mult@nat@firstbox=\box100 +\colbreak@box=\box101 +\mc@col@check@num=\count281 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/multirow/multirow.sty +Package: multirow 2021/03/15 v2.8 Span multiple rows of a table +\multirow@colwidth=\skip61 +\multirow@cntb=\count282 +\multirow@dima=\skip62 +\bigstrutjot=\dimen184 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/biblatex.sty +Package: biblatex 2023/03/05 v3.19 programmable bibliographies (PK/MW) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO +) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/logreq/logreq.sty +Package: logreq 2010/08/04 v1.0 xml request logger +\lrq@indent=\count283 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/logreq/logreq.def +File: logreq.def 2010/08/04 v1.0 logreq spec v1.0 +)) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/base/ifthen.sty +Package: ifthen 2022/04/13 v1.1d Standard LaTeX ifthen package (DPC) +) +\c@tabx@nest=\count284 +\c@listtotal=\count285 +\c@listcount=\count286 +\c@liststart=\count287 +\c@liststop=\count288 +\c@citecount=\count289 +\c@citetotal=\count290 +\c@multicitecount=\count291 +\c@multicitetotal=\count292 +\c@instcount=\count293 +\c@maxnames=\count294 +\c@minnames=\count295 +\c@maxitems=\count296 +\c@minitems=\count297 +\c@citecounter=\count298 +\c@maxcitecounter=\count299 +\c@savedcitecounter=\count300 +\c@uniquelist=\count301 +\c@uniquename=\count302 +\c@refsection=\count303 +\c@refsegment=\count304 +\c@maxextratitle=\count305 +\c@maxextratitleyear=\count306 +\c@maxextraname=\count307 +\c@maxextradate=\count308 +\c@maxextraalpha=\count309 +\c@abbrvpenalty=\count310 +\c@highnamepenalty=\count311 +\c@lownamepenalty=\count312 +\c@maxparens=\count313 +\c@parenlevel=\count314 +\blx@tempcnta=\count315 +\blx@tempcntb=\count316 +\blx@tempcntc=\count317 +\c@blx@maxsection=\count318 +\blx@maxsegment@0=\count319 +\blx@notetype=\count320 +\blx@parenlevel@text=\count321 +\blx@parenlevel@foot=\count322 +\blx@sectionciteorder@0=\count323 +\blx@sectionciteorderinternal@0=\count324 +\blx@entrysetcounter=\count325 +\blx@biblioinstance=\count326 +\labelnumberwidth=\skip63 +\labelalphawidth=\skip64 +\biblabelsep=\skip65 +\bibitemsep=\skip66 +\bibnamesep=\skip67 +\bibinitsep=\skip68 +\bibparsep=\skip69 +\bibhang=\skip70 +\blx@bcfin=\read3 +\blx@bcfout=\write3 +\blx@langwohyphens=\language6 +\c@mincomprange=\count327 +\c@maxcomprange=\count328 +\c@mincompwidth=\count329 +Package biblatex Info: Trying to load biblatex default data model... +Package biblatex Info: ... file 'blx-dm.def' found. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/blx-dm.def +File: blx-dm.def 2023/03/05 v3.19 biblatex localization (PK/MW) +) +Package biblatex Info: Trying to load biblatex style data model... +Package biblatex Info: ... file 'authoryear.dbx' not found. +Package biblatex Info: Trying to load biblatex custom data model... +Package biblatex Info: ... file 'biblatex-dm.cfg' not found. +\c@afterword=\count330 +\c@savedafterword=\count331 +\c@annotator=\count332 +\c@savedannotator=\count333 +\c@author=\count334 +\c@savedauthor=\count335 +\c@bookauthor=\count336 +\c@savedbookauthor=\count337 +\c@commentator=\count338 +\c@savedcommentator=\count339 +\c@editor=\count340 +\c@savededitor=\count341 +\c@editora=\count342 +\c@savededitora=\count343 +\c@editorb=\count344 +\c@savededitorb=\count345 +\c@editorc=\count346 +\c@savededitorc=\count347 +\c@foreword=\count348 +\c@savedforeword=\count349 +\c@holder=\count350 +\c@savedholder=\count351 +\c@introduction=\count352 +\c@savedintroduction=\count353 +\c@namea=\count354 +\c@savednamea=\count355 +\c@nameb=\count356 +\c@savednameb=\count357 +\c@namec=\count358 +\c@savednamec=\count359 +\c@translator=\count360 +\c@savedtranslator=\count361 +\c@shortauthor=\count362 +\c@savedshortauthor=\count363 +\c@shorteditor=\count364 +\c@savedshorteditor=\count365 +\c@labelname=\count366 +\c@savedlabelname=\count367 +\c@institution=\count368 +\c@savedinstitution=\count369 +\c@lista=\count370 +\c@savedlista=\count371 +\c@listb=\count372 +\c@savedlistb=\count373 +\c@listc=\count374 +\c@savedlistc=\count375 +\c@listd=\count376 +\c@savedlistd=\count377 +\c@liste=\count378 +\c@savedliste=\count379 +\c@listf=\count380 +\c@savedlistf=\count381 +\c@location=\count382 +\c@savedlocation=\count383 +\c@organization=\count384 +\c@savedorganization=\count385 +\c@origlocation=\count386 +\c@savedoriglocation=\count387 +\c@origpublisher=\count388 +\c@savedorigpublisher=\count389 +\c@publisher=\count390 +\c@savedpublisher=\count391 +\c@language=\count392 +\c@savedlanguage=\count393 +\c@origlanguage=\count394 +\c@savedoriglanguage=\count395 +\c@pageref=\count396 +\c@savedpageref=\count397 +\shorthandwidth=\skip71 +\shortjournalwidth=\skip72 +\shortserieswidth=\skip73 +\shorttitlewidth=\skip74 +\shortauthorwidth=\skip75 +\shorteditorwidth=\skip76 +\locallabelnumberwidth=\skip77 +\locallabelalphawidth=\skip78 +\localshorthandwidth=\skip79 +\localshortjournalwidth=\skip80 +\localshortserieswidth=\skip81 +\localshorttitlewidth=\skip82 +\localshortauthorwidth=\skip83 +\localshorteditorwidth=\skip84 +Package biblatex Info: Trying to load compatibility code... +Package biblatex Info: ... file 'blx-compat.def' found. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/blx-compat.def +File: blx-compat.def 2023/03/05 v3.19 biblatex compatibility (PK/MW) +) +Package biblatex Info: Trying to load generic definitions... +Package biblatex Info: ... file 'biblatex.def' found. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/biblatex.def +File: biblatex.def 2023/03/05 v3.19 biblatex compatibility (PK/MW) +\c@textcitecount=\count398 +\c@textcitetotal=\count399 +\c@textcitemaxnames=\count400 +\c@biburlbigbreakpenalty=\count401 +\c@biburlbreakpenalty=\count402 +\c@biburlnumpenalty=\count403 +\c@biburlucpenalty=\count404 +\c@biburllcpenalty=\count405 +\biburlbigskip=\muskip17 +\biburlnumskip=\muskip18 +\biburlucskip=\muskip19 +\biburllcskip=\muskip20 +\c@smartand=\count406 +) +Package biblatex Info: Trying to load bibliography style 'authoryear'... +Package biblatex Info: ... file 'authoryear.bbx' found. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/bbx/authoryear.bbx +File: authoryear.bbx 2023/03/05 v3.19 biblatex bibliography style (PK/MW) +Package biblatex Info: Trying to load bibliography style 'standard'... +Package biblatex Info: ... file 'standard.bbx' found. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/bbx/standard.bbx +File: standard.bbx 2023/03/05 v3.19 biblatex bibliography style (PK/MW) +\c@bbx:relatedcount=\count407 +\c@bbx:relatedtotal=\count408 +)) +Package biblatex Info: Trying to load citation style 'authoryear'... +Package biblatex Info: ... file 'authoryear.cbx' found. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/cbx/authoryear.cbx +File: authoryear.cbx 2023/03/05 v3.19 biblatex citation style (PK/MW) +Package biblatex Info: Redefining '\cite'. +Package biblatex Info: Redefining '\parencite'. +Package biblatex Info: Redefining '\footcite'. +Package biblatex Info: Redefining '\footcitetext'. +Package biblatex Info: Redefining '\smartcite'. +Package biblatex Info: Redefining '\textcite'. +Package biblatex Info: Redefining '\textcites'. +) +Package biblatex Info: Trying to load configuration file... +Package biblatex Info: ... file 'biblatex.cfg' found. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/biblatex.cfg +File: biblatex.cfg +) +Package biblatex Info: Input encoding 'utf8' detected. +Package biblatex Info: Document encoding is UTF8 .... + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/l3kernel/expl3.sty +Package: expl3 2024-02-20 L3 programming layer (loader) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2024-02-20 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count409 +\l__pdf_internal_box=\box102 +)) +Package biblatex Info: ... and expl3 +(biblatex) 2024-02-20 L3 programming layer (loader) +(biblatex) is new enough (at least 2020/04/06), +(biblatex) setting 'casechanger=expl3'. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/blx-case-expl3.sty +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/l3packages/xparse/xparse.sty +Package: xparse 2024-02-18 L3 Experimental document command parser +) +Package: blx-case-expl3 2023/03/05 v3.19 expl3 case changing code for biblatex +)) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/hyperref/hyperref.sty +Package: hyperref 2024-01-20 v7.01h Hypertext links for LaTeX + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/hyperref/nameref.sty +Package: nameref 2023-11-26 v2.56 Cross-referencing by name of section + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count410 +) +\@linkdim=\dimen185 +\Hy@linkcounter=\count411 +\Hy@pagecounter=\count412 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/hyperref/pd1enc.def +File: pd1enc.def 2024-01-20 v7.01h Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +\Hy@SavedSpaceFactor=\count413 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/hyperref/puenc.def +File: puenc.def 2024-01-20 v7.01h Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Option `unicode' set `true' on input line 4062. +Package hyperref Info: Option `draft' set `false' on input line 4062. +Package hyperref Info: Hyper figures OFF on input line 4179. +Package hyperref Info: Link nesting OFF on input line 4184. +Package hyperref Info: Hyper index ON on input line 4187. +Package hyperref Info: Plain pages OFF on input line 4194. +Package hyperref Info: Backreferencing OFF on input line 4199. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4446. +\c@Hy@tempcnt=\count414 +LaTeX Info: Redefining \url on input line 4784. +\XeTeXLinkMargin=\dimen186 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count415 +\Field@Width=\dimen187 +\Fld@charsize=\dimen188 +Package hyperref Info: Hyper figures OFF on input line 6063. +Package hyperref Info: Link nesting OFF on input line 6068. +Package hyperref Info: Hyper index ON on input line 6071. +Package hyperref Info: backreferencing OFF on input line 6078. +Package hyperref Info: Link coloring OFF on input line 6083. +Package hyperref Info: Link coloring with OCG OFF on input line 6088. +Package hyperref Info: PDF/A mode OFF on input line 6093. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/base/atbegshi-ltx.sty +Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi +package with kernel methods +) +\Hy@abspage=\count416 +\c@Item=\count417 +\c@Hfootnote=\count418 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/hyperref/hpdftex.def +File: hpdftex.def 2024-01-20 v7.01h Hyperref driver for pdfTeX + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/base/atveryend-ltx.sty +Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac +kage +with kernel methods +) +\Fld@listcount=\count419 +\c@bookmark@seq@number=\count420 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO) + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +85. +) +\Hy@SectionHShift=\skip85 +) +Package hyperref Info: Option `colorlinks' set `true' on input line 63. +Package hyperref Info: Option `breaklinks' set `true' on input line 63. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/fontawesome5/fontawesome5.sty +Package: fontawesome5 2022/05/02 v5.15.4 Font Awesome 5 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/l3packages/l3keys2e/l3keys2e.sty +Package: l3keys2e 2024-02-18 LaTeX2e option processing using LaTeX3 keys +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/fontawesome5/fontawesome5-generic-helper.sty +Package: fontawesome5-generic-helper 2022/05/02 v5.15.4 non-uTeX helper for fon +tawesome5 + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/fontawesome5/fontawesome5-mapping.def))) + +Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing. +(biblatex) Loading 'csquotes' recommended. + +\@quotelevel=\count421 +\@quotereset=\count422 +(./cv.aux) +\openout1 = `cv.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count423 +\scratchdimen=\dimen189 +\scratchbox=\box103 +\nofMPsegments=\count424 +\nofMParguments=\count425 +\everyMPshowfont=\toks23 +\MPscratchCnt=\count426 +\MPscratchDim=\dimen190 +\MPnumerator=\count427 +\makeMPintoPDFobject=\count428 +\everyMPtoPDFconversion=\toks24 +) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: a4paper +* layout: <same size as paper> +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(29.87721pt, 537.75343pt, 29.87723pt) +* v-part:(T,H,B)=(33.80392pt, 760.53699pt, 50.70593pt) +* \paperwidth=597.50787pt +* \paperheight=845.04684pt +* \textwidth=537.75343pt +* \textheight=760.53699pt +* \oddsidemargin=-42.39278pt +* \evensidemargin=-42.39278pt +* \topmargin=-75.46606pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=12.0pt +* \footskip=30.0pt +* \marginparwidth=4.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.8pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumntrue +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +Package biblatex Info: Trying to load language 'english'... +Package biblatex Info: ... file 'english.lbx' found. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/biblatex/lbx/english.lbx +File: english.lbx 2023/03/05 v3.19 biblatex localization (PK/MW) +) +Package biblatex Info: Input encoding 'utf8' detected. +Package biblatex Info: Automatic encoding selection. +(biblatex) Assuming data encoding 'utf8'. +\openout3 = `cv.bcf'. + +Package biblatex Info: Trying to load bibliographic data... +Package biblatex Info: ... file 'cv.bbl' not found. + +No file cv.bbl. +Package biblatex Info: Reference section=0 on input line 82. +Package biblatex Info: Reference segment=0 on input line 82. +Package hyperref Info: Link coloring ON on input line 82. +(./cv.out) (./cv.out) +\@outlinefile=\write4 +\openout4 = `cv.out'. + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <14.4> on input line 85. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 85. +LaTeX Font Info: Trying to load font information for U+fontawesomebrands0 on + input line 85. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/fontawesome5/ufontawesomebrands0.fd) +LaTeX Font Info: Font shape `U/fontawesomebrands0/solid/n' in size <14.4> no +t available +(Font) Font shape `U/fontawesomebrands0/regular/n' tried instead o +n input line 85. +LaTeX Font Info: Trying to load font information for U+fontawesomefree1 on i +nput line 85. + +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/fontawesome5/ufontawesomefree1.fd) +(/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/te +x/latex/fontawesome5/ufontawesomefree2.fd) +Underfull \vbox (badness 10000) has occurred while \output is active [] + + +Underfull \vbox (badness 10000) has occurred while \output is active [] + + [1{/nix/store/ljdrx6vmx49ifnwcr3a3yvnsdw2bk2lk-texlive-combined-2023/share/tex +mf-var/fonts/map/pdftex/updmap/pdftex.map}{/nix/store/wxm0pw8kr906dps0iiy4czmgw +zva9ad1-texlive-combined-2023-texmfdist/fonts/enc/dvips/fontawesome5/fa5brands0 +.enc}{/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdi +st/fonts/enc/dvips/fontawesome5/fa5free1.enc} + + + +{/nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/fo +nts/enc/dvips/fontawesome5/fa5free2.enc}] +Underfull \hbox (badness 2318) in paragraph at lines 168--168 +[]|\OT1/cmr/m/n/12 Scientific re-search in type the-ory, + [] + +[2 + +] (./cv.aux) + *********** +LaTeX2e <2023-11-01> patch level 1 +L3 programming layer <2024-02-20> + *********** +Package rerunfilecheck Info: File `cv.out' has not changed. +(rerunfilecheck) Checksum: 94A4022002ECF6DBC18A401455886771;365. +Package logreq Info: Writing requests to 'cv.run.xml'. +\openout1 = `cv.run.xml'. + + ) +Here is how much of TeX's memory you used: + 21507 strings out of 476076 + 399764 string characters out of 5789100 + 1950187 words of memory out of 5000000 + 43390 multiletter control sequences out of 15000+600000 + 564168 words of font info for 56 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 66i,9n,81p,1191b,1769s stack positions out of 10000i,1000n,20000p,200000b,200000s +</nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/ +fonts/type1/public/fontawesome5/FontAwesome5Brands-Regular.pfb></nix/store/wxm0 +pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/fonts/type1/public +/fontawesome5/FontAwesome5Free-Solid.pfb></nix/store/wxm0pw8kr906dps0iiy4czmgwz +va9ad1-texlive-combined-2023-texmfdist/fonts/type1/public/amsfonts/cm/cmbx12.pf +b></nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/ +fonts/type1/public/amsfonts/cm/cmcsc10.pfb></nix/store/wxm0pw8kr906dps0iiy4czmg +wzva9ad1-texlive-combined-2023-texmfdist/fonts/type1/public/amsfonts/cm/cmr10.p +fb></nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist +/fonts/type1/public/amsfonts/cm/cmr12.pfb></nix/store/wxm0pw8kr906dps0iiy4czmgw +zva9ad1-texlive-combined-2023-texmfdist/fonts/type1/public/amsfonts/cm/cmr17.pf +b></nix/store/wxm0pw8kr906dps0iiy4czmgwzva9ad1-texlive-combined-2023-texmfdist/ +fonts/type1/public/amsfonts/cm/cmsy10.pfb> +Output written on cv.pdf (2 pages, 127017 bytes). +PDF statistics: + 96 PDF objects out of 1000 (max. 8388607) + 74 compressed objects within 1 object stream + 7 named destinations out of 1000 (max. 500000) + 33 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/curriculum/cv.out b/curriculum/cv.out new file mode 100644 index 0000000..da78e19 --- /dev/null +++ b/curriculum/cv.out @@ -0,0 +1,4 @@ +\BOOKMARK [1][-]{section.1}{\376\377\000W\000o\000r\000k\000\040\000E\000x\000p\000e\000r\000i\000e\000n\000c\000e}{}% 1 +\BOOKMARK [1][-]{section.2}{\376\377\000P\000r\000o\000j\000e\000c\000t\000s}{}% 2 +\BOOKMARK [1][-]{section.3}{\376\377\000E\000d\000u\000c\000a\000t\000i\000o\000n}{}% 3 +\BOOKMARK [1][-]{section.4}{\376\377\000S\000k\000i\000l\000l\000s}{}% 4 diff --git a/curriculum/cv.pdf b/curriculum/cv.pdf Binary files differnew file mode 100644 index 0000000..bf46a5e --- /dev/null +++ b/curriculum/cv.pdf diff --git a/curriculum/cv.run.xml b/curriculum/cv.run.xml new file mode 100644 index 0000000..5c64f7c --- /dev/null +++ b/curriculum/cv.run.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" standalone="yes"?> +<!-- logreq request file --> +<!-- logreq version 1.0 / dtd version 1.0 --> +<!-- Do not edit this file! --> +<!DOCTYPE requests [ + <!ELEMENT requests (internal | external)*> + <!ELEMENT internal (generic, (provides | requires)*)> + <!ELEMENT external (generic, cmdline?, input?, output?, (provides | requires)*)> + <!ELEMENT cmdline (binary, (option | infile | outfile)*)> + <!ELEMENT input (file)+> + <!ELEMENT output (file)+> + <!ELEMENT provides (file)+> + <!ELEMENT requires (file)+> + <!ELEMENT generic (#PCDATA)> + <!ELEMENT binary (#PCDATA)> + <!ELEMENT option (#PCDATA)> + <!ELEMENT infile (#PCDATA)> + <!ELEMENT outfile (#PCDATA)> + <!ELEMENT file (#PCDATA)> + <!ATTLIST requests + version CDATA #REQUIRED + > + <!ATTLIST internal + package CDATA #REQUIRED + priority (9) #REQUIRED + active (0 | 1) #REQUIRED + > + <!ATTLIST external + package CDATA #REQUIRED + priority (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8) #REQUIRED + active (0 | 1) #REQUIRED + > + <!ATTLIST provides + type (static | dynamic | editable) #REQUIRED + > + <!ATTLIST requires + type (static | dynamic | editable) #REQUIRED + > + <!ATTLIST file + type CDATA #IMPLIED + > +]> +<requests version="1.0"> + <internal package="biblatex" priority="9" active="0"> + <generic>latex</generic> + <provides type="dynamic"> + <file>cv.bcf</file> + </provides> + <requires type="dynamic"> + <file>cv.bbl</file> + </requires> + <requires type="static"> + <file>blx-dm.def</file> + <file>blx-compat.def</file> + <file>biblatex.def</file> + <file>standard.bbx</file> + <file>authoryear.bbx</file> + <file>authoryear.cbx</file> + <file>biblatex.cfg</file> + <file>english.lbx</file> + </requires> + </internal> + <external package="biblatex" priority="5" active="0"> + <generic>biber</generic> + <cmdline> + <binary>biber</binary> + <infile>cv</infile> + </cmdline> + <input> + <file>cv.bcf</file> + </input> + <output> + <file>cv.bbl</file> + </output> + <provides type="dynamic"> + <file>cv.bbl</file> + </provides> + <requires type="dynamic"> + <file>cv.bcf</file> + </requires> + <requires type="editable"> + <file>citations.bib</file> + </requires> + </external> +</requests> diff --git a/curriculum/cv.tex b/curriculum/cv.tex new file mode 100644 index 0000000..c9eb15c --- /dev/null +++ b/curriculum/cv.tex @@ -0,0 +1,186 @@ +\documentclass[twocolumn,a4paper,12pt]{article} + +%---------------------------------------------------------------------------------------- +% FONT +%---------------------------------------------------------------------------------------- + +% % fontspec allows you to use TTF/OTF fonts directly +% \usepackage{fontspec} +% \defaultfontfeatures{Ligatures=TeX} + +% % modified for ShareLaTeX use +% \setmainfont[ +% SmallCapsFont = Fontin-SmallCaps.otf, +% BoldFont = Fontin-Bold.otf, +% ItalicFont = Fontin-Italic.otf +% ] +% {Fontin.otf} + +%---------------------------------------------------------------------------------------- +% PACKAGES +%---------------------------------------------------------------------------------------- +\usepackage{url} +\usepackage{parskip} +\usepackage[english]{babel} + +%other packages for formatting +\RequirePackage{color} +\RequirePackage{graphicx} +\usepackage[usenames,dvipsnames]{xcolor} +\usepackage[scale=0.9]{geometry} + +%tabularx environment +\usepackage{tabularx} + +%for lists within experience section +\usepackage{enumitem} + +% centered version of 'X' col. type +\newcolumntype{C}{>{\centering\arraybackslash}X} + +%to prevent spillover of tabular into next pages +\usepackage{supertabular} +\usepackage{tabularx} +\newlength{\fullcollw} +\setlength{\fullcollw}{0.47\textwidth} + +%custom \section +\usepackage{titlesec} +\usepackage{multicol} +\usepackage{multirow} + +%CV Sections inspired by: +%http://stefano.italians.nl/archives/26 +\titleformat{\section}{\Large\scshape\raggedright}{}{0em}{}[\titlerule] +\titlespacing{\section}{0pt}{10pt}{10pt} +\titlespacing{\subsection}{0pt}{3pt}{3pt} + +%for publications +\usepackage[style=authoryear,sorting=ynt, maxbibnames=2]{biblatex} +%Setup hyperref package, and colours for links +\usepackage[unicode, draft=false]{hyperref} +\definecolor{linkcolour}{rgb}{0,0.2,0.6} +\hypersetup{colorlinks,breaklinks,urlcolor=linkcolour,linkcolor=linkcolour} +\addbibresource{citations.bib} +\setlength\bibitemsep{1em} + +%for social icons +\usepackage{fontawesome5} + +%debug page outer frames +%\usepackage{showframe} +\title{Leonardo Santiago} +\author{\href{https://github.com/o-santi}{\raisebox{-0.05\height}\faGithub\ Github} \ $|$ +\href{https://www.linkedin.com/in/leonardo-ribeiro-santiago}{\raisebox{-0.05\height}\faLinkedin\ Linkedin} \ $|$ \ +\href{https://o-santi.gitub.io}{\raisebox{-0.05\height}\faGlobe \ Blog} \ $|$ \ +\href{mailto:[email protected]}{\raisebox{-0.05\height} \faEnvelope \ Email}} + +\date{} +%---------------------------------------------------------------------------------------- +% BEGIN DOCUMENT +%---------------------------------------------------------------------------------------- +\begin{document} +\twocolumn +\maketitle + +% non-numbered pages +\pagestyle{empty} + +%---------------------------------------------------------------------------------------- +% TITLE +%---------------------------------------------------------------------------------------- + +% \begin{tabularx}{\linewidth}{ @{}X X@{} } +% \huge{Your Name}\vspace{2pt} & \hfill \emoji{incoming-envelope} [email protected] \\ +% \raisebox{-0.05\height}\faGithub\ username \ | \ +% \raisebox{-0.00\height}\faLinkedin\ username \ | \ \raisebox{-0.05\height}\faGlobe \ mysite.com & \hfill \emoji{calling} number +% \end{tabularx} + + +%---------------------------------------------------------------------------------------- +% EXPERIENCE SECTIONS +%---------------------------------------------------------------------------------------- + +%Interests/ Keywords/ Summary + + +Hello, I'm Leonardo, a strong and opinionated software engineer based in Brazil, focused on correctness, reliability and reproducibility. I daily drive NixOS and master a myriad of tools, including rust, nix, python, postgresql, emacs (and lisps!), being very quick to learn new languages and paradigms. My interests are in formal proof assistants, compilers, language design, linux systems and low level programming. + +If you need a sharp thinker able to quickly identify flaws and inefficiencies in your processes and develop robust fixes, while always valuing correctness, then look no further. I'm willing to hear you out. + +%Experience +\section{Work Experience} + +\begin{tabularx}{\linewidth}{ @{}l r@{} } + \textbf{Software Engineer} & Mixrank \\ + Jun 2023 - present & \faMapMarker* \ Remote \\ + \\ + \multicolumn{2}{@{}X@{}}{ + At Mixrank I create value through removing complexity and improving reliability of our systems in a fast paced environment, constantly looking for inneficiencies and inconsistencies. I've implemented key features in our rust build system in pure nix, improved reliability of our plethora of systems in NixOS and removed the need for a lot of legacy processes by leveraging nix's power, while keeping every server running 24/7. Also dealt with PostgreSQL and Python implementing shiny new features for our changing needs. + } +\end{tabularx} + +\begin{tabularx}{\linewidth}{ @{}l r@{} } + \textbf{Software Engineer} & Kindelia \\ + Mar 2022 - May 2023 & \faMapMarker* \ Remote \\ + \\ + \multicolumn{2}{@{}X@{}}{ + At Kindelia I worked thoroughly with an avant garde open-source functional runtime, implemented entirely in Rust. I identified logical problems in the implementation, audited code of a prototype of a blockchain, and developed libraries to Kind, the internal dependently typed proof language. I also pioneered and successfully delivered an MVP of a transpiler of other languages' (mainly python and javascript) source code to our runtime. + } +\end{tabularx} + +\begin{tabularx}{\linewidth}{ @{}l r@{} } + \textbf{Junior Developer} & Editora Epapers \\ + \hfill Aug 2020 - Mar 2023 & \faMapMarker* Rio de Janeiro, Brazil \\ + \\ + \multicolumn{2}{@{}X@{}}{ + As a junior in a small book publisher, I mainly helped automatizing away a lot of repetitive needs using python, both in XML and in Latex documents. They reduced the time to check each document in about 80\% and greatly increased other workers' productivity. Even after leaving, most of my scripts are used until this day. + } +\end{tabularx} + +%Projects +\section{Projects} + +\subsection*{\href{https://o-santi.github.com}{\textbf{lowestcase}}} + I maintain a small lower case onlu blog to talk about topics that usually habit my mind for a little too long, ranging from parser implementations for relations between proofs and programs. It went through a few iterations, and in one of those I implemented my \href{https://github.com/o-santi/sssg}{open source own static site generator tool} (almost entirely in OCaml), but nowadays I've settled on a much simpler emacs + hugo setup. + +\subsection*{\href{https://github.com/o-santi/nixos}{\textbf{My NixOS config}}} +I maintain the configuration of my own systems as a public and open source repository, as a way to instruct new users on how to set it up. Everything from secrets management, window manager configuration and even my emacs configuration is all declaratively written in a way that lets me share most of the code between my two work machines. + +\subsection*{\href{https://github.com/o-santi/emacs}{\textbf{My Emacs config}}} +In fact, my own emacs configuration itself is a nixos module, that can be imported into any system directly, with no hassle. It is all done in a single \href{https://orgmode.org/}{org file}, which is then parsed by my modified \href{https://github.com/o-santi/from-elisp}{lisp parser}, which then finally generates the correct derivation to be built in NixOS. Surprisingly, this works very well, and I'm able to quickly add and remove packages whenever I want, without any problems. + +\subsection*{\href{https://github.com/o-santi/nesp}{\textbf{nesP}}} +A small NES emulator written entirely in Common Lisp. It is able to run super mario at a staggering 8 FPS, albeit with a ton of bugs. I had a ton of fun writing it, and seeing it render a real game was very rewarding. It probably the reason why I use emacs till this day, and why I got so interested in systems programming in the first place. + +\subsection*{Open source contributions} +I've done a fair bit of open source contributions, with probably my main one being implementing missing capabilities in feature resolution in the amazing \href{https://github.com/o-santi/nocargo}{nocargo} nix build tool. I'm very proud of this contribution, because it re-enabled nocargo to build almost all rust written software. I still use it in all my local rust projects to this day without any problems. + +%---------------------------------------------------------------------------------------- +% EDUCATION +%---------------------------------------------------------------------------------------- +\section{Education} +\begin{tabularx}{\linewidth}{ @{}l X@{} } + + 2020 - 2025 & Bachelor's Degree in Computer Science @ Federal University of Rio de Janeiro (UFRJ) (GPA: 3.6/4.0). \\ + & Scientific research in type theory, compilers and computation theory. + +\end{tabularx} + +%---------------------------------------------------------------------------------------- +% SKILLS +%---------------------------------------------------------------------------------------- +\section{Skills} +\begin{tabularx}{\linewidth}{@{}l X@{}} + \textbf{Portuguese} & Native \\ + \textbf{English} & Fluent (Cambridge FCE) \\ + \textbf{Japanese} & Advanced (JLPT N2) \\ + \textbf{Spanish} & Conversational \\ + \\ + \textbf{Tools} & Git, Linux, Latex, XML, Org files, excel, and more. +\end{tabularx} + +\vfill +\center{\footnotesize Last updated: \today} + +\end{document} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..50ef5da --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1714091391, + "narHash": "sha256-68n3GBvlm1MIeJXadPzQ3v8Y9sIW3zmv8gI5w5sliC8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4c86138ce486d601d956a165e2f7a0fc029a03c1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..5a0a226 --- /dev/null +++ b/flake.nix @@ -0,0 +1,28 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, flake-utils, nixpkgs }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + in { + devShells.default = pkgs.mkShell { + buildInputs = with pkgs;[ + hugo + (python3.withPackages (p: [ + p.pillow + ])) + (texlive.combine { + inherit (texlive) scheme-basic wrapfig etoolbox xcolor + enumitem supertabular titlesec multirow parskip + biblatex fontawesome fontawesome5 + ; + }) + ]; + }; + } + ); +} diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..4d56ada --- /dev/null +++ b/public/404.html @@ -0,0 +1,497 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>404 Page not found · lowest case</title> + <meta name="title" content="404 Page not found · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/404.html" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/404.html"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="404 Page not found"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="404 Page not found"> +<meta name="twitter:description" content=""> + + + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + <h1 class="mb-3 text-4xl font-extrabold">page not found 😕</h1> + <p class="mt-8 mb-12 text-neutral-400 dark:text-neutral-500"> + error 404 + </p> + <div class="prose dark:prose-invert"> + <p>it seems that the page you've requested does not exist.</p> + </div> + + + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/about/index.html b/public/about/index.html new file mode 100644 index 0000000..0483f54 --- /dev/null +++ b/public/about/index.html @@ -0,0 +1,827 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>about · lowest case</title> + <meta name="title" content="about · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/about/" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/about/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="about"> + <meta property="og:description" content="i&rsquo;m leonardo santiago, a software engineer based in brazil."> + <meta property="og:locale" content="en"> + <meta property="og:type" content="article"> + <meta property="article:section" content=""> + <meta property="article:published_time" content="2024-05-01T11:53:23-03:00"> + <meta property="article:modified_time" content="2024-05-01T11:53:23-03:00"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="about"> +<meta name="twitter:description" content="i’m leonardo santiago, a software engineer based in brazil."> + + + <script type="application/ld+json"> + [{ + "@context": "https://schema.org", + "@type": "Article", + "articleSection": "lowest case", + "name": "about", + "headline": "about", + + "abstract": "i\u0026rsquo;m leonardo santiago, a software engineer based in brazil.", + "inLanguage": "en", + "url" : "http:\/\/localhost:1313\/about\/", + "author" : { + "@type": "Person", + "name": "leonardo santiago" + }, + "copyrightYear": "2024", + "dateCreated": "2024-05-01T11:53:23-03:00", + "datePublished": "2024-05-01T11:53:23-03:00", + + "dateModified": "2024-05-01T11:53:23-03:00", + + + + "mainEntityOfPage": "true", + "wordCount": "77" + }] + </script> + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + +<article> + + + <header id="single_header" class="mt-5 max-w-prose"> + + <ol class="text-sm text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + <li class="inline hidden"> + <a + class="hover:underline decoration-neutral-300 dark:underline-neutral-600" + href="/" + >lowest case</a + ><span class="px-1 text-primary-500">/</span> + </li> + + + <li class="inline hidden"> + <a + class="hover:underline decoration-neutral-300 dark:underline-neutral-600" + href="/about/" + >about</a + ><span class="px-1 text-primary-500">/</span> + </li> + +</ol> + + + + <h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral"> + about + </h1> + <div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + <time datetime="2024-05-01 11:53:23 -0300 -03">1 May 2024</time><span class="px-2 text-primary-500">·</span><span title="reading time">1 min</span> + + + + +</div> + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + + + + + + + + + + + +</div> + + + + </div> + + + + + + + + + + + + + + + + + + + + </header> + + <section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row"> + + + + <div class="min-w-0 min-h-0 max-w-fit"> + + + + + <div class="article-content max-w-prose mb-20"> + <p>i’m leonardo santiago, a software engineer based in brazil. my interests are in compiler design, programming tools (emacs) and functional programming, usually dabbliing in related topics too. i’m most confortable in nix and rust, but i know a fair share of other languages.</p> +<p>currently, software engineer @ <a href="https://mixrank.com" target="_blank"> + Mixrank</a>.</p> +<p>this blog was built using <a href="https://github.com/gohugoio/hugo" target="_blank"> + hugo</a>, and it’s source code is openly available here: +<a id="github-2bc053111729a74bce2ff033e7cdfe90" target="_blank" href="https://github.com/o-santi/nixos" class="cursor-pointer"> + <div + class="w-full md:w-auto pt-3 p-5 border border-neutral-200 dark:border-neutral-700 border rounded-md shadow-2xl"> + + <div class="flex items-center"> + <span class="text-2xl text-neutral-800 dark:text-neutral" style="margin-right:10px;"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg> + + </span> + + + </span> + <div + id="github-2bc053111729a74bce2ff033e7cdfe90-full_name" + class="m-0 font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"> + o-santi/nixos + </div> + </div> + + <p id="github-2bc053111729a74bce2ff033e7cdfe90-description" class="m-0 mt-2 text-md text-neutral-800 dark:text-neutral"> + My personal devices’ configuration in nix. + </p> + + <div class="m-0 mt-2 flex items-center"> + + <span class="mr-1 inline-block h-3 w-3 rounded-full" + style="background-color: #7e7eff"></span> + <div class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral"> + Nix + </div> + + <span class="text-md mr-1 text-neutral-800 dark:text-neutral"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z"/></svg> + </span> + + + </span> + <div id="github-2bc053111729a74bce2ff033e7cdfe90-stargazers" class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral"> + 0 + </div> + + <span class="text-md mr-1 text-neutral-800 dark:text-neutral"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM248 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z"/></svg> + </span> + + + </span> + <div id="github-2bc053111729a74bce2ff033e7cdfe90-forks" class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral"> + 0 + </div> + + </div> + + </div> + <script> + fetch("https://api.github.com/repos/o-santi/nixos", { + headers: new Headers({ + 'User-agent': 'Mozilla/4.0 Custom User Agent' + }) + }) + .then(response => response.json()) + .then(data => { + document.getElementById('github-2bc053111729a74bce2ff033e7cdfe90-full_name').innerHTML = data.full_name; + document.getElementById('github-2bc053111729a74bce2ff033e7cdfe90-description').innerHTML = data.description; + document.getElementById('github-2bc053111729a74bce2ff033e7cdfe90-stargazers').innerHTML = data.stargazers_count; + document.getElementById('github-2bc053111729a74bce2ff033e7cdfe90-forks').innerHTML = data.forks; + }) + .catch(error => console.error(error)) + </script> +</a></p> +<p>you can find me at: <a href="mailto:[email protected]" > + + + <span class="relative inline-block align-text-bottom icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M207.8 20.73c-93.45 18.32-168.7 93.66-187 187.1c-27.64 140.9 68.65 266.2 199.1 285.1c19.01 2.888 36.17-12.26 36.17-31.49l.0001-.6631c0-15.74-11.44-28.88-26.84-31.24c-84.35-12.98-149.2-86.13-149.2-174.2c0-102.9 88.61-185.5 193.4-175.4c91.54 8.869 158.6 91.25 158.6 183.2l0 16.16c0 22.09-17.94 40.05-40 40.05s-40.01-17.96-40.01-40.05v-120.1c0-8.847-7.161-16.02-16.01-16.02l-31.98 .0036c-7.299 0-13.2 4.992-15.12 11.68c-24.85-12.15-54.24-16.38-86.06-5.106c-38.75 13.73-68.12 48.91-73.72 89.64c-9.483 69.01 43.81 128 110.9 128c26.44 0 50.43-9.544 69.59-24.88c24 31.3 65.23 48.69 109.4 37.49C465.2 369.3 496 324.1 495.1 277.2V256.3C495.1 107.1 361.2-9.332 207.8 20.73zM239.1 304.3c-26.47 0-48-21.56-48-48.05s21.53-48.05 48-48.05s48 21.56 48 48.05S266.5 304.3 239.1 304.3z"/></svg> + + </span> + +</a> <a href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" target="_blank"> + + + <span class="relative inline-block align-text-bottom icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg> + + </span> + +</a> <a href="https://github.com/o-santi" target="_blank"> + + + <span class="relative inline-block align-text-bottom icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg> + + </span> + +</a> <a href="https://t.me/osanti4" target="_blank"> + + + <span class="relative inline-block align-text-bottom icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"/></svg> + + </span> + +</a> <a href="https://twitter.com/o_santi_" target="_blank"> + + + <span class="relative inline-block align-text-bottom icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg> + + </span> + +</a></p> + + </div> + + + + + + + + </div> + + + + + + + + + <script> + var oid = "views_about\/index.md" + var oid_likes = "likes_about\/index.md" + </script> + + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + + </section> + <footer class="pt-8 max-w-prose print:hidden"> + + + + + + + </footer> +</article> + + <div id="top-scroller" class="pointer-events-none absolute top-[110vh] bottom-0 w-12 ltr:right-0 rtl:left-0"> + <a href="#the-top" + class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400" + aria-label="scroll to top" title="scroll to top"> + ↑ + </a> +</div> + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png Binary files differnew file mode 100644 index 0000000..b63c037 --- /dev/null +++ b/public/android-chrome-192x192.png diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png Binary files differnew file mode 100644 index 0000000..da0f767 --- /dev/null +++ b/public/android-chrome-512x512.png diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png Binary files differnew file mode 100644 index 0000000..a011953 --- /dev/null +++ b/public/apple-touch-icon.png diff --git a/public/authors/index.html b/public/authors/index.html new file mode 100644 index 0000000..f6abbc8 --- /dev/null +++ b/public/authors/index.html @@ -0,0 +1,549 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>authors · lowest case</title> + <meta name="title" content="authors · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/authors/" /> + + <link rel="alternate" type="application/rss+xml" href="/authors/index.xml" title="lowest case" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/authors/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="authors"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="authors"> +<meta name="twitter:description" content=""> + + + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + + + + <header> + + <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">authors</h1> + <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + +</div> + + + </div> + </header> + + <script> + var oid = "views_taxonomy_authors" + var oid_likes = "likes_taxonomy_authors" + </script> + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + + + + + <section class="flex flex-wrap max-w-prose -mx-2 overflow-hidden"> + + </section> + + + + + + + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/authors/index.xml b/public/authors/index.xml new file mode 100644 index 0000000..1724adb --- /dev/null +++ b/public/authors/index.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>authors on lowest case</title> + <link>http://localhost:1313/authors/</link> + <description>Recent content in authors on lowest case</description> + <generator>Hugo -- gohugo.io</generator> + <language>en</language> + <copyright>© 2024 leonardo santiago</copyright> + <atom:link href="http://localhost:1313/authors/index.xml" rel="self" type="application/rss+xml" /> + </channel> +</rss> diff --git a/public/categories/index.html b/public/categories/index.html new file mode 100644 index 0000000..00d2b67 --- /dev/null +++ b/public/categories/index.html @@ -0,0 +1,549 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>categories · lowest case</title> + <meta name="title" content="categories · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/categories/" /> + + <link rel="alternate" type="application/rss+xml" href="/categories/index.xml" title="lowest case" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/categories/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="categories"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="categories"> +<meta name="twitter:description" content=""> + + + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + + + + <header> + + <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">categories</h1> + <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + +</div> + + + </div> + </header> + + <script> + var oid = "views_taxonomy_categories" + var oid_likes = "likes_taxonomy_categories" + </script> + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + + + + + <section class="flex flex-wrap max-w-prose -mx-2 overflow-hidden"> + + </section> + + + + + + + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/categories/index.xml b/public/categories/index.xml new file mode 100644 index 0000000..cc900a4 --- /dev/null +++ b/public/categories/index.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>categories on lowest case</title> + <link>http://localhost:1313/categories/</link> + <description>Recent content in categories on lowest case</description> + <generator>Hugo -- gohugo.io</generator> + <language>en</language> + <copyright>© 2024 leonardo santiago</copyright> + <atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" /> + </channel> +</rss> diff --git a/public/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css b/public/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css new file mode 100644 index 0000000..c6df25a --- /dev/null +++ b/public/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css @@ -0,0 +1 @@ +:root{--color-neutral:255, 255, 255;--color-neutral-50:250, 250, 249;--color-neutral-100:245, 245, 244;--color-neutral-200:231, 229, 228;--color-neutral-300:214, 211, 209;--color-neutral-400:168, 162, 158;--color-neutral-500:120, 113, 108;--color-neutral-600:87, 83, 78;--color-neutral-700:68, 64, 60;--color-neutral-800:41, 37, 36;--color-neutral-900:28, 25, 23;--color-primary-50:255, 247, 237;--color-primary-100:255, 237, 213;--color-primary-200:254, 215, 170;--color-primary-300:253, 186, 116;--color-primary-400:251, 146, 60;--color-primary-500:249, 115, 22;--color-primary-600:234, 88, 12;--color-primary-700:194, 65, 12;--color-primary-800:154, 52, 18;--color-primary-900:124, 45, 18;--color-secondary-50:255, 241, 242;--color-secondary-100:255, 228, 230;--color-secondary-200:254, 205, 211;--color-secondary-300:253, 164, 175;--color-secondary-400:251, 113, 133;--color-secondary-500:244, 63, 94;--color-secondary-600:225, 29, 72;--color-secondary-700:190, 18, 60;--color-secondary-800:159, 18, 57;--color-secondary-900:136, 19, 55}/*!Blowfish | MIT License | https://github.com/nunocoracao/blowfish*/#zen-mode-button{cursor:pointer}.zen-mode{position:relative}body.zen-mode-enable{ #bmc-wbtn, .author { display:none !important; }}/*!tailwindcss v3.4.3 | MIT License | https://tailwindcss.com*/*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:initial}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-feature-settings:normal;font-variation-settings:normal;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}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding-top:.5rem;padding-right:.75rem;padding-bottom:.5rem;padding-left:.75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media(forced-colors:active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media(forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media(forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:853px){.container{max-width:853px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:none;font-weight:500;text-decoration-color:rgba(var(--color-primary-300),1)}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover{color:rgba(var(--color-primary-600),1);text-decoration:none;border-radius:.09rem}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=As]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=as]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=Is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:600;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px rgb(var(--tw-prose-kbd-shadows)/10%);font-size:.9rem;border-radius:.25rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em;background-color:rgba(var(--color-neutral-200),1);padding:.1rem .4rem}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em;background-color:rgba(var(--color-neutral-50),1);padding-top:3px;padding-bottom:3px;padding-left:5px;padding-right:5px;border-radius:.25rem}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:"`";display:none}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:"`";display:none}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code)}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:start;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:rgba(var(--color-neutral-700), 1);--tw-prose-headings:rgba(var(--color-neutral-800), 1);--tw-prose-lead:rgba(var(--color-neutral-500), 1);--tw-prose-links:rgba(var(--color-primary-600), 1);--tw-prose-bold:rgba(var(--color-neutral-900), 1);--tw-prose-counters:rgba(var(--color-neutral-800), 1);--tw-prose-bullets:rgba(var(--color-neutral-500), 1);--tw-prose-hr:rgba(var(--color-neutral-200), 1);--tw-prose-quotes:rgba(var(--color-neutral-700), 1);--tw-prose-quote-borders:rgba(var(--color-primary-200), 1);--tw-prose-captions:rgba(var(--color-neutral-500), 1);--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:rgba(var(--color-secondary-700), 1);--tw-prose-pre-code:rgba(var(--color-neutral-700), 1);--tw-prose-pre-bg:rgba(var(--color-neutral-50), 1);--tw-prose-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-td-borders:rgba(var(--color-neutral-300), 1);--tw-prose-invert-body:rgba(var(--color-neutral-300), 1);--tw-prose-invert-headings:rgba(var(--color-neutral-50), 1);--tw-prose-invert-lead:rgba(var(--color-neutral-500), 1);--tw-prose-invert-links:rgba(var(--color-primary-400), 1);--tw-prose-invert-bold:rgba(var(--color-neutral), 1);--tw-prose-invert-counters:rgba(var(--color-neutral-400), 1);--tw-prose-invert-bullets:rgba(var(--color-neutral-600), 1);--tw-prose-invert-hr:rgba(var(--color-neutral-500), 1);--tw-prose-invert-quotes:rgba(var(--color-neutral-200), 1);--tw-prose-invert-quote-borders:rgba(var(--color-primary-900), 1);--tw-prose-invert-captions:rgba(var(--color-neutral-400), 1);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:rgba(var(--color-secondary-400), 1);--tw-prose-invert-pre-code:rgba(var(--color-neutral-200), 1);--tw-prose-invert-pre-bg:rgba(var(--color-neutral-700), 1);--tw-prose-invert-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-invert-td-borders:rgba(var(--color-neutral-700), 1);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose :where(mark):not(:where([class~=not-prose],[class~=not-prose] *)){color:rgba(var(--color-neutral-800),1);background-color:rgba(var(--color-primary-600),1);padding:.1rem .2rem;border-radius:.25rem}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *))::before{display:none}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *))::after{display:none}.prose :where(a.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-600),1)}.prose :where(p.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-600),1)}.prose-invert{--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.prose-invert :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-neutral-600),1)}.prose-invert :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover{color:rgba(var(--color-primary-400),1)}.prose-invert :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:rgba(var(--color-neutral-200),1);background-color:rgba(var(--color-neutral-700),1)}.prose-invert :where(mark):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:rgba(var(--color-primary-400),1)}.prose-invert :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:rgba(var(--color-neutral-700),1)}.prose-invert :where(a.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-400),1)}.prose-invert :where(p.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-400),1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.\!absolute{position:absolute!important}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-20{top:5rem}.top-\[110vh\]{top:110vh}.top-\[calc\(100vh-5\.5rem\)\]{top:calc(100vh - 5.5rem)}.z-10{z-index:10}.z-30{z-index:30}.z-\[1040\]{z-index:1040}.z-\[1070\]{z-index:1070}.z-\[1080\]{z-index:1080}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[999\]{z-index:999}.order-first{order:-9999}.float-left{float:left}.\!-m-px{margin:-1px!important}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-auto{margin:auto}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-\[15\%\]{margin-left:15%;margin-right:15%}.mx-\[3px\]{margin-left:3px;margin-right:3px}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-3{margin-top:.75rem;margin-bottom:.75rem}.\!mb-0{margin-bottom:0!important}.\!mb-9{margin-bottom:2.25rem!important}.\!mt-0{margin-top:0!important}.-mb-1{margin-bottom:-.25rem}.-ml-12{margin-left:-3rem}.-mr-2{margin-right:-.5rem}.-mr-48{margin-right:-12rem}.-mr-\[100\%\]{margin-right:-100%}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-\[2px\]{margin-bottom:2px}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-5{margin-right:1.25rem}.mr-auto{margin-right:auto}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[-2px\]{margin-top:-2px}.mt-\[0\.1rem\]{margin-top:.1rem}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!h-px{height:1px!important}.h-0{height:0}.h-1\/2{height:50%}.h-12{height:3rem}.h-24{height:6rem}.h-3{height:.75rem}.h-36{height:9rem}.h-48{height:12rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[1000px\]{height:1000px}.h-\[150px\]{height:150px}.h-\[3px\]{height:3px}.h-\[800px\]{height:800px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-3{max-height:.75rem}.max-h-\[5rem\]{max-height:5rem}.min-h-0{min-height:0}.min-h-\[130px\]{min-height:130px}.min-h-\[148px\]{min-height:148px}.min-h-full{min-height:100%}.\!w-px{width:1px!important}.w-0{width:0}.w-12{width:3rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-36{width:9rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-\[15\%\]{width:15%}.w-\[30px\]{width:30px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[1\.8rem\]{min-width:1.8rem}.min-w-\[220px\]{min-width:220px}.min-w-\[30px\]{min-width:30px}.min-w-full{min-width:100%}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-\[1600px\]{max-width:1600px}.max-w-\[200px\]{max-width:200px}.max-w-\[267px\]{max-width:267px}.max-w-\[5rem\]{max-width:5rem}.max-w-\[64rem\]{max-width:64rem}.max-w-\[calc\(100\%-1rem\)\]{max-width:calc(100% - 1rem)}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-prose{max-width:65ch}.max-w-xl{max-width:36rem}.flex-1{flex:1}.flex-auto{flex:auto}.flex-initial{flex:initial}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-auto{flex-basis:auto}.-translate-x-full{--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.-translate-y-8{--tw-translate-y:-2rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.scale-0{--tw-scale-x:0;--tw-scale-y:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.scale-\[1\.02\]{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform-none{transform:none}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1)infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.touch-pan-y{--tw-pan-y:pan-y;touch-action:var(--tw-pan-x)var(--tw-pan-y)var(--tw-pinch-zoom)}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.place-self-center{place-self:center}.self-center{align-self:center}.overflow-auto{overflow:auto}.\!overflow-hidden{overflow:hidden!important}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.scroll-smooth{scroll-behavior:smooth}.whitespace-normal{white-space:normal}.\!whitespace-nowrap{white-space:nowrap!important}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.\!rounded-md{border-radius:.375rem!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[50\%\]{border-radius:50%}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-e-\[0\.25rem\]{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-s-\[0\.25rem\]{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.\!border-0{border-width:0!important}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-y-\[10px\]{border-top-width:10px;border-bottom-width:10px}.border-b-2{border-bottom-width:2px}.border-e-0{border-inline-end-width:0}.border-l-2{border-left-width:2px}.border-s-0{border-inline-start-width:0}.border-s-\[0\.125rem\]{border-inline-start-width:.125rem}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-dotted{border-style:dotted}.border-neutral-100{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-100),var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-200),var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-300),var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgba(var(--color-primary-400),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--color-primary-500),var(--tw-border-opacity))}.border-secondary-500{--tw-border-opacity:1;border-color:rgba(var(--color-secondary-500),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[\#6d6d6d\]{--tw-bg-opacity:1;background-color:rgb(109 109 109/var(--tw-bg-opacity))}.bg-neutral{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral),var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-100),var(--tw-bg-opacity))}.bg-neutral-100\/50{background-color:rgba(var(--color-neutral-100),.5)}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-300),var(--tw-bg-opacity))}.bg-neutral-500\/50{background-color:rgba(var(--color-neutral-500),.5)}.bg-neutral\/50{background-color:rgba(var(--color-neutral),.5)}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-200),var(--tw-bg-opacity))}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.bg-none{background-image:none}.from-neutral{--tw-gradient-from:rgba(var(--color-neutral), 1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(var(--color-neutral), 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary-500{--tw-gradient-from:rgba(var(--color-primary-500), 1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(var(--color-primary-500), 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-60\%{--tw-gradient-from-position:60%}.to-neutral{--tw-gradient-to:rgba(var(--color-neutral), 1) var(--tw-gradient-to-position)}.to-neutral-100{--tw-gradient-to:rgba(var(--color-neutral-100), 1) var(--tw-gradient-to-position)}.to-secondary-600{--tw-gradient-to:rgba(var(--color-secondary-600), 1) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.bg-clip-padding{background-clip:padding-box}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-left{-o-object-position:left;object-position:left}.\!p-0{padding:0!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[0\.4rem\]{padding-left:.4rem;padding-right:.4rem}.px-\[30px\]{padding-left:30px;padding-right:30px}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[0\.4rem\]{padding-top:.4rem;padding-bottom:.4rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-32{padding-bottom:8rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-\[24px\]{padding-left:24px}.pr-\[24px\]{padding-right:24px}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.-indent-\[999px\]{text-indent:-999px}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.6rem\]{font-size:.6rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.leading-3{line-height:.75rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-\[1\.6\]{line-height:1.6}.tracking-normal{letter-spacing:0}.\!text-neutral{--tw-text-opacity:1 !important;color:rgba(var(--color-neutral),var(--tw-text-opacity))!important}.text-neutral-200{--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.text-neutral-50{--tw-text-opacity:1;color:rgba(var(--color-neutral-50),var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgba(var(--color-neutral-900),var(--tw-text-opacity))}.text-primary-100{--tw-text-opacity:1;color:rgba(var(--color-primary-100),var(--tw-text-opacity))}.text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.text-primary-800{--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.text-transparent{color:transparent}.\!no-underline{text-decoration-line:none!important}.no-underline{text-decoration-line:none}.decoration-neutral-300{text-decoration-color:rgba(var(--color-neutral-300),1)}.decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.underline-offset-auto{text-underline-offset:auto}.\!opacity-0{opacity:0!important}.\!opacity-100{opacity:1!important}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-multiply{mix-blend-mode:multiply}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition-\[height\]{transition-property:height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-\[transform\2c _opacity\]{transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.duration-150{transition-duration:150ms}.duration-200{transition-duration:200ms}.duration-300{transition-duration:300ms}.duration-\[350ms\]{transition-duration:350ms}.duration-\[600ms\]{transition-duration:600ms}.ease-\[cubic-bezier\(0\2c 0\2c 0\.15\2c 1\)\2c _cubic-bezier\(0\2c 0\2c 0\.15\2c 1\)\]{transition-timing-function:cubic-bezier(0,0,.15,1),cubic-bezier(0,0,.15,1)}.ease-\[cubic-bezier\(0\.25\2c 0\.1\2c 0\.25\2c 1\.0\)\]{transition-timing-function:cubic-bezier(.25,.1,.25,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.\!\[clip\:rect\(0\2c 0\2c 0\2c 0\)\]{clip:rect(0,0,0,0)!important}body a,body button{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.icon svg{height:1em;width:1em}#search-query::-webkit-search-cancel-button,#search-query::-webkit-search-decoration,#search-query::-webkit-search-results-button,#search-query::-webkit-search-results-decoration{display:none}body:has(#menu-controller:checked){overflow-y:hidden}#menu-button:has(#menu-controller:checked){visibility:hidden}#menu-controller:checked~#menu-wrapper{visibility:visible;opacity:1}.prose blockquote:where([dir=rtl],[dir=rtl] *){border-left-width:0;border-right-width:4px;padding-right:1rem}.prose ul>li:where([dir=rtl],[dir=rtl] *),.prose ol>li:where([dir=rtl],[dir=rtl] *){margin-right:1.75rem;padding-left:0;padding-right:.5rem}.prose ol>li:where([dir=rtl],[dir=rtl] *):before,.prose ul>li:where([dir=rtl],[dir=rtl] *):before{left:auto;right:.25rem}.prose thead td:first-child:where([dir=rtl],[dir=rtl] *),.prose thead th:first-child:where([dir=rtl],[dir=rtl] *){padding-right:0}.prose thead td:last-child:where([dir=rtl],[dir=rtl] *),.prose thead th:last-child:where([dir=rtl],[dir=rtl] *){padding-left:0}.prose div.min-w-0.max-w-prose>*:first-child{margin-top:.75rem}.toc ul,.toc li{list-style-type:none;padding-left:0;padding-right:0;line-height:1.375}.toc ul ul:where([dir=ltr],[dir=ltr] *){padding-left:1rem}.toc ul ul:where([dir=rtl],[dir=rtl] *){padding-right:1rem}.toc a{font-weight:400;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.toc a:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.toc ul>li:where([dir=rtl],[dir=rtl] *){margin-right:0}.highlight-wrapper{display:block}.highlight{position:relative;z-index:0}.highlight:hover>.copy-button{visibility:visible}.copy-button{visibility:hidden;position:absolute;top:0;right:0;z-index:10;width:5rem;cursor:pointer;white-space:nowrap;border-bottom-left-radius:.375rem;border-top-right-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-200),var(--tw-bg-opacity));padding-top:.25rem;padding-bottom:.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity));opacity:.9}.copy-button:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.copy-button:hover,.copy-button:focus,.copy-button:active,.copy-button:active:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.copy-button:hover:is(.dark *),.copy-button:focus:is(.dark *),.copy-button:active:is(.dark *),.copy-button:active:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.copy-textarea{position:absolute;z-index:-10;opacity:.05}.katex-display{overflow:auto hidden}table{display:block;overflow:auto}code{word-wrap:break-word;overflow-wrap:break-word}.prose .chroma{position:static;border-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-50),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.prose .chroma:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.chroma .lntd,.chroma .lntd pre{margin:0;border-style:none;padding:0;vertical-align:top}.chroma .lntable{display:block;width:auto;overflow:hidden;padding-left:1rem;padding-right:1rem;padding-top:.75rem;padding-bottom:.75rem;font-size:1rem;line-height:1.5rem;border-spacing:0}.chroma .hl{margin-left:-1rem;margin-right:-1rem;display:block;width:auto;--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity));padding-left:1rem;padding-right:1rem}.chroma .hl:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.chroma .lntd .hl{margin:0;padding:0}.chroma .lnt,.chroma .ln{margin-right:.4em;padding-left:.4em;padding-right:.4em;padding-top:0;padding-bottom:0;--tw-text-opacity:1;color:rgba(var(--color-neutral-600),var(--tw-text-opacity))}.chroma .lnt:is(.dark *),.chroma .ln:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nc,.chroma .fm,.chroma .nn,.chroma .vc,.chroma .o{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.chroma .k:is(.dark *),.chroma .kd:is(.dark *),.chroma .kn:is(.dark *),.chroma .kp:is(.dark *),.chroma .kr:is(.dark *),.chroma .nc:is(.dark *),.chroma .fm:is(.dark *),.chroma .nn:is(.dark *),.chroma .vc:is(.dark *),.chroma .o:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.chroma .kc{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.chroma .kc:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .kt,.chroma .nv,.chroma .vi,.chroma .vm,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.chroma .kt:is(.dark *),.chroma .nv:is(.dark *),.chroma .vi:is(.dark *),.chroma .vm:is(.dark *),.chroma .m:is(.dark *),.chroma .mb:is(.dark *),.chroma .mf:is(.dark *),.chroma .mh:is(.dark *),.chroma .mi:is(.dark *),.chroma .il:is(.dark *),.chroma .mo:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.chroma .n,.chroma .nd,.chroma .ni,.chroma .nl{--tw-text-opacity:1;color:rgba(var(--color-secondary-900),var(--tw-text-opacity))}.chroma .n:is(.dark *),.chroma .nd:is(.dark *),.chroma .ni:is(.dark *),.chroma .nl:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-200),var(--tw-text-opacity))}.chroma .na,.chroma .nb,.chroma .bp,.chroma .nx,.chroma .py,.chroma .nt{--tw-text-opacity:1;color:rgba(var(--color-secondary-800),var(--tw-text-opacity))}.chroma .na:is(.dark *),.chroma .nb:is(.dark *),.chroma .bp:is(.dark *),.chroma .nx:is(.dark *),.chroma .py:is(.dark *),.chroma .nt:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-300),var(--tw-text-opacity))}.chroma .no,.chroma .ne,.chroma .vg{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.chroma .no:is(.dark *),.chroma .ne:is(.dark *),.chroma .vg:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .nf{--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.chroma .nf:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .l,.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .s1,.chroma .gi,.chroma .go,.chroma .gp{--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.chroma .l:is(.dark *),.chroma .ld:is(.dark *),.chroma .s:is(.dark *),.chroma .sa:is(.dark *),.chroma .sb:is(.dark *),.chroma .sc:is(.dark *),.chroma .dl:is(.dark *),.chroma .sd:is(.dark *),.chroma .s2:is(.dark *),.chroma .sh:is(.dark *),.chroma .si:is(.dark *),.chroma .sx:is(.dark *),.chroma .s1:is(.dark *),.chroma .gi:is(.dark *),.chroma .go:is(.dark *),.chroma .gp:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .se{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.chroma .se:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .sr,.chroma .ss{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.chroma .sr:is(.dark *),.chroma .ss:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .ow{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .ow:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.chroma .c,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .c:is(.dark *),.chroma .cm:is(.dark *),.chroma .c1:is(.dark *),.chroma .cs:is(.dark *),.chroma .cp:is(.dark *),.chroma .cpf:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ch{font-weight:600;font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .ch:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ge{font-style:italic}.chroma .gh{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gs{font-weight:600}.chroma .gu,.chroma .gt{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gl{text-decoration-line:underline}pre{text-align:left}.thumbnail{min-width:300px;height:180px;background-repeat:no-repeat;background-size:cover;background-position:50%}.thumbnail_card{height:200px;background-repeat:no-repeat;background-size:cover;background-position:50%}.thumbnail_card_related{height:150px;background-repeat:no-repeat;background-size:cover;background-position:50%}.thumbnail_card_term{height:150px;background-repeat:no-repeat;background-size:cover;background-position:50%}.single_hero_basic{background-repeat:no-repeat;background-size:cover;background-position:50%}.single_hero_round{max-height:50vh;-o-object-fit:cover;object-fit:cover}.single_hero_background{background-repeat:no-repeat;background-size:cover;background-position:50%;width:calc(100% + 40px);z-index:-10;margin-left:-20px}.hero_gradient{width:100%;height:100%}.thumbnailshadow{box-shadow:5px 5px 20px 1px rgba(0,0,0,.3)}.anchor{display:block;position:relative;top:-150px;height:0;visibility:hidden}@media(min-width:640px){.thumbnail{min-width:100%;height:180px}.article{flex-wrap:wrap}}@media(min-width:853px){.thumbnail{min-width:300px;min-height:180px;height:auto}.article{flex-wrap:nowrap}}.medium-zoom-image--opened{z-index:100}.nested-menu:hover+.menuhide{visibility:visible;opacity:1;transition:visibility .3s,opacity .3s ease-in-out}.menuhide:hover{visibility:visible;opacity:1;transition:visibility .3s,opacity .3s ease-in-out}.menuhide{visibility:hidden;opacity:0;transition:visibility .3s,opacity .3s ease-in-out;z-index:1000}.active{text-decoration-line:underline;text-decoration-thickness:3px;text-underline-offset:4px}.grid-w10{width:calc(10% - 5px);margin:0!important}.grid-w15{width:calc(15% - 5px);margin:0!important}.grid-w20{width:calc(20% - 5px);margin:0!important}.grid-w25{width:calc(25% - 5px);margin:0!important}.grid-w30{width:calc(30% - 5px);margin:0!important}.grid-w33{width:calc(33% - 5px);margin:0!important}.grid-w35{width:calc(35% - 5px);margin:0!important}.grid-w40{width:calc(40% - 5px);margin:0!important}.grid-w45{width:calc(45% - 5px);margin:0!important}.grid-w50{width:calc(50% - 5px);margin:0!important}.grid-w55{width:calc(55% - 5px);margin:0!important}.grid-w60{width:calc(60% - 5px);margin:0!important}.grid-w65{width:calc(65% - 5px);margin:0!important}.grid-w66{width:calc(66% - 5px);margin:0!important}.grid-w70{width:calc(70% - 5px);margin:0!important}.grid-w75{width:calc(75% - 5px);margin:0!important}.grid-w80{width:calc(80% - 5px);margin:0!important}.grid-w85{width:calc(85% - 5px);margin:0!important}.grid-w90{width:calc(90% - 5px);margin:0!important}.grid-w95{width:calc(95% - 5px);margin:0!important}.grid-w100{width:calc(100% - 5px);margin:0!important}@media(min-width:640px){.sm\:grid-w10{width:calc(10% - 5px);margin:0!important}.sm\:grid-w15{width:calc(15% - 5px);margin:0!important}.sm\:grid-w20{width:calc(20% - 5px);margin:0!important}.sm\:grid-w25{width:calc(25% - 5px);margin:0!important}.sm\:grid-w30{width:calc(30% - 5px);margin:0!important}.sm\:grid-w33{width:calc(33% - 5px);margin:0!important}.sm\:grid-w35{width:calc(35% - 5px);margin:0!important}.sm\:grid-w40{width:calc(40% - 5px);margin:0!important}.sm\:grid-w45{width:calc(45% - 5px);margin:0!important}.sm\:grid-w50{width:calc(50% - 5px);margin:0!important}.sm\:grid-w55{width:calc(55% - 5px);margin:0!important}.sm\:grid-w60{width:calc(60% - 5px);margin:0!important}.sm\:grid-w65{width:calc(65% - 5px);margin:0!important}.sm\:grid-w66{width:calc(66% - 5px);margin:0!important}.sm\:grid-w70{width:calc(70% - 5px);margin:0!important}.sm\:grid-w75{width:calc(75% - 5px);margin:0!important}.sm\:grid-w80{width:calc(80% - 5px);margin:0!important}.sm\:grid-w85{width:calc(85% - 5px);margin:0!important}.sm\:grid-w90{width:calc(90% - 5px);margin:0!important}.sm\:grid-w95{width:calc(95% - 5px);margin:0!important}.sm\:grid-w100{width:calc(100% - 5px);margin:0!important}}@media(min-width:853px){.md\:grid-w10{width:calc(10% - 5px);margin:0!important}.md\:grid-w15{width:calc(15% - 5px);margin:0!important}.md\:grid-w20{width:calc(20% - 5px);margin:0!important}.md\:grid-w25{width:calc(25% - 5px);margin:0!important}.md\:grid-w30{width:calc(30% - 5px);margin:0!important}.md\:grid-w33{width:calc(33% - 5px);margin:0!important}.md\:grid-w35{width:calc(35% - 5px);margin:0!important}.md\:grid-w40{width:calc(40% - 5px);margin:0!important}.md\:grid-w45{width:calc(45% - 5px);margin:0!important}.md\:grid-w50{width:calc(50% - 5px);margin:0!important}.md\:grid-w55{width:calc(55% - 5px);margin:0!important}.md\:grid-w60{width:calc(60% - 5px);margin:0!important}.md\:grid-w65{width:calc(65% - 5px);margin:0!important}.md\:grid-w66{width:calc(66% - 5px);margin:0!important}.md\:grid-w70{width:calc(70% - 5px);margin:0!important}.md\:grid-w75{width:calc(75% - 5px);margin:0!important}.md\:grid-w80{width:calc(80% - 5px);margin:0!important}.md\:grid-w85{width:calc(85% - 5px);margin:0!important}.md\:grid-w90{width:calc(90% - 5px);margin:0!important}.md\:grid-w95{width:calc(95% - 5px);margin:0!important}.md\:grid-w100{width:calc(100% - 5px);margin:0!important}}@media(min-width:1024px){.lg\:grid-w10{width:calc(10% - 5px);margin:0!important}.lg\:grid-w15{width:calc(15% - 5px);margin:0!important}.lg\:grid-w20{width:calc(20% - 5px);margin:0!important}.lg\:grid-w25{width:calc(25% - 5px);margin:0!important}.lg\:grid-w30{width:calc(30% - 5px);margin:0!important}.lg\:grid-w33{width:calc(33% - 5px);margin:0!important}.lg\:grid-w35{width:calc(35% - 5px);margin:0!important}.lg\:grid-w40{width:calc(40% - 5px);margin:0!important}.lg\:grid-w45{width:calc(45% - 5px);margin:0!important}.lg\:grid-w50{width:calc(50% - 5px);margin:0!important}.lg\:grid-w55{width:calc(55% - 5px);margin:0!important}.lg\:grid-w60{width:calc(60% - 5px);margin:0!important}.lg\:grid-w65{width:calc(65% - 5px);margin:0!important}.lg\:grid-w66{width:calc(66% - 5px);margin:0!important}.lg\:grid-w70{width:calc(70% - 5px);margin:0!important}.lg\:grid-w75{width:calc(75% - 5px);margin:0!important}.lg\:grid-w80{width:calc(80% - 5px);margin:0!important}.lg\:grid-w85{width:calc(85% - 5px);margin:0!important}.lg\:grid-w90{width:calc(90% - 5px);margin:0!important}.lg\:grid-w95{width:calc(95% - 5px);margin:0!important}.lg\:grid-w100{width:calc(100% - 5px);margin:0!important}}@media(min-width:1280px){.xl\:grid-w10{width:calc(10% - 5px);margin:0!important}.xl\:grid-w15{width:calc(15% - 5px);margin:0!important}.xl\:grid-w20{width:calc(20% - 5px);margin:0!important}.xl\:grid-w25{width:calc(25% - 5px);margin:0!important}.xl\:grid-w30{width:calc(30% - 5px);margin:0!important}.xl\:grid-w33{width:calc(33% - 5px);margin:0!important}.xl\:grid-w35{width:calc(35% - 5px);margin:0!important}.xl\:grid-w40{width:calc(40% - 5px);margin:0!important}.xl\:grid-w45{width:calc(45% - 5px);margin:0!important}.xl\:grid-w50{width:calc(50% - 5px);margin:0!important}.xl\:grid-w55{width:calc(55% - 5px);margin:0!important}.xl\:grid-w60{width:calc(60% - 5px);margin:0!important}.xl\:grid-w65{width:calc(65% - 5px);margin:0!important}.xl\:grid-w66{width:calc(66% - 5px);margin:0!important}.xl\:grid-w70{width:calc(70% - 5px);margin:0!important}.xl\:grid-w75{width:calc(75% - 5px);margin:0!important}.xl\:grid-w80{width:calc(80% - 5px);margin:0!important}.xl\:grid-w85{width:calc(85% - 5px);margin:0!important}.xl\:grid-w90{width:calc(90% - 5px);margin:0!important}.xl\:grid-w95{width:calc(95% - 5px);margin:0!important}.xl\:grid-w100{width:calc(100% - 5px);margin:0!important}}@media(min-width:1536px){.2xl\:grid-w10{width:calc(10% - 5px);margin:0!important}.2xl\:grid-w15{width:calc(15% - 5px);margin:0!important}.2xl\:grid-w20{width:calc(20% - 5px);margin:0!important}.2xl\:grid-w25{width:calc(25% - 5px);margin:0!important}.2xl\:grid-w30{width:calc(30% - 5px);margin:0!important}.2xl\:grid-w33{width:calc(33% - 5px);margin:0!important}.2xl\:grid-w35{width:calc(35% - 5px);margin:0!important}.2xl\:grid-w40{width:calc(40% - 5px);margin:0!important}.2xl\:grid-w45{width:calc(45% - 5px);margin:0!important}.2xl\:grid-w50{width:calc(50% - 5px);margin:0!important}.2xl\:grid-w55{width:calc(55% - 5px);margin:0!important}.2xl\:grid-w60{width:calc(60% - 5px);margin:0!important}.2xl\:grid-w65{width:calc(65% - 5px);margin:0!important}.2xl\:grid-w66{width:calc(66% - 5px);margin:0!important}.2xl\:grid-w70{width:calc(70% - 5px);margin:0!important}.2xl\:grid-w75{width:calc(75% - 5px);margin:0!important}.2xl\:grid-w80{width:calc(80% - 5px);margin:0!important}.2xl\:grid-w85{width:calc(85% - 5px);margin:0!important}.2xl\:grid-w90{width:calc(90% - 5px);margin:0!important}.2xl\:grid-w95{width:calc(95% - 5px);margin:0!important}.2xl\:grid-w100{width:calc(100% - 5px);margin:0!important}}.ratio-16-9{padding-top:56.25%}.ratio-21-9{padding-top:42.85%}.ratio-32-9{padding-top:28.125%}@media(min-width:640px){.sm\:ratio-16-9{padding-top:56.25%}.sm\:ratio-21-9{padding-top:42.85%}.sm\:ratio-32-9{padding-top:28.125%}}@media(min-width:853px){.md\:ratio-16-9{padding-top:56.25%}.md\:ratio-21-9{padding-top:42.85%}.md\:ratio-32-9{padding-top:28.125%}}@media(min-width:1024px){.lg\:ratio-16-9{padding-top:56.25%}.lg\:ratio-21-9{padding-top:42.85%}.lg\:ratio-32-9{padding-top:28.125%}}@media(min-width:1280px){.xl\:ratio-16-9{padding-top:56.25%}.xl\:ratio-21-9{padding-top:42.85%}.xl\:ratio-32-9{padding-top:28.125%}}@media(min-width:1536px){.2xl\:ratio-16-9{padding-top:56.25%}.2xl\:ratio-21-9{padding-top:42.85%}.2xl\:ratio-32-9{padding-top:28.125%}}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.dark\:prose-invert:is(.dark *) :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-neutral-600),1)}.dark\:prose-invert:is(.dark *) :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover{color:rgba(var(--color-primary-400),1)}.dark\:prose-invert:is(.dark *) :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:rgba(var(--color-neutral-200),1);background-color:rgba(var(--color-neutral-700),1)}.dark\:prose-invert:is(.dark *) :where(mark):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:rgba(var(--color-primary-400),1)}.dark\:prose-invert:is(.dark *) :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:rgba(var(--color-neutral-700),1)}.dark\:prose-invert:is(.dark *) :where(a.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-400),1)}.dark\:prose-invert:is(.dark *) :where(p.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-400),1)}.after\:clear-both::after{content:var(--tw-content);clear:both}.after\:block::after{content:var(--tw-content);display:block}.after\:content-\[\'\'\]::after{--tw-content:'';content:var(--tw-content)}.first\:mt-8:first-child{margin-top:2rem}.empty\:hidden:empty{display:none}.hover\:border-transparent:hover{border-color:transparent}.hover\:\!bg-primary-500:hover{--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))!important}.hover\:bg-primary-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.hover\:bg-primary-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))}.hover\:bg-primary-600:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.hover\:text-neutral:hover{--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.hover\:text-primary-400:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.hover\:text-primary-500:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.hover\:text-primary-600:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.hover\:text-primary-700:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:decoration-primary-400:hover{text-decoration-color:rgba(var(--color-primary-400),1)}.hover\:decoration-2:hover{text-decoration-thickness:2px}.hover\:underline-offset-2:hover{text-underline-offset:2px}.hover\:opacity-90:hover{opacity:.9}.hover\:outline-none:hover{outline:2px solid transparent;outline-offset:2px}.focus\:translate-y-0:focus{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.focus\:no-underline:focus{text-decoration-line:none}.focus\:opacity-90:focus{opacity:.9}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-dotted:focus{outline-style:dotted}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-transparent:focus{outline-color:transparent}.group:hover .group-hover\:text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.group:hover .group-hover\:text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.group:hover .group-hover\:underline{text-decoration-line:underline}.group:hover .group-hover\:decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[twe-carousel-fade\]\:z-0[data-twe-carousel-fade]{z-index:0}.data-\[twe-carousel-fade\]\:z-\[1\][data-twe-carousel-fade]{z-index:1}.data-\[popper-reference-hidden\]\:hidden[data-popper-reference-hidden]{display:none}.data-\[twe-carousel-fade\]\:opacity-0[data-twe-carousel-fade]{opacity:0}.data-\[twe-carousel-fade\]\:opacity-100[data-twe-carousel-fade]{opacity:1}.data-\[twe-carousel-fade\]\:duration-\[600ms\][data-twe-carousel-fade]{transition-duration:600ms}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-x-0{border-left-width:0;border-right-width:0}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-x-0{border-left-width:0;border-right-width:0}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-e-0{border-inline-end-width:0}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-s-0{border-inline-start-width:0}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-t{border-top-width:1px}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-e-0{border-inline-end-width:0}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-s-0{border-inline-start-width:0}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-t{border-top-width:1px}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-solid{border-style:solid}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-solid{border-style:solid}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-t-transparent{border-top-color:transparent}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-t-transparent{border-top-color:transparent}@media(prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}.dark\:flex:is(.dark *){display:flex}.dark\:hidden:is(.dark *){display:none}.dark\:border-neutral-400:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-400),var(--tw-border-opacity))}.dark\:border-neutral-600:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-600),var(--tw-border-opacity))}.dark\:border-neutral-700:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-700),var(--tw-border-opacity))}.dark\:border-primary-300:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-primary-300),var(--tw-border-opacity))}.dark\:border-primary-600:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}.dark\:bg-neutral-400:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-400),var(--tw-bg-opacity))}.dark\:bg-neutral-600:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity))}.dark\:bg-neutral-700:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity))}.dark\:bg-neutral-800:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-800),var(--tw-bg-opacity))}.dark\:bg-neutral-800\/50:is(.dark *){background-color:rgba(var(--color-neutral-800),.5)}.dark\:bg-neutral-900\/50:is(.dark *){background-color:rgba(var(--color-neutral-900),.5)}.dark\:bg-primary-300:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-300),var(--tw-bg-opacity))}.dark\:bg-primary-400:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}.dark\:bg-primary-800:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-800),var(--tw-bg-opacity))}.dark\:bg-primary-900:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark\:from-neutral-800:is(.dark *){--tw-gradient-from:rgba(var(--color-neutral-800), 1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(var(--color-neutral-800), 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-primary-600:is(.dark *){--tw-gradient-from:rgba(var(--color-primary-600), 1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(var(--color-primary-600), 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:to-neutral-800:is(.dark *){--tw-gradient-to:rgba(var(--color-neutral-800), 1) var(--tw-gradient-to-position)}.dark\:to-secondary-800:is(.dark *){--tw-gradient-to:rgba(var(--color-secondary-800), 1) var(--tw-gradient-to-position)}.dark\:text-neutral:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.dark\:text-neutral-100:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-100),var(--tw-text-opacity))}.dark\:text-neutral-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.dark\:text-neutral-300:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.dark\:text-neutral-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.dark\:text-neutral-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.dark\:text-neutral-700:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.dark\:text-neutral-800:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.dark\:text-primary-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-200),var(--tw-text-opacity))}.dark\:text-primary-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark\:opacity-60:is(.dark *){opacity:.6}.dark\:hover\:\!bg-primary-700:hover:is(.dark *){--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-700),var(--tw-bg-opacity))!important}.dark\:hover\:bg-primary-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}.dark\:hover\:bg-primary-900:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark\:hover\:text-neutral-800:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.dark\:hover\:text-primary-400:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark\:focus\:bg-primary-900:focus:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.group:hover .dark\:group-hover\:text-neutral-700:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-primary-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}@media(min-width:640px){.sm\:mb-0{margin-bottom:0}.sm\:mt-16{margin-top:4rem}.sm\:w-1\/2{width:50%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:overflow-hidden{overflow:hidden}.sm\:p-6{padding:1.5rem}.sm\:px-14{padding-left:3.5rem;padding-right:3.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media(min-width:853px){.md\:-mr-16{margin-right:-4rem}.md\:ml-12{margin-left:3rem}.md\:mr-7{margin-right:1.75rem}.md\:mt-0{margin-top:0}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-56{height:14rem}.md\:h-\[200px\]{height:200px}.md\:w-1\/3{width:33.333333%}.md\:w-auto{width:auto}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:justify-start{justify-content:flex-start}.md\:p-\[10vh\]{padding:10vh}.md\:px-24{padding-left:6rem;padding-right:6rem}}@media(min-width:1024px){.lg\:absolute{position:absolute}.lg\:relative{position:relative}.lg\:sticky{position:sticky}.lg\:left-0{left:0}.lg\:top-10{top:2.5rem}.lg\:top-\[140px\]{top:140px}.lg\:order-last{order:9999}.lg\:m-0{margin:0}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-auto{margin-left:auto}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-72{height:18rem}.lg\:h-full{height:100%}.lg\:w-1\/4{width:25%}.lg\:w-auto{width:auto}.lg\:max-w-7xl{max-width:80rem}.lg\:max-w-none{max-width:none}.lg\:max-w-xs{max-width:20rem}.lg\:grid-flow-col-dense{grid-auto-flow:column dense}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-24{gap:6rem}.lg\:p-\[12vh\]{padding:12vh}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-16{padding-top:4rem;padding-bottom:4rem}.lg\:py-32{padding-top:8rem;padding-bottom:8rem}}@media(min-width:1280px){.xl\:w-1\/4{width:25%}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1536px){.\32xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}.ltr\:-left-6:where([dir=ltr],[dir=ltr] *){left:-1.5rem}.ltr\:right-0:where([dir=ltr],[dir=ltr] *){right:0}.ltr\:-ml-5:where([dir=ltr],[dir=ltr] *){margin-left:-1.25rem}.ltr\:ml-2:where([dir=ltr],[dir=ltr] *){margin-left:.5rem}.ltr\:mr-14:where([dir=ltr],[dir=ltr] *){margin-right:3.5rem}.ltr\:mr-4:where([dir=ltr],[dir=ltr] *){margin-right:1rem}.ltr\:block:where([dir=ltr],[dir=ltr] *){display:block}.ltr\:inline:where([dir=ltr],[dir=ltr] *){display:inline}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.ltr\:border-l:where([dir=ltr],[dir=ltr] *){border-left-width:1px}.ltr\:pl-5:where([dir=ltr],[dir=ltr] *){padding-left:1.25rem}.ltr\:pr-2:where([dir=ltr],[dir=ltr] *){padding-right:.5rem}.ltr\:pr-3:where([dir=ltr],[dir=ltr] *){padding-right:.75rem}.ltr\:text-right:where([dir=ltr],[dir=ltr] *){text-align:right}@media(min-width:640px){.ltr\:sm\:mr-7:where([dir=ltr],[dir=ltr] *){margin-right:1.75rem}.ltr\:sm\:last\:mr-0:last-child:where([dir=ltr],[dir=ltr] *){margin-right:0}}@media(min-width:1024px){.ltr\:lg\:pl-8:where([dir=ltr],[dir=ltr] *){padding-left:2rem}}.rtl\:-right-6:where([dir=rtl],[dir=rtl] *){right:-1.5rem}.rtl\:left-0:where([dir=rtl],[dir=rtl] *){left:0}.rtl\:-mr-5:where([dir=rtl],[dir=rtl] *){margin-right:-1.25rem}.rtl\:ml-14:where([dir=rtl],[dir=rtl] *){margin-left:3.5rem}.rtl\:ml-4:where([dir=rtl],[dir=rtl] *){margin-left:1rem}.rtl\:mr-2:where([dir=rtl],[dir=rtl] *){margin-right:.5rem}.rtl\:block:where([dir=rtl],[dir=rtl] *){display:block}.rtl\:inline:where([dir=rtl],[dir=rtl] *){display:inline}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:border-r:where([dir=rtl],[dir=rtl] *){border-right-width:1px}.rtl\:pl-2:where([dir=rtl],[dir=rtl] *){padding-left:.5rem}.rtl\:pl-3:where([dir=rtl],[dir=rtl] *){padding-left:.75rem}.rtl\:pr-5:where([dir=rtl],[dir=rtl] *){padding-right:1.25rem}.rtl\:text-left:where([dir=rtl],[dir=rtl] *){text-align:left}@media(min-width:640px){.rtl\:sm\:ml-7:where([dir=rtl],[dir=rtl] *){margin-left:1.75rem}.rtl\:sm\:last\:ml-0:last-child:where([dir=rtl],[dir=rtl] *){margin-left:0}}@media(min-width:1024px){.rtl\:lg\:pr-8:where([dir=rtl],[dir=rtl] *){padding-right:2rem}}@media print{.print\:hidden{display:none}}
\ No newline at end of file diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png Binary files differnew file mode 100644 index 0000000..9c2c206 --- /dev/null +++ b/public/favicon-16x16.png diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png Binary files differnew file mode 100644 index 0000000..d7f7417 --- /dev/null +++ b/public/favicon-32x32.png diff --git a/public/favicon.ico b/public/favicon.ico Binary files differnew file mode 100644 index 0000000..e953b1f --- /dev/null +++ b/public/favicon.ico diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..46d256e --- /dev/null +++ b/public/index.html @@ -0,0 +1,565 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head> + <meta name="generator" content="Hugo 0.125.3"><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>lowest case</title> + <meta name="title" content="lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/" /> + + <link rel="alternate" type="application/rss+xml" href="/index.xml" title="lowest case" /> + + <link rel="alternate" type="application/json" href="/index.json" title="lowest case" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="lowest case"> + <meta property="og:description" content="a lower case only blog, purely for aesthetics."> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="lowest case"> +<meta name="twitter:description" content=""> + + + <script type="application/ld+json"> + { + "@context": "https://schema.org", + "@type": "WebSite", + "@id": "http:\/\/localhost:1313\/", + "name": "lowest case", + + "inLanguage": "en", + "url": "http:\/\/localhost:1313\/", + + "publisher" : { + "@type": "Person", + "name": "leonardo santiago" + } + } + </script> + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + + <article class="max-w-full prose dark:prose-invert"> + + <header> + <h1>lowest case</h1> + </header> + + <section><p>a lower case only blog, purely for aesthetics.</p> +<p>here I talk about discrete mathematics (mostly computer science), including compilers, language theory, type theory, computability theory, software correctness, formal verification, and any other (entirely theoretical almost non-applicable) nerd topic you can think of.</p> +</section> +</article> +<section> + + + + + + +<h2 class="mt-8 text-2xl font-extrabold mb-10">recent</h2> + + + + + +<section class="space-y-10 w-full"> + +</section> + + + + + + +<div class="mt-10 flex justify-center"> + <a href="/posts"> + <button + class="bg-transparent hover:text-primary-500 prose dark:prose-invert font-semibold hover:text-white py-2 px-4 border border-primary-500 hover:border-transparent rounded"> + show more + </button> + </a> +</div> + + +</section> + + + + <div id="top-scroller" class="pointer-events-none absolute top-[110vh] bottom-0 w-12 ltr:right-0 rtl:left-0"> + <a href="#the-top" + class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400" + aria-label="scroll to top" title="scroll to top"> + ↑ + </a> +</div> + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/index.json b/public/index.json new file mode 100644 index 0000000..45d5c54 --- /dev/null +++ b/public/index.json @@ -0,0 +1,2 @@ + +[{"content":"a lower case only blog, purely for aesthetics.\nhere I talk about discrete mathematics (mostly computer science), including compilers, language theory, type theory, computability theory, software correctness, formal verification, and any other (entirely theoretical almost non-applicable) nerd topic you can think of.\n","date":"1 May 2024","externalUrl":null,"permalink":"/","section":"lowest case","summary":"a lower case only blog, purely for aesthetics.","title":"lowest case","type":"page"},{"content":"","date":"1 January 0001","externalUrl":null,"permalink":"/authors/","section":"authors","summary":"","title":"authors","type":"authors"},{"content":"","date":"1 January 0001","externalUrl":null,"permalink":"/categories/","section":"categories","summary":"","title":"categories","type":"categories"},{"content":"","date":"1 January 0001","externalUrl":null,"permalink":"/series/","section":"series","summary":"","title":"series","type":"series"},{"content":"","date":"1 January 0001","externalUrl":null,"permalink":"/tags/","section":"tags","summary":"","title":"tags","type":"tags"}]
\ No newline at end of file diff --git a/public/index.xml b/public/index.xml new file mode 100644 index 0000000..7bbefe0 --- /dev/null +++ b/public/index.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>lowest case</title> + <link>http://localhost:1313/</link> + <description>Recent content on lowest case</description> + <generator>Hugo -- gohugo.io</generator> + <language>en</language> + <copyright>© 2024 leonardo santiago</copyright> + <lastBuildDate>Wed, 01 May 2024 11:53:23 -0300</lastBuildDate><atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" /> + </channel> +</rss> diff --git a/public/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js b/public/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js new file mode 100644 index 0000000..dfe7d81 --- /dev/null +++ b/public/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js @@ -0,0 +1 @@ +const sitePreference=document.documentElement.getAttribute("data-default-appearance"),userPreference=localStorage.getItem("appearance");(sitePreference==="dark"&&userPreference===null||userPreference==="dark")&&document.documentElement.classList.add("dark"),document.documentElement.getAttribute("data-auto-appearance")==="true"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&userPreference!=="light"&&document.documentElement.classList.add("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")})),window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("appearance-switcher"),n=document.getElementById("appearance-switcher-mobile");updateMeta(),this.updateLogo?.(getTargetAppearance()),t&&(t.addEventListener("click",()=>{document.documentElement.classList.toggle("dark");var e=getTargetAppearance();localStorage.setItem("appearance",e),updateMeta(),this.updateLogo?.(e)}),t.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")})),n&&(n.addEventListener("click",()=>{document.documentElement.classList.toggle("dark");var e=getTargetAppearance();localStorage.setItem("appearance",e),updateMeta(),this.updateLogo?.(e)}),n.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")}))});var updateMeta=()=>{var e=document.querySelector("body"),t=getComputedStyle(e);document.querySelector('meta[name="theme-color"]').setAttribute("content",t.backgroundColor)},getTargetAppearance=()=>document.documentElement.classList.contains("dark")?"dark":"light";window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("top-scroller"),n=document.getElementById("site-footer");t&&n&&t.getBoundingClientRect().top>n.getBoundingClientRect().top&&(t.hidden=!0)})
\ No newline at end of file diff --git a/public/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js b/public/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js new file mode 100644 index 0000000..57c2415 --- /dev/null +++ b/public/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js @@ -0,0 +1,15 @@ +e=this,t=function(){"use strict";function R(e,t){var n,s=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),s.push.apply(s,n)),s}function h(e){for(var t,n=1;n<arguments.length;n++)t=null!=arguments[n]?arguments[n]:{},n%2?R(Object(t),!0).forEach(function(n){C(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):R(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))});return e}function k(e){return k="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},k(e)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,N(n.key),n)}function n(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function C(e,t,n){return(t=N(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&x(e,t)}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function x(e,t){return x=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},x(e,t)}function le(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function r(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var n,o,s=m(e);return t?(o=m(this).constructor,n=Reflect.construct(s,arguments,o)):n=s.apply(this,arguments),le(this,n)}}function d(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,s=new Array(t);n<t;n++)s[n]=e[n];return s}function N(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n,s=e[Symbol.toPrimitive];if(void 0!==s){if(n=s.call(e,t||"default"),"object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function i(e){return Array.isArray?Array.isArray(e):"[object Array]"===P(e)}A=1/0;function se(e){return e==null?"":function(e){if("string"==typeof e)return e;var t=e+"";return"0"==t&&1/e==-A?"-0":t}(e)}function o(e){return"string"==typeof e}function V(e){return"number"==typeof e}function Z(e){return!0===e||!1===e||function(e){return B(e)&&null!==e}(e)&&"[object Boolean]"==P(e)}function B(e){return"object"===k(e)}function s(e){return e!=null}function O(e){return!e.trim().length}function P(e){return e==null?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var oe=function(e){return"Missing ".concat(e," property in key")},ie=function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")},z=Object.prototype.hasOwnProperty,fe=function(){function e(n){var s,o=this;t(this,e),this._keys=[],this._keyMap={},s=0,n.forEach(function(e){var t=H(e);o._keys.push(t),o._keyMap[t.id]=t,s+=t.weight}),this._keys.forEach(function(e){e.weight/=s})}return n(e,[{key:"get",value:function(e){return this._keyMap[e]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),e}();function H(e){var t,n=null,s=null,a=null,r=1,c=null;if(o(e)||i(e))a=e,n=M(e),s=b(e);else{if(!z.call(e,"name"))throw new Error(oe("name"));if(t=e.name,a=t,z.call(e,"weight")&&(r=e.weight)<=0)throw new Error(ie(t));n=M(t),s=b(t),c=e.getFn}return{path:n,id:s,weight:r,src:a,getFn:c}}function M(e){return i(e)?e:e.split(".")}function b(e){return i(e)?e.join("."):e}var de={useExtendedSearch:!1,getFn:function(e,t){var n=[],a=!1;return function e(t,r,c){if(s(t))if(r[c]){if(l=t[r[c]],!s(l))return;if(c===r.length-1&&(o(l)||V(l)||Z(l)))n.push(se(l));else if(i(l)){a=!0;for(var l,d=0,u=l.length;d<u;d+=1)e(l[d],r,c+1)}else r.length&&e(l,r,c+1)}else n.push(t)}(e,o(t)?t.split("."):t,0),a?n:n[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},e=h(h(h(h({},{isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:function(e,t){return e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1}}),{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1}),{location:0,threshold:.6,distance:100}),de),re=/[^ ]+/g,E=function(){function a(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=n.getFn,i=void 0===s?e.getFn:s,o=n.fieldNormWeight,r=void 0===o?e.fieldNormWeight:o;t(this,a),this.norm=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,e=new Map,t=Math.pow(10,s);return{get:function(s){if(o=s.match(re).length,e.has(o))return e.get(o);var o,a=1/Math.pow(o,.5*n),i=parseFloat(Math.round(a*t)/t);return e.set(o,i),i},clear:function(){e.clear()}}}(r,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return n(a,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=e,this._keysMap={},e.forEach(function(e,n){t._keysMap[e.id]=n})}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,o(this.docs[0])?this.docs.forEach(function(t,n){e._addString(t,n)}):this.docs.forEach(function(t,n){e._addObject(t,n)}),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();o(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t<n;t+=1)this.records[t].i-=1}},{key:"getValueForItemAtKeyId",value:function(e,t){return e[this._keysMap[t]]}},{key:"size",value:function(){return this.records.length}},{key:"_addString",value:function(e,t){if(s(e)&&!O(e)){var n={v:e,i:t,n:this.norm.get(e)};this.records.push(n)}}},{key:"_addObject",value:function(e,t){var n=this,a={i:t,$:{}};this.keys.forEach(function(t,r){if(c=t.getFn?t.getFn(e):n.getFn(e,t.path),s(c))if(i(c)){for(u=[],d=[{nestedArrIndex:-1,value:c}];d.length;){var c,d,u,m,f,h=d.pop(),p=h.nestedArrIndex,l=h.value;s(l)&&(o(l)&&!O(l)?(m={v:l,i:p,n:n.norm.get(l)},u.push(m)):i(l)&&l.forEach(function(e,t){d.push({nestedArrIndex:t,value:e})}))}a.$[r]=u}else o(c)&&!O(c)&&(f={v:c,n:n.norm.get(c)},a.$[r]=f)}),this.records.push(a)}},{key:"toJSON",value:function(){return{keys:this.keys,records:this.records}}}]),a}();function L(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.getFn,r=void 0===i?e.getFn:i,a=o.fieldNormWeight,c=void 0===a?e.fieldNormWeight:a,s=new E({getFn:r,fieldNormWeight:c});return s.setKeys(t.map(H)),s.setSources(n),s.create(),s}function f(t){var s,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=n.errors,f=void 0===d?0:d,l=n.currentLocation,u=void 0===l?0:l,a=n.expectedLocation,h=void 0===a?0:a,r=n.distance,c=void 0===r?e.distance:r,i=n.ignoreLocation,m=void 0===i?e.ignoreLocation:i,o=f/t.length;return m?o:(s=Math.abs(h-u),c?o+s/c:s?1:o)}l=32;function U(t,n,s){var o,a,p,v,b,_,E,M,P,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},B=r.location,V=void 0===B?e.location:B,R=r.distance,C=void 0===R?e.distance:R,N=r.threshold,U=void 0===N?e.threshold:N,F=r.findAllMatches,$=void 0===F?e.findAllMatches:F,D=r.minMatchCharLength,z=void 0===D?e.minMatchCharLength:D,I=r.includeMatches,H=void 0===I?e.includeMatches:I,L=r.ignoreLocation,j=void 0===L?e.ignoreLocation:L;if(n.length>l)throw new Error("Pattern length exceeds max of ".concat(l,"."));for(var y,d=n.length,g=t.length,i=Math.max(0,Math.min(V,g)),m=U,h=i,x=z>1||H,S=x?Array(g):[];(y=t.indexOf(n,h))>-1;)if(P=f(n,{currentLocation:y,expectedLocation:i,distance:C,ignoreLocation:j}),m=Math.min(P,m),h=y+d,x)for(b=0;b<d;)S[y+b]=1,b+=1;for(var h=-1,w=[],A=1,O=d+g,W=1<<d-1,c=0;c<d;c+=1){for(p=0,a=O;p<a;)f(n,{errors:c,currentLocation:i+a,expectedLocation:i,distance:C,ignoreLocation:j})<=m?p=a:O=a,a=Math.floor((O-p)/2+p);var O=a,T=Math.max(1,i-a+1),k=$?g:Math.min(i+a,g)+d,u=Array(k+2);u[k+1]=(1<<c)-1;for(o=k;o>=T;o-=1)if(v=o-1,E=s[t.charAt(v)],x&&(S[v]=+!!E),u[o]=(u[o+1]<<1|1)&E,c&&(u[o]|=(w[o+1]|w[o])<<1|1|w[o+1]),u[o]&W&&(A=f(n,{errors:c,currentLocation:v,expectedLocation:i,distance:C,ignoreLocation:j}))<=m){if(m=A,(h=v)<=i)break;T=Math.max(1,2*i-h)}if(f(n,{errors:c+1,currentLocation:i,expectedLocation:i,distance:C,ignoreLocation:j})>m)break;w=u}return _={isMatch:h>=0,score:Math.max(.001,A)},x&&(M=function(){for(var i,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.minMatchCharLength,o=[],t=-1,r=-1,n=0,c=s.length;n<c;n+=1)i=s[n],i&&-1===t?t=n:i||-1===t||((r=n-1)-t+1>=a&&o.push([t,r]),t=-1);return s[n-1]&&n-t>=a&&o.push([t,n-1]),o}(S,z),M.length?H&&(_.indices=M):_.isMatch=!1),_}function J(e){for(var s,n={},t=0,o=e.length;t<o;t+=1)s=e.charAt(t),n[s]=(n[s]||0)|1<<o-t-1;return n}_=function(){function s(n){var i,a,c,y=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=o.location,C=void 0===h?e.location:h,g=o.threshold,O=void 0===g?e.threshold:g,d=o.distance,A=void 0===d?e.distance:d,m=o.includeMatches,E=void 0===m?e.includeMatches:m,p=o.findAllMatches,x=void 0===p?e.findAllMatches:p,v=o.minMatchCharLength,_=void 0===v?e.minMatchCharLength:v,u=o.isCaseSensitive,j=void 0===u?e.isCaseSensitive:u,b=o.ignoreLocation,w=void 0===b?e.ignoreLocation:b;if(t(this,s),this.options={location:C,threshold:O,distance:A,includeMatches:E,findAllMatches:x,minMatchCharLength:_,isCaseSensitive:j,ignoreLocation:w},this.pattern=j?n:n.toLowerCase(),this.chunks=[],this.pattern.length)if(a=function(e,t){y.chunks.push({pattern:e,alphabet:J(e),startIndex:t})},i=this.pattern.length,i>l){for(var r=0,f=i%l,k=i-f;r<k;)a(this.pattern.substr(r,l),r),r+=l;f&&(c=i-l,a(this.pattern.substr(c),c))}else a(this.pattern,0)}return n(s,[{key:"searchIn",value:function(e){var r=this.options,g=r.isCaseSensitive,i=r.includeMatches;if(g||(e=e.toLowerCase()),this.pattern===e)return a={isMatch:!0,score:0},i&&(a.indices=[[0,e.length-1]]),a;var o,a,t=this.options,p=t.location,l=t.distance,f=t.threshold,m=t.findAllMatches,u=t.minMatchCharLength,h=t.ignoreLocation,s=[],c=0,n=!1;return this.chunks.forEach(function(t){var g=t.pattern,v=t.alphabet,b=t.startIndex,o=U(e,g,v,{location:p+b,distance:l,threshold:f,findAllMatches:m,minMatchCharLength:u,includeMatches:i,ignoreLocation:h}),a=o.isMatch,j=o.score,r=o.indices;a&&(n=!0),c+=j,a&&r&&(s=[].concat(d(s),d(r)))}),o={isMatch:n,score:n?c/this.chunks.length:1},n&&i&&(o.indices=s),o}}]),s}(),a=function(){function e(n){t(this,e),this.pattern=n}return n(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return $(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return $(e,this.singleRegex)}}]),e}();function $(e,t){var n=e.match(t);return n?n[1]:null}var a,l,u,_,A,Q=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),s}(a),X=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),s}(a),ne=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),s}(a),q=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),s}(a),Y=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),s}(a),G=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),s}(a),S=function(s){c(o,s);var i=r(o);function o(n){var f,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=s.location,g=void 0===h?e.location:h,l=s.threshold,p=void 0===l?e.threshold:l,u=s.distance,j=void 0===u?e.distance:u,a=s.includeMatches,w=void 0===a?e.includeMatches:a,d=s.findAllMatches,v=void 0===d?e.findAllMatches:d,m=s.minMatchCharLength,b=void 0===m?e.minMatchCharLength:m,r=s.isCaseSensitive,y=void 0===r?e.isCaseSensitive:r,c=s.ignoreLocation,O=void 0===c?e.ignoreLocation:c;return t(this,o),(f=i.call(this,n))._bitapSearch=new _(n,{location:g,threshold:p,distance:j,includeMatches:w,findAllMatches:v,minMatchCharLength:b,isCaseSensitive:y,ignoreLocation:O}),f}return n(o,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),o}(a),W=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){for(var t,o,n=0,s=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,s.push([t,n-1]);return o=!!s.length,{isMatch:o,score:o?0:1,indices:s}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),s}(a),j=[Q,W,ne,q,G,Y,X,S],I=j.length,ee=/ +(?=(?:[^"]*"[^"]*")*[^"]*$)/,te=new Set([S.type,W.type]),K=function(){function s(n){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=o.isCaseSensitive,r=void 0===a?e.isCaseSensitive:a,c=o.includeMatches,y=void 0===c?e.includeMatches:c,d=o.minMatchCharLength,v=void 0===d?e.minMatchCharLength:d,h=o.ignoreLocation,f=void 0===h?e.ignoreLocation:h,m=o.findAllMatches,p=void 0===m?e.findAllMatches:m,i=o.location,g=void 0===i?e.location:i,u=o.threshold,b=void 0===u?e.threshold:u,l=o.distance,_=void 0===l?e.distance:l;t(this,s),this.query=null,this.options={isCaseSensitive:r,includeMatches:y,minMatchCharLength:v,findAllMatches:p,ignoreLocation:f,location:g,threshold:b,distance:_},this.pattern=r?n:n.toLowerCase(),this.query=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map(function(e){for(var a,r,c,l,d=e.trim().split(ee).filter(function(e){return e&&!!e.trim()}),s=[],o=0,h=d.length;o<h;o+=1){for(var u=d[o],i=!1,n=-1;!i&&++n<I;)a=j[n],r=a.isMultiMatch(u),r&&(s.push(new a(r,t)),i=!0);if(!i)for(n=-1;++n<I;)if(c=j[n],l=c.isSingleMatch(u),l){s.push(new c(l,t));break}}return s})}(this.pattern,this.options)}return n(s,[{key:"searchIn",value:function(e){if(o=this.query,!o)return{isMatch:!1,score:1};u=this.options,l=u.includeMatches,e=u.isCaseSensitive?e:e.toLowerCase();for(var s,o,i,c,l,u,f,g,n=0,t=[],a=0,r=0,j=o.length;r<j;r+=1){i=o[r],t.length=0;for(n=0,s=0,f=i.length;s<f;s+=1){var m=i[s],h=m.search(e),v=h.isMatch,p=h.indices,b=h.score;if(!v){a=0,n=0,t.length=0;break}n+=1,a+=b,l&&(g=m.constructor.type,te.has(g)?t=[].concat(d(t),d(p)):t.push(p))}if(n)return c={isMatch:!0,score:a/n},l&&(c.indices=t),c}return{isMatch:!1,score:1}}}],[{key:"condition",value:function(e,t){return t.useExtendedSearch}}]),s}(),p=[];function v(e,t){for(var s,n=0,o=p.length;n<o;n+=1)if(s=p[n],s.condition(e,t))return new s(e,t);return new _(e,t)}var g="$and",ae="$or",D="$path",ce="$val",w=function(e){return!!e[g]||!!e[ae]},T=function(e){return C({},g,Object.keys(e).map(function(t){return C({},t,e[t])}))};function ue(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,s=void 0===n||n;return w(e)||(e=T(e)),function e(n){var r,c,d,u,a=Object.keys(n),l=function(e){return!!e[D]}(n);if(!l&&a.length>1&&!w(n))return e(T(n));if(function(e){return!i(e)&&B(e)&&!w(e)}(n)){if(r=l?n[D]:a[0],c=l?n[ce]:n[r],!o(c))throw new Error(function(e){return"Invalid value for key ".concat(e)}(r));return d={keyId:b(r),pattern:c},s&&(d.searcher=v(c,t)),d}return u={children:[],operator:a[0]},a.forEach(function(t){var s=n[t];i(s)&&s.forEach(function(t){u.children.push(e(t))})}),u}(e)}function he(e,t){var n=e.matches;t.matches=[],s(n)&&n.forEach(function(e){if(s(e.indices)&&e.indices.length){var n={indices:e.indices,value:e.value};e.key&&(n.key=e.key.src),e.idx>-1&&(n.refIndex=e.idx),t.matches.push(n)}})}function me(e,t){t.score=e.score}return u=function(){function a(n){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;t(this,a),this.options=h(h({},e),s),this.options.useExtendedSearch,this._keyStore=new fe(this.options.keys),this.setCollection(n,o)}return n(a,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof E))throw new Error("Incorrect 'index' type");this._myIndex=t||L(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){s(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var t,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},n=[],e=0,s=this._docs.length;e<s;e+=1)t=this._docs[e],o(t,e)&&(this.removeAt(e),e-=1,s-=1,n.push(t));return n}},{key:"removeAt",value:function(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}},{key:"getIndex",value:function(){return this._myIndex}},{key:"search",value:function(t){var a=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).limit,i=void 0===a?-1:a,n=this.options,r=n.includeMatches,c=n.includeScore,l=n.shouldSort,d=n.sortFn,u=n.ignoreFieldNorm,s=o(t)?o(this._docs[0])?this._searchStringList(t):this._searchObjectList(t):this._searchLogical(t);return function(t,n){var s=n.ignoreFieldNorm,o=void 0===s?e.ignoreFieldNorm:s;t.forEach(function(e){var t=1;e.matches.forEach(function(e){var n=e.key,a=e.norm,s=e.score,i=n?n.weight:null;t*=Math.pow(0===s&&i?Number.EPSILON:s,(i||1)*(o?1:a))}),e.score=t})}(s,{ignoreFieldNorm:u}),l&&s.sort(d),V(i)&&i>-1&&(s=s.slice(0,i)),function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.includeMatches,r=void 0===i?e.includeMatches:i,a=o.includeScore,c=void 0===a?e.includeScore:a,s=[];return r&&s.push(he),c&&s.push(me),t.map(function(e){var t=e.idx,o={item:n[t],refIndex:t};return s.length&&s.forEach(function(t){t(e,o)}),o})}(s,this._docs,{includeMatches:r,includeScore:c})}},{key:"_searchStringList",value:function(e){var n=v(e,this.options),o=this._myIndex.records,t=[];return o.forEach(function(e){var o=e.v,a=e.i,r=e.n;if(s(o)){var i=n.searchIn(o),c=i.isMatch,l=i.score,d=i.indices;c&&t.push({item:o,idx:a,matches:[{score:l,value:o,norm:r,indices:d}]})}}),t}},{key:"_searchLogical",value:function(e){var n=this,i=ue(e,this.options),a=function e(t,s,o){if(!t.children){var c,l=t.keyId,u=t.searcher,i=n._findMatches({key:n._keyStore.get(l),value:n._myIndex.getValueForItemAtKeyId(s,l),searcher:u});return i&&i.length?[{idx:o,item:s,matches:i}]:[]}for(var a=[],r=0,h=t.children.length;r<h;r+=1)if(c=e(t.children[r],s,o),c.length)a.push.apply(a,d(c));else if(t.operator===g)return[];return a},r=this._myIndex.records,t={},o=[];return r.forEach(function(e){var c,r=e.$,n=e.i;s(r)&&(c=a(i,r,n),c.length&&(t[n]||(t[n]={idx:n,item:r,matches:[]},o.push(t[n])),c.forEach(function(e){var s,o=e.matches;(s=t[n].matches).push.apply(s,d(o))})))}),o}},{key:"_searchObjectList",value:function(e){var o=this,i=v(e,this.options),t=this._myIndex,a=t.keys,r=t.records,n=[];return r.forEach(function(e){var t,r=e.$,c=e.i;s(r)&&(t=[],a.forEach(function(e,n){t.push.apply(t,d(o._findMatches({key:e,value:r[n],searcher:i})))}),t.length&&n.push({idx:c,item:r,matches:t}))}),n}},{key:"_findMatches",value:function(e){var a=e.key,t=e.value,r=e.searcher;if(!s(t))return[];if(n=[],i(t))t.forEach(function(e){var t=e.v,i=e.i,c=e.n;if(s(t)){var o=r.searchIn(t),l=o.isMatch,d=o.score,u=o.indices;l&&n.push({score:d,key:a,value:t,idx:i,norm:c,indices:u})}});else{var n,c=t.v,l=t.n,o=r.searchIn(c),d=o.isMatch,u=o.score,h=o.indices;d&&n.push({score:u,key:a,value:c,norm:l,indices:h})}return n}}]),a}(),u.version="7.0.0",u.createIndex=L,u.parseIndex=function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=s.getFn,a=void 0===o?e.getFn:o,i=s.fieldNormWeight,r=void 0===i?e.fieldNormWeight:i,c=t.keys,l=t.records,n=new E({getFn:a,fieldNormWeight:r});return n.setKeys(c),n.setIndexRecords(l),n},u.config=e,function(){p.push.apply(p,arguments)}(K),u},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t();var e,t,fuse,showButton=document.getElementById("search-button"),showButtonMobile=document.getElementById("search-button-mobile"),hideButton=document.getElementById("close-search-button"),wrapper=document.getElementById("search-wrapper"),modal=document.getElementById("search-modal"),input=document.getElementById("search-query"),output=document.getElementById("search-results"),first=output.firstChild,last=output.lastChild,searchVisible=!1,indexed=!1,hasResults=!1;showButton?showButton.addEventListener("click",displaySearch):null,showButtonMobile?showButtonMobile.addEventListener("click",displaySearch):null,hideButton.addEventListener("click",hideSearch),wrapper.addEventListener("click",hideSearch),modal.addEventListener("click",function(e){return e.stopPropagation(),e.stopImmediatePropagation(),!1}),document.addEventListener("keydown",function(e){e.key=="/"&&(searchVisible||(e.preventDefault(),displaySearch())),e.key=="Escape"&&hideSearch(),e.key=="ArrowDown"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?first.focus():document.activeElement==last?last.focus():document.activeElement.parentElement.nextSibling.firstElementChild.focus()),e.key=="ArrowUp"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?input.focus():document.activeElement==first?input.focus():document.activeElement.parentElement.previousSibling.firstElementChild.focus()),e.key=="Enter"&&(searchVisible&&hasResults?(e.preventDefault(),document.activeElement==input?first.focus():document.activeElement.click()):e.preventDefault())}),input.onkeyup=function(){executeQuery(this.value)};function displaySearch(){indexed||buildIndex(),searchVisible||(document.body.style.overflow="hidden",wrapper.style.visibility="visible",input.focus(),searchVisible=!0)}function hideSearch(){searchVisible&&(document.body.style.overflow="visible",wrapper.style.visibility="hidden",input.value="",output.innerHTML="",document.activeElement.blur(),searchVisible=!1)}function fetchJSON(e,t){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(n.readyState===4&&n.status===200){var e=JSON.parse(n.responseText);t&&t(e)}},n.open("GET",e),n.send()}function buildIndex(){var e=wrapper.getAttribute("data-url"),e=e.replace(/\/?$/,"/");fetchJSON(e+"index.json",function(e){var t={shouldSort:!0,ignoreLocation:!0,threshold:0,includeMatches:!0,keys:[{name:"title",weight:.8},{name:"section",weight:.2},{name:"summary",weight:.6},{name:"content",weight:.4}]};fuse=new Fuse(e,t),indexed=!0})}function executeQuery(e){let n=fuse.search(e),t="";n.length>0?(n.forEach(function(e){var s=e.item.externalUrl?e.item.title+'<span class="text-xs ml-2 align-center cursor-default text-neutral-400 dark:text-neutral-500">'+e.item.externalUrl+"</span>":e.item.title,o=e.item.externalUrl?'target="_blank" rel="noopener" href="'+e.item.externalUrl+'"':'href="'+e.item.permalink+'"';t=t+`<li class="mb-2"> + <a class="flex items-center px-3 py-2 rounded-md appearance-none bg-neutral-100 dark:bg-neutral-700 focus:bg-primary-100 hover:bg-primary-100 dark:hover:bg-primary-900 dark:focus:bg-primary-900 focus:outline-dotted focus:outline-transparent focus:outline-2" + ${o} tabindex="0"> + <div class="grow"> + <div class="-mb-1 text-lg font-bold"> + ${s} + </div> + <div class="text-sm text-neutral-500 dark:text-neutral-400">${e.item.section}<span class="px-2 text-primary-500">·</span>${e.item.date}</span></div> + <div class="text-sm italic">${e.item.summary}</div> + </div> + <div class="ml-2 ltr:block rtl:hidden text-neutral-500">→</div> + <div class="mr-2 ltr:hidden rtl:block text-neutral-500">←</div> + </a> + </li>`}),hasResults=!0):(t="",hasResults=!1),output.innerHTML=t,n.length>0&&(first=output.firstChild.firstElementChild,last=output.lastChild.firstElementChild)}
\ No newline at end of file diff --git a/public/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js b/public/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js new file mode 100644 index 0000000..3cde549 --- /dev/null +++ b/public/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js @@ -0,0 +1 @@ +var liked_page=!1,viewed,liked,id=oid&&oid.replaceAll("/","-"),id_likes=oid_likes&&oid_likes.replaceAll("/","-");typeof auth!="undefined"&&(viewed=localStorage.getItem(id),viewed||auth.signInAnonymously().then(()=>{var e=db.collection("views").doc(id);localStorage.setItem(id,!0),e.get().then(e=>{e.exists?db.collection("views").doc(id).update({views:firebase.firestore.FieldValue.increment(1)}):db.collection("views").doc(id).set({views:1})}).catch(e=>{console.log("Error getting document:",e)})}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)}),liked=localStorage.getItem(id_likes),liked&&(liked_page=!0,document.querySelectorAll("span[id='button_likes_heart']")[0].style.display="",document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display="none",document.querySelectorAll("span[id='button_likes_text']")[0].innerText=""));function like_article(e){auth.signInAnonymously().then(()=>{var t=db.collection("likes").doc(e);t.get().then(t=>{liked_page=!0,localStorage.setItem(e,!0),document.querySelectorAll("span[id='button_likes_heart']")[0].style.display="",document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display="none",document.querySelectorAll("span[id='button_likes_text']")[0].innerText="",t.exists?db.collection("likes").doc(e).update({likes:firebase.firestore.FieldValue.increment(1)}):db.collection("likes").doc(e).set({likes:1})}).catch(e=>{console.log("Error getting document:",e)})}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)})}function remove_like_article(e){auth.signInAnonymously().then(()=>{var t=db.collection("likes").doc(e);t.get().then(t=>{liked_page=!1,localStorage.removeItem(e),document.querySelectorAll("span[id='button_likes_heart']")[0].style.display="none",document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display="",document.querySelectorAll("span[id='button_likes_text']")[0].innerText="\xa0Like",t.exists?db.collection("likes").doc(e).update({likes:firebase.firestore.FieldValue.increment(-1)}):db.collection("likes").doc(e).set({likes:0})}).catch(e=>{console.log("Error getting document:",e)})}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)})}function process_article(){liked_page?remove_like_article(id_likes):like_article(id_likes)}
\ No newline at end of file diff --git a/public/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js b/public/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js new file mode 100644 index 0000000..c4c5095 --- /dev/null +++ b/public/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js @@ -0,0 +1 @@ +if(typeof auth!="undefined"){var viewsCollection=db.collection("views"),update_views,update_likes,likesCollection=db.collection("likes");function numberWithCommas(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function toggleLoaders(e){var t,s,n=e.className;if(n=="")return;t=n.split(" ");for(s in t)e.classList.toggle(t[s])}update_views=function(e,t){viewsCollection.doc(t).onSnapshot(t=>{var n=t.data();n?e.innerText=numberWithCommas(n.views):e.innerText=0,toggleLoaders(e)})},update_likes=function(e,t){likesCollection.doc(t).onSnapshot(t=>{var n=t.data();n?e.innerText=numberWithCommas(n.likes):e.innerText=0,toggleLoaders(e)})},auth.signInAnonymously().then(()=>{var e,t,n,s,o=document.querySelectorAll("span[id^='views_']");for(n in o)e=o[n],t=e.id?e.id.replaceAll("/","-"):e.id,t&&update_views(e,t);s=document.querySelectorAll("span[id^='likes_']");for(n in s)e=s[n],t=e.id?e.id.replaceAll("/","-"):e.id,t&&update_likes(e,t)}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)})}
\ No newline at end of file diff --git a/public/js/zoom.min.js b/public/js/zoom.min.js new file mode 100644 index 0000000..b1214b7 --- /dev/null +++ b/public/js/zoom.min.js @@ -0,0 +1,2 @@ +/*! medium-zoom 1.0.6 | MIT License | https://github.com/francoischalifour/medium-zoom */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).mediumZoom=t()}(this,(function(){"use strict";var e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},t=function(e){return"IMG"===e.tagName},o=function(e){return e&&1===e.nodeType},n=function(e){return".svg"===(e.currentSrc||e.src).substr(-4).toLowerCase()},i=function(e){try{return Array.isArray(e)?e.filter(t):function(e){return NodeList.prototype.isPrototypeOf(e)}(e)?[].slice.call(e).filter(t):o(e)?[e].filter(t):"string"==typeof e?[].slice.call(document.querySelectorAll(e)).filter(t):[]}catch(e){throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList or an array.\nSee: https://github.com/francoischalifour/medium-zoom")}},r=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t},d=function(e){var t=e.getBoundingClientRect(),o=t.top,n=t.left,i=t.width,r=t.height,d=e.cloneNode(),m=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,a=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return d.removeAttribute("id"),d.style.position="absolute",d.style.top=o+m+"px",d.style.left=n+a+"px",d.style.width=i+"px",d.style.height=r+"px",d.style.transform="",d},m=function(t,o){var n=e({bubbles:!1,cancelable:!1,detail:void 0},o);if("function"==typeof window.CustomEvent)return new CustomEvent(t,n);var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),i};return function(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===o&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}(".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}"),function t(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=window.Promise||function(e){function t(){}e(t,t)},u=function(e){var t=e.target;t!==N?-1!==O.indexOf(t)&&w({target:t}):E()},s=function(){if(!A&&T.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(k-e)>S.scrollOffset&&setTimeout(E,150)}},f=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||E()},p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t;if(t.background&&(N.style.background=t.background),t.container&&t.container instanceof Object&&(n.container=e({},S.container,t.container)),t.template){var i=o(t.template)?t.template:document.querySelector(t.template);n.template=i}return S=e({},S,n),O.forEach((function(e){e.dispatchEvent(m("medium-zoom:update",{detail:{zoom:j}}))})),j},g=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(e({},S,o))},v=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];var n=t.reduce((function(e,t){return[].concat(e,i(t))}),[]);return n.filter((function(e){return-1===O.indexOf(e)})).forEach((function(e){O.push(e),e.classList.add("medium-zoom-image")})),x.forEach((function(e){var t=e.type,o=e.listener,i=e.options;n.forEach((function(e){e.addEventListener(t,o,i)}))})),j},h=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];T.zoomed&&E();var n=t.length>0?t.reduce((function(e,t){return[].concat(e,i(t))}),[]):O;return n.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(m("medium-zoom:detach",{detail:{zoom:j}}))})),O=O.filter((function(e){return-1===n.indexOf(e)})),j},z=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.addEventListener("medium-zoom:"+e,t,o)})),x.push({type:"medium-zoom:"+e,listener:t,options:o}),j},y=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.removeEventListener("medium-zoom:"+e,t,o)})),x=x.filter((function(o){return!(o.type==="medium-zoom:"+e&&o.listener.toString()===t.toString())})),j},b=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.target,r=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},i=void 0,r=void 0;if(S.container)if(S.container instanceof Object)i=(t=e({},t,S.container)).width-t.left-t.right-2*S.margin,r=t.height-t.top-t.bottom-2*S.margin;else{var d=(o(S.container)?S.container:document.querySelector(S.container)).getBoundingClientRect(),m=d.width,a=d.height,l=d.left,c=d.top;t=e({},t,{width:m,height:a,left:l,top:c})}i=i||t.width-2*S.margin,r=r||t.height-2*S.margin;var u=T.zoomedHd||T.original,s=n(u)?i:u.naturalWidth||i,f=n(u)?r:u.naturalHeight||r,p=u.getBoundingClientRect(),g=p.top,v=p.left,h=p.width,z=p.height,y=Math.min(s,i)/h,b=Math.min(f,r)/z,E=Math.min(y,b),w="scale("+E+") translate3d("+((i-h)/2-v+S.margin+t.left)/E+"px, "+((r-z)/2-g+S.margin+t.top)/E+"px, 0)";T.zoomed.style.transform=w,T.zoomedHd&&(T.zoomedHd.style.transform=w)};return new c((function(e){if(i&&-1===O.indexOf(i))e(j);else{if(T.zoomed)e(j);else{if(i)T.original=i;else{if(!(O.length>0))return void e(j);var t=O;T.original=t[0]}if(T.original.dispatchEvent(m("medium-zoom:open",{detail:{zoom:j}})),k=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,A=!0,T.zoomed=d(T.original),document.body.appendChild(N),S.template){var n=o(S.template)?S.template:document.querySelector(S.template);T.template=document.createElement("div"),T.template.appendChild(n.content.cloneNode(!0)),document.body.appendChild(T.template)}if(document.body.appendChild(T.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),T.original.classList.add("medium-zoom-image--hidden"),T.zoomed.classList.add("medium-zoom-image--opened"),T.zoomed.addEventListener("click",E),T.zoomed.addEventListener("transitionend",(function t(){A=!1,T.zoomed.removeEventListener("transitionend",t),T.original.dispatchEvent(m("medium-zoom:opened",{detail:{zoom:j}})),e(j)})),T.original.getAttribute("data-zoom-src")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("srcset"),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.src=T.zoomed.getAttribute("data-zoom-src"),T.zoomedHd.onerror=function(){clearInterval(a),console.warn("Unable to reach the zoom image target "+T.zoomedHd.src),T.zoomedHd=null,r()};var a=setInterval((function(){T.zoomedHd.complete&&(clearInterval(a),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",E),document.body.appendChild(T.zoomedHd),r())}),10)}else if(T.original.hasAttribute("srcset")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.removeAttribute("loading");var l=T.zoomedHd.addEventListener("load",(function(){T.zoomedHd.removeEventListener("load",l),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",E),document.body.appendChild(T.zoomedHd),r()}))}else r()}}}))},E=function(){return new c((function(e){if(!A&&T.original){A=!0,document.body.classList.remove("medium-zoom--opened"),T.zoomed.style.transform="",T.zoomedHd&&(T.zoomedHd.style.transform=""),T.template&&(T.template.style.transition="opacity 150ms",T.template.style.opacity=0),T.original.dispatchEvent(m("medium-zoom:close",{detail:{zoom:j}})),T.zoomed.addEventListener("transitionend",(function t(){T.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(T.zoomed),T.zoomedHd&&document.body.removeChild(T.zoomedHd),document.body.removeChild(N),T.zoomed.classList.remove("medium-zoom-image--opened"),T.template&&document.body.removeChild(T.template),A=!1,T.zoomed.removeEventListener("transitionend",t),T.original.dispatchEvent(m("medium-zoom:closed",{detail:{zoom:j}})),T.original=null,T.zoomed=null,T.zoomedHd=null,T.template=null,e(j)}))}else e(j)}))},w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return T.original?E():b({target:t})},L=function(){return S},H=function(){return O},C=function(){return T.original},O=[],x=[],A=!1,k=0,S=l,T={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(a)?S=a:(a||"string"==typeof a)&&v(a),S=e({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},S);var N=r(S.background);document.addEventListener("click",u),document.addEventListener("keyup",f),document.addEventListener("scroll",s),window.addEventListener("resize",E);var j={open:b,close:E,toggle:w,update:p,clone:g,attach:v,detach:h,on:z,off:y,getOptions:L,getImages:H,getZoomedImage:C};return j}})); diff --git a/public/lib/jquery/jquery.slim.min.js b/public/lib/jquery/jquery.slim.min.js new file mode 100644 index 0000000..35906b9 --- /dev/null +++ b/public/lib/jquery/jquery.slim.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},m=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||m).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var de=oe.pop,pe=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function d(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,d)};var ye=m,me=s;!function(){var e,x,w,o,a,C,r,T,p,i,E=me,k=ce.expando,S=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",d="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+d+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),b=new RegExp(ge+"|>"),A=new RegExp(g),D=new RegExp("^"+t+"$"),N={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+d),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},L=/^(?:input|select|textarea|button)$/i,j=/^h\d$/i,O=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,P=/[+~]/,H=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),q=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=K(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{E.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){E={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(V(e),e=e||C,T)){if(11!==d&&(u=O.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return E.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return E.call(n,a),n}else{if(u[2])return E.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return E.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||p&&p.test(t))){if(c=t,f=e,1===d&&(b.test(t)||m.test(t))){(f=P.test(t)&&X(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=k)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+G(l[o]);c=l.join(",")}try{return E.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function B(e){return e[k]=!0,e}function F(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function $(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return B(function(o){return o=+o,B(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function X(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=C&&9===n.nodeType&&n.documentElement&&(r=(C=n).documentElement,T=!ce.isXMLDoc(C),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=C&&(t=C.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=F(function(e){return r.appendChild(e).id=ce.expando,!C.getElementsByName||!C.getElementsByName(ce.expando).length}),le.disconnectedMatch=F(function(e){return i.call(e,"*")}),le.scope=F(function(){return C.querySelectorAll(":scope")}),le.cssHas=F(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(x.filter.ID=function(e){var t=e.replace(H,q);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&T){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(H,q);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&T){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},x.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&T)return t.getElementsByClassName(e)},p=[],F(function(e){var t;r.appendChild(e).innerHTML="<a id='"+k+"' href='' disabled='disabled'></a><select id='"+k+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||p.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+k+"-]").length||p.push("~="),e.querySelectorAll("a#"+k+"+*").length||p.push(".#.+[+~]"),e.querySelectorAll(":checked").length||p.push(":checked"),(t=C.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&p.push(":enabled",":disabled"),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||p.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||p.push(":has"),p=p.length&&new RegExp(p.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===C||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),C}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),T&&!h[t+" "]&&(!p||!p.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,C,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=C&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=C&&V(e);var n=x.attrHandle[t.toLowerCase()],r=n&&ue.call(x.attrHandle,t.toLowerCase())?n(e,t,!T):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),pe.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(x=ce.expr={cacheLength:50,createPseudo:B,match:N,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(H,q),e[3]=(e[3]||e[4]||e[5]||"").replace(H,q),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return N.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&A.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(H,q).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(p,e,t,h,g){var v="nth"!==p.slice(0,3),y="last"!==p.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,d=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===p&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){d=(a=(r=(i=l[k]||(l[k]={}))[p]||[])[0]===S&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(d=a=0)||s.pop())if(1===o.nodeType&&++d&&o===e){i[p]=[S,a,d];break}}else if(f&&(d=a=(r=(i=e[k]||(e[k]={}))[p]||[])[0]===S&&r[1]),!1===d)while(o=++a&&o&&o[u]||(d=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++d&&(f&&((i=o[k]||(o[k]={}))[p]=[S,d]),o===e))break;return(d-=g)===h||d%h==0&&0<=d/h}}},PSEUDO:function(e,o){var t,a=x.pseudos[e]||x.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],x.setFilters.hasOwnProperty(e.toLowerCase())?B(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:B(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[k]?B(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:B(function(t){return function(e){return 0<I(t,e).length}}),contains:B(function(t){return t=t.replace(H,q),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:B(function(n){return D.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(H,q).toLowerCase(),function(e){var t;do{if(t=T?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return C.activeElement}catch(e){}}()&&C.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return j.test(e.nodeName)},input:function(e){return L.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:U(function(){return[0]}),last:U(function(e,t){return[t-1]}),eq:U(function(e,t,n){return[n<0?n+t:n]}),even:U(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:U(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:U(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:U(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=x.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})x.pseudos[e]=$(e);for(e in{submit:!0,reset:!0})x.pseudos[e]=_(e);function Q(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=x.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),x.filter)!(r=N[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function G(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function K(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[S,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[k]||(e[k]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===S&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function J(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(p,h,g,v,y,e){return v&&!v[k]&&(v=ee(v)),y&&!y[k]&&(y=ee(y,e)),B(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),d=!p||!e&&h?f:Z(f,u,p,n,r);if(g?g(d,s=y||(e?p:c||v)?[]:t,n,r):s=d,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(d[l[o]]=a))}if(e){if(y||p){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(d[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):E.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=x.relative[e[0].type],a=o||x.relative[" "],s=o?1:0,u=K(function(e){return e===i},a,!0),l=K(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=x.relative[e[s].type])c=[K(J(c),t)];else{if((t=x.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(x.relative[e[n].type])break;return ee(1<s&&J(c),1<s&&G(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&G(e))}c.push(t)}return J(c)}function ne(e,t){var n,v,y,m,b,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[k]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,b=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],d=w,p=e||b&&x.find.TAG("*",i),h=S+=null==d?1:Math.random()||.1,g=p.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=p[l]);l++){if(b&&o){a=0,t||o.ownerDocument==C||(V(o),n=!T);while(s=v[a++])if(s(o,t||C,n)){E.call(r,o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=de.call(r));f=Z(f)}E.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(S=h,w=d),c},m?B(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&T&&x.relative[o[1].type]){if(!(t=(x.find.ID(a.matches[0].replace(H,q),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=N.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],x.relative[s=a.type])break;if((u=x.find[s])&&(r=u(a.matches[0].replace(H,q),P.test(o[0].type)&&X(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&G(o)))return E.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!T,n,!t||P.test(e)&&X(t.parentNode)||t),n}Q.prototype=x.filters=x.pseudos,x.setFilters=new Q,le.sortStable=k.split("").sort(l).join("")===k,V(),le.sortDetached=F(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var p=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},w=ce.expr.match.needsContext,C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&w.test(e)?ce(e):e||[],!1).length}});var E,k=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||E,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:k.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:m,!0)),C.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=m.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,E=ce(m);var S=/^(?:parents|prev(?:Until|All))/,A={children:!0,contents:!0,next:!0,prev:!0};function D(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!w.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return p(e,"parentNode")},parentsUntil:function(e,t,n){return p(e,"parentNode",n)},next:function(e){return D(e,"nextSibling")},prev:function(e){return D(e,"previousSibling")},nextAll:function(e){return p(e,"nextSibling")},prevAll:function(e){return p(e,"previousSibling")},nextUntil:function(e,t,n){return p(e,"nextSibling",n)},prevUntil:function(e,t,n){return p(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(A[r]||ce.uniqueSort(n),S.test(r)&&n.reverse()),this.pushStack(n)}});var N=/[^\x20\t\r\n\f]+/g;function L(e){return e}function j(e){throw e}function O(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(N)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,L,s),l(u,o,j,s)):(u++,t.call(e,l(u,o,L,s),l(u,o,j,s),l(u,o,L,o.notifyWith))):(a!==L&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==j&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:L,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:L)),o[2][3].add(l(0,e,v(n)?n:j))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(O(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)O(i[t],a(t),o.reject);return o.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&P.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var H=ce.Deferred();function q(){m.removeEventListener("DOMContentLoaded",q),ie.removeEventListener("load",q),ce.ready()}ce.fn.ready=function(e){return H.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||H.resolveWith(m,[ce])}}),ce.ready.then=H.then,"complete"===m.readyState||"loading"!==m.readyState&&!m.documentElement.doScroll?ie.setTimeout(ce.ready):(m.addEventListener("DOMContentLoaded",q),ie.addEventListener("load",q));var R=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)R(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},M=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function B(e){return e.replace(M,"ms-").replace(I,W)}var F=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function $(){this.expando=ce.expando+$.uid++}$.uid=1,$.prototype={cache:function(e){var t=e[this.expando];return t||(t={},F(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[B(t)]=n;else for(r in t)i[B(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][B(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(B):(t=B(t))in r?[t]:t.match(N)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new $,z=new $,U=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,X=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(X,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:U.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=B(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):R(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),G=["Top","Right","Bottom","Left"],K=m.documentElement,J=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};K.getRootNode&&(J=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&J(e)&&"none"===ce.css(e,"display")};var te={};function ne(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=te[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),te[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return ne(this,!0)},hide:function(){return ne(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var re,be,xe=/^(?:checkbox|radio)$/i,we=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;re=m.createDocumentFragment().appendChild(m.createElement("div")),(be=m.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),re.appendChild(be),le.checkClone=re.cloneNode(!0).cloneNode(!0).lastChild.checked,re.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!re.cloneNode(!0).lastChild.defaultValue,re.innerHTML="<option></option>",le.option=!!re.lastChild;var Te={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Ee(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function ke(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}Te.tbody=Te.tfoot=Te.colgroup=Te.caption=Te.thead,Te.th=Te.td,le.option||(Te.optgroup=Te.option=[1,"<select multiple='multiple'>","</select>"]);var Se=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p<h;p++)if((o=e[p])||0===o)if("object"===x(o))ce.merge(d,o.nodeType?[o]:o);else if(Se.test(o)){a=a||f.appendChild(t.createElement("div")),s=(we.exec(o)||["",""])[1].toLowerCase(),u=Te[s]||Te._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(d,a.childNodes),(a=f.firstChild).textContent=""}else d.push(t.createTextNode(o));f.textContent="",p=0;while(o=d[p++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=J(o),a=Ee(f.appendChild(o),"script"),l&&ke(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function Le(){return!1}function je(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)je(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Le;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function Oe(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=_.get(t);if(F(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(K,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(N)||[""]).length;while(l--)p=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=ce.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=ce.event.special[p]||{},c=ce.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),ce.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(N)||[""]).length;while(l--)if(p=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=ce.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)ce.event.remove(e,p+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return xe.test(t.type)&&t.click&&fe(t,"input")&&Oe(t,"click",!0),!1},trigger:function(e){var t=this||e;return xe.test(t.type)&&t.click&&fe(t,"input")&&Oe(t,"click"),!0},_default:function(e){var t=e.target;return xe.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:Le,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:Le,isPropagationStopped:Le,isImmediatePropagationStopped:Le,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(m.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(Oe(this,r,!0),!m.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return Oe(this,r),!0},teardown:function(){var e;if(!m.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=m.documentMode?this:e,n=_.get(t,i);n||(m.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=m.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(m.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return je(this,e,t,n,r)},one:function(e,t,n,r){return je(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Le),this.each(function(){ce.event.remove(this,e,n,t)})}});var Pe=/<script|<style|<link/i,He=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Me(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ie(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function We(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function Be(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,d=f-1,p=r[0],h=v(p);if(h||1<f&&"string"==typeof p&&!le.checkClone&&He.test(p))return n.each(function(e){var t=n.eq(e);h&&(r[0]=p.call(this,e,t.html())),Be(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Ee(e,"script"),Me)).length;c<f;c++)u=e,c!==d&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Ee(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,Ie),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(qe,""),u,l))}return n}function Fe(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Ee(r)),r.parentNode&&(n&&J(r)&&ke(Ee(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=J(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Ee(c),r=0,i=(o=Ee(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&xe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Ee(e),a=a||Ee(c),r=0,i=o.length;r<i;r++)We(o[r],a[r]);else We(e,c);return 0<(a=Ee(c,"script")).length&&ke(a,!f&&Ee(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if(F(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Fe(this,e,!0)},remove:function(e){return Fe(this,e)},text:function(e){return R(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Be(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return Be(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Be(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Be(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Ee(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return R(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Pe.test(e)&&!Te[(we.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Ee(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Be(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Ee(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),_e=/^--/,ze=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Xe=new RegExp(G.join("|"),"i");function Ve(e,t,n){var r,i,o,a,s=_e.test(t),u=e.style;return(n=n||ze(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||J(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&$e.test(a)&&Xe.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Qe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",K.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),K.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=m.createElement("div"),l=m.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=m.createElement("table"),t=m.createElement("tr"),n=m.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",K.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,K.removeChild(e)),a}}))}();var Ye=["Webkit","Moz","ms"],Ge=m.createElement("div").style,Ke={};function Je(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Ge?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ye.length;while(n--)if((e=Ye[n]+t)in Ge)return e}(e)||e)}var Ze,et,tt=/^(none|table(?!-c[ea]).+)/,nt={position:"absolute",visibility:"hidden",display:"block"},rt={letterSpacing:"0",fontWeight:"400"};function it(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function ot(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+G[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+G[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+G[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+G[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+G[a]+"Width",!0,i):s+=ce.css(e,"border"+G[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function at(e,t,n){var r=ze(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ve(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+ot(e,t,n||(i?"border":"content"),o,r,a)+"px"}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ve(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=B(t),u=_e.test(t),l=e.style;if(u||(t=Je(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=function(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=B(t);return _e.test(t)||(t=Je(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ve(e,t,r)),"normal"===i&&t in rt&&(i=rt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!tt.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?at(e,u,n):Ue(e,nt,function(){return at(e,u,n)})},set:function(e,t,n){var r,i=ze(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?ot(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-ot(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),it(0,t,s)}}}),ce.cssHooks.marginLeft=Qe(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ve(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+G[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=it)}),ce.fn.extend({css:function(e,t){return R(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=ze(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},Ze=m.createElement("input"),et=m.createElement("select").appendChild(m.createElement("option")),Ze.type="checkbox",le.checkOn=""!==Ze.value,le.optSelected=et.selected,(Ze=m.createElement("input")).value="t",Ze.type="radio",le.radioValue="t"===Ze.value;var st,ut=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return R(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?st:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(N);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),st={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ut[t]||ce.find.attr;ut[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ut[o],ut[o]=r,r=null!=a(e,t,n)?o:null,ut[o]=i),r}});var lt=/^(?:input|select|textarea|button)$/i,ct=/^(?:a|area)$/i;function ft(e){return(e.match(N)||[]).join(" ")}function dt(e){return e.getAttribute&&e.getAttribute("class")||""}function pt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(N)||[]}ce.fn.extend({prop:function(e,t){return R(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):lt.test(e.nodeName)||ct.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,dt(this)))}):(e=pt(t)).length?this.each(function(){if(r=dt(this),n=1===this.nodeType&&" "+ft(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=ft(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,dt(this)))}):arguments.length?(e=pt(t)).length?this.each(function(){if(r=dt(this),n=1===this.nodeType&&" "+ft(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=ft(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,dt(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=pt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=dt(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ft(dt(n))+" ").indexOf(t))return!0;return!1}});var ht=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(ht,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:ft(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var gt=/^(?:focusinfocus|focusoutblur)$/,vt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,d=[n||m],p=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||m,3!==n.nodeType&&8!==n.nodeType&&!gt.test(p+ce.event.triggered)&&(-1<p.indexOf(".")&&(p=(h=p.split(".")).shift(),h.sort()),u=p.indexOf(":")<0&&"on"+p,(e=e[ce.expando]?e:new ce.Event(p,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[p]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||p,gt.test(s+p)||(o=o.parentNode);o;o=o.parentNode)d.push(o),a=o;a===(n.ownerDocument||m)&&d.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=d[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||p,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&F(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(d.pop(),t)||!F(n)||u&&v(n[p])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=p,e.isPropagationStopped()&&f.addEventListener(p,vt),n[p](),e.isPropagationStopped()&&f.removeEventListener(p,vt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var yt,mt=/\[\]$/,bt=/\r?\n/g,xt=/^(?:submit|button|image|reset|file)$/i,wt=/^(?:input|select|textarea|keygen)/i;function Ct(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||mt.test(n)?i(n,t):Ct(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Ct(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Ct(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&wt.test(this.nodeName)&&!xt.test(e)&&(this.checked||!xe.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(bt,"\r\n")}}):{name:t.name,value:n.replace(bt,"\r\n")}}).get()}}),ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},le.createHTMLDocument=((yt=m.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===yt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=m.implementation.createHTMLDocument("")).createElement("base")).href=m.location.href,t.head.appendChild(r)):t=m),o=!n&&[],(i=C.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||K})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Qe(le.pixelPosition,function(e,t){if(t)return t=Ve(e,n),$e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Tt=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=B,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(Tt,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var Et=ie.jQuery,kt=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=kt),e&&ie.jQuery===ce&&(ie.jQuery=Et),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce}); diff --git a/public/page/1/index.html b/public/page/1/index.html new file mode 100644 index 0000000..1cf6932 --- /dev/null +++ b/public/page/1/index.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>http://localhost:1313/</title> + <link rel="canonical" href="http://localhost:1313/"> + <meta name="robots" content="noindex"> + <meta charset="utf-8"> + <meta http-equiv="refresh" content="0; url=http://localhost:1313/"> + </head> +</html> diff --git a/public/posts/correctness-is-all-you-need/index.html b/public/posts/correctness-is-all-you-need/index.html new file mode 100644 index 0000000..ae904b3 --- /dev/null +++ b/public/posts/correctness-is-all-you-need/index.html @@ -0,0 +1,750 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>correctness is all you need · lowest case</title> + <meta name="title" content="correctness is all you need · lowest case" /> + + + <meta name="keywords" content="coq, rust, " /> + + + <link rel="canonical" href="http://localhost:1313/posts/correctness-is-all-you-need/" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/posts/correctness-is-all-you-need/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="correctness is all you need"> + <meta property="og:description" content="&gt;&gt;&gt; 0."> + <meta property="og:locale" content="en"> + <meta property="og:type" content="article"> + <meta property="article:section" content="posts"> + <meta property="article:published_time" content="2024-05-09T23:35:32-03:00"> + <meta property="article:modified_time" content="2024-05-09T23:35:32-03:00"> + <meta property="article:tag" content="coq"> + <meta property="article:tag" content="rust"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="correctness is all you need"> +<meta name="twitter:description" content=">>> 0."> + + + <script type="application/ld+json"> + [{ + "@context": "https://schema.org", + "@type": "Article", + "articleSection": "posts", + "name": "correctness is all you need", + "headline": "correctness is all you need", + + "abstract": "\u0026gt;\u0026gt;\u0026gt; 0.", + "inLanguage": "en", + "url" : "http:\/\/localhost:1313\/posts\/correctness-is-all-you-need\/", + "author" : { + "@type": "Person", + "name": "leonardo santiago" + }, + "copyrightYear": "2024", + "dateCreated": "2024-05-09T23:35:32-03:00", + "datePublished": "2024-05-09T23:35:32-03:00", + + "dateModified": "2024-05-09T23:35:32-03:00", + + "keywords": ["coq","rust"], + + "mainEntityOfPage": "true", + "wordCount": "169" + }] + </script> + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + +<article> + + + <header id="single_header" class="mt-5 max-w-prose"> + + <ol class="text-sm text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + <li class="inline hidden"> + <a + class="hover:underline decoration-neutral-300 dark:underline-neutral-600" + href="/" + >lowest case</a + ><span class="px-1 text-primary-500">/</span> + </li> + + + <li class="inline "> + <a + class="hover:underline decoration-neutral-300 dark:underline-neutral-600" + href="/posts/" + >posts</a + ><span class="px-1 text-primary-500">/</span> + </li> + + + <li class="inline hidden"> + <a + class="hover:underline decoration-neutral-300 dark:underline-neutral-600" + href="/posts/correctness-is-all-you-need/" + >correctness is all you need</a + ><span class="px-1 text-primary-500">/</span> + </li> + +</ol> + + + + <h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral"> + correctness is all you need + </h1> + <div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + <time datetime="2024-05-09 23:35:32 -0300 -03">9 May 2024</time><span class="px-2 text-primary-500">·</span><span title="reading time">1 min</span> + + + + +</div> + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + + + + + + + + + + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/coq/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + coq + </span> +</span> + </span> + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/rust/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + rust + </span> +</span> + </span> + + + + +</div> + + + + </div> + + + + + + + + + + + + + + + + + + + + </header> + + <section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row"> + + + + <div class="min-w-0 min-h-0 max-w-fit"> + + + + + <div class="article-content max-w-prose mb-20"> + <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">>>></span> <span class="mf">0.1</span> <span class="o">+</span> <span class="mf">0.2</span> +</span></span><span class="line"><span class="cl"><span class="mf">0.30000000000000004</span> +</span></span></code></pre></div><p>which of course is an annoying encounter for the unitiated in floats, but there’s a much bigger problem, that usually isn’t noticed at all until much later, that float addition itself isn’t even associative:</p> +<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">>>></span> <span class="p">(</span><span class="mf">0.1</span> <span class="o">+</span> <span class="mf">0.2</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.3</span> +</span></span><span class="line"><span class="cl"><span class="mf">0.6000000000000001</span> +</span></span><span class="line"><span class="cl"><span class="o">>>></span> <span class="mf">0.1</span> <span class="o">+</span> <span class="p">(</span><span class="mf">0.2</span> <span class="o">+</span> <span class="mf">0.3</span><span class="p">)</span> +</span></span><span class="line"><span class="cl"><span class="mf">0.6</span> +</span></span><span class="line"><span class="cl"><span class="o">>>></span> <span class="mf">0.1</span> <span class="o">+</span> <span class="p">(</span><span class="mf">0.2</span> <span class="o">+</span> <span class="mf">0.3</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="mf">0.1</span> <span class="o">+</span> <span class="mf">0.2</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.3</span> +</span></span><span class="line"><span class="cl"><span class="kc">False</span> +</span></span><span class="line"><span class="cl"><span class="o">>>></span> +</span></span></code></pre></div><p>and this is a problem, because associativity is a big underlying assumption that we commonly have for numbers, when, for example, summing a list in reverse. other common pitfalls include:</p> +<ul> +<li>not all numbers have an additive inverse, ie. for some number <code>n</code>, <code>n + (-n) != n</code>.</li> +<li>not all numbers different than 0 have a multiplicative inverse, ie. for some number <code>n</code>, <code>n / n != 1</code>.</li> +<li>addition is not commutative, ie. for numbers <code>a</code> <code>b</code>, <code>a + b != b + a</code>.</li> +</ul> +<p>and the list goes you on, you get the idea. this usually isn’t thought of the main problems in</p> + + </div> + + + + + + + + </div> + + + + + + + + + <script> + var oid = "views_posts\/correctness-is-all-you-need.md" + var oid_likes = "likes_posts\/correctness-is-all-you-need.md" + </script> + + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + + </section> + <footer class="pt-8 max-w-prose print:hidden"> + + + + + + + </footer> +</article> + + <div id="top-scroller" class="pointer-events-none absolute top-[110vh] bottom-0 w-12 ltr:right-0 rtl:left-0"> + <a href="#the-top" + class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400" + aria-label="scroll to top" title="scroll to top"> + ↑ + </a> +</div> + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/posts/index.html b/public/posts/index.html new file mode 100644 index 0000000..154bba7 --- /dev/null +++ b/public/posts/index.html @@ -0,0 +1,691 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>posts · lowest case</title> + <meta name="title" content="posts · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/posts/" /> + + <link rel="alternate" type="application/rss+xml" href="/posts/index.xml" title="lowest case" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/posts/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="posts"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="posts"> +<meta name="twitter:description" content=""> + + + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + + <header> + + <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">posts</h1> + <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + +</div> + + + </div> + + + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + </header> + <section class="mt-0 prose flex max-w-full flex-col dark:prose-invert lg:flex-row"> + + <div class="min-w-0 min-h-0 max-w-prose"> + + </div> + + + + + </section> + + + + + + + + + <section class="space-y-10 w-full"> + + + <h2 class="mt-12 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300"> + 2024 + </h2> + + + + + + + + + + + + + + + + + + + + + + + + + + <a class="flex flex-wrap article " href="/posts/correctness-is-all-you-need/"> + <div class=" mt-3 md:mt-0"> + <div class="items-center text-left text-xl font-semibold"> + + <div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral" + href="/posts/correctness-is-all-you-need/">correctness is all you need</div> + + + + </div> + <div class="text-sm text-neutral-500 dark:text-neutral-400"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + <time datetime="2024-05-09 23:35:32 -0300 -03">9 May 2024</time><span class="px-2 text-primary-500">·</span><span title="reading time">1 min</span> + + + + +</div> + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + + + + + + + + + + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/coq/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + coq + </span> +</span> + </span> + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/rust/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + rust + </span> +</span> + </span> + + + + +</div> + + + + </div> + + </div> + </a> + + + </section> + + + + + + + + + + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/posts/index.xml b/public/posts/index.xml new file mode 100644 index 0000000..104d58d --- /dev/null +++ b/public/posts/index.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>posts on lowest case</title> + <link>http://localhost:1313/posts/</link> + <description>Recent content in posts on lowest case</description> + <generator>Hugo -- gohugo.io</generator> + <language>en</language> + <copyright>© 2024 leonardo santiago</copyright> + <lastBuildDate>Thu, 09 May 2024 23:35:32 -0300</lastBuildDate><atom:link href="http://localhost:1313/posts/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>correctness is all you need</title> + <link>http://localhost:1313/posts/correctness-is-all-you-need/</link> + <pubDate>Thu, 09 May 2024 23:35:32 -0300</pubDate> + + <guid>http://localhost:1313/posts/correctness-is-all-you-need/</guid> + <description>&gt;&gt;&gt; 0.</description> + + </item> + + </channel> +</rss> diff --git a/public/posts/page/1/index.html b/public/posts/page/1/index.html new file mode 100644 index 0000000..3e3304d --- /dev/null +++ b/public/posts/page/1/index.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>http://localhost:1313/posts/</title> + <link rel="canonical" href="http://localhost:1313/posts/"> + <meta name="robots" content="noindex"> + <meta charset="utf-8"> + <meta http-equiv="refresh" content="0; url=http://localhost:1313/posts/"> + </head> +</html> diff --git a/public/posts/software-correctness/index.html b/public/posts/software-correctness/index.html new file mode 100644 index 0000000..5a495c1 --- /dev/null +++ b/public/posts/software-correctness/index.html @@ -0,0 +1,821 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>correctness is all you need · lowest case</title> + <meta name="title" content="correctness is all you need · lowest case" /> + + + <meta name="keywords" content="coq, rust, " /> + + + <link rel="canonical" href="http://localhost:1313/posts/software-correctness/" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/posts/software-correctness/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="correctness is all you need"> + <meta property="og:description" content="you&rsquo;re using the pythegorean theorem?"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="article"> + <meta property="article:section" content="posts"> + <meta property="article:published_time" content="2024-05-01T11:44:59-03:00"> + <meta property="article:modified_time" content="2024-05-01T11:44:59-03:00"> + <meta property="article:tag" content="coq"> + <meta property="article:tag" content="rust"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="correctness is all you need"> +<meta name="twitter:description" content="you’re using the pythegorean theorem?"> + + + <script type="application/ld+json"> + [{ + "@context": "https://schema.org", + "@type": "Article", + "articleSection": "posts", + "name": "correctness is all you need", + "headline": "correctness is all you need", + + "abstract": "you\u0026rsquo;re using the pythegorean theorem?", + "inLanguage": "en", + "url" : "http:\/\/localhost:1313\/posts\/software-correctness\/", + "author" : { + "@type": "Person", + "name": "leonardo santiago" + }, + "copyrightYear": "2024", + "dateCreated": "2024-05-01T11:44:59-03:00", + "datePublished": "2024-05-01T11:44:59-03:00", + + "dateModified": "2024-05-01T11:44:59-03:00", + + "keywords": ["coq","rust"], + + "mainEntityOfPage": "true", + "wordCount": "66" + }] + </script> + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + +<article> + + + <header id="single_header" class="mt-5 max-w-prose"> + + <ol class="text-sm text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + <li class="inline hidden"> + <a + class="hover:underline decoration-neutral-300 dark:underline-neutral-600" + href="/" + >lowest case</a + ><span class="px-1 text-primary-500">/</span> + </li> + + + <li class="inline "> + <a + class="hover:underline decoration-neutral-300 dark:underline-neutral-600" + href="/posts/" + >posts</a + ><span class="px-1 text-primary-500">/</span> + </li> + + + <li class="inline hidden"> + <a + class="hover:underline decoration-neutral-300 dark:underline-neutral-600" + href="/posts/software-correctness/" + >correctness is all you need</a + ><span class="px-1 text-primary-500">/</span> + </li> + +</ol> + + + + <h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral"> + correctness is all you need + </h1> + <div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + <time datetime="2024-05-01 11:44:59 -0300 -03">1 May 2024</time><span class="px-2 text-primary-500">·</span><span title="reading time">1 min</span> + + + + +</div> + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + + + + + + + + + + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/coq/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + coq + </span> +</span> + </span> + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/rust/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + rust + </span> +</span> + </span> + + + + +</div> + + + + </div> + + + + + + + + + + + + + + + + + + + + </header> + + <section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row"> + + <div + class="order-first lg:ml-auto px-0 lg:order-last ltr:lg:pl-8 rtl:lg:pr-8"> + <div class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky lg:top-10"> + + <details open class="toc-right mt-0 overflow-hidden rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 hidden lg:block"> + <summary + class="block py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden"> + table of contents + </summary> + <div + class="min-w-[220px] py-2 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600"> + <nav id="TableOfContents"> + <ul> + <li><a href="#taxonomy-of-bugs">taxonomy of bugs</a></li> + </ul> +</nav> + </div> +</details> +<details class="toc-inside mt-0 overflow-hidden rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 lg:hidden"> + <summary + class="py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden"> + table of contents + </summary> + <div + class="py-2 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600"> + <nav id="TableOfContents"> + <ul> + <li><a href="#taxonomy-of-bugs">taxonomy of bugs</a></li> + </ul> +</nav> + </div> +</details> + + </div> + </div> + + + <div class="min-w-0 min-h-0 max-w-fit"> + + + + + <div class="article-content max-w-prose mb-20"> + <blockquote> +<p>you’re using the pythegorean theorem? that old unmaintained crap?</p> +</blockquote> +<p>said no one, ever. the pythegorean theorem is treated as a mathematical foundation, that needs no questioning and that will always work. however, that couldn’t be more different from the way we treat modern software, ie. afraid of upgrading, avoiding unmaintained projects, and having to deal with constant breakage of upstream packages. why?</p> + + +<h2 class="relative group">taxonomy of bugs + <div id="taxonomy-of-bugs" class="anchor"></div> + + <span + class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"> + <a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" + style="text-decoration-line: none !important;" href="#taxonomy-of-bugs" aria-label="anchor">#</a> + </span> + +</h2> + + </div> + + + + + + + + </div> + + + + + + + + + <script> + var oid = "views_posts\/software-correctness.md" + var oid_likes = "likes_posts\/software-correctness.md" + </script> + + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + + </section> + <footer class="pt-8 max-w-prose print:hidden"> + + + + + + + <div class="pt-8"> + <hr class="border-dotted border-neutral-300 dark:border-neutral-600" /> + <div class="flex justify-between pt-3"> + <span> + + </span> + <span> + + <a class="flex text-right group ml-3" href="/posts/correctness-is-all-you-need/"> + <span class="flex flex-col"> + <span + class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500" + >correctness is all you need</span + > + <span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400"> + + <time datetime="2024-05-01 11:45:13 -0300 -03">1 May 2024</time> + + </span> + </span> + <span + class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400" + >→</span + > + <span + class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400" + >←</span + > + </a> + + </span> + </div> + </div> + + + + + </footer> +</article> + + <div id="top-scroller" class="pointer-events-none absolute top-[110vh] bottom-0 w-12 ltr:right-0 rtl:left-0"> + <a href="#the-top" + class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400" + aria-label="scroll to top" title="scroll to top"> + ↑ + </a> +</div> + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..5759686 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Disallow: / +Sitemap: http://localhost:1313/sitemap.xml diff --git a/public/series/index.html b/public/series/index.html new file mode 100644 index 0000000..8089c66 --- /dev/null +++ b/public/series/index.html @@ -0,0 +1,549 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>series · lowest case</title> + <meta name="title" content="series · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/series/" /> + + <link rel="alternate" type="application/rss+xml" href="/series/index.xml" title="lowest case" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/series/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="series"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="series"> +<meta name="twitter:description" content=""> + + + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + + + + <header> + + <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">series</h1> + <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + +</div> + + + </div> + </header> + + <script> + var oid = "views_taxonomy_series" + var oid_likes = "likes_taxonomy_series" + </script> + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + + + + + <section class="flex flex-wrap max-w-prose -mx-2 overflow-hidden"> + + </section> + + + + + + + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/series/index.xml b/public/series/index.xml new file mode 100644 index 0000000..0357c69 --- /dev/null +++ b/public/series/index.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>series on lowest case</title> + <link>http://localhost:1313/series/</link> + <description>Recent content in series on lowest case</description> + <generator>Hugo -- gohugo.io</generator> + <language>en</language> + <copyright>© 2024 leonardo santiago</copyright> + <atom:link href="http://localhost:1313/series/index.xml" rel="self" type="application/rss+xml" /> + </channel> +</rss> diff --git a/public/shin.ico b/public/shin.ico Binary files differnew file mode 100644 index 0000000..e953b1f --- /dev/null +++ b/public/shin.ico diff --git a/public/shin.png b/public/shin.png Binary files differnew file mode 100644 index 0000000..cab028e --- /dev/null +++ b/public/shin.png diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","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"}
\ No newline at end of file diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..31cb760 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" + xmlns:xhtml="http://www.w3.org/1999/xhtml"> + + <url> + <loc>http://localhost:1313/</loc> + <lastmod>2024-05-01T11:53:23-03:00</lastmod> + <changefreq>daily</changefreq> + <priority>0.5</priority> + </url> +</urlset> diff --git a/public/tags/coq/index.html b/public/tags/coq/index.html new file mode 100644 index 0000000..3c016ec --- /dev/null +++ b/public/tags/coq/index.html @@ -0,0 +1,689 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>coq · lowest case</title> + <meta name="title" content="coq · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/tags/coq/" /> + + <link rel="alternate" type="application/rss+xml" href="/tags/coq/index.xml" title="lowest case" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/tags/coq/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="coq"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="coq"> +<meta name="twitter:description" content=""> + + + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + + <header> + + <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">coq</h1> + <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + +</div> + + + </div> + </header> + + <section class="flex flex-col max-w-full mt-0 mb-5 prose dark:prose-invert lg:flex-row"> + + <script> + var oid = "views_term_coq" + var oid_likes = "likes_term_coq" + </script> + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + </section> + + + + + + + + + + + <section class="space-y-10 w-full"> + + + <h2 class="mt-12 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300"> + 2024 + </h2> + + + + + + + + + + + + + + + + + + + + + + + + + + <a class="flex flex-wrap article " href="/posts/correctness-is-all-you-need/"> + <div class=" mt-3 md:mt-0"> + <div class="items-center text-left text-xl font-semibold"> + + <div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral" + href="/posts/correctness-is-all-you-need/">correctness is all you need</div> + + + + </div> + <div class="text-sm text-neutral-500 dark:text-neutral-400"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + <time datetime="2024-05-09 23:19:01 -0300 -03">9 May 2024</time><span class="px-2 text-primary-500">·</span><span title="reading time">1 min</span> + + + + +</div> + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + + + + + + + + + + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/coq/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + coq + </span> +</span> + </span> + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/rust/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + rust + </span> +</span> + </span> + + + + +</div> + + + + </div> + + </div> + </a> + + + </section> + + + + + + + + + + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/tags/coq/index.xml b/public/tags/coq/index.xml new file mode 100644 index 0000000..087a056 --- /dev/null +++ b/public/tags/coq/index.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>coq on lowest case</title> + <link>http://localhost:1313/tags/coq/</link> + <description>Recent content in coq on lowest case</description> + <generator>Hugo -- gohugo.io</generator> + <language>en</language> + <copyright>© 2024 leonardo santiago</copyright> + <lastBuildDate>Thu, 09 May 2024 23:19:01 -0300</lastBuildDate><atom:link href="http://localhost:1313/tags/coq/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>correctness is all you need</title> + <link>http://localhost:1313/posts/correctness-is-all-you-need/</link> + <pubDate>Thu, 09 May 2024 23:19:01 -0300</pubDate> + + <guid>http://localhost:1313/posts/correctness-is-all-you-need/</guid> + <description>you&rsquo;ll usually see people complaining that</description> + + </item> + + </channel> +</rss> diff --git a/public/tags/coq/page/1/index.html b/public/tags/coq/page/1/index.html new file mode 100644 index 0000000..2b1345a --- /dev/null +++ b/public/tags/coq/page/1/index.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>http://localhost:1313/tags/coq/</title> + <link rel="canonical" href="http://localhost:1313/tags/coq/"> + <meta name="robots" content="noindex"> + <meta charset="utf-8"> + <meta http-equiv="refresh" content="0; url=http://localhost:1313/tags/coq/"> + </head> +</html> diff --git a/public/tags/index.html b/public/tags/index.html new file mode 100644 index 0000000..5e679e4 --- /dev/null +++ b/public/tags/index.html @@ -0,0 +1,549 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>tags · lowest case</title> + <meta name="title" content="tags · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/tags/" /> + + <link rel="alternate" type="application/rss+xml" href="/tags/index.xml" title="lowest case" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/tags/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="tags"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="tags"> +<meta name="twitter:description" content=""> + + + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + + + + <header> + + <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">tags</h1> + <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + +</div> + + + </div> + </header> + + <script> + var oid = "views_taxonomy_tags" + var oid_likes = "likes_taxonomy_tags" + </script> + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + + + + + <section class="flex flex-wrap max-w-prose -mx-2 overflow-hidden"> + + </section> + + + + + + + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/tags/index.xml b/public/tags/index.xml new file mode 100644 index 0000000..244d2b0 --- /dev/null +++ b/public/tags/index.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>tags on lowest case</title> + <link>http://localhost:1313/tags/</link> + <description>Recent content in tags on lowest case</description> + <generator>Hugo -- gohugo.io</generator> + <language>en</language> + <copyright>© 2024 leonardo santiago</copyright> + <atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" /> + </channel> +</rss> diff --git a/public/tags/rust/index.html b/public/tags/rust/index.html new file mode 100644 index 0000000..6d78e0b --- /dev/null +++ b/public/tags/rust/index.html @@ -0,0 +1,689 @@ +<!DOCTYPE html> +<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="dark" + data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script> + <meta charset="utf-8" /> + + <meta http-equiv="content-language" content="en" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + + <title>rust · lowest case</title> + <meta name="title" content="rust · lowest case" /> + + + + + + <link rel="canonical" href="http://localhost:1313/tags/rust/" /> + + <link rel="alternate" type="application/rss+xml" href="/tags/rust/index.xml" title="lowest case" /> + + + + + + + + + + + <link type="text/css" rel="stylesheet" href="/css/main.bundle.min.81c7ce66608dd0b86aa3e571076f8794993d50f0d4a5b153013edfc28642a93c4104edfdc604558908c3624b8e99386757d81f1bf8c4452c6220cf4c63970408.css" + integrity="sha512-gcfOZmCN0Lhqo+VxB2+HlJk9UPDUpbFTAT7fwoZCqTxBBO39xgRViQjDYkuOmThnV9gfG/jERSxiIM9MY5cECA==" /> + + + <script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js" + integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script> + + + + + + + + + + <script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.b36dda9ec4ec11e967fd341e7d57b8c484ac7a39f8f329f7bcf7ce4812569de8607db866a086d4789956ac0b74967e251c9a566d94d469dd28b8787fed4f46f5.js" + integrity="sha512-s23ansTsEeln/TQefVe4xISsejn48yn3vPfOSBJWnehgfbhmoIbUeJlWrAt0ln4lHJpWbZTUad0ouHh/7U9G9Q==" data-copy="" data-copied=""></script> + + + <script src="/js/zoom.min.js"></script> + + + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> + <link rel="manifest" href="/site.webmanifest" /> + + + + + + + + <meta property="og:url" content="http://localhost:1313/tags/rust/"> + <meta property="og:site_name" content="lowest case"> + <meta property="og:title" content="rust"> + <meta property="og:locale" content="en"> + <meta property="og:type" content="website"> + + <meta name="twitter:card" content="summary"><meta name="twitter:title" content="rust"> +<meta name="twitter:description" content=""> + + + + + + + <meta name="author" content="leonardo santiago" /> + + + + <link href="mailto:[email protected]" rel="me" /> + + + <link href="https://github.com/o-santi" rel="me" /> + + + <link href="https://gitlab.com/o-santi" rel="me" /> + + + <link href="https://www.linkedin.com/in/leonardo-ribeiro-santiago/" rel="me" /> + + + <link href="https://t.me/osanti4" rel="me" /> + + + <link href="https://twitter.com/o-santi" rel="me" /> + + + + + +<script src="/lib/jquery/jquery.slim.min.js" integrity=""></script> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <meta name="theme-color"/> + + +</head> +<body + class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32"> + <div id="the-top" class="absolute flex self-center"> + <a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" + href="#main-content"><span + class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>skip to main content</a> + </div> + + + <div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px" + class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3"> + + <div class="flex flex-1 items-center justify-between"> + <nav class="flex space-x-3"> + + + <a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">lowest case</a> + + + </nav> + <nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12"> + + + + + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + about + </p> +</a> + + + + + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + blog + </p> +</a> + + + + + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-base font-medium" title=""> + tags + </p> +</a> + + + + + + + + + + <button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + + <div + class="ltr:mr-14 rtl:ml-14 flex items-center"> + <button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + </div> + + + </nav> + <div class="flex md:hidden items-center space-x-5 md:ml-12 h-12"> + + <span></span> + + + + + + <button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400" + title=""> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </button> + + + + + <button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px"> + <div class="flex items-center justify-center dark:hidden"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg> + + </span> + + + </div> + <div class="items-center justify-center hidden dark:flex"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg> + + </span> + + + </div> + </button> + + + </div> + </div> + <div class="-my-2 -mr-2 md:hidden"> + + <label id="menu-button" for="menu-controller" class="block"> + <input type="checkbox" id="menu-controller" class="hidden" /> + + <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"> + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg> + + </span> + + + </div> + <div id="menu-wrapper" style="padding-top:5px;" + class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"> + <ul + class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"> + + <li> + <span + class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400"> + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + +</span> + </li> + + + + + <li class="mt-1"> + <a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + about + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/posts/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + blog + </p> + </a> +</li> + + + + + + + <li class="mt-1"> + <a href="/tags/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400"> + + <p class="text-bg font-bg" title=""> + tags + </p> + </a> +</li> + + + + + + </ul> + + + + </div> + </label> + </div> +</div> + + + + +<script> + (function () { + var $mainmenu = $('.main-menu'); + var path = window.location.pathname; + $mainmenu.find('a[href="' + path + '"]').each(function (i, e) { + $(e).children('p').addClass('active'); + }); + })(); +</script> + + + + <div class="relative flex flex-col grow"> + <main id="main-content" class="grow"> + + + + <header> + + <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">rust</h1> + <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + +</div> + + + </div> + </header> + + <section class="flex flex-col max-w-full mt-0 mb-5 prose dark:prose-invert lg:flex-row"> + + <script> + var oid = "views_term_rust" + var oid_likes = "likes_term_rust" + </script> + + + <script type="text/javascript" src="/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js" integrity="sha512-sGop1CpO0WeHl44u7h6MeXt2mNsrwUzO549cgKxWb8mWGQpzrYCl6YdVhHSyC5b6OPfYW0BfFl/3K3sWPFrRGw=="></script> + </section> + + + + + + + + + + + <section class="space-y-10 w-full"> + + + <h2 class="mt-12 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300"> + 2024 + </h2> + + + + + + + + + + + + + + + + + + + + + + + + + + <a class="flex flex-wrap article " href="/posts/correctness-is-all-you-need/"> + <div class=" mt-3 md:mt-0"> + <div class="items-center text-left text-xl font-semibold"> + + <div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral" + href="/posts/correctness-is-all-you-need/">correctness is all you need</div> + + + + </div> + <div class="text-sm text-neutral-500 dark:text-neutral-400"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + <time datetime="2024-05-09 23:19:01 -0300 -03">9 May 2024</time><span class="px-2 text-primary-500">·</span><span title="reading time">1 min</span> + + + + +</div> + + + + + +<div class="flex flex-row flex-wrap items-center"> + + + + + + + + + + + + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/coq/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + coq + </span> +</span> + </span> + + <span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/rust/",'_self');"> + <span class="flex" style="cursor: pointer;"> + <span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"> + rust + </span> +</span> + </span> + + + + +</div> + + + + </div> + + </div> + </a> + + + </section> + + + + + + + + + + </main><footer id="site-footer" class="py-10 print:hidden"> + + + + + <div class="flex items-center justify-between"> + + + + <p class="text-sm text-neutral-500 dark:text-neutral-400"> + © + 2024 + leonardo santiago + </p> + + + + + <p class="text-xs text-neutral-500 dark:text-neutral-400"> + + + powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500" + href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a> + </p> + + + </div> + <script> + + mediumZoom(document.querySelectorAll("img:not(.nozoom)"), { + margin: 24, + background: 'rgba(0,0,0,0.5)', + scrollOffset: 0, + }) + + </script> + + + <script type="text/javascript" src="/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js" integrity="sha512-YgYLskf03itt3kWQNmj++2jXkvNlWHYFF3sSJ8DPQ1iHAe2soMtA4sjieJvVzmfB0qIVufsljDSWp80l58tf3w=="></script> + + +</footer><div + id="search-wrapper" + class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]" + data-url="http://localhost:1313/" + style="z-index:500" +> + <div + id="search-modal" + class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800" + > + <header class="relative z-10 flex items-center justify-between flex-none px-2"> + <form class="flex items-center flex-auto min-w-0"> + <div class="flex items-center justify-center w-8 h-8 text-neutral-400"> + + + <span class="relative block icon"> + <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> + + </span> + + + </div> + <input + type="search" + id="search-query" + class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent" + placeholder="cearch" + tabindex="0" + /> + </form> + <button + id="close-search-button" + class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" + title="close (Esc)" + > + + + <span class="relative block icon"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg> + + </span> + + + </button> + </header> + <section class="flex-auto px-2 overflow-auto"> + <ul id="search-results"> + + </ul> + </section> + </div> +</div> + + </div> +</body> + +</html> diff --git a/public/tags/rust/index.xml b/public/tags/rust/index.xml new file mode 100644 index 0000000..76e9bcf --- /dev/null +++ b/public/tags/rust/index.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>rust on lowest case</title> + <link>http://localhost:1313/tags/rust/</link> + <description>Recent content in rust on lowest case</description> + <generator>Hugo -- gohugo.io</generator> + <language>en</language> + <copyright>© 2024 leonardo santiago</copyright> + <lastBuildDate>Thu, 09 May 2024 23:19:01 -0300</lastBuildDate><atom:link href="http://localhost:1313/tags/rust/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>correctness is all you need</title> + <link>http://localhost:1313/posts/correctness-is-all-you-need/</link> + <pubDate>Thu, 09 May 2024 23:19:01 -0300</pubDate> + + <guid>http://localhost:1313/posts/correctness-is-all-you-need/</guid> + <description>you&rsquo;ll usually see people complaining that</description> + + </item> + + </channel> +</rss> diff --git a/public/tags/rust/page/1/index.html b/public/tags/rust/page/1/index.html new file mode 100644 index 0000000..eeaf092 --- /dev/null +++ b/public/tags/rust/page/1/index.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>http://localhost:1313/tags/rust/</title> + <link rel="canonical" href="http://localhost:1313/tags/rust/"> + <meta name="robots" content="noindex"> + <meta charset="utf-8"> + <meta http-equiv="refresh" content="0; url=http://localhost:1313/tags/rust/"> + </head> +</html> diff --git a/resources/_gen/assets/ananke/css/main.css_83735de7ca999e9c17f3419b41b93fdb.content b/resources/_gen/assets/ananke/css/main.css_83735de7ca999e9c17f3419b41b93fdb.content new file mode 100644 index 0000000..54a77cb --- /dev/null +++ b/resources/_gen/assets/ananke/css/main.css_83735de7ca999e9c17f3419b41b93fdb.content @@ -0,0 +1 @@ +/*!TACHYONS v4.9.1 | http://tachyons.io*//*!TACHYONS v4.12.0 | http://tachyons.io*//*!normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}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;-webkit-text-decoration:underline dotted;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}[hidden],template{display:none}.border-box,a,article,aside,blockquote,body,code,dd,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,html,input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],legend,li,main,nav,ol,p,pre,section,table,td,textarea,th,tr,ul{box-sizing:border-box}.aspect-ratio{height:0;position:relative}.aspect-ratio--16x9{padding-bottom:56.25%}.aspect-ratio--9x16{padding-bottom:177.77%}.aspect-ratio--4x3{padding-bottom:75%}.aspect-ratio--3x4{padding-bottom:133.33%}.aspect-ratio--6x4{padding-bottom:66.6%}.aspect-ratio--4x6{padding-bottom:150%}.aspect-ratio--8x5{padding-bottom:62.5%}.aspect-ratio--5x8{padding-bottom:160%}.aspect-ratio--7x5{padding-bottom:71.42%}.aspect-ratio--5x7{padding-bottom:140%}.aspect-ratio--1x1{padding-bottom:100%}.aspect-ratio--object{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}img{max-width:100%}.cover{background-size:cover!important}.contain{background-size:contain!important}.bg-center{background-position:50%}.bg-center,.bg-top{background-repeat:no-repeat}.bg-top{background-position:top}.bg-right{background-position:100%}.bg-bottom,.bg-right{background-repeat:no-repeat}.bg-bottom{background-position:bottom}.bg-left{background-repeat:no-repeat;background-position:0}.outline{outline:1px solid}.outline-transparent{outline:1px solid transparent}.outline-0{outline:0}.ba{border-style:solid;border-width:1px}.bt{border-top-style:solid;border-top-width:1px}.br{border-right-style:solid;border-right-width:1px}.bb{border-bottom-style:solid;border-bottom-width:1px}.bl{border-left-style:solid;border-left-width:1px}.bn{border-style:none;border-width:0}.b--black{border-color:#000}.b--near-black{border-color:#111}.b--dark-gray{border-color:#333}.b--mid-gray{border-color:#555}.b--gray{border-color:#777}.b--silver{border-color:#999}.b--light-silver{border-color:#aaa}.b--moon-gray{border-color:#ccc}.b--light-gray{border-color:#eee}.b--near-white{border-color:#f4f4f4}.b--white{border-color:#fff}.b--white-90{border-color:rgba(255,255,255,.9)}.b--white-80{border-color:rgba(255,255,255,.8)}.b--white-70{border-color:rgba(255,255,255,.7)}.b--white-60{border-color:rgba(255,255,255,.6)}.b--white-50{border-color:rgba(255,255,255,.5)}.b--white-40{border-color:rgba(255,255,255,.4)}.b--white-30{border-color:rgba(255,255,255,.3)}.b--white-20{border-color:rgba(255,255,255,.2)}.b--white-10{border-color:rgba(255,255,255,.1)}.b--white-05{border-color:rgba(255,255,255,5%)}.b--white-025{border-color:rgba(255,255,255,.025)}.b--white-0125{border-color:rgba(255,255,255,.0125)}.b--black-90{border-color:rgba(0,0,0,.9)}.b--black-80{border-color:rgba(0,0,0,.8)}.b--black-70{border-color:rgba(0,0,0,.7)}.b--black-60{border-color:rgba(0,0,0,.6)}.b--black-50{border-color:rgba(0,0,0,.5)}.b--black-40{border-color:rgba(0,0,0,.4)}.b--black-30{border-color:rgba(0,0,0,.3)}.b--black-20{border-color:rgba(0,0,0,.2)}.b--black-10{border-color:rgba(0,0,0,.1)}.b--black-05{border-color:rgba(0,0,0,5%)}.b--black-025{border-color:rgba(0,0,0,.025)}.b--black-0125{border-color:rgba(0,0,0,.0125)}.b--dark-red{border-color:#e7040f}.b--red{border-color:#ff4136}.b--light-red{border-color:#ff725c}.b--orange{border-color:#ff6300}.b--gold{border-color:#ffb700}.b--yellow{border-color:gold}.b--light-yellow{border-color:#fbf1a9}.b--purple{border-color:#5e2ca5}.b--light-purple{border-color:#a463f2}.b--dark-pink{border-color:#d5008f}.b--hot-pink{border-color:#ff41b4}.b--pink{border-color:#ff80cc}.b--light-pink{border-color:#ffa3d7}.b--dark-green{border-color:#137752}.b--green{border-color:#19a974}.b--light-green{border-color:#9eebcf}.b--navy{border-color:#001b44}.b--dark-blue{border-color:#00449e}.b--blue{border-color:#357edd}.b--light-blue{border-color:#96ccff}.b--lightest-blue{border-color:#cdecff}.b--washed-blue{border-color:#f6fffe}.b--washed-green{border-color:#e8fdf5}.b--washed-yellow{border-color:#fffceb}.b--washed-red{border-color:#ffdfdf}.b--transparent{border-color:transparent}.b--inherit{border-color:inherit}.b--initial{border-color:initial}.b--unset{border-color:unset}.br0{border-radius:0}.br1{border-radius:.125rem}.br2{border-radius:.25rem}.br3{border-radius:.5rem}.br4{border-radius:1rem}.br-100{border-radius:100%}.br-pill{border-radius:9999px}.br--bottom{border-top-left-radius:0;border-top-right-radius:0}.br--top{border-bottom-right-radius:0}.br--right,.br--top{border-bottom-left-radius:0}.br--right{border-top-left-radius:0}.br--left{border-top-right-radius:0;border-bottom-right-radius:0}.br-inherit{border-radius:inherit}.br-initial{border-radius:initial}.br-unset{border-radius:unset}.b--dotted{border-style:dotted}.b--dashed{border-style:dashed}.b--solid{border-style:solid}.b--none{border-style:none}.bw0{border-width:0}.bw1{border-width:.125rem}.bw2{border-width:.25rem}.bw3{border-width:.5rem}.bw4{border-width:1rem}.bw5{border-width:2rem}.bt-0{border-top-width:0}.br-0{border-right-width:0}.bb-0{border-bottom-width:0}.bl-0{border-left-width:0}.shadow-1{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4{box-shadow:2px 2px 8px rgba(0,0,0,.2)}.shadow-5{box-shadow:4px 4px 8px rgba(0,0,0,.2)}.pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-1{top:1rem}.right-1{right:1rem}.bottom-1{bottom:1rem}.left-1{left:1rem}.top-2{top:2rem}.right-2{right:2rem}.bottom-2{bottom:2rem}.left-2{left:2rem}.top--1{top:-1rem}.right--1{right:-1rem}.bottom--1{bottom:-1rem}.left--1{left:-1rem}.top--2{top:-2rem}.right--2{right:-2rem}.bottom--2{bottom:-2rem}.left--2{left:-2rem}.absolute--fill{top:0;right:0;bottom:0;left:0}.cf:after,.cf:before{content:" ";display:table}.cf:after{clear:both}.cf{*zoom:1}.cl{clear:left}.cr{clear:right}.cb{clear:both}.cn{clear:none}.dn{display:none}.di{display:inline}.db{display:block}.dib{display:inline-block}.dit{display:inline-table}.dt{display:table}.dtc{display:table-cell}.dt-row{display:table-row}.dt-row-group{display:table-row-group}.dt-column{display:table-column}.dt-column-group{display:table-column-group}.dt--fixed{table-layout:fixed;width:100%}.flex{display:flex}.inline-flex{display:inline-flex}.flex-auto{flex:auto;min-width:0;min-height:0}.flex-none{flex:none}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-row-reverse{flex-direction:row-reverse}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-baseline{align-self:baseline}.self-stretch{align-self:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-stretch{align-content:stretch}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-last{order:99999}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.fl{float:left}.fl,.fr{_display:inline}.fr{float:right}.fn{float:none}.sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.serif{font-family:georgia,times,serif}.system-sans-serif{font-family:sans-serif}.system-serif{font-family:serif}.code,code{font-family:Consolas,monaco,monospace}.courier{font-family:Courier Next,courier,monospace}.helvetica{font-family:helvetica neue,helvetica,sans-serif}.avenir{font-family:avenir next,avenir,sans-serif}.athelas{font-family:athelas,georgia,serif}.georgia{font-family:georgia,serif}.times{font-family:times,serif}.bodoni{font-family:Bodoni MT,serif}.calisto{font-family:Calisto MT,serif}.garamond{font-family:garamond,serif}.baskerville{font-family:baskerville,serif}.i{font-style:italic}.fs-normal{font-style:normal}.normal{font-weight:400}.b{font-weight:700}.fw1{font-weight:100}.fw2{font-weight:200}.fw3{font-weight:300}.fw4{font-weight:400}.fw5{font-weight:500}.fw6{font-weight:600}.fw7{font-weight:700}.fw8{font-weight:800}.fw9{font-weight:900}.input-reset{-webkit-appearance:none;-moz-appearance:none}.button-reset::-moz-focus-inner,.input-reset::-moz-focus-inner{border:0;padding:0}.h1{height:1rem}.h2{height:2rem}.h3{height:4rem}.h4{height:8rem}.h5{height:16rem}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.min-h-100{min-height:100%}.vh-25{height:25vh}.vh-50{height:50vh}.vh-75{height:75vh}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.h-auto{height:auto}.h-inherit{height:inherit}.tracked{letter-spacing:.1em}.tracked-tight{letter-spacing:-.05em}.tracked-mega{letter-spacing:.25em}.lh-solid{line-height:1}.lh-title{line-height:1.25}.lh-copy{line-height:1.5}.link{text-decoration:none}.link,.link:active,.link:focus,.link:hover,.link:link,.link:visited{transition:color .15s ease-in}.link:focus{outline:1px dotted currentColor}.list{list-style-type:none}.mw-100{max-width:100%}.mw1{max-width:1rem}.mw2{max-width:2rem}.mw3{max-width:4rem}.mw4{max-width:8rem}.mw5{max-width:16rem}.mw6{max-width:32rem}.mw7{max-width:48rem}.mw8{max-width:64rem}.mw9{max-width:96rem}.mw-none{max-width:none}.w1{width:1rem}.w2{width:2rem}.w3{width:4rem}.w4{width:8rem}.w5{width:16rem}.w-10{width:10%}.w-20{width:20%}.w-25{width:25%}.w-30{width:30%}.w-33{width:33%}.w-34{width:34%}.w-40{width:40%}.w-50{width:50%}.w-60{width:60%}.w-70{width:70%}.w-75{width:75%}.w-80{width:80%}.w-90{width:90%}.w-100{width:100%}.w-third{width:33.33333%}.w-two-thirds{width:66.66667%}.w-auto{width:auto}.overflow-visible{overflow:visible}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.overflow-x-visible{overflow-x:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-visible{overflow-y:visible}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-auto{overflow-y:auto}.static{position:static}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.o-100{opacity:1}.o-90{opacity:.9}.o-80{opacity:.8}.o-70{opacity:.7}.o-60{opacity:.6}.o-50{opacity:.5}.o-40{opacity:.4}.o-30{opacity:.3}.o-20{opacity:.2}.o-10{opacity:.1}.o-05{opacity:.05}.o-025{opacity:.025}.o-0{opacity:0}.rotate-45{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.black-90{color:rgba(0,0,0,.9)}.black-80{color:rgba(0,0,0,.8)}.black-70{color:rgba(0,0,0,.7)}.black-60{color:rgba(0,0,0,.6)}.black-50{color:rgba(0,0,0,.5)}.black-40{color:rgba(0,0,0,.4)}.black-30{color:rgba(0,0,0,.3)}.black-20{color:rgba(0,0,0,.2)}.black-10{color:rgba(0,0,0,.1)}.black-05{color:rgba(0,0,0,5%)}.white-90{color:rgba(255,255,255,.9)}.white-80{color:rgba(255,255,255,.8)}.white-70{color:rgba(255,255,255,.7)}.white-60{color:rgba(255,255,255,.6)}.white-50{color:rgba(255,255,255,.5)}.white-40{color:rgba(255,255,255,.4)}.white-30{color:rgba(255,255,255,.3)}.white-20{color:rgba(255,255,255,.2)}.white-10{color:rgba(255,255,255,.1)}.black{color:#000}.near-black{color:#111}.dark-gray{color:#333}.mid-gray{color:#555}.gray{color:#777}.silver{color:#999}.light-silver{color:#aaa}.moon-gray{color:#ccc}.light-gray{color:#eee}.near-white{color:#f4f4f4}.white{color:#fff}.dark-red{color:#e7040f}.red{color:#ff4136}.light-red{color:#ff725c}.orange{color:#ff6300}.gold{color:#ffb700}.yellow{color:gold}.light-yellow{color:#fbf1a9}.purple{color:#5e2ca5}.light-purple{color:#a463f2}.dark-pink{color:#d5008f}.hot-pink{color:#ff41b4}.pink{color:#ff80cc}.light-pink{color:#ffa3d7}.dark-green{color:#137752}.green{color:#19a974}.light-green{color:#9eebcf}.navy{color:#001b44}.dark-blue{color:#00449e}.blue{color:#357edd}.light-blue{color:#96ccff}.lightest-blue{color:#cdecff}.washed-blue{color:#f6fffe}.washed-green{color:#e8fdf5}.washed-yellow{color:#fffceb}.washed-red{color:#ffdfdf}.color-inherit{color:inherit}.bg-black-90{background-color:rgba(0,0,0,.9)}.bg-black-80{background-color:rgba(0,0,0,.8)}.bg-black-70{background-color:rgba(0,0,0,.7)}.bg-black-60{background-color:rgba(0,0,0,.6)}.bg-black-50{background-color:rgba(0,0,0,.5)}.bg-black-40{background-color:rgba(0,0,0,.4)}.bg-black-30{background-color:rgba(0,0,0,.3)}.bg-black-20{background-color:rgba(0,0,0,.2)}.bg-black-10{background-color:rgba(0,0,0,.1)}.bg-black-05{background-color:rgba(0,0,0,5%)}.bg-white-90{background-color:rgba(255,255,255,.9)}.bg-white-80{background-color:rgba(255,255,255,.8)}.bg-white-70{background-color:rgba(255,255,255,.7)}.bg-white-60{background-color:rgba(255,255,255,.6)}.bg-white-50{background-color:rgba(255,255,255,.5)}.bg-white-40{background-color:rgba(255,255,255,.4)}.bg-white-30{background-color:rgba(255,255,255,.3)}.bg-white-20{background-color:rgba(255,255,255,.2)}.bg-white-10{background-color:rgba(255,255,255,.1)}.bg-black{background-color:#000}.bg-near-black{background-color:#111}.bg-dark-gray{background-color:#333}.bg-mid-gray{background-color:#555}.bg-gray{background-color:#777}.bg-silver{background-color:#999}.bg-light-silver{background-color:#aaa}.bg-moon-gray{background-color:#ccc}.bg-light-gray{background-color:#eee}.bg-near-white{background-color:#f4f4f4}.bg-white{background-color:#fff}.bg-transparent{background-color:transparent}.bg-dark-red{background-color:#e7040f}.bg-red{background-color:#ff4136}.bg-light-red{background-color:#ff725c}.bg-orange{background-color:#ff6300}.bg-gold{background-color:#ffb700}.bg-yellow{background-color:gold}.bg-light-yellow{background-color:#fbf1a9}.bg-purple{background-color:#5e2ca5}.bg-light-purple{background-color:#a463f2}.bg-dark-pink{background-color:#d5008f}.bg-hot-pink{background-color:#ff41b4}.bg-pink{background-color:#ff80cc}.bg-light-pink{background-color:#ffa3d7}.bg-dark-green{background-color:#137752}.bg-green{background-color:#19a974}.bg-light-green{background-color:#9eebcf}.bg-navy{background-color:#001b44}.bg-dark-blue{background-color:#00449e}.bg-blue{background-color:#357edd}.bg-light-blue{background-color:#96ccff}.bg-lightest-blue{background-color:#cdecff}.bg-washed-blue{background-color:#f6fffe}.bg-washed-green{background-color:#e8fdf5}.bg-washed-yellow{background-color:#fffceb}.bg-washed-red{background-color:#ffdfdf}.bg-inherit{background-color:inherit}.hover-black:focus,.hover-black:hover{color:#000}.hover-near-black:focus,.hover-near-black:hover{color:#111}.hover-dark-gray:focus,.hover-dark-gray:hover{color:#333}.hover-mid-gray:focus,.hover-mid-gray:hover{color:#555}.hover-gray:focus,.hover-gray:hover{color:#777}.hover-silver:focus,.hover-silver:hover{color:#999}.hover-light-silver:focus,.hover-light-silver:hover{color:#aaa}.hover-moon-gray:focus,.hover-moon-gray:hover{color:#ccc}.hover-light-gray:focus,.hover-light-gray:hover{color:#eee}.hover-near-white:focus,.hover-near-white:hover{color:#f4f4f4}.hover-white:focus,.hover-white:hover{color:#fff}.hover-black-90:focus,.hover-black-90:hover{color:rgba(0,0,0,.9)}.hover-black-80:focus,.hover-black-80:hover{color:rgba(0,0,0,.8)}.hover-black-70:focus,.hover-black-70:hover{color:rgba(0,0,0,.7)}.hover-black-60:focus,.hover-black-60:hover{color:rgba(0,0,0,.6)}.hover-black-50:focus,.hover-black-50:hover{color:rgba(0,0,0,.5)}.hover-black-40:focus,.hover-black-40:hover{color:rgba(0,0,0,.4)}.hover-black-30:focus,.hover-black-30:hover{color:rgba(0,0,0,.3)}.hover-black-20:focus,.hover-black-20:hover{color:rgba(0,0,0,.2)}.hover-black-10:focus,.hover-black-10:hover{color:rgba(0,0,0,.1)}.hover-white-90:focus,.hover-white-90:hover{color:rgba(255,255,255,.9)}.hover-white-80:focus,.hover-white-80:hover{color:rgba(255,255,255,.8)}.hover-white-70:focus,.hover-white-70:hover{color:rgba(255,255,255,.7)}.hover-white-60:focus,.hover-white-60:hover{color:rgba(255,255,255,.6)}.hover-white-50:focus,.hover-white-50:hover{color:rgba(255,255,255,.5)}.hover-white-40:focus,.hover-white-40:hover{color:rgba(255,255,255,.4)}.hover-white-30:focus,.hover-white-30:hover{color:rgba(255,255,255,.3)}.hover-white-20:focus,.hover-white-20:hover{color:rgba(255,255,255,.2)}.hover-white-10:focus,.hover-white-10:hover{color:rgba(255,255,255,.1)}.hover-inherit:focus,.hover-inherit:hover{color:inherit}.hover-bg-black:focus,.hover-bg-black:hover{background-color:#000}.hover-bg-near-black:focus,.hover-bg-near-black:hover{background-color:#111}.hover-bg-dark-gray:focus,.hover-bg-dark-gray:hover{background-color:#333}.hover-bg-mid-gray:focus,.hover-bg-mid-gray:hover{background-color:#555}.hover-bg-gray:focus,.hover-bg-gray:hover{background-color:#777}.hover-bg-silver:focus,.hover-bg-silver:hover{background-color:#999}.hover-bg-light-silver:focus,.hover-bg-light-silver:hover{background-color:#aaa}.hover-bg-moon-gray:focus,.hover-bg-moon-gray:hover{background-color:#ccc}.hover-bg-light-gray:focus,.hover-bg-light-gray:hover{background-color:#eee}.hover-bg-near-white:focus,.hover-bg-near-white:hover{background-color:#f4f4f4}.hover-bg-white:focus,.hover-bg-white:hover{background-color:#fff}.hover-bg-transparent:focus,.hover-bg-transparent:hover{background-color:transparent}.hover-bg-black-90:focus,.hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.hover-bg-black-80:focus,.hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.hover-bg-black-70:focus,.hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.hover-bg-black-60:focus,.hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.hover-bg-black-50:focus,.hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.hover-bg-black-40:focus,.hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.hover-bg-black-30:focus,.hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.hover-bg-black-20:focus,.hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.hover-bg-black-10:focus,.hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.hover-bg-white-90:focus,.hover-bg-white-90:hover{background-color:rgba(255,255,255,.9)}.hover-bg-white-80:focus,.hover-bg-white-80:hover{background-color:rgba(255,255,255,.8)}.hover-bg-white-70:focus,.hover-bg-white-70:hover{background-color:rgba(255,255,255,.7)}.hover-bg-white-60:focus,.hover-bg-white-60:hover{background-color:rgba(255,255,255,.6)}.hover-bg-white-50:focus,.hover-bg-white-50:hover{background-color:rgba(255,255,255,.5)}.hover-bg-white-40:focus,.hover-bg-white-40:hover{background-color:rgba(255,255,255,.4)}.hover-bg-white-30:focus,.hover-bg-white-30:hover{background-color:rgba(255,255,255,.3)}.hover-bg-white-20:focus,.hover-bg-white-20:hover{background-color:rgba(255,255,255,.2)}.hover-bg-white-10:focus,.hover-bg-white-10:hover{background-color:rgba(255,255,255,.1)}.hover-dark-red:focus,.hover-dark-red:hover{color:#e7040f}.hover-red:focus,.hover-red:hover{color:#ff4136}.hover-light-red:focus,.hover-light-red:hover{color:#ff725c}.hover-orange:focus,.hover-orange:hover{color:#ff6300}.hover-gold:focus,.hover-gold:hover{color:#ffb700}.hover-yellow:focus,.hover-yellow:hover{color:gold}.hover-light-yellow:focus,.hover-light-yellow:hover{color:#fbf1a9}.hover-purple:focus,.hover-purple:hover{color:#5e2ca5}.hover-light-purple:focus,.hover-light-purple:hover{color:#a463f2}.hover-dark-pink:focus,.hover-dark-pink:hover{color:#d5008f}.hover-hot-pink:focus,.hover-hot-pink:hover{color:#ff41b4}.hover-pink:focus,.hover-pink:hover{color:#ff80cc}.hover-light-pink:focus,.hover-light-pink:hover{color:#ffa3d7}.hover-dark-green:focus,.hover-dark-green:hover{color:#137752}.hover-green:focus,.hover-green:hover{color:#19a974}.hover-light-green:focus,.hover-light-green:hover{color:#9eebcf}.hover-navy:focus,.hover-navy:hover{color:#001b44}.hover-dark-blue:focus,.hover-dark-blue:hover{color:#00449e}.hover-blue:focus,.hover-blue:hover{color:#357edd}.hover-light-blue:focus,.hover-light-blue:hover{color:#96ccff}.hover-lightest-blue:focus,.hover-lightest-blue:hover{color:#cdecff}.hover-washed-blue:focus,.hover-washed-blue:hover{color:#f6fffe}.hover-washed-green:focus,.hover-washed-green:hover{color:#e8fdf5}.hover-washed-yellow:focus,.hover-washed-yellow:hover{color:#fffceb}.hover-washed-red:focus,.hover-washed-red:hover{color:#ffdfdf}.hover-bg-dark-red:focus,.hover-bg-dark-red:hover{background-color:#e7040f}.hover-bg-red:focus,.hover-bg-red:hover{background-color:#ff4136}.hover-bg-light-red:focus,.hover-bg-light-red:hover{background-color:#ff725c}.hover-bg-orange:focus,.hover-bg-orange:hover{background-color:#ff6300}.hover-bg-gold:focus,.hover-bg-gold:hover{background-color:#ffb700}.hover-bg-yellow:focus,.hover-bg-yellow:hover{background-color:gold}.hover-bg-light-yellow:focus,.hover-bg-light-yellow:hover{background-color:#fbf1a9}.hover-bg-purple:focus,.hover-bg-purple:hover{background-color:#5e2ca5}.hover-bg-light-purple:focus,.hover-bg-light-purple:hover{background-color:#a463f2}.hover-bg-dark-pink:focus,.hover-bg-dark-pink:hover{background-color:#d5008f}.hover-bg-hot-pink:focus,.hover-bg-hot-pink:hover{background-color:#ff41b4}.hover-bg-pink:focus,.hover-bg-pink:hover{background-color:#ff80cc}.hover-bg-light-pink:focus,.hover-bg-light-pink:hover{background-color:#ffa3d7}.hover-bg-dark-green:focus,.hover-bg-dark-green:hover{background-color:#137752}.hover-bg-green:focus,.hover-bg-green:hover{background-color:#19a974}.hover-bg-light-green:focus,.hover-bg-light-green:hover{background-color:#9eebcf}.hover-bg-navy:focus,.hover-bg-navy:hover{background-color:#001b44}.hover-bg-dark-blue:focus,.hover-bg-dark-blue:hover{background-color:#00449e}.hover-bg-blue:focus,.hover-bg-blue:hover{background-color:#357edd}.hover-bg-light-blue:focus,.hover-bg-light-blue:hover{background-color:#96ccff}.hover-bg-lightest-blue:focus,.hover-bg-lightest-blue:hover{background-color:#cdecff}.hover-bg-washed-blue:focus,.hover-bg-washed-blue:hover{background-color:#f6fffe}.hover-bg-washed-green:focus,.hover-bg-washed-green:hover{background-color:#e8fdf5}.hover-bg-washed-yellow:focus,.hover-bg-washed-yellow:hover{background-color:#fffceb}.hover-bg-washed-red:focus,.hover-bg-washed-red:hover{background-color:#ffdfdf}.hover-bg-inherit:focus,.hover-bg-inherit:hover{background-color:inherit}.pa0{padding:0}.pa1{padding:.25rem}.pa2{padding:.5rem}.pa3{padding:1rem}.pa4{padding:2rem}.pa5{padding:4rem}.pa6{padding:8rem}.pa7{padding:16rem}.pl0{padding-left:0}.pl1{padding-left:.25rem}.pl2{padding-left:.5rem}.pl3{padding-left:1rem}.pl4{padding-left:2rem}.pl5{padding-left:4rem}.pl6{padding-left:8rem}.pl7{padding-left:16rem}.pr0{padding-right:0}.pr1{padding-right:.25rem}.pr2{padding-right:.5rem}.pr3{padding-right:1rem}.pr4{padding-right:2rem}.pr5{padding-right:4rem}.pr6{padding-right:8rem}.pr7{padding-right:16rem}.pb0{padding-bottom:0}.pb1{padding-bottom:.25rem}.pb2{padding-bottom:.5rem}.pb3{padding-bottom:1rem}.pb4{padding-bottom:2rem}.pb5{padding-bottom:4rem}.pb6{padding-bottom:8rem}.pb7{padding-bottom:16rem}.pt0{padding-top:0}.pt1{padding-top:.25rem}.pt2{padding-top:.5rem}.pt3{padding-top:1rem}.pt4{padding-top:2rem}.pt5{padding-top:4rem}.pt6{padding-top:8rem}.pt7{padding-top:16rem}.pv0{padding-top:0;padding-bottom:0}.pv1{padding-top:.25rem;padding-bottom:.25rem}.pv2{padding-top:.5rem;padding-bottom:.5rem}.pv3{padding-top:1rem;padding-bottom:1rem}.pv4{padding-top:2rem;padding-bottom:2rem}.pv5{padding-top:4rem;padding-bottom:4rem}.pv6{padding-top:8rem;padding-bottom:8rem}.pv7{padding-top:16rem;padding-bottom:16rem}.ph0{padding-left:0;padding-right:0}.ph1{padding-left:.25rem;padding-right:.25rem}.ph2{padding-left:.5rem;padding-right:.5rem}.ph3{padding-left:1rem;padding-right:1rem}.ph4{padding-left:2rem;padding-right:2rem}.ph5{padding-left:4rem;padding-right:4rem}.ph6{padding-left:8rem;padding-right:8rem}.ph7{padding-left:16rem;padding-right:16rem}.ma0{margin:0}.ma1{margin:.25rem}.ma2{margin:.5rem}.ma3{margin:1rem}.ma4{margin:2rem}.ma5{margin:4rem}.ma6{margin:8rem}.ma7{margin:16rem}.ml0{margin-left:0}.ml1{margin-left:.25rem}.ml2{margin-left:.5rem}.ml3{margin-left:1rem}.ml4{margin-left:2rem}.ml5{margin-left:4rem}.ml6{margin-left:8rem}.ml7{margin-left:16rem}.mr0{margin-right:0}.mr1{margin-right:.25rem}.mr2{margin-right:.5rem}.mr3{margin-right:1rem}.mr4{margin-right:2rem}.mr5{margin-right:4rem}.mr6{margin-right:8rem}.mr7{margin-right:16rem}.mb0{margin-bottom:0}.mb1{margin-bottom:.25rem}.mb2{margin-bottom:.5rem}.mb3{margin-bottom:1rem}.mb4{margin-bottom:2rem}.mb5{margin-bottom:4rem}.mb6{margin-bottom:8rem}.mb7{margin-bottom:16rem}.mt0{margin-top:0}.mt1{margin-top:.25rem}.mt2{margin-top:.5rem}.mt3{margin-top:1rem}.mt4{margin-top:2rem}.mt5{margin-top:4rem}.mt6{margin-top:8rem}.mt7{margin-top:16rem}.mv0{margin-top:0;margin-bottom:0}.mv1{margin-top:.25rem;margin-bottom:.25rem}.mv2{margin-top:.5rem;margin-bottom:.5rem}.mv3{margin-top:1rem;margin-bottom:1rem}.mv4{margin-top:2rem;margin-bottom:2rem}.mv5{margin-top:4rem;margin-bottom:4rem}.mv6{margin-top:8rem;margin-bottom:8rem}.mv7{margin-top:16rem;margin-bottom:16rem}.mh0{margin-left:0;margin-right:0}.mh1{margin-left:.25rem;margin-right:.25rem}.mh2{margin-left:.5rem;margin-right:.5rem}.mh3{margin-left:1rem;margin-right:1rem}.mh4{margin-left:2rem;margin-right:2rem}.mh5{margin-left:4rem;margin-right:4rem}.mh6{margin-left:8rem;margin-right:8rem}.mh7{margin-left:16rem;margin-right:16rem}.na1{margin:-.25rem}.na2{margin:-.5rem}.na3{margin:-1rem}.na4{margin:-2rem}.na5{margin:-4rem}.na6{margin:-8rem}.na7{margin:-16rem}.nl1{margin-left:-.25rem}.nl2{margin-left:-.5rem}.nl3{margin-left:-1rem}.nl4{margin-left:-2rem}.nl5{margin-left:-4rem}.nl6{margin-left:-8rem}.nl7{margin-left:-16rem}.nr1{margin-right:-.25rem}.nr2{margin-right:-.5rem}.nr3{margin-right:-1rem}.nr4{margin-right:-2rem}.nr5{margin-right:-4rem}.nr6{margin-right:-8rem}.nr7{margin-right:-16rem}.nb1{margin-bottom:-.25rem}.nb2{margin-bottom:-.5rem}.nb3{margin-bottom:-1rem}.nb4{margin-bottom:-2rem}.nb5{margin-bottom:-4rem}.nb6{margin-bottom:-8rem}.nb7{margin-bottom:-16rem}.nt1{margin-top:-.25rem}.nt2{margin-top:-.5rem}.nt3{margin-top:-1rem}.nt4{margin-top:-2rem}.nt5{margin-top:-4rem}.nt6{margin-top:-8rem}.nt7{margin-top:-16rem}.collapse{border-collapse:collapse;border-spacing:0}.striped--light-silver:nth-child(odd){background-color:#aaa}.striped--moon-gray:nth-child(odd){background-color:#ccc}.striped--light-gray:nth-child(odd){background-color:#eee}.striped--near-white:nth-child(odd){background-color:#f4f4f4}.stripe-light:nth-child(odd){background-color:rgba(255,255,255,.1)}.stripe-dark:nth-child(odd){background-color:rgba(0,0,0,.1)}.strike{text-decoration:line-through}.underline{text-decoration:underline}.no-underline{text-decoration:none}.tl{text-align:left}.tr{text-align:right}.tc{text-align:center}.tj{text-align:justify}.ttc{text-transform:capitalize}.ttl{text-transform:lowercase}.ttu{text-transform:uppercase}.ttn{text-transform:none}.f-6,.f-headline{font-size:6rem}.f-5,.f-subheadline{font-size:5rem}.f1{font-size:3rem}.f2{font-size:2.25rem}.f3{font-size:1.5rem}.f4{font-size:1.25rem}.f5{font-size:1rem}.f6{font-size:.875rem}.f7{font-size:.75rem}.measure{max-width:30em}.measure-wide{max-width:34em}.measure-narrow{max-width:20em}.indent{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps{font-variant:small-caps}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overflow-container{overflow-y:scroll}.center{margin-left:auto}.center,.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.clip{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal{white-space:normal}.nowrap{white-space:nowrap}.pre{white-space:pre}.v-base{vertical-align:baseline}.v-mid{vertical-align:middle}.v-top{vertical-align:top}.v-btm{vertical-align:bottom}.dim{opacity:1}.dim,.dim:focus,.dim:hover{transition:opacity .15s ease-in}.dim:focus,.dim:hover{opacity:.5}.dim:active{opacity:.8;transition:opacity .15s ease-out}.glow,.glow:focus,.glow:hover{transition:opacity .15s ease-in}.glow:focus,.glow:hover{opacity:1}.hide-child .child{opacity:0;transition:opacity .15s ease-in}.hide-child:active .child,.hide-child:focus .child,.hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.underline-hover:focus,.underline-hover:hover{text-decoration:underline}.grow{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.grow:focus,.grow:hover{-webkit-transform:scale(1.05);transform:scale(1.05)}.grow:active{-webkit-transform:scale(.9);transform:scale(.9)}.grow-large{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform .25s ease-in-out;transition:transform .25s ease-in-out;transition:transform .25s ease-in-out,-webkit-transform .25s ease-in-out}.grow-large:focus,.grow-large:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.grow-large:active{-webkit-transform:scale(.95);transform:scale(.95)}.pointer:hover,.shadow-hover{cursor:pointer}.shadow-hover{position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:after{content:"";box-shadow:0 0 16px 2px rgba(0,0,0,.2);border-radius:inherit;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;transition:opacity .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:focus:after,.shadow-hover:hover:after{opacity:1}.bg-animate,.bg-animate:focus,.bg-animate:hover{transition:background-color .15s ease-in-out}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}.z-4{z-index:4}.z-5{z-index:5}.z-999{z-index:999}.z-9999{z-index:9999}.z-max{z-index:2147483647}.z-inherit{z-index:inherit}.z-initial{z-index:auto}.z-unset{z-index:unset}.nested-copy-line-height ol,.nested-copy-line-height p,.nested-copy-line-height ul{line-height:1.5}.nested-headline-line-height h1,.nested-headline-line-height h2,.nested-headline-line-height h3,.nested-headline-line-height h4,.nested-headline-line-height h5,.nested-headline-line-height h6{line-height:1.25}.nested-list-reset ol,.nested-list-reset ul{padding-left:0;margin-left:0;list-style-type:none}.nested-copy-indent p+p{text-indent:1em;margin-top:0;margin-bottom:0}.nested-copy-separator p+p{margin-top:1.5em}.nested-img img{width:100%;max-width:100%;display:block}.nested-links a{color:#357edd;transition:color .15s ease-in}.nested-links a:focus,.nested-links a:hover{color:#96ccff;transition:color .15s ease-in}.debug *{outline:1px solid gold}.debug-white *{outline:1px solid #fff}.debug-black *{outline:1px solid #000}.debug-grid{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAFElEQVR4AWPAC97/9x0eCsAEPgwAVLshdpENIxcAAAAASUVORK5CYII=)repeat}.debug-grid-16{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMklEQVR4AWOgCLz/b0epAa6UGuBOqQHOQHLUgFEDnAbcBZ4UGwDOkiCnkIhdgNgNxAYAiYlD+8sEuo8AAAAASUVORK5CYII=)repeat}.debug-grid-8-solid{background:#fff url(data:image/gif;base64,R0lGODdhCAAIAPEAAADw/wDx/////wAAACwAAAAACAAIAAACDZQvgaeb/lxbAIKA8y0AOw==)repeat}.debug-grid-16-solid{background:#fff url(data:image/gif;base64,R0lGODdhEAAQAPEAAADw/wDx/xXy/////ywAAAAAEAAQAAACIZyPKckYDQFsb6ZqD85jZ2+BkwiRFKehhqQCQgDHcgwEBQA7)repeat}@media screen and (min-width:30em){.aspect-ratio-ns{height:0;position:relative}.aspect-ratio--16x9-ns{padding-bottom:56.25%}.aspect-ratio--9x16-ns{padding-bottom:177.77%}.aspect-ratio--4x3-ns{padding-bottom:75%}.aspect-ratio--3x4-ns{padding-bottom:133.33%}.aspect-ratio--6x4-ns{padding-bottom:66.6%}.aspect-ratio--4x6-ns{padding-bottom:150%}.aspect-ratio--8x5-ns{padding-bottom:62.5%}.aspect-ratio--5x8-ns{padding-bottom:160%}.aspect-ratio--7x5-ns{padding-bottom:71.42%}.aspect-ratio--5x7-ns{padding-bottom:140%}.aspect-ratio--1x1-ns{padding-bottom:100%}.aspect-ratio--object-ns{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-ns{background-size:cover!important}.contain-ns{background-size:contain!important}.bg-center-ns{background-position:50%}.bg-center-ns,.bg-top-ns{background-repeat:no-repeat}.bg-top-ns{background-position:top}.bg-right-ns{background-position:100%}.bg-bottom-ns,.bg-right-ns{background-repeat:no-repeat}.bg-bottom-ns{background-position:bottom}.bg-left-ns{background-repeat:no-repeat;background-position:0}.outline-ns{outline:1px solid}.outline-transparent-ns{outline:1px solid transparent}.outline-0-ns{outline:0}.ba-ns{border-style:solid;border-width:1px}.bt-ns{border-top-style:solid;border-top-width:1px}.br-ns{border-right-style:solid;border-right-width:1px}.bb-ns{border-bottom-style:solid;border-bottom-width:1px}.bl-ns{border-left-style:solid;border-left-width:1px}.bn-ns{border-style:none;border-width:0}.br0-ns{border-radius:0}.br1-ns{border-radius:.125rem}.br2-ns{border-radius:.25rem}.br3-ns{border-radius:.5rem}.br4-ns{border-radius:1rem}.br-100-ns{border-radius:100%}.br-pill-ns{border-radius:9999px}.br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.br--top-ns{border-bottom-right-radius:0}.br--right-ns,.br--top-ns{border-bottom-left-radius:0}.br--right-ns{border-top-left-radius:0}.br--left-ns{border-top-right-radius:0;border-bottom-right-radius:0}.br-inherit-ns{border-radius:inherit}.br-initial-ns{border-radius:initial}.br-unset-ns{border-radius:unset}.b--dotted-ns{border-style:dotted}.b--dashed-ns{border-style:dashed}.b--solid-ns{border-style:solid}.b--none-ns{border-style:none}.bw0-ns{border-width:0}.bw1-ns{border-width:.125rem}.bw2-ns{border-width:.25rem}.bw3-ns{border-width:.5rem}.bw4-ns{border-width:1rem}.bw5-ns{border-width:2rem}.bt-0-ns{border-top-width:0}.br-0-ns{border-right-width:0}.bb-0-ns{border-bottom-width:0}.bl-0-ns{border-left-width:0}.shadow-1-ns{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-ns{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-ns{box-shadow:2px 2px 8px rgba(0,0,0,.2)}.shadow-5-ns{box-shadow:4px 4px 8px rgba(0,0,0,.2)}.top-0-ns{top:0}.left-0-ns{left:0}.right-0-ns{right:0}.bottom-0-ns{bottom:0}.top-1-ns{top:1rem}.left-1-ns{left:1rem}.right-1-ns{right:1rem}.bottom-1-ns{bottom:1rem}.top-2-ns{top:2rem}.left-2-ns{left:2rem}.right-2-ns{right:2rem}.bottom-2-ns{bottom:2rem}.top--1-ns{top:-1rem}.right--1-ns{right:-1rem}.bottom--1-ns{bottom:-1rem}.left--1-ns{left:-1rem}.top--2-ns{top:-2rem}.right--2-ns{right:-2rem}.bottom--2-ns{bottom:-2rem}.left--2-ns{left:-2rem}.absolute--fill-ns{top:0;right:0;bottom:0;left:0}.cl-ns{clear:left}.cr-ns{clear:right}.cb-ns{clear:both}.cn-ns{clear:none}.dn-ns{display:none}.di-ns{display:inline}.db-ns{display:block}.dib-ns{display:inline-block}.dit-ns{display:inline-table}.dt-ns{display:table}.dtc-ns{display:table-cell}.dt-row-ns{display:table-row}.dt-row-group-ns{display:table-row-group}.dt-column-ns{display:table-column}.dt-column-group-ns{display:table-column-group}.dt--fixed-ns{table-layout:fixed;width:100%}.flex-ns{display:flex}.inline-flex-ns{display:inline-flex}.flex-auto-ns{flex:auto;min-width:0;min-height:0}.flex-none-ns{flex:none}.flex-column-ns{flex-direction:column}.flex-row-ns{flex-direction:row}.flex-wrap-ns{flex-wrap:wrap}.flex-nowrap-ns{flex-wrap:nowrap}.flex-wrap-reverse-ns{flex-wrap:wrap-reverse}.flex-column-reverse-ns{flex-direction:column-reverse}.flex-row-reverse-ns{flex-direction:row-reverse}.items-start-ns{align-items:flex-start}.items-end-ns{align-items:flex-end}.items-center-ns{align-items:center}.items-baseline-ns{align-items:baseline}.items-stretch-ns{align-items:stretch}.self-start-ns{align-self:flex-start}.self-end-ns{align-self:flex-end}.self-center-ns{align-self:center}.self-baseline-ns{align-self:baseline}.self-stretch-ns{align-self:stretch}.justify-start-ns{justify-content:flex-start}.justify-end-ns{justify-content:flex-end}.justify-center-ns{justify-content:center}.justify-between-ns{justify-content:space-between}.justify-around-ns{justify-content:space-around}.content-start-ns{align-content:flex-start}.content-end-ns{align-content:flex-end}.content-center-ns{align-content:center}.content-between-ns{align-content:space-between}.content-around-ns{align-content:space-around}.content-stretch-ns{align-content:stretch}.order-0-ns{order:0}.order-1-ns{order:1}.order-2-ns{order:2}.order-3-ns{order:3}.order-4-ns{order:4}.order-5-ns{order:5}.order-6-ns{order:6}.order-7-ns{order:7}.order-8-ns{order:8}.order-last-ns{order:99999}.flex-grow-0-ns{flex-grow:0}.flex-grow-1-ns{flex-grow:1}.flex-shrink-0-ns{flex-shrink:0}.flex-shrink-1-ns{flex-shrink:1}.fl-ns{float:left}.fl-ns,.fr-ns{_display:inline}.fr-ns{float:right}.fn-ns{float:none}.i-ns{font-style:italic}.fs-normal-ns{font-style:normal}.normal-ns{font-weight:400}.b-ns{font-weight:700}.fw1-ns{font-weight:100}.fw2-ns{font-weight:200}.fw3-ns{font-weight:300}.fw4-ns{font-weight:400}.fw5-ns{font-weight:500}.fw6-ns{font-weight:600}.fw7-ns{font-weight:700}.fw8-ns{font-weight:800}.fw9-ns{font-weight:900}.h1-ns{height:1rem}.h2-ns{height:2rem}.h3-ns{height:4rem}.h4-ns{height:8rem}.h5-ns{height:16rem}.h-25-ns{height:25%}.h-50-ns{height:50%}.h-75-ns{height:75%}.h-100-ns{height:100%}.min-h-100-ns{min-height:100%}.vh-25-ns{height:25vh}.vh-50-ns{height:50vh}.vh-75-ns{height:75vh}.vh-100-ns{height:100vh}.min-vh-100-ns{min-height:100vh}.h-auto-ns{height:auto}.h-inherit-ns{height:inherit}.tracked-ns{letter-spacing:.1em}.tracked-tight-ns{letter-spacing:-.05em}.tracked-mega-ns{letter-spacing:.25em}.lh-solid-ns{line-height:1}.lh-title-ns{line-height:1.25}.lh-copy-ns{line-height:1.5}.mw-100-ns{max-width:100%}.mw1-ns{max-width:1rem}.mw2-ns{max-width:2rem}.mw3-ns{max-width:4rem}.mw4-ns{max-width:8rem}.mw5-ns{max-width:16rem}.mw6-ns{max-width:32rem}.mw7-ns{max-width:48rem}.mw8-ns{max-width:64rem}.mw9-ns{max-width:96rem}.mw-none-ns{max-width:none}.w1-ns{width:1rem}.w2-ns{width:2rem}.w3-ns{width:4rem}.w4-ns{width:8rem}.w5-ns{width:16rem}.w-10-ns{width:10%}.w-20-ns{width:20%}.w-25-ns{width:25%}.w-30-ns{width:30%}.w-33-ns{width:33%}.w-34-ns{width:34%}.w-40-ns{width:40%}.w-50-ns{width:50%}.w-60-ns{width:60%}.w-70-ns{width:70%}.w-75-ns{width:75%}.w-80-ns{width:80%}.w-90-ns{width:90%}.w-100-ns{width:100%}.w-third-ns{width:33.33333%}.w-two-thirds-ns{width:66.66667%}.w-auto-ns{width:auto}.overflow-visible-ns{overflow:visible}.overflow-hidden-ns{overflow:hidden}.overflow-scroll-ns{overflow:scroll}.overflow-auto-ns{overflow:auto}.overflow-x-visible-ns{overflow-x:visible}.overflow-x-hidden-ns{overflow-x:hidden}.overflow-x-scroll-ns{overflow-x:scroll}.overflow-x-auto-ns{overflow-x:auto}.overflow-y-visible-ns{overflow-y:visible}.overflow-y-hidden-ns{overflow-y:hidden}.overflow-y-scroll-ns{overflow-y:scroll}.overflow-y-auto-ns{overflow-y:auto}.static-ns{position:static}.relative-ns{position:relative}.absolute-ns{position:absolute}.fixed-ns{position:fixed}.rotate-45-ns{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-ns{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-ns{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-ns{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-ns{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-ns{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-ns{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-ns{padding:0}.pa1-ns{padding:.25rem}.pa2-ns{padding:.5rem}.pa3-ns{padding:1rem}.pa4-ns{padding:2rem}.pa5-ns{padding:4rem}.pa6-ns{padding:8rem}.pa7-ns{padding:16rem}.pl0-ns{padding-left:0}.pl1-ns{padding-left:.25rem}.pl2-ns{padding-left:.5rem}.pl3-ns{padding-left:1rem}.pl4-ns{padding-left:2rem}.pl5-ns{padding-left:4rem}.pl6-ns{padding-left:8rem}.pl7-ns{padding-left:16rem}.pr0-ns{padding-right:0}.pr1-ns{padding-right:.25rem}.pr2-ns{padding-right:.5rem}.pr3-ns{padding-right:1rem}.pr4-ns{padding-right:2rem}.pr5-ns{padding-right:4rem}.pr6-ns{padding-right:8rem}.pr7-ns{padding-right:16rem}.pb0-ns{padding-bottom:0}.pb1-ns{padding-bottom:.25rem}.pb2-ns{padding-bottom:.5rem}.pb3-ns{padding-bottom:1rem}.pb4-ns{padding-bottom:2rem}.pb5-ns{padding-bottom:4rem}.pb6-ns{padding-bottom:8rem}.pb7-ns{padding-bottom:16rem}.pt0-ns{padding-top:0}.pt1-ns{padding-top:.25rem}.pt2-ns{padding-top:.5rem}.pt3-ns{padding-top:1rem}.pt4-ns{padding-top:2rem}.pt5-ns{padding-top:4rem}.pt6-ns{padding-top:8rem}.pt7-ns{padding-top:16rem}.pv0-ns{padding-top:0;padding-bottom:0}.pv1-ns{padding-top:.25rem;padding-bottom:.25rem}.pv2-ns{padding-top:.5rem;padding-bottom:.5rem}.pv3-ns{padding-top:1rem;padding-bottom:1rem}.pv4-ns{padding-top:2rem;padding-bottom:2rem}.pv5-ns{padding-top:4rem;padding-bottom:4rem}.pv6-ns{padding-top:8rem;padding-bottom:8rem}.pv7-ns{padding-top:16rem;padding-bottom:16rem}.ph0-ns{padding-left:0;padding-right:0}.ph1-ns{padding-left:.25rem;padding-right:.25rem}.ph2-ns{padding-left:.5rem;padding-right:.5rem}.ph3-ns{padding-left:1rem;padding-right:1rem}.ph4-ns{padding-left:2rem;padding-right:2rem}.ph5-ns{padding-left:4rem;padding-right:4rem}.ph6-ns{padding-left:8rem;padding-right:8rem}.ph7-ns{padding-left:16rem;padding-right:16rem}.ma0-ns{margin:0}.ma1-ns{margin:.25rem}.ma2-ns{margin:.5rem}.ma3-ns{margin:1rem}.ma4-ns{margin:2rem}.ma5-ns{margin:4rem}.ma6-ns{margin:8rem}.ma7-ns{margin:16rem}.ml0-ns{margin-left:0}.ml1-ns{margin-left:.25rem}.ml2-ns{margin-left:.5rem}.ml3-ns{margin-left:1rem}.ml4-ns{margin-left:2rem}.ml5-ns{margin-left:4rem}.ml6-ns{margin-left:8rem}.ml7-ns{margin-left:16rem}.mr0-ns{margin-right:0}.mr1-ns{margin-right:.25rem}.mr2-ns{margin-right:.5rem}.mr3-ns{margin-right:1rem}.mr4-ns{margin-right:2rem}.mr5-ns{margin-right:4rem}.mr6-ns{margin-right:8rem}.mr7-ns{margin-right:16rem}.mb0-ns{margin-bottom:0}.mb1-ns{margin-bottom:.25rem}.mb2-ns{margin-bottom:.5rem}.mb3-ns{margin-bottom:1rem}.mb4-ns{margin-bottom:2rem}.mb5-ns{margin-bottom:4rem}.mb6-ns{margin-bottom:8rem}.mb7-ns{margin-bottom:16rem}.mt0-ns{margin-top:0}.mt1-ns{margin-top:.25rem}.mt2-ns{margin-top:.5rem}.mt3-ns{margin-top:1rem}.mt4-ns{margin-top:2rem}.mt5-ns{margin-top:4rem}.mt6-ns{margin-top:8rem}.mt7-ns{margin-top:16rem}.mv0-ns{margin-top:0;margin-bottom:0}.mv1-ns{margin-top:.25rem;margin-bottom:.25rem}.mv2-ns{margin-top:.5rem;margin-bottom:.5rem}.mv3-ns{margin-top:1rem;margin-bottom:1rem}.mv4-ns{margin-top:2rem;margin-bottom:2rem}.mv5-ns{margin-top:4rem;margin-bottom:4rem}.mv6-ns{margin-top:8rem;margin-bottom:8rem}.mv7-ns{margin-top:16rem;margin-bottom:16rem}.mh0-ns{margin-left:0;margin-right:0}.mh1-ns{margin-left:.25rem;margin-right:.25rem}.mh2-ns{margin-left:.5rem;margin-right:.5rem}.mh3-ns{margin-left:1rem;margin-right:1rem}.mh4-ns{margin-left:2rem;margin-right:2rem}.mh5-ns{margin-left:4rem;margin-right:4rem}.mh6-ns{margin-left:8rem;margin-right:8rem}.mh7-ns{margin-left:16rem;margin-right:16rem}.na1-ns{margin:-.25rem}.na2-ns{margin:-.5rem}.na3-ns{margin:-1rem}.na4-ns{margin:-2rem}.na5-ns{margin:-4rem}.na6-ns{margin:-8rem}.na7-ns{margin:-16rem}.nl1-ns{margin-left:-.25rem}.nl2-ns{margin-left:-.5rem}.nl3-ns{margin-left:-1rem}.nl4-ns{margin-left:-2rem}.nl5-ns{margin-left:-4rem}.nl6-ns{margin-left:-8rem}.nl7-ns{margin-left:-16rem}.nr1-ns{margin-right:-.25rem}.nr2-ns{margin-right:-.5rem}.nr3-ns{margin-right:-1rem}.nr4-ns{margin-right:-2rem}.nr5-ns{margin-right:-4rem}.nr6-ns{margin-right:-8rem}.nr7-ns{margin-right:-16rem}.nb1-ns{margin-bottom:-.25rem}.nb2-ns{margin-bottom:-.5rem}.nb3-ns{margin-bottom:-1rem}.nb4-ns{margin-bottom:-2rem}.nb5-ns{margin-bottom:-4rem}.nb6-ns{margin-bottom:-8rem}.nb7-ns{margin-bottom:-16rem}.nt1-ns{margin-top:-.25rem}.nt2-ns{margin-top:-.5rem}.nt3-ns{margin-top:-1rem}.nt4-ns{margin-top:-2rem}.nt5-ns{margin-top:-4rem}.nt6-ns{margin-top:-8rem}.nt7-ns{margin-top:-16rem}.strike-ns{text-decoration:line-through}.underline-ns{text-decoration:underline}.no-underline-ns{text-decoration:none}.tl-ns{text-align:left}.tr-ns{text-align:right}.tc-ns{text-align:center}.tj-ns{text-align:justify}.ttc-ns{text-transform:capitalize}.ttl-ns{text-transform:lowercase}.ttu-ns{text-transform:uppercase}.ttn-ns{text-transform:none}.f-6-ns,.f-headline-ns{font-size:6rem}.f-5-ns,.f-subheadline-ns{font-size:5rem}.f1-ns{font-size:3rem}.f2-ns{font-size:2.25rem}.f3-ns{font-size:1.5rem}.f4-ns{font-size:1.25rem}.f5-ns{font-size:1rem}.f6-ns{font-size:.875rem}.f7-ns{font-size:.75rem}.measure-ns{max-width:30em}.measure-wide-ns{max-width:34em}.measure-narrow-ns{max-width:20em}.indent-ns{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-ns{font-variant:small-caps}.truncate-ns{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-ns{margin-left:auto}.center-ns,.mr-auto-ns{margin-right:auto}.ml-auto-ns{margin-left:auto}.clip-ns{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-ns{white-space:normal}.nowrap-ns{white-space:nowrap}.pre-ns{white-space:pre}.v-base-ns{vertical-align:baseline}.v-mid-ns{vertical-align:middle}.v-top-ns{vertical-align:top}.v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.aspect-ratio-m{height:0;position:relative}.aspect-ratio--16x9-m{padding-bottom:56.25%}.aspect-ratio--9x16-m{padding-bottom:177.77%}.aspect-ratio--4x3-m{padding-bottom:75%}.aspect-ratio--3x4-m{padding-bottom:133.33%}.aspect-ratio--6x4-m{padding-bottom:66.6%}.aspect-ratio--4x6-m{padding-bottom:150%}.aspect-ratio--8x5-m{padding-bottom:62.5%}.aspect-ratio--5x8-m{padding-bottom:160%}.aspect-ratio--7x5-m{padding-bottom:71.42%}.aspect-ratio--5x7-m{padding-bottom:140%}.aspect-ratio--1x1-m{padding-bottom:100%}.aspect-ratio--object-m{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-m{background-size:cover!important}.contain-m{background-size:contain!important}.bg-center-m{background-position:50%}.bg-center-m,.bg-top-m{background-repeat:no-repeat}.bg-top-m{background-position:top}.bg-right-m{background-position:100%}.bg-bottom-m,.bg-right-m{background-repeat:no-repeat}.bg-bottom-m{background-position:bottom}.bg-left-m{background-repeat:no-repeat;background-position:0}.outline-m{outline:1px solid}.outline-transparent-m{outline:1px solid transparent}.outline-0-m{outline:0}.ba-m{border-style:solid;border-width:1px}.bt-m{border-top-style:solid;border-top-width:1px}.br-m{border-right-style:solid;border-right-width:1px}.bb-m{border-bottom-style:solid;border-bottom-width:1px}.bl-m{border-left-style:solid;border-left-width:1px}.bn-m{border-style:none;border-width:0}.br0-m{border-radius:0}.br1-m{border-radius:.125rem}.br2-m{border-radius:.25rem}.br3-m{border-radius:.5rem}.br4-m{border-radius:1rem}.br-100-m{border-radius:100%}.br-pill-m{border-radius:9999px}.br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.br--top-m{border-bottom-right-radius:0}.br--right-m,.br--top-m{border-bottom-left-radius:0}.br--right-m{border-top-left-radius:0}.br--left-m{border-top-right-radius:0;border-bottom-right-radius:0}.br-inherit-m{border-radius:inherit}.br-initial-m{border-radius:initial}.br-unset-m{border-radius:unset}.b--dotted-m{border-style:dotted}.b--dashed-m{border-style:dashed}.b--solid-m{border-style:solid}.b--none-m{border-style:none}.bw0-m{border-width:0}.bw1-m{border-width:.125rem}.bw2-m{border-width:.25rem}.bw3-m{border-width:.5rem}.bw4-m{border-width:1rem}.bw5-m{border-width:2rem}.bt-0-m{border-top-width:0}.br-0-m{border-right-width:0}.bb-0-m{border-bottom-width:0}.bl-0-m{border-left-width:0}.shadow-1-m{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-m{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-m{box-shadow:2px 2px 8px rgba(0,0,0,.2)}.shadow-5-m{box-shadow:4px 4px 8px rgba(0,0,0,.2)}.top-0-m{top:0}.left-0-m{left:0}.right-0-m{right:0}.bottom-0-m{bottom:0}.top-1-m{top:1rem}.left-1-m{left:1rem}.right-1-m{right:1rem}.bottom-1-m{bottom:1rem}.top-2-m{top:2rem}.left-2-m{left:2rem}.right-2-m{right:2rem}.bottom-2-m{bottom:2rem}.top--1-m{top:-1rem}.right--1-m{right:-1rem}.bottom--1-m{bottom:-1rem}.left--1-m{left:-1rem}.top--2-m{top:-2rem}.right--2-m{right:-2rem}.bottom--2-m{bottom:-2rem}.left--2-m{left:-2rem}.absolute--fill-m{top:0;right:0;bottom:0;left:0}.cl-m{clear:left}.cr-m{clear:right}.cb-m{clear:both}.cn-m{clear:none}.dn-m{display:none}.di-m{display:inline}.db-m{display:block}.dib-m{display:inline-block}.dit-m{display:inline-table}.dt-m{display:table}.dtc-m{display:table-cell}.dt-row-m{display:table-row}.dt-row-group-m{display:table-row-group}.dt-column-m{display:table-column}.dt-column-group-m{display:table-column-group}.dt--fixed-m{table-layout:fixed;width:100%}.flex-m{display:flex}.inline-flex-m{display:inline-flex}.flex-auto-m{flex:auto;min-width:0;min-height:0}.flex-none-m{flex:none}.flex-column-m{flex-direction:column}.flex-row-m{flex-direction:row}.flex-wrap-m{flex-wrap:wrap}.flex-nowrap-m{flex-wrap:nowrap}.flex-wrap-reverse-m{flex-wrap:wrap-reverse}.flex-column-reverse-m{flex-direction:column-reverse}.flex-row-reverse-m{flex-direction:row-reverse}.items-start-m{align-items:flex-start}.items-end-m{align-items:flex-end}.items-center-m{align-items:center}.items-baseline-m{align-items:baseline}.items-stretch-m{align-items:stretch}.self-start-m{align-self:flex-start}.self-end-m{align-self:flex-end}.self-center-m{align-self:center}.self-baseline-m{align-self:baseline}.self-stretch-m{align-self:stretch}.justify-start-m{justify-content:flex-start}.justify-end-m{justify-content:flex-end}.justify-center-m{justify-content:center}.justify-between-m{justify-content:space-between}.justify-around-m{justify-content:space-around}.content-start-m{align-content:flex-start}.content-end-m{align-content:flex-end}.content-center-m{align-content:center}.content-between-m{align-content:space-between}.content-around-m{align-content:space-around}.content-stretch-m{align-content:stretch}.order-0-m{order:0}.order-1-m{order:1}.order-2-m{order:2}.order-3-m{order:3}.order-4-m{order:4}.order-5-m{order:5}.order-6-m{order:6}.order-7-m{order:7}.order-8-m{order:8}.order-last-m{order:99999}.flex-grow-0-m{flex-grow:0}.flex-grow-1-m{flex-grow:1}.flex-shrink-0-m{flex-shrink:0}.flex-shrink-1-m{flex-shrink:1}.fl-m{float:left}.fl-m,.fr-m{_display:inline}.fr-m{float:right}.fn-m{float:none}.i-m{font-style:italic}.fs-normal-m{font-style:normal}.normal-m{font-weight:400}.b-m{font-weight:700}.fw1-m{font-weight:100}.fw2-m{font-weight:200}.fw3-m{font-weight:300}.fw4-m{font-weight:400}.fw5-m{font-weight:500}.fw6-m{font-weight:600}.fw7-m{font-weight:700}.fw8-m{font-weight:800}.fw9-m{font-weight:900}.h1-m{height:1rem}.h2-m{height:2rem}.h3-m{height:4rem}.h4-m{height:8rem}.h5-m{height:16rem}.h-25-m{height:25%}.h-50-m{height:50%}.h-75-m{height:75%}.h-100-m{height:100%}.min-h-100-m{min-height:100%}.vh-25-m{height:25vh}.vh-50-m{height:50vh}.vh-75-m{height:75vh}.vh-100-m{height:100vh}.min-vh-100-m{min-height:100vh}.h-auto-m{height:auto}.h-inherit-m{height:inherit}.tracked-m{letter-spacing:.1em}.tracked-tight-m{letter-spacing:-.05em}.tracked-mega-m{letter-spacing:.25em}.lh-solid-m{line-height:1}.lh-title-m{line-height:1.25}.lh-copy-m{line-height:1.5}.mw-100-m{max-width:100%}.mw1-m{max-width:1rem}.mw2-m{max-width:2rem}.mw3-m{max-width:4rem}.mw4-m{max-width:8rem}.mw5-m{max-width:16rem}.mw6-m{max-width:32rem}.mw7-m{max-width:48rem}.mw8-m{max-width:64rem}.mw9-m{max-width:96rem}.mw-none-m{max-width:none}.w1-m{width:1rem}.w2-m{width:2rem}.w3-m{width:4rem}.w4-m{width:8rem}.w5-m{width:16rem}.w-10-m{width:10%}.w-20-m{width:20%}.w-25-m{width:25%}.w-30-m{width:30%}.w-33-m{width:33%}.w-34-m{width:34%}.w-40-m{width:40%}.w-50-m{width:50%}.w-60-m{width:60%}.w-70-m{width:70%}.w-75-m{width:75%}.w-80-m{width:80%}.w-90-m{width:90%}.w-100-m{width:100%}.w-third-m{width:33.33333%}.w-two-thirds-m{width:66.66667%}.w-auto-m{width:auto}.overflow-visible-m{overflow:visible}.overflow-hidden-m{overflow:hidden}.overflow-scroll-m{overflow:scroll}.overflow-auto-m{overflow:auto}.overflow-x-visible-m{overflow-x:visible}.overflow-x-hidden-m{overflow-x:hidden}.overflow-x-scroll-m{overflow-x:scroll}.overflow-x-auto-m{overflow-x:auto}.overflow-y-visible-m{overflow-y:visible}.overflow-y-hidden-m{overflow-y:hidden}.overflow-y-scroll-m{overflow-y:scroll}.overflow-y-auto-m{overflow-y:auto}.static-m{position:static}.relative-m{position:relative}.absolute-m{position:absolute}.fixed-m{position:fixed}.rotate-45-m{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-m{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-m{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-m{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-m{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-m{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-m{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-m{padding:0}.pa1-m{padding:.25rem}.pa2-m{padding:.5rem}.pa3-m{padding:1rem}.pa4-m{padding:2rem}.pa5-m{padding:4rem}.pa6-m{padding:8rem}.pa7-m{padding:16rem}.pl0-m{padding-left:0}.pl1-m{padding-left:.25rem}.pl2-m{padding-left:.5rem}.pl3-m{padding-left:1rem}.pl4-m{padding-left:2rem}.pl5-m{padding-left:4rem}.pl6-m{padding-left:8rem}.pl7-m{padding-left:16rem}.pr0-m{padding-right:0}.pr1-m{padding-right:.25rem}.pr2-m{padding-right:.5rem}.pr3-m{padding-right:1rem}.pr4-m{padding-right:2rem}.pr5-m{padding-right:4rem}.pr6-m{padding-right:8rem}.pr7-m{padding-right:16rem}.pb0-m{padding-bottom:0}.pb1-m{padding-bottom:.25rem}.pb2-m{padding-bottom:.5rem}.pb3-m{padding-bottom:1rem}.pb4-m{padding-bottom:2rem}.pb5-m{padding-bottom:4rem}.pb6-m{padding-bottom:8rem}.pb7-m{padding-bottom:16rem}.pt0-m{padding-top:0}.pt1-m{padding-top:.25rem}.pt2-m{padding-top:.5rem}.pt3-m{padding-top:1rem}.pt4-m{padding-top:2rem}.pt5-m{padding-top:4rem}.pt6-m{padding-top:8rem}.pt7-m{padding-top:16rem}.pv0-m{padding-top:0;padding-bottom:0}.pv1-m{padding-top:.25rem;padding-bottom:.25rem}.pv2-m{padding-top:.5rem;padding-bottom:.5rem}.pv3-m{padding-top:1rem;padding-bottom:1rem}.pv4-m{padding-top:2rem;padding-bottom:2rem}.pv5-m{padding-top:4rem;padding-bottom:4rem}.pv6-m{padding-top:8rem;padding-bottom:8rem}.pv7-m{padding-top:16rem;padding-bottom:16rem}.ph0-m{padding-left:0;padding-right:0}.ph1-m{padding-left:.25rem;padding-right:.25rem}.ph2-m{padding-left:.5rem;padding-right:.5rem}.ph3-m{padding-left:1rem;padding-right:1rem}.ph4-m{padding-left:2rem;padding-right:2rem}.ph5-m{padding-left:4rem;padding-right:4rem}.ph6-m{padding-left:8rem;padding-right:8rem}.ph7-m{padding-left:16rem;padding-right:16rem}.ma0-m{margin:0}.ma1-m{margin:.25rem}.ma2-m{margin:.5rem}.ma3-m{margin:1rem}.ma4-m{margin:2rem}.ma5-m{margin:4rem}.ma6-m{margin:8rem}.ma7-m{margin:16rem}.ml0-m{margin-left:0}.ml1-m{margin-left:.25rem}.ml2-m{margin-left:.5rem}.ml3-m{margin-left:1rem}.ml4-m{margin-left:2rem}.ml5-m{margin-left:4rem}.ml6-m{margin-left:8rem}.ml7-m{margin-left:16rem}.mr0-m{margin-right:0}.mr1-m{margin-right:.25rem}.mr2-m{margin-right:.5rem}.mr3-m{margin-right:1rem}.mr4-m{margin-right:2rem}.mr5-m{margin-right:4rem}.mr6-m{margin-right:8rem}.mr7-m{margin-right:16rem}.mb0-m{margin-bottom:0}.mb1-m{margin-bottom:.25rem}.mb2-m{margin-bottom:.5rem}.mb3-m{margin-bottom:1rem}.mb4-m{margin-bottom:2rem}.mb5-m{margin-bottom:4rem}.mb6-m{margin-bottom:8rem}.mb7-m{margin-bottom:16rem}.mt0-m{margin-top:0}.mt1-m{margin-top:.25rem}.mt2-m{margin-top:.5rem}.mt3-m{margin-top:1rem}.mt4-m{margin-top:2rem}.mt5-m{margin-top:4rem}.mt6-m{margin-top:8rem}.mt7-m{margin-top:16rem}.mv0-m{margin-top:0;margin-bottom:0}.mv1-m{margin-top:.25rem;margin-bottom:.25rem}.mv2-m{margin-top:.5rem;margin-bottom:.5rem}.mv3-m{margin-top:1rem;margin-bottom:1rem}.mv4-m{margin-top:2rem;margin-bottom:2rem}.mv5-m{margin-top:4rem;margin-bottom:4rem}.mv6-m{margin-top:8rem;margin-bottom:8rem}.mv7-m{margin-top:16rem;margin-bottom:16rem}.mh0-m{margin-left:0;margin-right:0}.mh1-m{margin-left:.25rem;margin-right:.25rem}.mh2-m{margin-left:.5rem;margin-right:.5rem}.mh3-m{margin-left:1rem;margin-right:1rem}.mh4-m{margin-left:2rem;margin-right:2rem}.mh5-m{margin-left:4rem;margin-right:4rem}.mh6-m{margin-left:8rem;margin-right:8rem}.mh7-m{margin-left:16rem;margin-right:16rem}.na1-m{margin:-.25rem}.na2-m{margin:-.5rem}.na3-m{margin:-1rem}.na4-m{margin:-2rem}.na5-m{margin:-4rem}.na6-m{margin:-8rem}.na7-m{margin:-16rem}.nl1-m{margin-left:-.25rem}.nl2-m{margin-left:-.5rem}.nl3-m{margin-left:-1rem}.nl4-m{margin-left:-2rem}.nl5-m{margin-left:-4rem}.nl6-m{margin-left:-8rem}.nl7-m{margin-left:-16rem}.nr1-m{margin-right:-.25rem}.nr2-m{margin-right:-.5rem}.nr3-m{margin-right:-1rem}.nr4-m{margin-right:-2rem}.nr5-m{margin-right:-4rem}.nr6-m{margin-right:-8rem}.nr7-m{margin-right:-16rem}.nb1-m{margin-bottom:-.25rem}.nb2-m{margin-bottom:-.5rem}.nb3-m{margin-bottom:-1rem}.nb4-m{margin-bottom:-2rem}.nb5-m{margin-bottom:-4rem}.nb6-m{margin-bottom:-8rem}.nb7-m{margin-bottom:-16rem}.nt1-m{margin-top:-.25rem}.nt2-m{margin-top:-.5rem}.nt3-m{margin-top:-1rem}.nt4-m{margin-top:-2rem}.nt5-m{margin-top:-4rem}.nt6-m{margin-top:-8rem}.nt7-m{margin-top:-16rem}.strike-m{text-decoration:line-through}.underline-m{text-decoration:underline}.no-underline-m{text-decoration:none}.tl-m{text-align:left}.tr-m{text-align:right}.tc-m{text-align:center}.tj-m{text-align:justify}.ttc-m{text-transform:capitalize}.ttl-m{text-transform:lowercase}.ttu-m{text-transform:uppercase}.ttn-m{text-transform:none}.f-6-m,.f-headline-m{font-size:6rem}.f-5-m,.f-subheadline-m{font-size:5rem}.f1-m{font-size:3rem}.f2-m{font-size:2.25rem}.f3-m{font-size:1.5rem}.f4-m{font-size:1.25rem}.f5-m{font-size:1rem}.f6-m{font-size:.875rem}.f7-m{font-size:.75rem}.measure-m{max-width:30em}.measure-wide-m{max-width:34em}.measure-narrow-m{max-width:20em}.indent-m{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-m{font-variant:small-caps}.truncate-m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-m{margin-left:auto}.center-m,.mr-auto-m{margin-right:auto}.ml-auto-m{margin-left:auto}.clip-m{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-m{white-space:normal}.nowrap-m{white-space:nowrap}.pre-m{white-space:pre}.v-base-m{vertical-align:baseline}.v-mid-m{vertical-align:middle}.v-top-m{vertical-align:top}.v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.aspect-ratio-l{height:0;position:relative}.aspect-ratio--16x9-l{padding-bottom:56.25%}.aspect-ratio--9x16-l{padding-bottom:177.77%}.aspect-ratio--4x3-l{padding-bottom:75%}.aspect-ratio--3x4-l{padding-bottom:133.33%}.aspect-ratio--6x4-l{padding-bottom:66.6%}.aspect-ratio--4x6-l{padding-bottom:150%}.aspect-ratio--8x5-l{padding-bottom:62.5%}.aspect-ratio--5x8-l{padding-bottom:160%}.aspect-ratio--7x5-l{padding-bottom:71.42%}.aspect-ratio--5x7-l{padding-bottom:140%}.aspect-ratio--1x1-l{padding-bottom:100%}.aspect-ratio--object-l{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-l{background-size:cover!important}.contain-l{background-size:contain!important}.bg-center-l{background-position:50%}.bg-center-l,.bg-top-l{background-repeat:no-repeat}.bg-top-l{background-position:top}.bg-right-l{background-position:100%}.bg-bottom-l,.bg-right-l{background-repeat:no-repeat}.bg-bottom-l{background-position:bottom}.bg-left-l{background-repeat:no-repeat;background-position:0}.outline-l{outline:1px solid}.outline-transparent-l{outline:1px solid transparent}.outline-0-l{outline:0}.ba-l{border-style:solid;border-width:1px}.bt-l{border-top-style:solid;border-top-width:1px}.br-l{border-right-style:solid;border-right-width:1px}.bb-l{border-bottom-style:solid;border-bottom-width:1px}.bl-l{border-left-style:solid;border-left-width:1px}.bn-l{border-style:none;border-width:0}.br0-l{border-radius:0}.br1-l{border-radius:.125rem}.br2-l{border-radius:.25rem}.br3-l{border-radius:.5rem}.br4-l{border-radius:1rem}.br-100-l{border-radius:100%}.br-pill-l{border-radius:9999px}.br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.br--top-l{border-bottom-right-radius:0}.br--right-l,.br--top-l{border-bottom-left-radius:0}.br--right-l{border-top-left-radius:0}.br--left-l{border-top-right-radius:0;border-bottom-right-radius:0}.br-inherit-l{border-radius:inherit}.br-initial-l{border-radius:initial}.br-unset-l{border-radius:unset}.b--dotted-l{border-style:dotted}.b--dashed-l{border-style:dashed}.b--solid-l{border-style:solid}.b--none-l{border-style:none}.bw0-l{border-width:0}.bw1-l{border-width:.125rem}.bw2-l{border-width:.25rem}.bw3-l{border-width:.5rem}.bw4-l{border-width:1rem}.bw5-l{border-width:2rem}.bt-0-l{border-top-width:0}.br-0-l{border-right-width:0}.bb-0-l{border-bottom-width:0}.bl-0-l{border-left-width:0}.shadow-1-l{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-l{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-l{box-shadow:2px 2px 8px rgba(0,0,0,.2)}.shadow-5-l{box-shadow:4px 4px 8px rgba(0,0,0,.2)}.top-0-l{top:0}.left-0-l{left:0}.right-0-l{right:0}.bottom-0-l{bottom:0}.top-1-l{top:1rem}.left-1-l{left:1rem}.right-1-l{right:1rem}.bottom-1-l{bottom:1rem}.top-2-l{top:2rem}.left-2-l{left:2rem}.right-2-l{right:2rem}.bottom-2-l{bottom:2rem}.top--1-l{top:-1rem}.right--1-l{right:-1rem}.bottom--1-l{bottom:-1rem}.left--1-l{left:-1rem}.top--2-l{top:-2rem}.right--2-l{right:-2rem}.bottom--2-l{bottom:-2rem}.left--2-l{left:-2rem}.absolute--fill-l{top:0;right:0;bottom:0;left:0}.cl-l{clear:left}.cr-l{clear:right}.cb-l{clear:both}.cn-l{clear:none}.dn-l{display:none}.di-l{display:inline}.db-l{display:block}.dib-l{display:inline-block}.dit-l{display:inline-table}.dt-l{display:table}.dtc-l{display:table-cell}.dt-row-l{display:table-row}.dt-row-group-l{display:table-row-group}.dt-column-l{display:table-column}.dt-column-group-l{display:table-column-group}.dt--fixed-l{table-layout:fixed;width:100%}.flex-l{display:flex}.inline-flex-l{display:inline-flex}.flex-auto-l{flex:auto;min-width:0;min-height:0}.flex-none-l{flex:none}.flex-column-l{flex-direction:column}.flex-row-l{flex-direction:row}.flex-wrap-l{flex-wrap:wrap}.flex-nowrap-l{flex-wrap:nowrap}.flex-wrap-reverse-l{flex-wrap:wrap-reverse}.flex-column-reverse-l{flex-direction:column-reverse}.flex-row-reverse-l{flex-direction:row-reverse}.items-start-l{align-items:flex-start}.items-end-l{align-items:flex-end}.items-center-l{align-items:center}.items-baseline-l{align-items:baseline}.items-stretch-l{align-items:stretch}.self-start-l{align-self:flex-start}.self-end-l{align-self:flex-end}.self-center-l{align-self:center}.self-baseline-l{align-self:baseline}.self-stretch-l{align-self:stretch}.justify-start-l{justify-content:flex-start}.justify-end-l{justify-content:flex-end}.justify-center-l{justify-content:center}.justify-between-l{justify-content:space-between}.justify-around-l{justify-content:space-around}.content-start-l{align-content:flex-start}.content-end-l{align-content:flex-end}.content-center-l{align-content:center}.content-between-l{align-content:space-between}.content-around-l{align-content:space-around}.content-stretch-l{align-content:stretch}.order-0-l{order:0}.order-1-l{order:1}.order-2-l{order:2}.order-3-l{order:3}.order-4-l{order:4}.order-5-l{order:5}.order-6-l{order:6}.order-7-l{order:7}.order-8-l{order:8}.order-last-l{order:99999}.flex-grow-0-l{flex-grow:0}.flex-grow-1-l{flex-grow:1}.flex-shrink-0-l{flex-shrink:0}.flex-shrink-1-l{flex-shrink:1}.fl-l{float:left}.fl-l,.fr-l{_display:inline}.fr-l{float:right}.fn-l{float:none}.i-l{font-style:italic}.fs-normal-l{font-style:normal}.normal-l{font-weight:400}.b-l{font-weight:700}.fw1-l{font-weight:100}.fw2-l{font-weight:200}.fw3-l{font-weight:300}.fw4-l{font-weight:400}.fw5-l{font-weight:500}.fw6-l{font-weight:600}.fw7-l{font-weight:700}.fw8-l{font-weight:800}.fw9-l{font-weight:900}.h1-l{height:1rem}.h2-l{height:2rem}.h3-l{height:4rem}.h4-l{height:8rem}.h5-l{height:16rem}.h-25-l{height:25%}.h-50-l{height:50%}.h-75-l{height:75%}.h-100-l{height:100%}.min-h-100-l{min-height:100%}.vh-25-l{height:25vh}.vh-50-l{height:50vh}.vh-75-l{height:75vh}.vh-100-l{height:100vh}.min-vh-100-l{min-height:100vh}.h-auto-l{height:auto}.h-inherit-l{height:inherit}.tracked-l{letter-spacing:.1em}.tracked-tight-l{letter-spacing:-.05em}.tracked-mega-l{letter-spacing:.25em}.lh-solid-l{line-height:1}.lh-title-l{line-height:1.25}.lh-copy-l{line-height:1.5}.mw-100-l{max-width:100%}.mw1-l{max-width:1rem}.mw2-l{max-width:2rem}.mw3-l{max-width:4rem}.mw4-l{max-width:8rem}.mw5-l{max-width:16rem}.mw6-l{max-width:32rem}.mw7-l{max-width:48rem}.mw8-l{max-width:64rem}.mw9-l{max-width:96rem}.mw-none-l{max-width:none}.w1-l{width:1rem}.w2-l{width:2rem}.w3-l{width:4rem}.w4-l{width:8rem}.w5-l{width:16rem}.w-10-l{width:10%}.w-20-l{width:20%}.w-25-l{width:25%}.w-30-l{width:30%}.w-33-l{width:33%}.w-34-l{width:34%}.w-40-l{width:40%}.w-50-l{width:50%}.w-60-l{width:60%}.w-70-l{width:70%}.w-75-l{width:75%}.w-80-l{width:80%}.w-90-l{width:90%}.w-100-l{width:100%}.w-third-l{width:33.33333%}.w-two-thirds-l{width:66.66667%}.w-auto-l{width:auto}.overflow-visible-l{overflow:visible}.overflow-hidden-l{overflow:hidden}.overflow-scroll-l{overflow:scroll}.overflow-auto-l{overflow:auto}.overflow-x-visible-l{overflow-x:visible}.overflow-x-hidden-l{overflow-x:hidden}.overflow-x-scroll-l{overflow-x:scroll}.overflow-x-auto-l{overflow-x:auto}.overflow-y-visible-l{overflow-y:visible}.overflow-y-hidden-l{overflow-y:hidden}.overflow-y-scroll-l{overflow-y:scroll}.overflow-y-auto-l{overflow-y:auto}.static-l{position:static}.relative-l{position:relative}.absolute-l{position:absolute}.fixed-l{position:fixed}.rotate-45-l{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-l{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-l{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-l{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-l{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-l{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-l{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-l{padding:0}.pa1-l{padding:.25rem}.pa2-l{padding:.5rem}.pa3-l{padding:1rem}.pa4-l{padding:2rem}.pa5-l{padding:4rem}.pa6-l{padding:8rem}.pa7-l{padding:16rem}.pl0-l{padding-left:0}.pl1-l{padding-left:.25rem}.pl2-l{padding-left:.5rem}.pl3-l{padding-left:1rem}.pl4-l{padding-left:2rem}.pl5-l{padding-left:4rem}.pl6-l{padding-left:8rem}.pl7-l{padding-left:16rem}.pr0-l{padding-right:0}.pr1-l{padding-right:.25rem}.pr2-l{padding-right:.5rem}.pr3-l{padding-right:1rem}.pr4-l{padding-right:2rem}.pr5-l{padding-right:4rem}.pr6-l{padding-right:8rem}.pr7-l{padding-right:16rem}.pb0-l{padding-bottom:0}.pb1-l{padding-bottom:.25rem}.pb2-l{padding-bottom:.5rem}.pb3-l{padding-bottom:1rem}.pb4-l{padding-bottom:2rem}.pb5-l{padding-bottom:4rem}.pb6-l{padding-bottom:8rem}.pb7-l{padding-bottom:16rem}.pt0-l{padding-top:0}.pt1-l{padding-top:.25rem}.pt2-l{padding-top:.5rem}.pt3-l{padding-top:1rem}.pt4-l{padding-top:2rem}.pt5-l{padding-top:4rem}.pt6-l{padding-top:8rem}.pt7-l{padding-top:16rem}.pv0-l{padding-top:0;padding-bottom:0}.pv1-l{padding-top:.25rem;padding-bottom:.25rem}.pv2-l{padding-top:.5rem;padding-bottom:.5rem}.pv3-l{padding-top:1rem;padding-bottom:1rem}.pv4-l{padding-top:2rem;padding-bottom:2rem}.pv5-l{padding-top:4rem;padding-bottom:4rem}.pv6-l{padding-top:8rem;padding-bottom:8rem}.pv7-l{padding-top:16rem;padding-bottom:16rem}.ph0-l{padding-left:0;padding-right:0}.ph1-l{padding-left:.25rem;padding-right:.25rem}.ph2-l{padding-left:.5rem;padding-right:.5rem}.ph3-l{padding-left:1rem;padding-right:1rem}.ph4-l{padding-left:2rem;padding-right:2rem}.ph5-l{padding-left:4rem;padding-right:4rem}.ph6-l{padding-left:8rem;padding-right:8rem}.ph7-l{padding-left:16rem;padding-right:16rem}.ma0-l{margin:0}.ma1-l{margin:.25rem}.ma2-l{margin:.5rem}.ma3-l{margin:1rem}.ma4-l{margin:2rem}.ma5-l{margin:4rem}.ma6-l{margin:8rem}.ma7-l{margin:16rem}.ml0-l{margin-left:0}.ml1-l{margin-left:.25rem}.ml2-l{margin-left:.5rem}.ml3-l{margin-left:1rem}.ml4-l{margin-left:2rem}.ml5-l{margin-left:4rem}.ml6-l{margin-left:8rem}.ml7-l{margin-left:16rem}.mr0-l{margin-right:0}.mr1-l{margin-right:.25rem}.mr2-l{margin-right:.5rem}.mr3-l{margin-right:1rem}.mr4-l{margin-right:2rem}.mr5-l{margin-right:4rem}.mr6-l{margin-right:8rem}.mr7-l{margin-right:16rem}.mb0-l{margin-bottom:0}.mb1-l{margin-bottom:.25rem}.mb2-l{margin-bottom:.5rem}.mb3-l{margin-bottom:1rem}.mb4-l{margin-bottom:2rem}.mb5-l{margin-bottom:4rem}.mb6-l{margin-bottom:8rem}.mb7-l{margin-bottom:16rem}.mt0-l{margin-top:0}.mt1-l{margin-top:.25rem}.mt2-l{margin-top:.5rem}.mt3-l{margin-top:1rem}.mt4-l{margin-top:2rem}.mt5-l{margin-top:4rem}.mt6-l{margin-top:8rem}.mt7-l{margin-top:16rem}.mv0-l{margin-top:0;margin-bottom:0}.mv1-l{margin-top:.25rem;margin-bottom:.25rem}.mv2-l{margin-top:.5rem;margin-bottom:.5rem}.mv3-l{margin-top:1rem;margin-bottom:1rem}.mv4-l{margin-top:2rem;margin-bottom:2rem}.mv5-l{margin-top:4rem;margin-bottom:4rem}.mv6-l{margin-top:8rem;margin-bottom:8rem}.mv7-l{margin-top:16rem;margin-bottom:16rem}.mh0-l{margin-left:0;margin-right:0}.mh1-l{margin-left:.25rem;margin-right:.25rem}.mh2-l{margin-left:.5rem;margin-right:.5rem}.mh3-l{margin-left:1rem;margin-right:1rem}.mh4-l{margin-left:2rem;margin-right:2rem}.mh5-l{margin-left:4rem;margin-right:4rem}.mh6-l{margin-left:8rem;margin-right:8rem}.mh7-l{margin-left:16rem;margin-right:16rem}.na1-l{margin:-.25rem}.na2-l{margin:-.5rem}.na3-l{margin:-1rem}.na4-l{margin:-2rem}.na5-l{margin:-4rem}.na6-l{margin:-8rem}.na7-l{margin:-16rem}.nl1-l{margin-left:-.25rem}.nl2-l{margin-left:-.5rem}.nl3-l{margin-left:-1rem}.nl4-l{margin-left:-2rem}.nl5-l{margin-left:-4rem}.nl6-l{margin-left:-8rem}.nl7-l{margin-left:-16rem}.nr1-l{margin-right:-.25rem}.nr2-l{margin-right:-.5rem}.nr3-l{margin-right:-1rem}.nr4-l{margin-right:-2rem}.nr5-l{margin-right:-4rem}.nr6-l{margin-right:-8rem}.nr7-l{margin-right:-16rem}.nb1-l{margin-bottom:-.25rem}.nb2-l{margin-bottom:-.5rem}.nb3-l{margin-bottom:-1rem}.nb4-l{margin-bottom:-2rem}.nb5-l{margin-bottom:-4rem}.nb6-l{margin-bottom:-8rem}.nb7-l{margin-bottom:-16rem}.nt1-l{margin-top:-.25rem}.nt2-l{margin-top:-.5rem}.nt3-l{margin-top:-1rem}.nt4-l{margin-top:-2rem}.nt5-l{margin-top:-4rem}.nt6-l{margin-top:-8rem}.nt7-l{margin-top:-16rem}.strike-l{text-decoration:line-through}.underline-l{text-decoration:underline}.no-underline-l{text-decoration:none}.tl-l{text-align:left}.tr-l{text-align:right}.tc-l{text-align:center}.tj-l{text-align:justify}.ttc-l{text-transform:capitalize}.ttl-l{text-transform:lowercase}.ttu-l{text-transform:uppercase}.ttn-l{text-transform:none}.f-6-l,.f-headline-l{font-size:6rem}.f-5-l,.f-subheadline-l{font-size:5rem}.f1-l{font-size:3rem}.f2-l{font-size:2.25rem}.f3-l{font-size:1.5rem}.f4-l{font-size:1.25rem}.f5-l{font-size:1rem}.f6-l{font-size:.875rem}.f7-l{font-size:.75rem}.measure-l{max-width:30em}.measure-wide-l{max-width:34em}.measure-narrow-l{max-width:20em}.indent-l{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-l{font-variant:small-caps}.truncate-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-l{margin-left:auto}.center-l,.mr-auto-l{margin-right:auto}.ml-auto-l{margin-left:auto}.clip-l{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-l{white-space:normal}.nowrap-l{white-space:nowrap}.pre-l{white-space:pre}.v-base-l{vertical-align:baseline}.v-mid-l{vertical-align:middle}.v-top-l{vertical-align:top}.v-btm-l{vertical-align:bottom}}pre,.pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}pre code{display:block;padding:1.5em;white-space:pre;font-size:.875rem;line-height:2}pre{background-color:#222;color:#ddd;white-space:pre;hyphens:none;position:relative}.pagination{margin:3rem 0}.pagination li{display:inline-block;margin-right:.375rem;font-size:.875rem;margin-bottom:2.5em}[dir=rtl] .pagination li{margin-left:.375rem;margin-right:0}.pagination li a{padding:.5rem .625rem;background-color:#fff;color:#333;border:1px solid #ddd;border-radius:3px;text-decoration:none}.pagination li.disabled{display:none}.pagination li.active a,.pagination li.active a:link,.pagination li.active a:active,.pagination li.active a:visited{background-color:#ddd}#TableOfContents ul li{margin-bottom:1em}.ananke-socials a{display:inline-block;vertical-align:middle;color:#bababa;fill:currentColor}.ananke-socials a .icon svg{width:32px;height:32px}.ananke-socials a:hover{color:#6b7280}.new-window{opacity:0;display:inline-block;vertical-align:top}.link-transition:hover .new-window{opacity:1}#TableOfContents ul li{margin-bottom:1em}.lh-copy blockquote{display:block;font-size:.875em;margin-left:2rem;margin-top:2rem;margin-bottom:2rem;border-left:4px solid #ccc;padding-left:1rem}.nested-links a{overflow-wrap:break-word}
\ No newline at end of file diff --git a/resources/_gen/assets/ananke/css/main.css_83735de7ca999e9c17f3419b41b93fdb.json b/resources/_gen/assets/ananke/css/main.css_83735de7ca999e9c17f3419b41b93fdb.json new file mode 100644 index 0000000..54a1d46 --- /dev/null +++ b/resources/_gen/assets/ananke/css/main.css_83735de7ca999e9c17f3419b41b93fdb.json @@ -0,0 +1 @@ +{"Target":"/ananke/css/main.min.css","MediaType":"text/css","Data":{}}
\ No newline at end of file diff --git a/resources/_gen/assets/scss/dark-mode.scss_511aa33e99371f93fbf403479ebfd32e.content b/resources/_gen/assets/scss/dark-mode.scss_511aa33e99371f93fbf403479ebfd32e.content new file mode 100644 index 0000000..415ca4f --- /dev/null +++ b/resources/_gen/assets/scss/dark-mode.scss_511aa33e99371f93fbf403479ebfd32e.content @@ -0,0 +1 @@ +::selection{background:rgba(25,118,210,.4)}html{overflow-y:scroll}body{background:#fcfcfc;padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;text-shadow:1px 1px 1px rgba(0,0,0,.4%);text-rendering:optimizeLegibility!important;-webkit-font-smoothing:antialiased!important;color:#000}*{color:#000;word-wrap:break-word;box-sizing:border-box}h1,h2,h3{font-weight:400}h1{font-size:30px;margin:20px auto}h2{font-size:24px;margin:20px auto}h3{font-size:21px;margin:20px auto}h4{font-size:21px;padding:20px auto}h5{font-size:20px;padding:10px auto}h6{font-size:19px;padding:10px auto}textarea,select,input,button{outline:none!important}table{table-layout:fixed;overflow-x:scroll}button{cursor:hand;cursor:pointer}code{color:#145ca4;background:rgba(25,118,210,7%);padding:2px 5px;border-radius:3px;font-family:fira mono,cousine,Monaco,Menlo,source code pro,monospace}pre{background:rgba(25,118,210,7%);padding:12px 15px;border-radius:5px;font-family:fira mono,cousine,Monaco,Menlo,source code pro,monospace}pre *{background:0 0;font-family:fira mono,cousine,Monaco,Menlo,source code pro,monospace!important}pre code{padding:0}pre code *{color:inherit}blockquote{padding:10px 20px;border-left:3px solid rgba(25,118,210,.7);color:#145ca4;background:rgba(25,118,210,5%)}blockquote p{margin-bottom:0}blockquote *{color:#145ca4}a{color:#1976d2}a:hover{color:#145ca4;text-underline-position:under}@media screen and (max-width:1020px){a:hover{text-decoration:none!important}}.a-block{display:block;text-decoration:none!important}.a-block:hover{text-decoration:none!important}.no-margin{margin:0}.no-padding{padding:0}.no-overflow{overflow:hidden!important}.animated-visibility{transition:visibility 0s,opacity .5s linear;visibility:visible;opacity:1}.invisible{visibility:hidden;opacity:0}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}#lv-container{padding:0 30px}@media screen and (max-width:1020px){#lv-container{padding:0 15px}}.single-column-nav-container{display:none!important}@media screen and (max-width:1020px){.single-column-nav-container{display:block!important;padding:0}.single-column-nav-container *{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;transition:opacity .5s ease-in-out}.single-column-nav-container button{padding:0;padding-right:12px;padding-left:12px}.single-column-nav-container .nav-content{padding:12px 8px;justify-content:flex-start;max-width:unset!important}.single-column-nav-container .navbar-brand{opacity:0;text-align:left;padding-left:12px;flex:1}.single-column-nav-container .nav-dropdown-toggle{display:flex;align-content:center;align-items:center;justify-items:center;justify-content:center;background:0 0!important;border:none}.single-column-nav-container .nav-dropdown-toggle:hover{color:#3f587d!important}.single-column-nav-container .nav-darkmode-toggle{display:flex;align-content:center;align-items:center;justify-items:center;justify-content:center;background:0 0!important;border:none}.single-column-nav-container .nav-darkmode-toggle:hover{color:#3f587d!important}.single-column-nav-container .nav-icon-group{z-index:5;padding-right:5px}.single-column-nav-container .nav-icon-group ul{list-style:none;margin:0;padding:0}.single-column-nav-container .nav-icon-group li{display:inline;margin:0;padding:0}.single-column-nav-container .nav-icon{padding:8px}.single-column-nav-container .nav-background{opacity:0;z-index:-1;left:0;position:absolute;width:100%;height:100%;background:#fff;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.2);-moz-box-shadow:0 1px 1px rgba(0,0,0,.2);box-shadow:0 1px 1px rgba(0,0,0,.2)}}.single-column-header-container{display:none!important}@media screen and (max-width:1020px){.single-column-header-container{display:block!important;padding:50px 20px 80px;transition:padding .5s ease-in-out,margin .5s ease-in-out;text-align:center}.single-column-header-container *{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;color:#000}.single-column-header-container .single-column-header-title{font-size:28px}.single-column-header-container .single-column-header-subtitle{font-size:20px}}.single-column-drawer-container{display:none!important}@media screen and (max-width:1020px){.single-column-drawer-container{display:block!important;position:fixed;top:0;left:-260px;width:260px;height:100vh;z-index:1800;transition:all .3s ease-in-out}.single-column-drawer-container .drawer-content{background:#fff;height:100%;width:100%;padding:50px 0 80px;display:flex}.single-column-drawer-container .drawer-content .drawer-menu{flex-grow:1;display:flex;justify-items:center;justify-content:center;flex-direction:column}.single-column-drawer-container .drawer-content .drawer-menu .drawer-menu-item{font-size:18px;margin-bottom:10px;border-right:2px solid transparent;padding:8px 30px;cursor:hand;cursor:pointer;transition:all .2s linear;color:#000}.single-column-drawer-container .drawer-content .drawer-menu .drawer-menu-item .nav-link-subitem{font-size:18px;padding:2px}.single-column-drawer-container .drawer-content .drawer-menu .drawer-menu-item .nav-link-subitem li{list-style:none;padding-left:8px}.single-column-drawer-container .drawer-content .drawer-menu .drawer-menu-item .nav-link-subitem a{text-decoration:none;color:#000}.single-column-drawer-container .drawer-content .drawer-menu .drawer-menu-item.active{border-right:2px solid #1976d2;background:rgba(25,118,210,.1);color:#092949}}.single-column-drawer-mask{display:none!important}@media screen and (max-width:1020px){.single-column-drawer-mask{display:block!important;position:fixed;top:0;bottom:0;right:0;left:0;background:rgba(0,0,0,.8);z-index:1600;transition:all .3s ease-in-out}}.single-column-drawer-container-active{left:0;box-shadow:0 0 8px rgba(0,0,0,.2)}.side-container{position:fixed;top:0;height:100vh;width:25%;text-align:right;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;padding:20px 0 50px;display:flex;flex-direction:column;justify-content:space-between}.side-container .nav-head{padding:30px 28px 30px 20px;cursor:hand;cursor:pointer;margin-bottom:10px;color:#000;border-right:2px solid transparent}.side-container .nav-head .nav-title{font-size:30px;line-height:42px}.side-container .nav-head .nav-subtitle{margin-top:8px;font-size:18px}.side-container .nav-head:hover{border-right:2px solid rgba(25,118,210,.6);background:rgba(25,118,210,2%);color:#092949}.side-container .nav-head.active{border-right:2px solid #1976d2;background:rgba(25,118,210,3%);color:#0e4377}.side-container .nav-link-list{flex-grow:1}.side-container .nav-link-list .nav-link-item{font-size:20px;margin-bottom:10px;border-right:2px solid transparent;padding:8px 28px 8px 30px;cursor:hand;cursor:pointer;color:#000}.side-container .nav-link-list .nav-link-item .nav-link-subitem{font-size:17px}.side-container .nav-link-list .nav-link-item .nav-link-subitem li{list-style:none;padding-left:2px}.side-container .nav-link-list .nav-link-item .nav-link-subitem a{text-decoration:none}.side-container .nav-link-list .nav-link-item:hover{border-right:2px solid rgba(25,118,210,.6);background:rgba(25,118,210,2%);color:#092949}.side-container .nav-link-list .nav-link-item.active{border-right:2px solid #1976d2;background:rgba(25,118,210,3%);color:#0e4377}.side-container .nav-footer{padding:20px 30px 0 20px;font-size:12px}@media screen and (max-width:1020px){.side-container{display:none}}.extra-container{position:fixed;top:0;right:0;height:100vh;width:25%;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start}.extra-container .pagination{bottom:0;display:flex;flex-direction:column}.extra-container .pagination .pagination-indicator{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;justify-items:center;width:25%;padding:15px 0;font-size:12px;width:64px;font-family:fira mono,cousine,Monaco,Menlo,source code pro,monospace}.extra-container .pagination .pagination-action{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;justify-items:center;width:64px;cursor:hand;cursor:pointer;padding:15px 0}.extra-container .pagination .pagination-action :not(.pagination-action-icon){transition:all .2s linear;font-size:13px;font-family:fira mono,cousine,Monaco,Menlo,source code pro,monospace}.extra-container .pagination .pagination-action *{transition:all .3s linear}.extra-container .pagination .pagination-action:hover{text-decoration:none}.extra-container .pagination .pagination-action:hover *{color:#145ca4}@media screen and (max-width:1020px){.extra-container{display:none}}.pagination-bar-container{position:fixed;top:0;right:0;height:100vh;width:25%;text-align:right;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;padding:20px 0;overflow:scroll;display:flex;flex-direction:column}.stream-container{padding-left:25%;padding-right:25%;width:100%;min-height:100vh}@media screen and (max-width:1020px){.stream-container{padding:0;min-height:unset}}.stream-container .post-list-container{width:100%;min-height:100vh;padding:20px 0;background:#fff;box-shadow:0 0 16px rgba(0,0,0,.12)}@media screen and (max-width:1020px){.stream-container .post-list-container{min-height:unset;padding:0;box-shadow:0 0 rgba(0,0,0,.2)}}.stream-container .post-list-container .post-item-wrapper,.stream-container .post-list-container>* .post-item-wrapper{cursor:hand;cursor:pointer}.stream-container .post-list-container .post-item-wrapper .post-item,.stream-container .post-list-container>* .post-item-wrapper .post-item{margin:0 28px 0 35px;padding:30px 0;display:flex;flex-direction:row;align-items:center}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item,.stream-container .post-list-container>* .post-item-wrapper .post-item{flex-direction:column-reverse;margin:0 0 15px;padding:0;box-shadow:0 0 8px rgba(0,0,0,.1);background:#fff}}.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper{flex-grow:1}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper{width:100%;padding:15px 20px}}.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper .post-item-title,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper .post-item-title{font-size:30px;font-weight:500;font-style:normal;margin-bottom:10px;line-height:1.5em}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper .post-item-title,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper .post-item-title{font-size:22px;margin-bottom:5px}}.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper .post-item-title-small,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper .post-item-title-small{font-size:22px;margin-bottom:0}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper .post-item-title-small,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper .post-item-title-small{font-size:14px}}.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper .post-item-summary,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper .post-item-summary{font-size:16px;line-height:1.5em;margin-bottom:10px}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper .post-item-summary,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper .post-item-summary{font-size:16px;margin-bottom:5px}}.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper .post-item-meta,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper .post-item-meta{font-size:16px}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item .post-item-info-wrapper .post-item-meta,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-info-wrapper .post-item-meta{font-size:14px}}.stream-container .post-list-container .post-item-wrapper .post-item .post-item-image-wrapper,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-image-wrapper{margin-left:20px}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item .post-item-image-wrapper,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-image-wrapper{width:100%;margin-left:0}}.stream-container .post-list-container .post-item-wrapper .post-item .post-item-image-wrapper .post-item-image,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-image-wrapper .post-item-image{width:230px;height:120px;background:no-repeat 50%;background-size:cover;border-radius:5px;overflow:hidden}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item .post-item-image-wrapper .post-item-image,.stream-container .post-list-container>* .post-item-wrapper .post-item .post-item-image-wrapper .post-item-image{width:100%;height:180px;border-radius:0}}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper .post-item-no-divider,.stream-container .post-list-container>* .post-item-wrapper .post-item-no-divider{border-bottom:none!important}.stream-container .post-list-container .post-item-wrapper .post-item-no-gaps,.stream-container .post-list-container>* .post-item-wrapper .post-item-no-gaps{margin:0;box-shadow:none}}.stream-container .post-list-container .post-item-wrapper:not(.post-item-wrapper-no-hover):hover,.stream-container .post-list-container>* .post-item-wrapper:not(.post-item-wrapper-no-hover):hover{text-decoration:none;background:rgba(0,0,0,3%)}.stream-container .post-list-container .post-item-wrapper:not(.post-item-wrapper-no-hover):hover .post-item-title,.stream-container .post-list-container>* .post-item-wrapper:not(.post-item-wrapper-no-hover):hover .post-item-title{text-decoration:underline;text-decoration-style:.5px solid #1976d2;text-underline-position:under}.stream-container .post-list-container .post-item-wrapper:not(.post-item-wrapper-no-hover):hover *,.stream-container .post-list-container>* .post-item-wrapper:not(.post-item-wrapper-no-hover):hover *{color:#145ca4}@media screen and (max-width:1020px){.stream-container .post-list-container .post-item-wrapper:not(.post-item-wrapper-no-hover):hover .post-item-title,.stream-container .post-list-container>* .post-item-wrapper:not(.post-item-wrapper-no-hover):hover .post-item-title{text-decoration:none!important}}.stream-container .post-list-container .post-item-wrapper-no-hover,.stream-container .post-list-container>* .post-item-wrapper-no-hover{cursor:unset}.stream-container .post-list-container:not(:last-child) .post-item,.stream-container .post-list-container>*:not(:last-child) .post-item{border-bottom:1px solid rgba(128,128,128,.12)}@media screen and (max-width:1020px){.stream-container .post-list-container-no-background{background:0 0}}@media screen and (max-width:1020px){.stream-container .post-list-container-shadow{box-shadow:0 0 8px rgba(0,0,0,.1)}}.stream-container .post-list-footer{text-align:center;width:100%;opacity:.3;color:#000;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:13px;padding:15px}.stream-container .post{padding:0 0 20px}.stream-container .post .post-head-wrapper{margin-top:-20px;background:no-repeat 50%;background-size:cover;position:relative;padding-top:140px}@media screen and (max-width:1020px){.stream-container .post .post-head-wrapper{padding-top:120px}}.stream-container .post .post-head-wrapper *{color:#fff}.stream-container .post .post-head-wrapper .post-title{padding:80px 35px 30px;font-size:30px;font-weight:600;font-style:normal;line-height:1.5em;background:-moz-linear-gradient(top,transparent 0%,rgba(0,0,0,.75) 100%);background:-webkit-linear-gradient(top,transparent 0%,rgba(0,0,0,.75) 100%);background:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.75) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#c6000000',GradientType=0)}@media screen and (max-width:1020px){.stream-container .post .post-head-wrapper .post-title{font-size:22px;padding:80px 20px 30px}}.stream-container .post .post-head-wrapper .post-title .post-subtitle{font-size:14px;line-height:1.2em!important;width:80%;opacity:.6;padding:0 0 8px}.stream-container .post .post-head-wrapper .post-title .post-meta{margin:0}.stream-container .post .post-head-wrapper .post-title .post-meta,.stream-container .post .post-head-wrapper .post-title .post-meta *{font-size:16px}.stream-container .post .post-head-wrapper .post-title .post-meta .material-icons{vertical-align:middle;margin-bottom:3px}@media screen and (max-width:1020px){.stream-container .post .post-head-wrapper .post-title .post-meta,.stream-container .post .post-head-wrapper .post-title .post-meta *{font-size:14px}}.stream-container .post .post-head-wrapper-text-only{padding:30px 35px 0}@media screen and (max-width:1020px){.stream-container .post .post-head-wrapper-text-only{padding:30px 20px 0}}.stream-container .post .post-head-wrapper-text-only .post-title{font-size:30px;font-weight:600;font-style:normal;line-height:1.5em}.stream-container .post .post-head-wrapper-text-only .post-title .post-subtitle{font-size:14px;width:80%;opacity:.6;padding:0 0 8px}.stream-container .post .post-head-wrapper-text-only .post-title .post-meta{margin:0}.stream-container .post .post-head-wrapper-text-only .post-title .post-meta,.stream-container .post .post-head-wrapper-text-only .post-title .post-meta *{font-size:16px}.stream-container .post .post-head-wrapper-text-only .post-title .post-meta .material-icons{vertical-align:middle;margin-bottom:3px}@media screen and (max-width:1020px){.stream-container .post .post-head-wrapper-text-only .post-title .post-meta,.stream-container .post .post-head-wrapper-text-only .post-title .post-meta *{font-size:14px}}@media screen and (max-width:1020px){.stream-container .post .post-head-wrapper-text-only .post-title{font-size:22px}}.stream-container .post .post-body-wrapper{padding:30px 35px 35px}@media screen and (max-width:1020px){.stream-container .post .post-body-wrapper{padding:20px 20px 35px}}.stream-container .post .post-body-wrapper .post-body{font-size:16px;line-height:1.5em}.stream-container .post .post-body-wrapper .post-body *{word-wrap:break-word}.stream-container .post .post-body-wrapper .post-body img{max-width:100%;border-radius:5px;overflow:hidden}@media screen and (max-width:1020px){.stream-container .post .post-body-wrapper .post-body{font-size:16px}}.stream-container .post .post-pagination{padding:20px 35px;width:100%;display:flex;justify-content:space-between}.stream-container .post .post-pagination .newer-posts{padding-right:5px;text-align:left;width:50%}.stream-container .post .post-pagination .older-posts{padding-left:5px;text-align:right;width:50%}@media screen and (max-width:1020px){.stream-container .post .post-pagination{padding:20px}}.stream-container .post .post-comment-wrapper{padding:20px 35px}.stream-container .post .post-comment-wrapper iframe{overflow:hidden!important}@media screen and (max-width:1020px){.stream-container .post .post-comment-wrapper{padding:20px}}#single-column-footer{display:none}@media screen and (max-width:1020px){#single-column-footer{display:block!important;text-align:center;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;padding:40px 20px}}.toc{float:right;border-radius:5px;margin-left:30px;margin-right:30px;margin-top:30px;min-width:200px;max-width:260px;max-height:80vh;overflow:auto;background:rgba(25,118,210,5%)}.toc,.toc *{font-size:16px}.toc ul{list-style:none;padding:0 0 0 20px;margin:0;line-height:1.7em}.toc .toc-content{padding:20px}.toc .toc-active{color:#03101c!important}@media screen and (max-width:1020px){.toc{line-height:2em;float:none;margin-top:30px;margin-left:0;margin-right:0}.toc,.toc *{}.toc .toc-content{padding:10px}}.pagination{display:none}.pagination .pagination-action{-webkit-appearance:none}@media screen and (max-width:1020px){.pagination{display:flex!important;flex-direction:row;justify-content:space-between}.pagination:not(.index-page){margin-top:15px}.pagination .pagination-indicator{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;justify-items:center;width:25%;padding:15px 0;font-size:12px;font-family:fira mono,cousine,Monaco,Menlo,source code pro,monospace}.pagination .pagination-action{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;justify-items:center;width:64px;cursor:hand;cursor:pointer;padding:15px 0}.pagination .pagination-action :not(.pagination-action-icon){transition:all .2s linear;font-size:13px;font-family:fira mono,cousine,Monaco,Menlo,source code pro,monospace}.pagination .pagination-action *{transition:all .3s linear}.pagination .pagination-action:hover{text-decoration:none}.pagination .pagination-action:hover *{color:#145ca4}}.year{color:#145ca4}mjx-container{overflow-y:hidden!important}.gsc-control-searchbox-only{display:flex!important;background:0 0!important;max-width:70%;margin-top:1em;margin-left:1.5em;margin-right:.2em}@media screen and (max-width:1020px){.gsc-control-searchbox-only{margin-left:.5em;padding-left:.2em}.gsc-control-searchbox-only .gsst_a{display:none}}.vwrap *{color:#000!important}.vcontent p{color:#000!important}.tags{display:flex;align-items:center;flex-direction:row;padding-left:10px;flex-wrap:wrap}.tags .tag{margin:10px}body.night{background:#212121}body.night :root{--color_555:#ccc;--color_ededed:#000}body.night img{opacity:.8}body.night blockquote *{color:#92c2f2!important}body.night a{color:#378fe7}body.night a:hover{color:#92c2f2!important}@media screen and (max-width:1020px){body.night a:hover{text-decoration:none!important}}body.night code:not([data-lang]){color:#92c2f2!important}body.night pre{color:#e6e6e6!important}body.night pre code:not([data-lang]){background:0 0;color:#e6e6e6!important}body.night table *{color:#e6e6e6}body.night .gt-btn *{color:#000!important}body.night .gt-header-textarea{background:#545454!important}body.night .gt-header-preview{background:#545454!important}body.night .side-container *{color:#e6e6e6}body.night .side-container .nav-head:hover{border-right:2px solid rgba(25,118,210,.6);background:rgba(25,118,210,2%);color:#92c2f2}body.night .side-container .nav-head.active{border-right:2px solid #1976d2;background:rgba(25,118,210,3%);color:#64a9ed}body.night .side-container .nav-link-list{flex-grow:1}body.night .side-container .nav-link-list .nav-link-item{color:#e6e6e6!important}body.night .side-container .nav-link-list .nav-link-item:hover{border-right:2px solid rgba(25,118,210,.6);color:#92c2f2!important}body.night .side-container .nav-link-list .nav-link-item.active{border-right:2px solid #1976d2;background:rgba(25,118,210,.1);color:#64a9ed!important}body.night .stream-container .post-head-wrapper-text-only *{color:#e6e6e6}body.night .stream-container .post{background:#282828}@media screen and (max-width:1020px){body.night .stream-container .post{background:#212121}}body.night .stream-container .post .post-pagination a:not([href]){color:#e6e6e6}body.night .stream-container .post .post-comment-wrapper *{color:#e6e6e6}body.night .stream-container .post-list-container{background:#282828}@media screen and (max-width:1020px){body.night .stream-container .post-list-container{background:#212121}}body.night .stream-container .post-list-container .post-item-wrapper *,body.night .stream-container .post-list-container>* .post-item-wrapper *{color:#e6e6e6}@media screen and (max-width:1020px){body.night .stream-container .post-list-container .post-item-wrapper .post-item-info-wrapper,body.night .stream-container .post-list-container>* .post-item-wrapper .post-item-info-wrapper{box-shadow:0 0 8px rgba(0,0,0,.1);background:#282828}}@media screen and (max-width:1020px){body.night .stream-container .post-list-container .post-item-wrapper,body.night .stream-container .post-list-container>* .post-item-wrapper{box-shadow:0 0 8px rgba(0,0,0,.1);background:#282828}}body.night .stream-container .post-list-container .post-item-wrapper:not(.post-item-wrapper-no-hover):hover,body.night .stream-container .post-list-container>* .post-item-wrapper:not(.post-item-wrapper-no-hover):hover{background:rgba(255,255,255,3%)}body.night .stream-container .post-list-container .post-item-wrapper:not(.post-item-wrapper-no-hover):hover *,body.night .stream-container .post-list-container>* .post-item-wrapper:not(.post-item-wrapper-no-hover):hover *{color:#92c2f2!important}body.night .single-column-nav-container *{color:#e6e6e6}@media screen and (max-width:1020px){body.night .single-column-nav-container .nav-dropdown-toggle:hover{color:#3f587d!important}body.night .single-column-nav-container .navbar-brand{color:#e6e6e6}body.night .single-column-nav-container .navbar-brand:hover{color:#e6e6e6}body.night .single-column-nav-container .nav-background{background:#282828;box-shadow:0 2px 2px rgba(0,0,0,.2)}}@media screen and (max-width:1020px){body.night .single-column-header-container *{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;color:#92c2f2}body.night .single-column-header-container .single-column-header-title{color:#e6e6e6}body.night .single-column-header-container .single-column-header-subtitle{color:#e6e6e6}}@media screen and (max-width:1020px){body.night .single-column-drawer-container .drawer-content{background:#282828}body.night .single-column-drawer-container .drawer-content .toc{background-color:#424242}body.night .single-column-drawer-container .drawer-content .drawer-menu .drawer-menu-item{color:#e6e6e6}body.night .single-column-drawer-container .drawer-content .drawer-menu .drawer-menu-item.active{border-right:2px solid #1976d2;color:#378fe7}}body.night #single-column-footer{color:#e6e6e6}body.night .toc{background-color:#282828}body.night .toc *{color:#e6e6e6}body.night .toc a{color:#e6e6e6}body.night .toc .toc-active{color:#378fe7!important}body.night .post-body p,body.night h1,body.night h2,body.night h3,body.night h4,body.night h5,body.night h6,body.night li{color:#e6e6e6}body.night .post-body p *:not(a),body.night h1 *:not(a),body.night h2 *:not(a),body.night h3 *:not(a),body.night h4 *:not(a),body.night h5 *:not(a),body.night h6 *:not(a),body.night li *:not(a){color:#e6e6e6}body.night .pagination *{color:#e6e6e6}body.night .vwrap *{color:#e6e6e6!important}body.night .vcontent p{color:#e6e6e6!important}body.night .gsc-control-searchbox-only table *{color:#000!important}body.night .tags .tag a{color:#fff}body.night .tags .tag a span{color:#fff}
\ No newline at end of file diff --git a/resources/_gen/assets/scss/dark-mode.scss_511aa33e99371f93fbf403479ebfd32e.json b/resources/_gen/assets/scss/dark-mode.scss_511aa33e99371f93fbf403479ebfd32e.json new file mode 100644 index 0000000..f0ec60f --- /dev/null +++ b/resources/_gen/assets/scss/dark-mode.scss_511aa33e99371f93fbf403479ebfd32e.json @@ -0,0 +1 @@ +{"Target":"/scss/dark-mode.min.cb53f1bee2b8900cb4f082afbf00175d6618f281cf9a2fe8619e3b52d20b5721.css","MediaType":"text/css","Data":{"Integrity":"sha256-y1PxvuK4kAy08IKvvwAXXWYY8oHPmi/oYZ47UtILVyE="}}
\ No newline at end of file diff --git a/static/favicon-16x16.png b/static/favicon-16x16.png Binary files differnew file mode 100644 index 0000000..9c2c206 --- /dev/null +++ b/static/favicon-16x16.png diff --git a/static/favicon-32x32.png b/static/favicon-32x32.png Binary files differnew file mode 100644 index 0000000..d7f7417 --- /dev/null +++ b/static/favicon-32x32.png diff --git a/static/favicon.ico b/static/favicon.ico Binary files differnew file mode 100644 index 0000000..e953b1f --- /dev/null +++ b/static/favicon.ico diff --git a/static/shin.png b/static/shin.png Binary files differnew file mode 100644 index 0000000..cab028e --- /dev/null +++ b/static/shin.png diff --git a/themes/blowfish b/themes/blowfish new file mode 160000 +Subproject 13ff6f5341b373751880ac396495e8ef5600838 |