wayfarer 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (643) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -0
  3. data/Gemfile.lock +10 -14
  4. data/docs/cookbook/batch_routing.md +1 -1
  5. data/docs/cookbook/navigation.md +43 -0
  6. data/docs/guides/jobs.md +4 -4
  7. data/docs/guides/navigation.md +1 -1
  8. data/docs/guides/{browser_automation → networking}/capybara.md +3 -1
  9. data/docs/guides/{browser_automation → networking}/custom_adapters.md +0 -0
  10. data/docs/guides/{browser_automation → networking}/ferrum.md +0 -0
  11. data/docs/guides/networking/http.md +33 -0
  12. data/docs/guides/{browser_automation → networking}/selenium.md +0 -0
  13. data/lib/wayfarer/base.rb +37 -27
  14. data/lib/wayfarer/cli/base.rb +19 -1
  15. data/lib/wayfarer/cli/job.rb +4 -8
  16. data/lib/wayfarer/gc.rb +3 -4
  17. data/lib/wayfarer/handler.rb +15 -0
  18. data/lib/wayfarer/middleware/base.rb +19 -0
  19. data/lib/wayfarer/middleware/chain.rb +8 -0
  20. data/lib/wayfarer/middleware/controller.rb +40 -0
  21. data/lib/wayfarer/middleware/dedup.rb +5 -0
  22. data/lib/wayfarer/middleware/dispatch.rb +22 -0
  23. data/lib/wayfarer/middleware/fetch.rb +24 -15
  24. data/lib/wayfarer/middleware/lazy.rb +11 -0
  25. data/lib/wayfarer/middleware/normalize.rb +2 -0
  26. data/lib/wayfarer/middleware/router.rb +20 -14
  27. data/lib/wayfarer/middleware/stage.rb +6 -2
  28. data/lib/wayfarer/networking/context.rb +1 -0
  29. data/lib/wayfarer/networking/ferrum.rb +1 -0
  30. data/lib/wayfarer/networking/follow.rb +22 -0
  31. data/lib/wayfarer/networking/result.rb +0 -8
  32. data/lib/wayfarer/routing/matchers/host.rb +3 -1
  33. data/lib/wayfarer/routing/matchers/path.rb +1 -1
  34. data/lib/wayfarer/routing/result.rb +0 -5
  35. data/lib/wayfarer/routing/router.rb +3 -2
  36. data/lib/wayfarer/task.rb +4 -2
  37. data/lib/wayfarer.rb +2 -9
  38. data/spec/base_spec.rb +33 -42
  39. data/spec/cli/job_spec.rb +9 -5
  40. data/spec/gc_spec.rb +5 -9
  41. data/spec/handler_spec.rb +11 -0
  42. data/spec/integration/callbacks_spec.rb +85 -0
  43. data/spec/integration/page_spec.rb +62 -0
  44. data/spec/integration/params_spec.rb +56 -0
  45. data/spec/integration/stage_spec.rb +51 -0
  46. data/spec/integration/steering_spec.rb +57 -0
  47. data/spec/middleware/chain_spec.rb +15 -2
  48. data/spec/middleware/controller_spec.rb +86 -0
  49. data/spec/middleware/dedup_spec.rb +20 -8
  50. data/spec/middleware/dispatch_spec.rb +43 -0
  51. data/spec/middleware/fetch_spec.rb +109 -54
  52. data/spec/middleware/normalize_spec.rb +5 -4
  53. data/spec/middleware/router_spec.rb +73 -48
  54. data/spec/middleware/stage_spec.rb +42 -19
  55. data/spec/networking/follow_spec.rb +41 -0
  56. data/spec/spec_helpers.rb +11 -3
  57. data/spec/support/static/git-scm.com/assets/application-38b0d42ff05ffea45841edebbd14b75b89585646153808e82907c2c5c11f324b.js +772 -0
  58. data/spec/support/static/git-scm.com/assets/application-cafcf280f67db0e6d8168ba98a38da878769a9d5f37793b68ffb963a02d185e0.css +1 -0
  59. data/spec/support/static/git-scm.com/assets/modernize-b3ebe0c31c24f230dc62179d3e1030d2e57a53b1668d9382c0a27dbd44a94beb.js +20 -0
  60. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Bash.html +751 -0
  61. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-PowerShell.html +804 -0
  62. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Sublime-Text.html +728 -0
  63. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio-Code.html +751 -0
  64. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio.html +740 -0
  65. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh.html +765 -0
  66. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces.html +931 -0
  67. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Summary.html +702 -0
  68. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git.html +720 -0
  69. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Dulwich.html +746 -0
  70. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-JGit.html +889 -0
  71. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Libgit2.html +1003 -0
  72. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-go-git.html +792 -0
  73. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Administration.html +745 -0
  74. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Basic-Snapshotting.html +840 -0
  75. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Branching-and-Merging.html +829 -0
  76. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Debugging.html +731 -0
  77. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Email.html +766 -0
  78. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-External-Systems.html +721 -0
  79. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects.html +746 -0
  80. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Inspection-and-Comparison.html +735 -0
  81. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Patching.html +742 -0
  82. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Plumbing-Commands.html +715 -0
  83. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Setup-and-Config.html +863 -0
  84. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Sharing-and-Updating-Projects.html +802 -0
  85. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-An-Example-Git-Enforced-Policy.html +1200 -0
  86. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Attributes.html +1134 -0
  87. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Configuration.html +1315 -0
  88. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Hooks.html +876 -0
  89. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Summary.html +704 -0
  90. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project.html +1667 -0
  91. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows.html +859 -0
  92. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project.html +1354 -0
  93. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Summary.html +704 -0
  94. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git.html +735 -0
  95. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-About-Version-Control.html +783 -0
  96. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup.html +889 -0
  97. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Getting-Help.html +750 -0
  98. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Installing-Git.html +879 -0
  99. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Summary.html +704 -0
  100. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-The-Command-Line.html +711 -0
  101. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-What-is-Git?.html +857 -0
  102. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository.html +816 -0
  103. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Git-Aliases.html +775 -0
  104. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository.html +1432 -0
  105. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Summary.html +703 -0
  106. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Tagging.html +1049 -0
  107. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Undoing-Things.html +998 -0
  108. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History.html +1172 -0
  109. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes.html +983 -0
  110. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging.html +1102 -0
  111. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branch-Management.html +946 -0
  112. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell.html +1020 -0
  113. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branching-Workflows.html +786 -0
  114. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Rebasing.html +1028 -0
  115. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Remote-Branches.html +1009 -0
  116. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Summary.html +705 -0
  117. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Environment-Variables.html +1009 -0
  118. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Git-Objects.html +1209 -0
  119. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Git-References.html +939 -0
  120. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery.html +1086 -0
  121. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Packfiles.html +876 -0
  122. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain.html +745 -0
  123. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Summary.html +708 -0
  124. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-The-Refspec.html +872 -0
  125. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols.html +1043 -0
  126. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Advanced-Merging.html +1605 -0
  127. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Bundling.html +888 -0
  128. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Credential-Storage.html +1035 -0
  129. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git.html +861 -0
  130. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Interactive-Staging.html +920 -0
  131. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Replace.html +949 -0
  132. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Rerere.html +983 -0
  133. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Reset-Demystified.html +1236 -0
  134. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Revision-Selection.html +1178 -0
  135. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Rewriting-History.html +1182 -0
  136. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Searching.html +875 -0
  137. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work.html +922 -0
  138. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Stashing-and-Cleaning.html +1039 -0
  139. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Submodules.html +1864 -0
  140. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Summary.html +705 -0
  141. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Git-as-a-Client.html +2656 -0
  142. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git.html +1741 -0
  143. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Summary.html +703 -0
  144. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key.html +759 -0
  145. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server.html +827 -0
  146. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Git-Daemon.html +775 -0
  147. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-GitLab.html +872 -0
  148. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-GitWeb.html +776 -0
  149. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server.html +870 -0
  150. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Smart-HTTP.html +789 -0
  151. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Summary.html +709 -0
  152. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols.html +963 -0
  153. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Third-Party-Hosted-Options.html +711 -0
  154. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Account-Setup-and-Configuration.html +858 -0
  155. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project.html +1502 -0
  156. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Maintaining-a-Project.html +1218 -0
  157. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Managing-an-organization.html +797 -0
  158. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Scripting-GitHub.html +1059 -0
  159. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Summary.html +704 -0
  160. data/spec/support/static/git-scm.com/book/en/v2/ch00/_abort_merge.html +1605 -0
  161. data/spec/support/static/git-scm.com/book/en/v2/ch00/_add_email_addresses.html +858 -0
  162. data/spec/support/static/git-scm.com/book/en/v2/ch00/_advanced_merging.html +1605 -0
  163. data/spec/support/static/git-scm.com/book/en/v2/ch00/_an_example_git_enforced_policy.html +1200 -0
  164. data/spec/support/static/git-scm.com/book/en/v2/ch00/_annotated_tags.html +1049 -0
  165. data/spec/support/static/git-scm.com/book/en/v2/ch00/_api_comment.html +1059 -0
  166. data/spec/support/static/git-scm.com/book/en/v2/ch00/_bare_repo.html +827 -0
  167. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_branching.html +1102 -0
  168. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_merge_conflicts.html +1102 -0
  169. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_merging.html +1102 -0
  170. data/spec/support/static/git-scm.com/book/en/v2/ch00/_binary_search.html +861 -0
  171. data/spec/support/static/git-scm.com/book/en/v2/ch00/_branch_management.html +946 -0
  172. data/spec/support/static/git-scm.com/book/en/v2/ch00/_branch_references.html +1178 -0
  173. data/spec/support/static/git-scm.com/book/en/v2/ch00/_build_number.html +1354 -0
  174. data/spec/support/static/git-scm.com/book/en/v2/ch00/_bundling.html +888 -0
  175. data/spec/support/static/git-scm.com/book/en/v2/ch00/_changing_multiple.html +1182 -0
  176. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_out_conflicts.html +1605 -0
  177. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_out_remotes.html +1354 -0
  178. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_status.html +1432 -0
  179. data/spec/support/static/git-scm.com/book/en/v2/ch00/_cloning_submodules.html +1864 -0
  180. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_guidelines.html +1667 -0
  181. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_ranges.html +1178 -0
  182. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_status.html +1059 -0
  183. data/spec/support/static/git-scm.com/book/en/v2/ch00/_committing_changes.html +1432 -0
  184. data/spec/support/static/git-scm.com/book/en/v2/ch00/_contrib_file.html +1218 -0
  185. data/spec/support/static/git-scm.com/book/en/v2/ch00/_contributing_project.html +1667 -0
  186. data/spec/support/static/git-scm.com/book/en/v2/ch00/_create_new_branch.html +1020 -0
  187. data/spec/support/static/git-scm.com/book/en/v2/ch00/_credential_caching.html +1035 -0
  188. data/spec/support/static/git-scm.com/book/en/v2/ch00/_custom_importer.html +1741 -0
  189. data/spec/support/static/git-scm.com/book/en/v2/ch00/_data_recovery.html +1086 -0
  190. data/spec/support/static/git-scm.com/book/en/v2/ch00/_delete_branches.html +1009 -0
  191. data/spec/support/static/git-scm.com/book/en/v2/ch00/_editor.html +889 -0
  192. data/spec/support/static/git-scm.com/book/en/v2/ch00/_eg_task_lists.html +1502 -0
  193. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_hooks.html +876 -0
  194. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_notification.html +1502 -0
  195. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_notifications.html +1218 -0
  196. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_pr.html +1218 -0
  197. data/spec/support/static/git-scm.com/book/en/v2/ch00/_enforcing_commit_message_format.html +1200 -0
  198. data/spec/support/static/git-scm.com/book/en/v2/ch00/_example_markdown.html +1502 -0
  199. data/spec/support/static/git-scm.com/book/en/v2/ch00/_external_merge_tools.html +1315 -0
  200. data/spec/support/static/git-scm.com/book/en/v2/ch00/_fetch_and_push_on_different_repositories.html +1502 -0
  201. data/spec/support/static/git-scm.com/book/en/v2/ch00/_fetching_and_pulling.html +983 -0
  202. data/spec/support/static/git-scm.com/book/en/v2/ch00/_file_annotation.html +861 -0
  203. data/spec/support/static/git-scm.com/book/en/v2/ch00/_first_time.html +889 -0
  204. data/spec/support/static/git-scm.com/book/en/v2/ch00/_generate_ssh_key.html +759 -0
  205. data/spec/support/static/git-scm.com/book/en/v2/ch00/_getting_a_repo.html +816 -0
  206. data/spec/support/static/git-scm.com/book/en/v2/ch00/_getting_git_on_a_server.html +827 -0
  207. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_aliases.html +775 -0
  208. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_am.html +1354 -0
  209. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_amend.html +1182 -0
  210. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_branches_overview.html +1020 -0
  211. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_clean.html +1039 -0
  212. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_cloning.html +816 -0
  213. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_commit_objects.html +1209 -0
  214. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_config.html +1315 -0
  215. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_diff_staged.html +1432 -0
  216. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_gc.html +1086 -0
  217. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_grep.html +875 -0
  218. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_help.html +750 -0
  219. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_hooks.html +876 -0
  220. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_mv.html +1432 -0
  221. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_p4.html +1741 -0
  222. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_p4_branches.html +2656 -0
  223. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_reflog.html +1178 -0
  224. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_refs.html +939 -0
  225. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_reset.html +1236 -0
  226. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_stashing.html +1039 -0
  227. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_submodules.html +1864 -0
  228. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_svn.html +2656 -0
  229. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_tagging.html +1049 -0
  230. data/spec/support/static/git-scm.com/book/en/v2/ch00/_gitlab_groups_section.html +872 -0
  231. data/spec/support/static/git-scm.com/book/en/v2/ch00/_ignoring.html +1432 -0
  232. data/spec/support/static/git-scm.com/book/en/v2/ch00/_inspecting_remote.html +983 -0
  233. data/spec/support/static/git-scm.com/book/en/v2/ch00/_integration_manager.html +859 -0
  234. data/spec/support/static/git-scm.com/book/en/v2/ch00/_interactive_staging.html +920 -0
  235. data/spec/support/static/git-scm.com/book/en/v2/ch00/_keyword_expansion.html +1134 -0
  236. data/spec/support/static/git-scm.com/book/en/v2/ch00/_libgit2_bindings.html +1003 -0
  237. data/spec/support/static/git-scm.com/book/en/v2/ch00/_manual_remerge.html +1605 -0
  238. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_code.html +1502 -0
  239. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_drag.html +1502 -0
  240. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_emoji.html +1502 -0
  241. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_quote.html +1502 -0
  242. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_button.html +1218 -0
  243. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_log.html +1605 -0
  244. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_rebase_work.html +1028 -0
  245. data/spec/support/static/git-scm.com/book/en/v2/ch00/_new_repo_dropdown.html +1218 -0
  246. data/spec/support/static/git-scm.com/book/en/v2/ch00/_not_center.html +1218 -0
  247. data/spec/support/static/git-scm.com/book/en/v2/ch00/_org_page.html +797 -0
  248. data/spec/support/static/git-scm.com/book/en/v2/ch00/_other_client_hooks.html +876 -0
  249. data/spec/support/static/git-scm.com/book/en/v2/ch00/_p4_git_fusion.html +2656 -0
  250. data/spec/support/static/git-scm.com/book/en/v2/ch00/_patches_from_email.html +1354 -0
  251. data/spec/support/static/git-scm.com/book/en/v2/ch00/_personal_avatar.html +858 -0
  252. data/spec/support/static/git-scm.com/book/en/v2/ch00/_plumbing_porcelain.html +745 -0
  253. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_closed.html +1502 -0
  254. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_discussion.html +1502 -0
  255. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_fail.html +1502 -0
  256. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_final.html +1502 -0
  257. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_references.html +1502 -0
  258. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_references_render.html +1502 -0
  259. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_refs.html +1218 -0
  260. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pre_merge_rebase_work.html +1028 -0
  261. data/spec/support/static/git-scm.com/book/en/v2/ch00/_preparing_release.html +1354 -0
  262. data/spec/support/static/git-scm.com/book/en/v2/ch00/_private_team.html +1667 -0
  263. data/spec/support/static/git-scm.com/book/en/v2/ch00/_project_over_email.html +1667 -0
  264. data/spec/support/static/git-scm.com/book/en/v2/ch00/_public_project.html +1667 -0
  265. data/spec/support/static/git-scm.com/book/en/v2/ch00/_publishing_submodules.html +1864 -0
  266. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_branches.html +1009 -0
  267. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_refspecs.html +872 -0
  268. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_remotes.html +983 -0
  269. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_cherry_pick.html +1354 -0
  270. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_peril.html +1028 -0
  271. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_rebase.html +1028 -0
  272. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_rebase_work.html +1028 -0
  273. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebasing.html +1028 -0
  274. data/spec/support/static/git-scm.com/book/en/v2/ch00/_refspec.html +872 -0
  275. data/spec/support/static/git-scm.com/book/en/v2/ch00/_remote_branches.html +1009 -0
  276. data/spec/support/static/git-scm.com/book/en/v2/ch00/_remote_repos.html +983 -0
  277. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_file_every_commit.html +1182 -0
  278. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_files.html +1432 -0
  279. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_objects.html +1086 -0
  280. data/spec/support/static/git-scm.com/book/en/v2/ch00/_replace.html +949 -0
  281. data/spec/support/static/git-scm.com/book/en/v2/ch00/_reverse_commit.html +1605 -0
  282. data/spec/support/static/git-scm.com/book/en/v2/ch00/_revision_selection.html +1178 -0
  283. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rewriting_history.html +1182 -0
  284. data/spec/support/static/git-scm.com/book/en/v2/ch00/_searching.html +875 -0
  285. data/spec/support/static/git-scm.com/book/en/v2/ch00/_service_config.html +1059 -0
  286. data/spec/support/static/git-scm.com/book/en/v2/ch00/_services_hooks.html +1059 -0
  287. data/spec/support/static/git-scm.com/book/en/v2/ch00/_setting_up_server.html +870 -0
  288. data/spec/support/static/git-scm.com/book/en/v2/ch00/_sharing_tags.html +1049 -0
  289. data/spec/support/static/git-scm.com/book/en/v2/ch00/_signing.html +922 -0
  290. data/spec/support/static/git-scm.com/book/en/v2/ch00/_signing_commits.html +922 -0
  291. data/spec/support/static/git-scm.com/book/en/v2/ch00/_squashing.html +1182 -0
  292. data/spec/support/static/git-scm.com/book/en/v2/ch00/_starting_submodules.html +1864 -0
  293. data/spec/support/static/git-scm.com/book/en/v2/ch00/_subtree_merge.html +1605 -0
  294. data/spec/support/static/git-scm.com/book/en/v2/ch00/_switching_branches.html +1020 -0
  295. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tagging_releases.html +1354 -0
  296. data/spec/support/static/git-scm.com/book/en/v2/ch00/_task_list_progress.html +1502 -0
  297. data/spec/support/static/git-scm.com/book/en/v2/ch00/_team_page.html +797 -0
  298. data/spec/support/static/git-scm.com/book/en/v2/ch00/_the_index.html +1236 -0
  299. data/spec/support/static/git-scm.com/book/en/v2/ch00/_the_shortlog.html +1354 -0
  300. data/spec/support/static/git-scm.com/book/en/v2/ch00/_topic_branch.html +786 -0
  301. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tracking_branches.html +1009 -0
  302. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tracking_files.html +1432 -0
  303. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tree_objects.html +1209 -0
  304. data/spec/support/static/git-scm.com/book/en/v2/ch00/_triple_dot.html +1178 -0
  305. data/spec/support/static/git-scm.com/book/en/v2/ch00/_undoing.html +998 -0
  306. data/spec/support/static/git-scm.com/book/en/v2/ch00/_unstaging.html +998 -0
  307. data/spec/support/static/git-scm.com/book/en/v2/ch00/_viewing_history.html +1172 -0
  308. data/spec/support/static/git-scm.com/book/en/v2/ch00/_web_hook.html +1059 -0
  309. data/spec/support/static/git-scm.com/book/en/v2/ch00/_what_is_introduced.html +1354 -0
  310. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch01-getting-started.html +783 -0
  311. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch02-git-basics-chapter.html +816 -0
  312. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch03-git-branching.html +1020 -0
  313. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch05-distributed-git.html +859 -0
  314. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch06-github.html +858 -0
  315. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch06-github_flow.html +1502 -0
  316. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch10-git-internals.html +745 -0
  317. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch_core_editor.html +863 -0
  318. data/spec/support/static/git-scm.com/book/en/v2/ch00/divergent_history.html +1020 -0
  319. data/spec/support/static/git-scm.com/book/en/v2/ch00/double_dot.html +1178 -0
  320. data/spec/support/static/git-scm.com/book/en/v2/ch00/filters_a.html +1134 -0
  321. data/spec/support/static/git-scm.com/book/en/v2/ch00/filters_b.html +1134 -0
  322. data/spec/support/static/git-scm.com/book/en/v2/ch00/limit_options.html +1172 -0
  323. data/spec/support/static/git-scm.com/book/en/v2/ch00/log_options.html +1172 -0
  324. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_a.html +1354 -0
  325. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_b.html +1354 -0
  326. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_c.html +1354 -0
  327. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_d.html +1354 -0
  328. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_e.html +1354 -0
  329. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_f.html +1354 -0
  330. data/spec/support/static/git-scm.com/book/en/v2/ch00/oh_my_zsh_git.html +765 -0
  331. data/spec/support/static/git-scm.com/book/en/v2/ch00/pretty_format.html +1172 -0
  332. data/spec/support/static/git-scm.com/book/en/v2/ch00/psp_b.html +1667 -0
  333. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_e.html +1028 -0
  334. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_g.html +1028 -0
  335. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_h.html +1028 -0
  336. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_i.html +1028 -0
  337. data/spec/support/static/git-scm.com/book/en/v2/ch00/rebasing-merging-example.html +1028 -0
  338. data/spec/support/static/git-scm.com/book/en/v2/ch00/ref_rerere.html +983 -0
  339. data/spec/support/static/git-scm.com/book/en/v2/ch00/ref_the_ref.html +939 -0
  340. data/spec/support/static/git-scm.com/book/en/v2/ch00/wfdiag_b.html +859 -0
  341. data/spec/support/static/git-scm.com/book/en/v2/ch00/wfdiag_c.html +859 -0
  342. data/spec/support/static/git-scm.com/book/en/v2/ch00/what_is_git_section.html +857 -0
  343. data/spec/support/static/git-scm.com/book/en/v2/images/2fa-1.png +0 -0
  344. data/spec/support/static/git-scm.com/book/en/v2/images/account-settings.png +0 -0
  345. data/spec/support/static/git-scm.com/book/en/v2/images/advance-master.png +0 -0
  346. data/spec/support/static/git-scm.com/book/en/v2/images/advance-testing.png +0 -0
  347. data/spec/support/static/git-scm.com/book/en/v2/images/areas.png +0 -0
  348. data/spec/support/static/git-scm.com/book/en/v2/images/avatar-crop.png +0 -0
  349. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-1.png +0 -0
  350. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-2.png +0 -0
  351. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-3.png +0 -0
  352. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-4.png +0 -0
  353. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-5.png +0 -0
  354. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-6.png +0 -0
  355. data/spec/support/static/git-scm.com/book/en/v2/images/basic-merging-1.png +0 -0
  356. data/spec/support/static/git-scm.com/book/en/v2/images/basic-merging-2.png +0 -0
  357. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-1.png +0 -0
  358. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-2.png +0 -0
  359. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-3.png +0 -0
  360. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-4.png +0 -0
  361. data/spec/support/static/git-scm.com/book/en/v2/images/benevolent-dictator.png +0 -0
  362. data/spec/support/static/git-scm.com/book/en/v2/images/blink-01-start.png +0 -0
  363. data/spec/support/static/git-scm.com/book/en/v2/images/blink-02-pr.png +0 -0
  364. data/spec/support/static/git-scm.com/book/en/v2/images/blink-03-pull-request-open.png +0 -0
  365. data/spec/support/static/git-scm.com/book/en/v2/images/blink-04-email.png +0 -0
  366. data/spec/support/static/git-scm.com/book/en/v2/images/blink-04-pr-comment.png +0 -0
  367. data/spec/support/static/git-scm.com/book/en/v2/images/blink-05-general-comment.png +0 -0
  368. data/spec/support/static/git-scm.com/book/en/v2/images/blink-06-final.png +0 -0
  369. data/spec/support/static/git-scm.com/book/en/v2/images/branch-and-history.png +0 -0
  370. data/spec/support/static/git-scm.com/book/en/v2/images/branch_widget_mac.png +0 -0
  371. data/spec/support/static/git-scm.com/book/en/v2/images/branch_widget_win.png +0 -0
  372. data/spec/support/static/git-scm.com/book/en/v2/images/centralized.png +0 -0
  373. data/spec/support/static/git-scm.com/book/en/v2/images/centralized_workflow.png +0 -0
  374. data/spec/support/static/git-scm.com/book/en/v2/images/checkout-master.png +0 -0
  375. data/spec/support/static/git-scm.com/book/en/v2/images/clean.png +0 -0
  376. data/spec/support/static/git-scm.com/book/en/v2/images/collaborators.png +0 -0
  377. data/spec/support/static/git-scm.com/book/en/v2/images/commit-and-tree.png +0 -0
  378. data/spec/support/static/git-scm.com/book/en/v2/images/commits-and-parents.png +0 -0
  379. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-1.png +0 -0
  380. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-2.png +0 -0
  381. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-3.png +0 -0
  382. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-4.png +0 -0
  383. data/spec/support/static/git-scm.com/book/en/v2/images/deltas.png +0 -0
  384. data/spec/support/static/git-scm.com/book/en/v2/images/distributed.png +0 -0
  385. data/spec/support/static/git-scm.com/book/en/v2/images/double-dot.png +0 -0
  386. data/spec/support/static/git-scm.com/book/en/v2/images/email-settings.png +0 -0
  387. data/spec/support/static/git-scm.com/book/en/v2/images/forkbutton.png +0 -0
  388. data/spec/support/static/git-scm.com/book/en/v2/images/git-bash.png +0 -0
  389. data/spec/support/static/git-scm.com/book/en/v2/images/git-diff-check.png +0 -0
  390. data/spec/support/static/git-scm.com/book/en/v2/images/git-fusion-boot.png +0 -0
  391. data/spec/support/static/git-scm.com/book/en/v2/images/git-fusion-perforce-graph.png +0 -0
  392. data/spec/support/static/git-scm.com/book/en/v2/images/git-gui.png +0 -0
  393. data/spec/support/static/git-scm.com/book/en/v2/images/git-instaweb.png +0 -0
  394. data/spec/support/static/git-scm.com/book/en/v2/images/git-osx-installer.png +0 -0
  395. data/spec/support/static/git-scm.com/book/en/v2/images/github_mac.png +0 -0
  396. data/spec/support/static/git-scm.com/book/en/v2/images/github_win.png +0 -0
  397. data/spec/support/static/git-scm.com/book/en/v2/images/gitk.png +0 -0
  398. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-groups.png +0 -0
  399. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-menu.png +0 -0
  400. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-users.png +0 -0
  401. data/spec/support/static/git-scm.com/book/en/v2/images/head-to-master.png +0 -0
  402. data/spec/support/static/git-scm.com/book/en/v2/images/head-to-testing.png +0 -0
  403. data/spec/support/static/git-scm.com/book/en/v2/images/integration-manager.png +0 -0
  404. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-1.png +0 -0
  405. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-2.png +0 -0
  406. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-3.png +0 -0
  407. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-4.png +0 -0
  408. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-5.png +0 -0
  409. data/spec/support/static/git-scm.com/book/en/v2/images/jb.png +0 -0
  410. data/spec/support/static/git-scm.com/book/en/v2/images/large-merges-1.png +0 -0
  411. data/spec/support/static/git-scm.com/book/en/v2/images/large-merges-2.png +0 -0
  412. data/spec/support/static/git-scm.com/book/en/v2/images/lifecycle.png +0 -0
  413. data/spec/support/static/git-scm.com/book/en/v2/images/local.png +0 -0
  414. data/spec/support/static/git-scm.com/book/en/v2/images/lr-branches-1.png +0 -0
  415. data/spec/support/static/git-scm.com/book/en/v2/images/lr-branches-2.png +0 -0
  416. data/spec/support/static/git-scm.com/book/en/v2/images/maint-01-email.png +0 -0
  417. data/spec/support/static/git-scm.com/book/en/v2/images/maint-02-merge.png +0 -0
  418. data/spec/support/static/git-scm.com/book/en/v2/images/maint-03-email-resp.png +0 -0
  419. data/spec/support/static/git-scm.com/book/en/v2/images/maint-04-target.png +0 -0
  420. data/spec/support/static/git-scm.com/book/en/v2/images/maint-05-mentions.png +0 -0
  421. data/spec/support/static/git-scm.com/book/en/v2/images/maint-06-unsubscribe.png +0 -0
  422. data/spec/support/static/git-scm.com/book/en/v2/images/maint-07-notifications.png +0 -0
  423. data/spec/support/static/git-scm.com/book/en/v2/images/maint-08-notifications-page.png +0 -0
  424. data/spec/support/static/git-scm.com/book/en/v2/images/maint-09-contrib.png +0 -0
  425. data/spec/support/static/git-scm.com/book/en/v2/images/maint-10-default-branch.png +0 -0
  426. data/spec/support/static/git-scm.com/book/en/v2/images/maint-11-transfer.png +0 -0
  427. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-1.png +0 -0
  428. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-2.png +0 -0
  429. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-3.png +0 -0
  430. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-flow.png +0 -0
  431. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-01-example.png +0 -0
  432. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-02-tasks.png +0 -0
  433. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-03-task-summary.png +0 -0
  434. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-04-fenced-code.png +0 -0
  435. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-05-quote.png +0 -0
  436. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-06-emoji-complete.png +0 -0
  437. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-07-emoji.png +0 -0
  438. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-08-drag-drop.png +0 -0
  439. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-01-syntax.png +0 -0
  440. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-02-render.png +0 -0
  441. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-03-closed.png +0 -0
  442. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-1.png +0 -0
  443. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-2.png +0 -0
  444. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-3.png +0 -0
  445. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-4.png +0 -0
  446. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-5.png +0 -0
  447. data/spec/support/static/git-scm.com/book/en/v2/images/new-repo.png +0 -0
  448. data/spec/support/static/git-scm.com/book/en/v2/images/neworg.png +0 -0
  449. data/spec/support/static/git-scm.com/book/en/v2/images/newrepo.png +0 -0
  450. data/spec/support/static/git-scm.com/book/en/v2/images/newrepoform.png +0 -0
  451. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-01-page.png +0 -0
  452. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-02-teams.png +0 -0
  453. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-03-audit.png +0 -0
  454. data/spec/support/static/git-scm.com/book/en/v2/images/p4merge.png +0 -0
  455. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-1.png +0 -0
  456. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-2.png +0 -0
  457. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-3.png +0 -0
  458. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-4.png +0 -0
  459. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-5.png +0 -0
  460. data/spec/support/static/git-scm.com/book/en/v2/images/posh-git.png +0 -0
  461. data/spec/support/static/git-scm.com/book/en/v2/images/pr-01-fail.png +0 -0
  462. data/spec/support/static/git-scm.com/book/en/v2/images/pr-02-merge-fix.png +0 -0
  463. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-1.png +0 -0
  464. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-2.png +0 -0
  465. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-3.png +0 -0
  466. data/spec/support/static/git-scm.com/book/en/v2/images/rebasing-1.png +0 -0
  467. data/spec/support/static/git-scm.com/book/en/v2/images/rebasing-2.png +0 -0
  468. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-1.png +0 -0
  469. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-2.png +0 -0
  470. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-3.png +0 -0
  471. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-4.png +0 -0
  472. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-5.png +0 -0
  473. data/spec/support/static/git-scm.com/book/en/v2/images/replace1.png +0 -0
  474. data/spec/support/static/git-scm.com/book/en/v2/images/replace2.png +0 -0
  475. data/spec/support/static/git-scm.com/book/en/v2/images/replace3.png +0 -0
  476. data/spec/support/static/git-scm.com/book/en/v2/images/replace4.png +0 -0
  477. data/spec/support/static/git-scm.com/book/en/v2/images/replace5.png +0 -0
  478. data/spec/support/static/git-scm.com/book/en/v2/images/reposettingslink.png +0 -0
  479. data/spec/support/static/git-scm.com/book/en/v2/images/rerere1.png +0 -0
  480. data/spec/support/static/git-scm.com/book/en/v2/images/rerere2.png +0 -0
  481. data/spec/support/static/git-scm.com/book/en/v2/images/rerere3.png +0 -0
  482. data/spec/support/static/git-scm.com/book/en/v2/images/reset-checkout.png +0 -0
  483. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex1.png +0 -0
  484. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex2.png +0 -0
  485. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex3.png +0 -0
  486. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex4.png +0 -0
  487. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex5.png +0 -0
  488. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex6.png +0 -0
  489. data/spec/support/static/git-scm.com/book/en/v2/images/reset-hard.png +0 -0
  490. data/spec/support/static/git-scm.com/book/en/v2/images/reset-mixed.png +0 -0
  491. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path1.png +0 -0
  492. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path2.png +0 -0
  493. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path3.png +0 -0
  494. data/spec/support/static/git-scm.com/book/en/v2/images/reset-soft.png +0 -0
  495. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r1.png +0 -0
  496. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r2.png +0 -0
  497. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r3.png +0 -0
  498. data/spec/support/static/git-scm.com/book/en/v2/images/reset-start.png +0 -0
  499. data/spec/support/static/git-scm.com/book/en/v2/images/reset-workflow.png +0 -0
  500. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-01-services.png +0 -0
  501. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-02-email-service.png +0 -0
  502. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-03-webhook.png +0 -0
  503. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-04-webhook-debug.png +0 -0
  504. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-05-access-token.png +0 -0
  505. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-06-comment.png +0 -0
  506. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-07-status.png +0 -0
  507. data/spec/support/static/git-scm.com/book/en/v2/images/signup.png +0 -0
  508. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-1.png +0 -0
  509. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-2.png +0 -0
  510. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-3.png +0 -0
  511. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-4.png +0 -0
  512. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-5.png +0 -0
  513. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-6.png +0 -0
  514. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-7.png +0 -0
  515. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-flow.png +0 -0
  516. data/spec/support/static/git-scm.com/book/en/v2/images/smudge.png +0 -0
  517. data/spec/support/static/git-scm.com/book/en/v2/images/snapshots.png +0 -0
  518. data/spec/support/static/git-scm.com/book/en/v2/images/ssh-keys.png +0 -0
  519. data/spec/support/static/git-scm.com/book/en/v2/images/topic-branches-1.png +0 -0
  520. data/spec/support/static/git-scm.com/book/en/v2/images/topic-branches-2.png +0 -0
  521. data/spec/support/static/git-scm.com/book/en/v2/images/two-branches.png +0 -0
  522. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-reset.png +0 -0
  523. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert.png +0 -0
  524. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert2.png +0 -0
  525. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert3.png +0 -0
  526. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-start.png +0 -0
  527. data/spec/support/static/git-scm.com/book/en/v2/images/your-profile.png +0 -0
  528. data/spec/support/static/git-scm.com/book/en/v2/images/zsh-oh-my.png +0 -0
  529. data/spec/support/static/git-scm.com/book/en/v2/images/zsh-prompt.png +0 -0
  530. data/spec/support/static/git-scm.com/book/en/v2.html +688 -0
  531. data/spec/support/static/git-scm.com/favicon.ico +0 -0
  532. data/spec/support/static/git-scm.com/images/bg/body.jpg +0 -0
  533. data/spec/support/static/git-scm.com/images/bg/isometric-grid.png +0 -0
  534. data/spec/support/static/git-scm.com/images/bg/isometric-grid@2x.png +0 -0
  535. data/spec/support/static/git-scm.com/images/bg/search-header.jpg +0 -0
  536. data/spec/support/static/git-scm.com/images/company-project-logos/android.png +0 -0
  537. data/spec/support/static/git-scm.com/images/company-project-logos/android@2x.png +0 -0
  538. data/spec/support/static/git-scm.com/images/company-project-logos/eclipse.png +0 -0
  539. data/spec/support/static/git-scm.com/images/company-project-logos/eclipse@2x.png +0 -0
  540. data/spec/support/static/git-scm.com/images/company-project-logos/facebook.png +0 -0
  541. data/spec/support/static/git-scm.com/images/company-project-logos/facebook@2x.png +0 -0
  542. data/spec/support/static/git-scm.com/images/company-project-logos/gnome.png +0 -0
  543. data/spec/support/static/git-scm.com/images/company-project-logos/gnome@2x.png +0 -0
  544. data/spec/support/static/git-scm.com/images/company-project-logos/google.png +0 -0
  545. data/spec/support/static/git-scm.com/images/company-project-logos/google@2x.png +0 -0
  546. data/spec/support/static/git-scm.com/images/company-project-logos/kde.png +0 -0
  547. data/spec/support/static/git-scm.com/images/company-project-logos/kde@2x.png +0 -0
  548. data/spec/support/static/git-scm.com/images/company-project-logos/linked-in.png +0 -0
  549. data/spec/support/static/git-scm.com/images/company-project-logos/linked-in@2x.png +0 -0
  550. data/spec/support/static/git-scm.com/images/company-project-logos/linux.png +0 -0
  551. data/spec/support/static/git-scm.com/images/company-project-logos/linux@2x.png +0 -0
  552. data/spec/support/static/git-scm.com/images/company-project-logos/microsoft.png +0 -0
  553. data/spec/support/static/git-scm.com/images/company-project-logos/microsoft@2x.png +0 -0
  554. data/spec/support/static/git-scm.com/images/company-project-logos/netflix.png +0 -0
  555. data/spec/support/static/git-scm.com/images/company-project-logos/netflix@2x.png +0 -0
  556. data/spec/support/static/git-scm.com/images/company-project-logos/perl.png +0 -0
  557. data/spec/support/static/git-scm.com/images/company-project-logos/perl@2x.png +0 -0
  558. data/spec/support/static/git-scm.com/images/company-project-logos/postgresql.png +0 -0
  559. data/spec/support/static/git-scm.com/images/company-project-logos/postgresql@2x.png +0 -0
  560. data/spec/support/static/git-scm.com/images/company-project-logos/qt.png +0 -0
  561. data/spec/support/static/git-scm.com/images/company-project-logos/qt@2x.png +0 -0
  562. data/spec/support/static/git-scm.com/images/company-project-logos/rails.png +0 -0
  563. data/spec/support/static/git-scm.com/images/company-project-logos/rails@2x.png +0 -0
  564. data/spec/support/static/git-scm.com/images/company-project-logos/twitter.png +0 -0
  565. data/spec/support/static/git-scm.com/images/company-project-logos/twitter@2x.png +0 -0
  566. data/spec/support/static/git-scm.com/images/company-project-logos/x.png +0 -0
  567. data/spec/support/static/git-scm.com/images/company-project-logos/x@2x.png +0 -0
  568. data/spec/support/static/git-scm.com/images/epub.png +0 -0
  569. data/spec/support/static/git-scm.com/images/icons/admin-sm.png +0 -0
  570. data/spec/support/static/git-scm.com/images/icons/admin-sm@2x.png +0 -0
  571. data/spec/support/static/git-scm.com/images/icons/apple.png +0 -0
  572. data/spec/support/static/git-scm.com/images/icons/apple@2x.png +0 -0
  573. data/spec/support/static/git-scm.com/images/icons/book.png +0 -0
  574. data/spec/support/static/git-scm.com/images/icons/book@2x.png +0 -0
  575. data/spec/support/static/git-scm.com/images/icons/box.png +0 -0
  576. data/spec/support/static/git-scm.com/images/icons/box@2x.png +0 -0
  577. data/spec/support/static/git-scm.com/images/icons/branch-sm.png +0 -0
  578. data/spec/support/static/git-scm.com/images/icons/branch-sm@2x.png +0 -0
  579. data/spec/support/static/git-scm.com/images/icons/camera-sm.png +0 -0
  580. data/spec/support/static/git-scm.com/images/icons/camera-sm@2x.png +0 -0
  581. data/spec/support/static/git-scm.com/images/icons/chevron-up@2x.png +0 -0
  582. data/spec/support/static/git-scm.com/images/icons/code.png +0 -0
  583. data/spec/support/static/git-scm.com/images/icons/code@2x.png +0 -0
  584. data/spec/support/static/git-scm.com/images/icons/debugging-sm.png +0 -0
  585. data/spec/support/static/git-scm.com/images/icons/debugging-sm@2x.png +0 -0
  586. data/spec/support/static/git-scm.com/images/icons/document.png +0 -0
  587. data/spec/support/static/git-scm.com/images/icons/document@2x.png +0 -0
  588. data/spec/support/static/git-scm.com/images/icons/download.png +0 -0
  589. data/spec/support/static/git-scm.com/images/icons/email-sm.png +0 -0
  590. data/spec/support/static/git-scm.com/images/icons/email-sm@2x.png +0 -0
  591. data/spec/support/static/git-scm.com/images/icons/external-sm.png +0 -0
  592. data/spec/support/static/git-scm.com/images/icons/external-sm@2x.png +0 -0
  593. data/spec/support/static/git-scm.com/images/icons/gui.png +0 -0
  594. data/spec/support/static/git-scm.com/images/icons/gui@2x.png +0 -0
  595. data/spec/support/static/git-scm.com/images/icons/info.png +0 -0
  596. data/spec/support/static/git-scm.com/images/icons/info@2x.png +0 -0
  597. data/spec/support/static/git-scm.com/images/icons/inspection-sm.png +0 -0
  598. data/spec/support/static/git-scm.com/images/icons/inspection-sm@2x.png +0 -0
  599. data/spec/support/static/git-scm.com/images/icons/linux.png +0 -0
  600. data/spec/support/static/git-scm.com/images/icons/linux@2x.png +0 -0
  601. data/spec/support/static/git-scm.com/images/icons/nav-circles.png +0 -0
  602. data/spec/support/static/git-scm.com/images/icons/nav-circles@2x.png +0 -0
  603. data/spec/support/static/git-scm.com/images/icons/patching-sm.png +0 -0
  604. data/spec/support/static/git-scm.com/images/icons/patching-sm@2x.png +0 -0
  605. data/spec/support/static/git-scm.com/images/icons/plumbing-sm.png +0 -0
  606. data/spec/support/static/git-scm.com/images/icons/plumbing-sm@2x.png +0 -0
  607. data/spec/support/static/git-scm.com/images/icons/projects-sm.png +0 -0
  608. data/spec/support/static/git-scm.com/images/icons/projects-sm@2x.png +0 -0
  609. data/spec/support/static/git-scm.com/images/icons/search.png +0 -0
  610. data/spec/support/static/git-scm.com/images/icons/search@2x.png +0 -0
  611. data/spec/support/static/git-scm.com/images/icons/server-admin-sm.png +0 -0
  612. data/spec/support/static/git-scm.com/images/icons/server-admin-sm@2x.png +0 -0
  613. data/spec/support/static/git-scm.com/images/icons/setup-sm.png +0 -0
  614. data/spec/support/static/git-scm.com/images/icons/setup-sm@2x.png +0 -0
  615. data/spec/support/static/git-scm.com/images/icons/sharing-sm.png +0 -0
  616. data/spec/support/static/git-scm.com/images/icons/sharing-sm@2x.png +0 -0
  617. data/spec/support/static/git-scm.com/images/icons/sidebar.png +0 -0
  618. data/spec/support/static/git-scm.com/images/icons/sidebar@2x.png +0 -0
  619. data/spec/support/static/git-scm.com/images/icons/source-code.png +0 -0
  620. data/spec/support/static/git-scm.com/images/icons/source-code@2x.png +0 -0
  621. data/spec/support/static/git-scm.com/images/icons/windows.png +0 -0
  622. data/spec/support/static/git-scm.com/images/icons/windows@2x.png +0 -0
  623. data/spec/support/static/git-scm.com/images/logo@2x.png +0 -0
  624. data/spec/support/static/git-scm.com/images/mobi.png +0 -0
  625. data/spec/support/static/git-scm.com/images/monitor-default.png +0 -0
  626. data/spec/support/static/git-scm.com/images/monitor-default@2x.png +0 -0
  627. data/spec/support/static/git-scm.com/images/monitor-linux.png +0 -0
  628. data/spec/support/static/git-scm.com/images/monitor-linux@2x.png +0 -0
  629. data/spec/support/static/git-scm.com/images/monitor-mac.png +0 -0
  630. data/spec/support/static/git-scm.com/images/monitor-mac@2x.png +0 -0
  631. data/spec/support/static/git-scm.com/images/monitor-windows.png +0 -0
  632. data/spec/support/static/git-scm.com/images/monitor-windows@2x.png +0 -0
  633. data/spec/support/static/git-scm.com/images/pdf.png +0 -0
  634. data/spec/support/static/git-scm.com/images/progit2.png +0 -0
  635. data/spec/support/static/git-scm.com/images/sidebar-divider.png +0 -0
  636. data/spec/support/static/git-scm.com/images/sidebar-divider@2x.png +0 -0
  637. data/spec/support/static/git-scm.com/robots.txt +0 -0
  638. data/spec/task_spec.rb +7 -0
  639. data/wayfarer.gemspec +1 -1
  640. metadata +603 -8
  641. data/lib/wayfarer/middleware/worker.rb +0 -30
  642. data/lib/wayfarer/redis/.#barrier.rb +0 -1
  643. data/spec/middleware/worker_spec.rb +0 -117
@@ -0,0 +1 @@
1
+ /*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main #logo-license,#main .bottom-nav{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main #logo-license p,#main .bottom-nav p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #reference-version a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}p{margin:0 0 11px;font-size:14px;line-height:22px}p small{font-size:12px;color:#9a9994}a{color:#0388a6;text-decoration:none;transition-duration:0.3s;transition-property:color}h1,h2,h3,h4,h5,h6{margin:0;font-weight:normal;color:#4e443c;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#9a9994}h1{margin-bottom:0.4em;font-size:36px;line-height:44px}h1 small{font-size:18px}h2{margin-top:20px;font-size:18px;font-weight:bold;line-height:44px;color:#f14e32}h2 small{font-size:18px}.callout h2:first-child,#book-container h2:first-child,.bottom-nav h2:first-child,#logo-license h2:first-child{margin-top:0}h3{line-height:33px;font-size:16px;font-weight:bold}h3 small{font-size:14px}h4,h5,h6{line-height:22px}h4{font-size:14px;font-weight:bold}h4 small{font-size:12px}aside h4{margin-bottom:1em;color:#9a9994;line-height:1.4}h5{font-size:12px}h6{font-size:11px;color:#9a9994;text-transform:uppercase}ul,ol{padding:0;margin:0 0 11px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}ul{list-style:disc}ol{list-style:decimal}li{line-height:22px}ul.unstyled,ul.stackoverflow,ul.content-list,ul.books-list,ul.video-thumbnails,ul.gui-thumbnails,#companies-projects ul,#front-nav ul,#search-results table ul,ul#download-next-steps,ul.section-nav-container,ul#book-chapters,ul#reference-version,ol.unstyled,ol#about-nav,ol.content-list,ol.book-toc,ol.reference-previous-versions,ol.full-search-results,ol#download-next-steps,ol.section-nav-container,ol#book-chapters,ol#reference-version{margin-left:0;list-style:none}ul.bullets li{padding-bottom:10px}dl{margin-bottom:22px}dt,dd{line-height:22px}dt{font-weight:bold;line-height:21px}dd{margin-left:11px}.dl-horizontal dt{float:left;width:120px;clear:left;text-align:right}.dl-horizontal dd{margin-left:130px}hr{margin:22px 0;border:0;border-top:1px solid #d8d7cf}strong{font-weight:bold}em{font-style:italic}.muted{color:#9a9994}abbr[title]{border-bottom:1px dotted #ddd;cursor:help}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 22px;border-left:5px solid #d8d7cf}blockquote p{margin-bottom:0}blockquote small{display:block;line-height:22px;color:#9a9994}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #d8d7cf;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}code,#documentation #main p tt{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;display:block;padding:10px 15px 13px;margin-bottom:1em;overflow:auto;font-family:Courier, monospace;line-height:18px;color:#f14e32;background-color:#fff;border:solid 1px #efeee6}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:22px;font-style:normal;line-height:22px}table th{font-weight:bold}table.data{margin-bottom:24px}table.data th,table.data td{padding:2px 0;border-bottom:solid 1px #efeeeb}table td.sweet{font-weight:bold;color:#25b028}table td.compare{font-weight:bold;color:#f14e32}.light{color:#9a9994}small{font-size:100%}cite{font-style:normal}a.subtle-button{display:inline-block;padding:3px 20px;font-size:12px;text-align:center;background-image:linear-gradient(#f1f1e9, #eae9e1);border-top:solid 1px #dedcd4;border-right:solid 1px #dedcd4;border-bottom:solid 1px #cdcbc4;border-left:solid 1px #dedcd4;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 #f1f1e9;-moz-box-shadow:0 1px 0 #f1f1e9;box-shadow:0 1px 0 #f1f1e9;transition-duration:0.3s;transition-property:background-image}a.subtle-button:hover{color:#0388a6;background-image:linear-gradient(#edede3, #e6e5db)}a.subtle-button.selected{background-image:linear-gradient(#d7d7c1, #cbc9b4)}a#gui-os-filter{display:none;margin-top:15px}a#gui-os-filter.visible{display:inline-block}div.more{display:none}.highlight{background-color:#eee0b5;padding:2px}.fixed{font-family:Courier, monospace}.text-center{text-align:center}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main .bottom-nav,#main #logo-license{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main .bottom-nav p,#main #logo-license p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #reference-version a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}#more-downloads.callout .column-left{width:47%}#more-downloads.callout .column-right{width:45%}#more-downloads.callout p{padding-bottom:1em;line-height:1.4}#download-next-steps{padding-top:24px}#download-next-steps:before{display:table;content:""}#download-next-steps:after{display:table;clear:both;content:""}#download-next-steps li{display:block;float:left;width:200px;margin-bottom:20px}#download-next-steps li+li{margin-left:20px}#download-next-steps a{display:block;color:#4e443c;text-align:center;background-repeat:no-repeat;background-position:0 0;transition-duration:0.3s;transition-property:color}#download-next-steps a img{display:block;margin:0 auto 10px;opacity:0.9;transition-duration:0.3s;transition-property:opacity;image-rendering:-webkit-optimize-contrast}#download-next-steps a h3{font-size:18px;font-weight:bold;color:#f14e32}#download-next-steps a p{font-size:13px;line-height:17.6px}#download-next-steps a:hover img{opacity:1}#download-next-steps a:hover h3{color:#ef391a}#os-filter-count{position:relative;top:8px;left:12px;display:none;color:#f14e32}.downloading .hide{display:none}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main .bottom-nav,#main #logo-license{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main .bottom-nav p,#main #logo-license p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #reference-version a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column #download-next-steps a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}#search-results{position:absolute;top:2px;right:-8px;z-index:900;display:none;width:384px;background:#398a94 url("../images/bg/search-header.jpg") 0 1px repeat-x;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 7px rgba(0,0,0,0.25);-moz-box-shadow:0 0 7px rgba(0,0,0,0.25);box-shadow:0 0 7px rgba(0,0,0,0.25);border-bottom:solid 1px #d8d7cf}#search-results header{height:44px;padding:0;margin:0;text-indent:-9999px;border:solid 1px #366769;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px}#search-results table{width:100%;line-height:1;background-color:#fff;-webkit-border-bottom-right-radius:3px;-moz-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-bottom-left-radius:3px;border-bottom-left-radius:3px}#search-results table td{border-top:solid 1px #cfddde}#search-results table td.category{width:67px;padding:10px 12px 0 0;font-size:11px;color:#009099;text-align:right;vertical-align:top;background-color:#f5fbfb;border-right:solid 1px #cfddde;opacity:0.75}#search-results table td.matches{padding:0 !important;font-size:12px;font-weight:bold}#search-results table td.matches a{display:block;padding:5px 12px;margin-bottom:0;color:#4e443c;transition-duration:0s}#search-results table td.matches a:hover,#search-results table td.matches a.highlight{color:#fff;text-shadow:0 1px 0 rgba(0,0,0,0.25);background:#55bec4;background-image:linear-gradient(#55bec4, #54b2b7)}#search-results table td.matches a:hover span,#search-results table td.matches a.highlight span{color:#fff}#search-results table ul{margin-bottom:0}#search-results table tr.show-all td{border-top:none}ol.full-search-results li{margin-bottom:2em}ol.full-search-results li:last-child{margin-bottom:0}ol.full-search-results h3{line-height:1.4;padding-bottom:0;margin-bottom:0}ol.full-search-results span.relevancy{float:right;padding-left:5px;margin-left:30px}ol.full-search-results span.relevancy img{position:relative;top:-2px}ol.full-search-results a.url{display:block;margin-bottom:0.4em;font-size:12px;color:#9a9994}ol.full-search-results a.url:hover{color:#5a5955}.callout.top-matches,#book-container.top-matches,.top-matches.bottom-nav,#logo-license.top-matches{padding-top:1em !important;margin-bottom:2em !important}@media (max-width: 940px){#search-results{transform:translateX(-50%);left:50%;top:unset;width:98%}}@media (max-width: 640px){#search-results{margin-top:4px}}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main .bottom-nav,#main #logo-license{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main .bottom-nav p,#main #logo-license p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #reference-version a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}#front-content{overflow:visible}#front-content:before{display:table;content:""}#front-content:after{display:table;clear:both;content:""}#front-content #front-navigation{float:left;width:618px;margin-bottom:24px;border-right:solid 1px #d8d7cf}#front-nav:before{display:table;content:""}#front-nav:after{display:table;clear:both;content:""}#front-nav ul{padding-top:24px}#front-nav ul li{display:block;float:left;width:280px;margin-bottom:20px}#front-nav ul li#nav-about,#front-nav ul li#nav-downloads{margin-right:30px}#front-nav ul li#nav-about,#front-nav ul li#nav-documentation{margin-bottom:40px}#front-nav a{display:block;height:86px;padding-left:90px;color:#4e443c;background-repeat:no-repeat;background-position:0 0;transition-duration:0.3s;transition-property:color}#front-nav a img{float:left;margin-right:-90px;margin-left:-90px;opacity:0.9;transition-duration:0.3s;transition-property:opacity}#front-nav a h3{font-size:18px;font-weight:bold;color:#f14e32}#front-nav a p{font-size:13px;line-height:17.6px}#front-nav a:hover img{opacity:1}#front-nav a:hover h3{color:#ef391a}#front-book{float:left;width:590px;padding-top:20px;border-top:solid 1px #d8d7cf}#front-book img{float:left;margin-right:20px}#front-book p{margin-top:16px}#front-downloads{float:right;width:313px;position:relative}#front-downloads .monitor{position:absolute;top:0;right:-12px}#front-downloads table{position:absolute;top:271px;left:24px}#front-downloads table td{padding:8px 20px 6px 0;min-width:145px}#front-downloads table a{font-weight:bold}.monitor{background:transparent url("../images/monitor-default.png") top right no-repeat;background-size:313px 271px;width:273px;height:226px;padding-top:45px;padding-left:40px;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,0.2)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){.monitor{background:transparent url("../images/monitor-default@2x.png") top right no-repeat;background-size:313px 271px}}.monitor h4{font-weight:normal;color:#fff;font-size:16px}.monitor span.version{display:block;margin-bottom:6px;font-size:28px;font-weight:bold}.monitor a{color:#eee;font-size:12px;text-decoration:underline}.monitor span.release-date{font-size:12px}.monitor a.button{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 0 #148a92;-moz-box-shadow:0 1px 0 #148a92;box-shadow:0 1px 0 #148a92;display:block;width:224px;padding:5px 0;margin-top:10px;font-size:16px;color:#fff;text-align:center;background-image:linear-gradient(#1c868c, #186368);border-top:solid 1px #085e64;border-right:solid 1px #1f6367;border-bottom:solid 1px #134143;border-left:solid 1px #1f6367;transition-duration:0.3s;transition-property:background-image;text-decoration:none}.monitor a.button:hover{background-image:linear-gradient(#1a7e84, #165b60)}.monitor.mac{background:transparent url("../images/monitor-mac.png") top right no-repeat;background-size:313px 271px;width:273px;height:235px;padding-top:36px;padding-left:40px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){.monitor.mac{background:transparent url("../images/monitor-mac@2x.png") top right no-repeat;background-size:313px 271px}}.monitor.windows{background:transparent url("../images/monitor-windows.png") top right no-repeat;background-size:313px 271px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){.monitor.windows{background:transparent url("../images/monitor-windows@2x.png") top right no-repeat;background-size:313px 271px}}.monitor.linux{background:transparent url("../images/monitor-linux.png") top right no-repeat;background-size:313px 271px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){.monitor.linux{background:transparent url("../images/monitor-linux@2x.png") top right no-repeat;background-size:313px 271px}}#companies-projects{padding-top:20px;clear:both;border-top:solid 1px #d8d7cf}#companies-projects ul li{display:block;float:left;width:108px;height:65px;margin:0 4px 25px 5px}#companies-projects ul a{display:block;width:108px;height:65px;text-indent:-9999px;background-repeat:no-repeat;background-position:0 0;opacity:0.85;transition-duration:0.3s;transition-property:opacity}#companies-projects ul a:hover{opacity:1}#companies-projects ul a.facebook{background-image:url("../images/company-project-logos/facebook.png")}#companies-projects ul a.google{background:transparent url("../images/company-project-logos/google.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.google{background:transparent url("../images/company-project-logos/google@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.twitter{background:transparent url("../images/company-project-logos/twitter.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.twitter{background:transparent url("../images/company-project-logos/twitter@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.microsoft{background:transparent url("../images/company-project-logos/microsoft.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.microsoft{background:transparent url("../images/company-project-logos/microsoft@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.netflix{background:transparent url("../images/company-project-logos/netflix.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.netflix{background:transparent url("../images/company-project-logos/netflix@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.linked-in{background:transparent url("../images/company-project-logos/linked-in.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.linked-in{background:transparent url("../images/company-project-logos/linked-in@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.linux{background:transparent url("../images/company-project-logos/linux.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.linux{background:transparent url("../images/company-project-logos/linux@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.perl{background:transparent url("../images/company-project-logos/perl.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.perl{background:transparent url("../images/company-project-logos/perl@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.postgresql{background:transparent url("../images/company-project-logos/postgresql.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.postgresql{background:transparent url("../images/company-project-logos/postgresql@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.facebook{background:transparent url("../images/company-project-logos/facebook.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.facebook{background:transparent url("../images/company-project-logos/facebook@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.android{background:transparent url("../images/company-project-logos/android.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.android{background:transparent url("../images/company-project-logos/android@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.rails{background:transparent url("../images/company-project-logos/rails.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.rails{background:transparent url("../images/company-project-logos/rails@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.qt{background:transparent url("../images/company-project-logos/qt.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.qt{background:transparent url("../images/company-project-logos/qt@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.gnome{background:transparent url("../images/company-project-logos/gnome.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.gnome{background:transparent url("../images/company-project-logos/gnome@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.eclipse{background:transparent url("../images/company-project-logos/eclipse.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.eclipse{background:transparent url("../images/company-project-logos/eclipse@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.kde{background:transparent url("../images/company-project-logos/kde.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.kde{background:transparent url("../images/company-project-logos/kde@2x.png") top right no-repeat;background-size:108px 65px}}#companies-projects ul a.x{background:transparent url("../images/company-project-logos/x.png") top right no-repeat;background-size:108px 65px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#companies-projects ul a.x{background:transparent url("../images/company-project-logos/x@2x.png") top right no-repeat;background-size:108px 65px}}a.icon{display:inline-block;height:30px;padding-left:30px;line-height:36px}a.icon.gui{background:transparent url("../images/icons/gui.png") 6px 3px no-repeat;background-size:18px 24px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){a.icon.gui{background:transparent url("../images/icons/gui@2x.png") 6px 3px no-repeat;background-size:18px 24px}}a.icon.older-releases{background:transparent url("../images/icons/box.png") 0 6px no-repeat;background-size:22px 20px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){a.icon.older-releases{background:transparent url("../images/icons/box@2x.png") 0 6px no-repeat;background-size:22px 20px}}a.icon.windows{background:transparent url("../images/icons/windows.png") 0 6px no-repeat;background-size:24px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){a.icon.windows{background:transparent url("../images/icons/windows@2x.png") 0 6px no-repeat;background-size:24px 21px}}a.icon.mac{background:transparent url("../images/icons/apple.png") 5px 4px no-repeat;background-size:17px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){a.icon.mac{background:transparent url("../images/icons/apple@2x.png") 5px 4px no-repeat;background-size:17px 21px}}a.icon.linux{background:transparent url("../images/icons/linux.png") 6px 6px no-repeat;background-size:17px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){a.icon.linux{background:transparent url("../images/icons/linux@2x.png") 6px 6px no-repeat;background-size:17px 21px}}a.icon.source{background:transparent url("../images/icons/source-code.png") 0 6px no-repeat;background-size:25px 20px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){a.icon.source{background:transparent url("../images/icons/source-code@2x.png") 0 6px no-repeat;background-size:25px 20px}}@media (max-width: 940px){#front-content{display:flex}#front-content #front-navigation{width:50%}#front-content #front-navigation #front-nav ul{padding:0 1rem 0 0}#front-content #front-navigation #front-nav ul li{margin-bottom:1rem !important;margin-right:0 !important}#front-content #front-navigation #front-book{width:unset}#front-content #front-downloads{width:50%}#front-content #front-downloads .monitor{transform:translateX(-50%);left:50%}#front-content #front-downloads table{transform:translateX(-50%);left:50%}#front-content #front-downloads table tbody,#front-content #front-downloads table tr{display:flex;flex-direction:column}#front-content #front-downloads table td{margin-bottom:1rem}#front-content #front-downloads table td a{padding-left:2.3rem}#companies-projects ul{display:flex;flex-wrap:wrap;justify-content:center}#companies-projects li{margin:0.7rem 0.4rem}}@media (max-width: 640px){#front-content{flex-direction:column-reverse}#front-content #front-navigation,#front-content #front-downloads{width:100%;border-right:none}#front-content #front-navigation #front-nav ul{padding:0 1rem}#front-content #front-navigation #front-book{display:flex;justify-content:center;align-items:center}#front-content #front-downloads{border-bottom:1px solid #d8d7cf;margin-bottom:2rem;padding-bottom:1rem}#front-content #front-downloads .monitor,#front-content #front-downloads table{position:relative}#front-content #front-downloads table{top:0}}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main .bottom-nav,#main #logo-license{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main .bottom-nav p,#main #logo-license p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #reference-version a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}hr.sidebar{width:218px;height:12px;margin-bottom:2em;border:0 !important;background:transparent url("../images/sidebar-divider.png") top right no-repeat;background-size:218px 12px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){hr.sidebar{background:transparent url("../images/sidebar-divider@2x.png") top right no-repeat;background-size:218px 12px}}aside.sidebar{font-size:13px !important;line-height:16.5px}aside.sidebar p{font-size:13px !important;line-height:16.5px}aside.sidebar .callout,aside.sidebar #book-container,aside.sidebar .bottom-nav,aside.sidebar #logo-license{padding:20px;color:#887668;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px}aside.sidebar .callout p,aside.sidebar #book-container p,aside.sidebar .bottom-nav p,aside.sidebar #logo-license p{margin-bottom:0}aside.sidebar.active{background-color:#efefe7;z-index:305;left:0;box-shadow:6px 2px 8px 0px rgba(28,28,28,0.1);border:thin solid #ddd;border-radius:0 5px 5px 0;transform:translateX(0%)}.sidebar-btn{display:none}@media (max-width: 940px){.sidebar-btn{background:transparent url("../images/icons/sidebar.png") left center no-repeat;background-size:24px 24px;-webkit-border-top-right-radius:5px;-moz-border-top-right-radius:5px;border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;-moz-border-bottom-right-radius:5px;border-bottom-right-radius:5px;background-color:#333333 !important;display:block;position:fixed;padding:2rem 0.4rem;z-index:1;border:none;left:0;width:1.6rem}}@media only screen and (max-width: 940px) and (-webkit-min-device-pixel-ratio: 2),only screen and (max-width: 940px) and (min--moz-device-pixel-ratio: 2),only screen and (max-width: 940px) and (-o-min-device-pixel-ratio: 2/1){.sidebar-btn{background:transparent url("../images/icons/sidebar@2x.png") left center no-repeat;background-size:24px 24px}}@media (max-width: 940px){.sidebar-btn:focus+.sidebar{background-color:#efefe7;z-index:305;left:0;box-shadow:6px 2px 8px 0px rgba(28,28,28,0.1);border:thin solid #ddd;border-radius:0 5px 5px 0;transform:translateX(0%)}aside.sidebar{position:fixed;top:1em;transform:translateX(-105.5%);transition:transform 0.3s, background-color 0.3s;padding:20px;height:90vh;overflow-y:scroll;z-index:1001 !important}}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main .bottom-nav,#main #logo-license{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main .bottom-nav p,#main #logo-license p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #reference-version a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}.topics h3,.topics ul li{padding-left:23px}h3.setup{background:transparent url("../images/icons/setup-sm.png") 0 50% no-repeat;background-size:17px 17px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.setup{background:transparent url("../images/icons/setup-sm@2x.png") 0 50% no-repeat;background-size:17px 17px}}h3.projects{background:transparent url("../images/icons/projects-sm.png") 0 50% no-repeat;background-size:17px 13px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.projects{background:transparent url("../images/icons/projects-sm@2x.png") 0 50% no-repeat;background-size:17px 13px}}h3.snapshotting{background:transparent url("../images/icons/camera-sm.png") 0 50% no-repeat;background-size:17px 12px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.snapshotting{background:transparent url("../images/icons/camera-sm@2x.png") 0 50% no-repeat;background-size:17px 12px}}h3.branching{background:transparent url("../images/icons/branch-sm.png") 4px 50% no-repeat;background-size:12px 15px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.branching{background:transparent url("../images/icons/branch-sm@2x.png") 4px 50% no-repeat;background-size:12px 15px}}h3.sharing{background:transparent url("../images/icons/sharing-sm.png") 2px 50% no-repeat;background-size:14px 14px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.sharing{background:transparent url("../images/icons/sharing-sm@2x.png") 2px 50% no-repeat;background-size:14px 14px}}h3.inspection{background:transparent url("../images/icons/inspection-sm.png") 1px 50% no-repeat;background-size:14px 14px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.inspection{background:transparent url("../images/icons/inspection-sm@2x.png") 1px 50% no-repeat;background-size:14px 14px}}h3.patching{background:transparent url("../images/icons/patching-sm.png") 1px 50% no-repeat;background-size:18px 11px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.patching{background:transparent url("../images/icons/patching-sm@2x.png") 1px 50% no-repeat;background-size:18px 11px}}h3.debugging{background:transparent url("../images/icons/debugging-sm.png") 1px 50% no-repeat;background-size:17px 16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.debugging{background:transparent url("../images/icons/debugging-sm@2x.png") 1px 50% no-repeat;background-size:17px 16px}}h3.email{background:transparent url("../images/icons/email-sm.png") 1px 50% no-repeat;background-size:17px 12px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.email{background:transparent url("../images/icons/email-sm@2x.png") 1px 50% no-repeat;background-size:17px 12px}}h3.external{background:transparent url("../images/icons/external-sm.png") 0 50% no-repeat;background-size:17px 15px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.external{background:transparent url("../images/icons/external-sm@2x.png") 0 50% no-repeat;background-size:17px 15px}}h3.admin{background:transparent url("../images/icons/admin-sm.png") 2px 50% no-repeat;background-size:16px 16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.admin{background:transparent url("../images/icons/admin-sm@2x.png") 2px 50% no-repeat;background-size:16px 16px}}h3.server-admin{background:transparent url("../images/icons/server-admin-sm.png") 2px 50% no-repeat;background-size:15px 15px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.server-admin{background:transparent url("../images/icons/server-admin-sm@2x.png") 2px 50% no-repeat;background-size:15px 15px}}h3.plumbing{background:transparent url("../images/icons/plumbing-sm.png") 2px 50% no-repeat;background-size:17px 14px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){h3.plumbing{background:transparent url("../images/icons/plumbing-sm@2x.png") 2px 50% no-repeat;background-size:17px 14px}}#content h1>a.anchor,#content h2>a.anchor,#content h3>a.anchor,#content h4>a.anchor,#content dt.hdlist1>a.anchor{position:absolute;display:block;width:1.01em;padding-left:0.5em;margin-left:-1.5em;font-weight:lighter;text-align:center;visibility:hidden}#content h1>a.anchor:before,#content h2>a.anchor:before,#content h3>a.anchor:before,#content h4>a.anchor:before,#content dt.hdlist1>a.anchor:before{display:block;font-size:0.9em;content:"\00A7"}#content h1:hover>a.anchor,#content h2:hover>a.anchor,#content h3:hover>a.anchor,#content h4:hover>a.anchor,#content dt.hdlist1:hover>a.anchor{visibility:visible}#reference-version a{top:-5px}#reference-version a#reference-versions-trigger{float:left;margin-right:6px}#reference-version a#reference-topics-trigger{float:right}#reference-version a#reference-languages-trigger{float:right}#previous-versions-dropdown{width:330px;padding-top:6px}#previous-versions-dropdown header{padding:0 12px;margin:0;font-size:12px;font-weight:normal}#previous-versions-dropdown footer{padding:4px 12px;margin-top:0;font-size:11px;font-weight:normal;color:#4e443c;background-color:#eae9e0;-webkit-border-bottom-left-radius:3px;-moz-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-bottom-right-radius:3px;border-bottom-right-radius:3px}#previous-versions-dropdown footer p{all:unset;display:block;color:#9a9994}.windows.chrome #previous-versions-dropdown,.windows.ie8 #previous-versions-dropdown{width:370px}#l10n-versions-dropdown{width:250px;right:12px;padding:12px;font-weight:normal;line-height:1}#l10n-versions-dropdown header{padding:0 12px;margin:0;font-size:12px;font-weight:normal}#l10n-versions-dropdown footer{padding:4px 12px;margin-top:0;font-size:11px;font-weight:normal}#l10n-versions-dropdown footer a{padding:4px;margin-top:0;color:blue}#topics-dropdown{width:650px;right:12px;padding:12px;font-weight:normal;line-height:1}#topics-dropdown ul{margin-bottom:10px}#topics-dropdown ul:last-child{margin-bottom:0}#topics-dropdown li{padding-left:23px;line-height:17.6px}#topics-dropdown h3{min-height:20px;padding-top:4px;padding-left:23px;margin-bottom:8px;font-size:13px;line-height:15px}#topics-dropdown a{font-weight:normal;padding:0}#topics-dropdown a.active{font-weight:bold}ol.reference-previous-versions{margin-top:3px;margin-bottom:0;border-top:dotted 1px #e3e3e1}ol.reference-previous-versions li a{top:0 !important;display:block;padding:2px 12px;border-bottom:dotted 1px #e3e3e1}ol.reference-previous-versions li a:before{display:table;content:""}ol.reference-previous-versions li a:after{display:table;clear:both;content:""}ol.reference-previous-versions li a:hover{background-color:#edf7f8}ol.reference-previous-versions li a.more{font-size:11px}ol.reference-previous-versions li a span.version{float:left;min-width:40px}ol.reference-previous-versions li a span.diff{padding-right:16px;padding-left:12px}ol.reference-previous-versions li a span.diff img{display:inline-block;margin-right:-1px}ol.reference-previous-versions li a em.date{float:right;margin-right:150px;font-size:11px;font-style:normal;font-weight:normal;color:#9a9994}ol.reference-previous-versions li a.more{border-bottom:0}ol.reference-previous-versions li.no-change{position:absolute;right:0;z-index:10;width:auto;padding:0;margin-top:-6px;font-size:11px;font-weight:normal;line-height:1.2;color:#9a9994;text-align:center}ol.reference-previous-versions li.no-change:before{display:table;content:""}ol.reference-previous-versions li.no-change:after{display:table;clear:both;content:""}ol.reference-previous-versions li.no-change span{float:left;padding:0 5px;-webkit-border-top-left-radius:10px;-moz-border-top-left-radius:10px;border-top-left-radius:10px;-webkit-border-bottom-left-radius:10px;-moz-border-bottom-left-radius:10px;border-bottom-left-radius:10px;font-size:10px;font-style:italic;background-color:#f5f5f3}.callout.quickref,#book-container.quickref,.quickref.bottom-nav,#logo-license.quickref{background:transparent url("../images/icons/document.png") 14px 7px no-repeat;background-size:15px 21px;padding-left:36px !important}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){.callout.quickref,#book-container.quickref,.quickref.bottom-nav,#logo-license.quickref{background:transparent url("../images/icons/document@2x.png") 14px 7px no-repeat;background-size:15px 21px}}.callout.quickref a,#book-container.quickref a,.quickref.bottom-nav a,#logo-license.quickref a{font-weight:bold}.callout.all-commands,#book-container.all-commands,.all-commands.bottom-nav,#logo-license.all-commands{background:transparent url("../images/icons/book.png") 14px 7px no-repeat;background-size:15px 21px;padding-left:36px !important}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){.callout.all-commands,#book-container.all-commands,.all-commands.bottom-nav,#logo-license.all-commands{background:transparent url("../images/icons/book@2x.png") 14px 7px no-repeat;background-size:15px 21px}}.callout.all-commands a,#book-container.all-commands a,.all-commands.bottom-nav a,#logo-license.all-commands a{font-weight:bold}.callout.ref-manual,#book-container.ref-manual,.ref-manual.bottom-nav,#logo-license.ref-manual{background:transparent url("../images/icons/book.png") 24px 20px no-repeat;background-size:54px 72px;padding:20px 30px 20px 100px !important;background-color:#e9e8e0}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){.callout.ref-manual,#book-container.ref-manual,.ref-manual.bottom-nav,#logo-license.ref-manual{background:transparent url("../images/icons/book@2x.png") 24px 20px no-repeat;background-size:54px 72px}}.callout.ref-manual iframe,#book-container.ref-manual iframe,.ref-manual.bottom-nav iframe,#logo-license.ref-manual iframe{max-width:100%}.callout.ref-manual h3,#book-container.ref-manual h3,.ref-manual.bottom-nav h3,#logo-license.ref-manual h3{font-size:18px}.callout.ref-manual p,#book-container.ref-manual p,.ref-manual.bottom-nav p,#logo-license.ref-manual p{font-size:15px;line-height:1.3em}p.quickref{background:transparent url("../images/icons/document.png") 0 0 no-repeat;background-size:15px 21px;padding-left:22px !important;margin-top:-0.4em;margin-bottom:1em}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){p.quickref{background:transparent url("../images/icons/document@2x.png") 0 0 no-repeat;background-size:15px 21px}}p.quickref a{font-weight:bold}.reference-menu h3{padding-left:26px}.reference-menu ul{padding-left:28px}#video-container{padding:10px 10px 2px;margin-bottom:20px;background-color:#e9e8e0}code.command,#documentation #main p tt.command{user-select:all}code.command::before,#documentation #main p tt.command::before{content:'$ ';font-weight:bold}@media (max-width: 940px){#video-container iframe{width:100%}}@media (max-width: 640px){#video-container iframe{height:auto}}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main .bottom-nav,#main #logo-license{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main .bottom-nav p,#main #logo-license p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #reference-version a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}\::-webkit-input-placeholder{color:#9a9994 !important}input:-moz-placeholder{color:#9a9994 !important}input.inactive{color:#9a9994 !important}input.active{color:#4e443c !important}input,textarea{font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;outline:none}.windows.chrome input,.windows.chrome textarea,.windows.ie8 input,.windows.chrome textarea{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}form#search{position:absolute;top:10px;right:0;z-index:1000;width:262px;padding-left:32px;background:transparent url("../images/icons/search.png") 10px 50% no-repeat;background-size:17px 17px;background-color:#fcfcfa !important;border:solid 1px #ceccc5;-webkit-border-radius:20px;-moz-border-radius:20px;-ms-border-radius:20px;border-radius:20px;-webkit-box-shadow:inset 0 1px 4px #ddd;-moz-box-shadow:inset 0 1px 4px #ddd;box-shadow:inset 0 1px 4px #ddd}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){form#search{background:transparent url("../images/icons/search@2x.png") 10px 50% no-repeat;background-size:17px 17px}}form#search input{-webkit-border-radius:20px;-moz-border-radius:20px;-ms-border-radius:20px;border-radius:20px;width:100%;height:20px;margin-top:4px;margin-bottom:2px;line-height:1em;color:#4e443c;background-color:transparent;border:0}form#search.focus{border-color:#007175;background-color:#fff}@media (max-width: 940px){form#search{transform:translateX(-50%);left:50%;margin-top:7px;top:unset;width:92%}}@media (max-width: 640px){form#search{width:84%}form#search #search-text{padding:0.3rem 0.1rem}}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main .bottom-nav,#main #logo-license{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main .bottom-nav p,#main #logo-license p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #reference-version a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}#documentation #main p em{font-family:Courier, monospace !important;font-style:normal;font-weight:bold;color:#4e443c}#documentation #main p tt{display:inline;padding:1px}#documentation #main p.nutshell{padding:1em;background-color:#e8e7dd}#documentation #main .literalblock{margin-bottom:15px}#documentation #main .literalblock .content pre tt{display:block;padding:2px;font-family:Courier, monospace !important;background-color:#eee0b5}#documentation #main dt.hdlist1{font-family:Courier, monospace !important}#documentation #main div.verseblock pre.content{padding:1em;margin-bottom:1em;font-family:Courier, monospace !important;line-height:18px;color:#4e443c;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#e8e7dd}#documentation #main div.verseblock pre.content em{font-weight:bold;font-style:normal}#documentation #main .quoteblock{padding-left:1em;margin-left:1em;border-left:5px solid #d8d7cf}#documentation #main .quoteblock .content .paragraph p{color:#9a9994}#documentation #main .admonitionblock table{margin-bottom:1em}#documentation #main .admonitionblock table td{padding:0 1em}#documentation #main .admonitionblock table td .title{font-weight:bold;color:#f14e32}#documentation #main .admonitionblock table td:first-child{border-right:solid 2px #d8d7cf}#documentation #main #footer{color:#9a9994}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main #book-container,#main .bottom-nav,#main #logo-license{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main #book-container p,#main .bottom-nav p,#main #logo-license p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,#book-container.downloading,.downloading.bottom-nav,#logo-license.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,#book-container.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,#book-container.downloading p,.downloading.bottom-nav p,#logo-license.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,#book-container.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#book-chapters,#reference-version{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#book-chapters .light,#reference-version .light{font-weight:normal}.section-nav-container a,#book-chapters a,#reference-version a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#book-chapters .dropdown-panel,#reference-version .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #book-chapters a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #reference-version a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}.ebooks img{padding:5px}#book-container{position:relative;padding-top:20px !important;padding-bottom:20px !important;background-color:transparent !important;overflow:hidden;border:solid 1px #efeeeb}#book-intro{position:absolute;top:40px;left:50px;width:200px;font-size:13px;text-align:center}#book-intro p{padding-bottom:20px}#book-intro img.creative-commons{display:block;margin:10px auto}#book-intro .license{font-size:11px;line-height:1.3;color:#9a9994}#book-intro a#open-book{display:block;margin-top:10px;margin-bottom:10px;font-weight:bold}#about-book{background:transparent url("../images/icons/info.png") 40px 1px no-repeat;background-size:18px 17px;display:none;padding-left:22px;font-size:12px;color:#9a9994;text-align:center;text-indent:40px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#about-book{background:transparent url("../images/icons/info@2x.png") 40px 1px no-repeat;background-size:18px 17px}}#about-book.visible{display:inline-block}ol.book-toc{margin:30px 36px}ol.book-toc li.chapter{margin-bottom:0.6em}ol.book-toc ol{list-style:none}ol.book-toc h2{color:#4e443c}ol.book-toc a{padding-left:4px}.book code,.book #documentation #main p tt,#documentation #main p .book tt{display:inline;padding:1px}.book pre code,.book pre #documentation #main p tt,#documentation #main p .book pre tt{display:block;overflow:auto}.book table.ref{width:100%;margin-bottom:10px}.book table.ref tr{border:1px solid;border-color:#777}.book table.ref th,td{padding:5px}.book table.ref th:nth-child(1),td:nth-child(1){width:25%;padding:5px}#book-chapters #chapters-dropdown{top:30px;padding:12px}#book-chapters ol{margin:0}#book-chapters ol li{line-height:17.6px}#book-chapters ol li h2{margin:14px 0;font-size:14px;line-height:normal}#book-chapters ol li ol{margin-left:0}#book-chapters ol li ol a{font-weight:normal}#book-chapters ol li ol a.active{font-weight:bold;color:#f14e32}.switch a{color:#aaa}.book-wrapper{float:right;margin:-20px 40px 0 40px}@media (min-width: 640px){.book-toc{width:60%}.book-wrapper{position:sticky;top:2rem}}@media (max-width: 480px){.book-wrapper{margin-right:0}}.edition2 *{box-sizing:border-box}.edition2 body{padding-top:80px;margin:0 auto;max-width:700px}.edition2 p,.edition2 dd{font-family:sans-serif;font-size:14px;line-height:22px;text-indent:0}.edition2 section[data-type="preface"]>h1+p,.edition2 div[data-type="part"]>h1+p,.edition2 section[data-type="chapter"]>h1+p,.edition2 section[data-type="chapter"]>h1+div.author p,.edition2 section[data-type="sect1"]>h1+p,.edition2 section[data-type="sect2"]>h2+p,.edition2 section[data-type="sect3"]>h3+p{text-indent:0px}.edition2 p a{display:inline}.edition2 section[data-type="titlepage"] h1{font-family:serif}.edition2 section[data-type="titlepage"] h2,.edition2 section[data-type="copyright-page"] h1{font-family:sans-serif}.edition2 section[data-type="halftitlepage"]{display:none}.edition2 section[data-type="titlepage"]{text-align:left;page-break-after:always}.edition2 section[data-type="titlepage"] h1{padding-bottom:10px;margin-top:100px;border-bottom:1px solid #333}.edition2 section[data-type="titlepage"] h1{font-size:2em;line-height:120%}.edition2 section[data-type="titlepage"] h2{margin-top:20px;font-size:1.2em;line-height:120%}.edition2 section[data-type="titlepage"] p:first-of-type{margin-top:82pt}.edition2 section[data-type="titlepage"] p{float:none;margin-top:0;margin-bottom:0;font-family:sans-serif;font-size:13pt;line-height:16pt;text-indent:0}.edition2 section[data-type="copyright-page"]{margin-top:100px;page-break-after:always}.edition2 section[data-type="copyright-page"] h1{font-size:0.8em}.edition2 section[data-type="copyright-page"] p{margin:0;font-family:sans-serif;font-size:0.8em;text-indent:0}.edition2 section[data-type="dedication"]{padding-top:100px;font-family:serif;font-style:italic;page-break-after:always;text-align:center}.edition2 nav[data-type="toc"] a{font-style:normal}.edition2 nav[data-type="toc"] li{list-style-type:none}.edition2 nav[data-type="toc"]>h1{margin-top:80px;margin-bottom:50px;font-size:1.5em;line-height:120%;text-align:center}.edition2 nav[data-type="toc"] a{text-decoration:none}.edition2 nav[data-type="toc"] li{font-family:sans-serif}.edition2 nav[data-type="toc"] li[data-type="chapter"],.edition2 nav[data-type="toc"] li[data-type="part"],.edition2 nav[data-type="toc"] li[data-type="appendix"]{margin-left:0;font-size:1em;line-height:120%;text-indent:0}.edition2 nav[data-type="toc"] li[data-type="part"]{margin-top:25px}.edition2 nav[data-type="toc"] li[data-type="part"]>a{display:inline-block;width:100%;border-bottom:1px solid #333}.edition2 nav[data-type="toc"] li[data-type="part"] ol{margin-left:0;text-indent:0}.edition2 nav[data-type="toc"] li[data-type="chapter"]{margin-top:20px}.edition2 nav[data-type="toc"] li[data-type="chapter"]:last-of-type,.edition2 nav[data-type="toc"] li[data-type="appendix"]{margin-bottom:20px}.edition2 nav[data-type="toc"] li[data-type="chapter"] ol{margin-left:20px;font-family:sans-serif;font-size:1em;line-height:120%;text-indent:-10px}.edition2 nav[data-type="toc"] li[data-type="chapter"] ol ol{margin-left:10px;text-indent:-10px}.edition2 nav[data-type="toc"] li[data-type="preface"],.edition2 nav[data-type="toc"] li[data-type="foreword"],.edition2 nav[data-type="toc"] li[data-type="glossary"],.edition2 nav[data-type="toc"] li[data-type="index"]{font-size:1em;line-height:120%}.edition2 nav[data-type="toc"] li[data-type="preface"] ol,.edition2 nav[data-type="toc"] li[data-type="foreword"] ol{display:none}.edition2 section[data-type="preface"],.edition2 div[data-type="part"],.edition2 section[data-type="chapter"],.edition2 section[data-type="appendix"]{page-break-after:always}.edition2 nav[data-type="toc"]>h1,.edition2 div[data-type="part"]>h1,.edition2 section[data-type="preface"]>h1,.edition2 section[data-type="chapter"]>h1,.edition2 section[data-type="appendix"]>h1,.edition2 section[data-type="sect1"] h1{font-family:serif;line-height:120%}.edition2 section[data-type="sect2"] h2,.edition2 section[data-type="sect3"] h3{font-family:sans-serif;line-height:120%}.edition2 section[data-type="preface"]>h1,.edition2 section[data-type="chapter"]>h1,.edition2 section[data-type="appendix"]>h1{margin-top:70px;font-size:1.8em;margin-bottom:40px;text-align:left}.edition2 section[data-type="sect1"] h1{margin-top:40px;margin-bottom:20px;font-size:1.5em}.edition2 section[data-type="sect2"] h2{margin-top:30px;margin-bottom:10px;font-size:1.1em}.edition2 section[data-type="sect3"] h3{margin-top:20px;margin-bottom:10px;font-size:1.1em}.edition2 div[data-type="part"]>h1{margin-top:100px;margin-bottom:70px;font-size:1.8em;text-align:center}.edition2 ul,.edition2 ol{margin:15px 0 15px 40px}.edition2 ul li,.edition2 ol li,.edition2 ul li p,.edition2 ol li p{margin-top:5px;font-family:sans-serif;font-size:1em;line-height:120%;text-indent:0}.edition2 dl{margin-bottom:15px}.edition2 dt{margin-top:15px;margin-bottom:4px;font-family:sans-serif;font-size:0.9em;line-height:120%}.edition2 dd{margin-left:20px;text-indent:0}.edition2 dd p{text-indent:0}.edition2 table{margin-top:30px;margin-bottom:30px;border-collapse:collapse;border-bottom:1px solid #888}.edition2 table caption{margin:0 0 20px;padding:0;font-family:sans-serif;font-size:0.8em;line-height:120%;text-align:left}.edition2 tr{border-width:0px}.edition2 th{margin-top:0;font-family:sans-serif;font-size:0.8em;line-height:120%;text-align:left;border-top:1px solid #888;border-bottom:1px solid #888}.edition2 th,.edition2 td{padding:6px}.edition2 td,.edition2 table p{font-family:sans-serif;font-size:12px;line-height:120%}.edition2 table p{margin-top:6px;text-indent:0}.edition2 td pre.programlisting,.edition2 td pre.screen,.edition2 td pre.literallayout,.edition2 td code,.edition2 td #documentation #main p tt,#documentation #main p .edition2 td tt{word-wrap:break-word;white-space:pre-wrap}.edition2 figure{display:block;padding:0;margin-top:30px;margin-bottom:30px;page-break-inside:avoid}.edition2 figure img{max-width:100%;padding:5px 0 5px 0;margin:0;border-top:1px solid #888;border-bottom:1px solid #888}.edition2 figcaption{display:block;font-family:serif;font-size:1em;font-style:italic;line-height:120%}.edition2 aside{padding:20px 20px 10px;margin:30px 0;background-color:#d8d8d8;border:1px solid #d8d8d8}.edition2 aside h5{padding:0;margin:0;font-family:sans-serif;font-size:1em;line-height:120%;text-align:center}.edition2 aside h6{font-family:sans-serif;font-size:0.9em;font-weight:bold;line-height:120%}.edition2 aside p{margin-top:6px;font-family:serif;font-size:1em;line-height:130%;text-indent:0}.edition2 div[data-type="note"],.edition2 div[data-type="warning"]{padding:10px 0;margin:30px;border-top:2px solid #888;border-bottom:1px solid #d8d8d8;page-break-inside:avoid}.edition2 div[data-type="note"] h1,.edition2 div[data-type="warning"] h1{padding:0;margin:4px 0;font-family:sans-serif;font-size:0.8em;font-weight:bold;color:#000;text-align:center;text-transform:uppercase}.edition2 div[data-type="note"] p,.edition2 div[data-type="warning"] p{font-family:serif;font-size:1em;line-height:120%;text-indent:0}.edition2 pre,.edition2 code,.edition2 #documentation #main p tt,#documentation #main p .edition2 tt{font-family:monospace}.edition2 pre{background:#eee}.edition2 pre code,.edition2 pre #documentation #main p tt,#documentation #main p .edition2 pre tt{display:inline;background:#eee;border:0}.edition2 pre{margin:10px 0;overflow-x:auto;font-size:0.9em;line-height:120%;color:#333}.edition2 code,.edition2 #documentation #main p tt,#documentation #main p .edition2 tt{padding:0;color:#333;background:#eee;border:1px solid #f5f5f5}.edition2 table pre{text-indent:0}.edition2 div[data-type="note"] code,.edition2 div[data-type="note"] #documentation #main p tt,#documentation #main p .edition2 div[data-type="note"] tt,.edition2 div[data-type="warning"] code,.edition2 div[data-type="warning"] #documentation #main p tt,#documentation #main p .edition2 div[data-type="warning"] tt,.edition2 aside code,.edition2 aside #documentation #main p tt,#documentation #main p .edition2 aside tt,.edition2 table code,.edition2 table #documentation #main p tt,#documentation #main p .edition2 table tt{font-size:inherit;line-height:inherit}.edition2 div[data-type="example"] h5{padding-bottom:6px;margin-top:30px;font-family:sans-serif;font-size:0.8em;line-height:120%;border-bottom:1px solid #d8d8d8}.edition2 blockquote{margin-right:30px;margin-left:30px;font-family:sans-serif;font-size:0.9em;line-height:130%}.edition2 blockquote p{text-indent:0}.edition2 div.navbar{position:fixed;top:0;left:0;width:100%;padding:10px 20px;font-family:sans-serif;background-color:#e8e8e8;border-bottom:1px solid #d8d8d8}.edition2 div.navbar h1{float:left;padding:0;margin:0;font-size:1em;font-weight:normal;color:#999}.edition2 div.navbar p{float:right;padding:0;margin:0;font-family:sans-serif;font-size:1em;font-weight:normal}.edition2 div.navbar p a{color:#999;text-decoration:none}@media screen and (min-width: 480px) and (max-width: 1024px){.edition2 body{width:100%;padding:20px}}@media screen and (max-width: 480px){.edition2 body{width:100%;padding:10px}.edition2 div.navbar{position:relative;padding:10px 20px;text-align:center;border-bottom:2px solid #e8e8e8;box-shadow:0 0 0 #f0f0f0}.edition2 div.navbar h1{float:none;margin-bottom:10px}.edition2 div.navbar p{float:none;text-indent:0}}.edition2 pre code.hll,.edition2 pre #documentation #main p tt.hll,#documentation #main p .edition2 pre tt.hll{background-color:#ffffcc}.edition2 pre code.c,.edition2 pre #documentation #main p tt.c,#documentation #main p .edition2 pre tt.c{color:#0099FF;font-style:italic}.edition2 pre code.err,.edition2 pre #documentation #main p tt.err,#documentation #main p .edition2 pre tt.err{color:#AA0000}.edition2 pre code.k,.edition2 pre #documentation #main p tt.k,#documentation #main p .edition2 pre tt.k{color:#006699;font-weight:bold}.edition2 pre code.o,.edition2 pre #documentation #main p tt.o,#documentation #main p .edition2 pre tt.o{color:#555555}.edition2 pre code.cm,.edition2 pre #documentation #main p tt.cm,#documentation #main p .edition2 pre tt.cm{color:#35586C;font-style:italic}.edition2 pre code.cp,.edition2 pre #documentation #main p tt.cp,#documentation #main p .edition2 pre tt.cp{color:#009999}.edition2 pre code.c1,.edition2 pre #documentation #main p tt.c1,#documentation #main p .edition2 pre tt.c1{color:#35586C;font-style:italic}.edition2 pre code.cs,.edition2 pre #documentation #main p tt.cs,#documentation #main p .edition2 pre tt.cs{color:#35586C;font-weight:bold;font-style:italic}.edition2 pre code.gd,.edition2 pre #documentation #main p tt.gd,#documentation #main p .edition2 pre tt.gd{background-color:#FFCCCC}.edition2 pre code.ge,.edition2 pre #documentation #main p tt.ge,#documentation #main p .edition2 pre tt.ge{font-style:italic}.edition2 pre code.gr,.edition2 pre #documentation #main p tt.gr,#documentation #main p .edition2 pre tt.gr{color:#FF0000}.edition2 pre code.gh,.edition2 pre #documentation #main p tt.gh,#documentation #main p .edition2 pre tt.gh{color:#003300;font-weight:bold}.edition2 pre code.gi,.edition2 pre #documentation #main p tt.gi,#documentation #main p .edition2 pre tt.gi{background-color:#CCFFCC}.edition2 pre code.go,.edition2 pre #documentation #main p tt.go,#documentation #main p .edition2 pre tt.go{color:#000000}.edition2 pre code.gp,.edition2 pre #documentation #main p tt.gp,#documentation #main p .edition2 pre tt.gp{color:#000099;font-weight:bold}.edition2 pre code.gs,.edition2 pre #documentation #main p tt.gs,#documentation #main p .edition2 pre tt.gs{font-weight:bold}.edition2 pre code.gu,.edition2 pre #documentation #main p tt.gu,#documentation #main p .edition2 pre tt.gu{color:#003300;font-weight:bold}.edition2 pre code.gt,.edition2 pre #documentation #main p tt.gt,#documentation #main p .edition2 pre tt.gt{color:#99CC66}.edition2 pre code.kc,.edition2 pre #documentation #main p tt.kc,#documentation #main p .edition2 pre tt.kc{color:#006699;font-weight:bold}.edition2 pre code.kd,.edition2 pre #documentation #main p tt.kd,#documentation #main p .edition2 pre tt.kd{color:#006699;font-weight:bold}.edition2 pre code.kn,.edition2 pre #documentation #main p tt.kn,#documentation #main p .edition2 pre tt.kn{color:#006699;font-weight:bold}.edition2 pre code.kp,.edition2 pre #documentation #main p tt.kp,#documentation #main p .edition2 pre tt.kp{color:#006699}.edition2 pre code.kr,.edition2 pre #documentation #main p tt.kr,#documentation #main p .edition2 pre tt.kr{color:#006699;font-weight:bold}.edition2 pre code.kt,.edition2 pre #documentation #main p tt.kt,#documentation #main p .edition2 pre tt.kt{color:#007788;font-weight:bold}.edition2 pre code.m,.edition2 pre #documentation #main p tt.m,#documentation #main p .edition2 pre tt.m{color:#FF6600}.edition2 pre code.s,.edition2 pre #documentation #main p tt.s,#documentation #main p .edition2 pre tt.s{color:#CC3300}.edition2 pre code.na,.edition2 pre #documentation #main p tt.na,#documentation #main p .edition2 pre tt.na{color:#330099}.edition2 pre code.nb,.edition2 pre #documentation #main p tt.nb,#documentation #main p .edition2 pre tt.nb{color:#336666}.edition2 pre code.nc,.edition2 pre #documentation #main p tt.nc,#documentation #main p .edition2 pre tt.nc{color:#00AA88;font-weight:bold}.edition2 pre code.no,.edition2 pre #documentation #main p tt.no,#documentation #main p .edition2 pre tt.no{color:#336600}.edition2 pre code.nd,.edition2 pre #documentation #main p tt.nd,#documentation #main p .edition2 pre tt.nd{color:#9999FF}.edition2 pre code.ni,.edition2 pre #documentation #main p tt.ni,#documentation #main p .edition2 pre tt.ni{color:#999999;font-weight:bold}.edition2 pre code.ne,.edition2 pre #documentation #main p tt.ne,#documentation #main p .edition2 pre tt.ne{color:#CC0000;font-weight:bold}.edition2 pre code.nf,.edition2 pre #documentation #main p tt.nf,#documentation #main p .edition2 pre tt.nf{color:#CC00FF}.edition2 pre code.nl,.edition2 pre #documentation #main p tt.nl,#documentation #main p .edition2 pre tt.nl{color:#9999FF}.edition2 pre code.nn,.edition2 pre #documentation #main p tt.nn,#documentation #main p .edition2 pre tt.nn{color:#00CCFF;font-weight:bold}.edition2 pre code.nt,.edition2 pre #documentation #main p tt.nt,#documentation #main p .edition2 pre tt.nt{color:#330099;font-weight:bold}.edition2 pre code.nv,.edition2 pre #documentation #main p tt.nv,#documentation #main p .edition2 pre tt.nv{color:#003333}.edition2 pre code.ow,.edition2 pre #documentation #main p tt.ow,#documentation #main p .edition2 pre tt.ow{color:#000000;font-weight:bold}.edition2 pre code.w,.edition2 pre #documentation #main p tt.w,#documentation #main p .edition2 pre tt.w{color:#bbbbbb}.edition2 pre code.mf,.edition2 pre #documentation #main p tt.mf,#documentation #main p .edition2 pre tt.mf{color:#FF6600}.edition2 pre code.mh,.edition2 pre #documentation #main p tt.mh,#documentation #main p .edition2 pre tt.mh{color:#FF6600}.edition2 pre code.mi,.edition2 pre #documentation #main p tt.mi,#documentation #main p .edition2 pre tt.mi{color:#FF6600}.edition2 pre code.mo,.edition2 pre #documentation #main p tt.mo,#documentation #main p .edition2 pre tt.mo{color:#FF6600}.edition2 pre code.sb,.edition2 pre #documentation #main p tt.sb,#documentation #main p .edition2 pre tt.sb{color:#CC3300}.edition2 pre code.sc,.edition2 pre #documentation #main p tt.sc,#documentation #main p .edition2 pre tt.sc{color:#CC3300}.edition2 pre code.sd,.edition2 pre #documentation #main p tt.sd,#documentation #main p .edition2 pre tt.sd{color:#CC3300;font-style:italic}.edition2 pre code.s2,.edition2 pre #documentation #main p tt.s2,#documentation #main p .edition2 pre tt.s2{color:#CC3300}.edition2 pre code.se,.edition2 pre #documentation #main p tt.se,#documentation #main p .edition2 pre tt.se{color:#CC3300;font-weight:bold}.edition2 pre code.sh,.edition2 pre #documentation #main p tt.sh,#documentation #main p .edition2 pre tt.sh{color:#CC3300}.edition2 pre code.si,.edition2 pre #documentation #main p tt.si,#documentation #main p .edition2 pre tt.si{color:#AA0000}.edition2 pre code.sx,.edition2 pre #documentation #main p tt.sx,#documentation #main p .edition2 pre tt.sx{color:#CC3300}.edition2 pre code.sr,.edition2 pre #documentation #main p tt.sr,#documentation #main p .edition2 pre tt.sr{color:#33AAAA}.edition2 pre code.s1,.edition2 pre #documentation #main p tt.s1,#documentation #main p .edition2 pre tt.s1{color:#CC3300}.edition2 pre code.ss,.edition2 pre #documentation #main p tt.ss,#documentation #main p .edition2 pre tt.ss{color:#AA6600}.edition2 pre code.bp,.edition2 pre #documentation #main p tt.bp,#documentation #main p .edition2 pre tt.bp{color:#336666}.edition2 pre code.vc,.edition2 pre #documentation #main p tt.vc,#documentation #main p .edition2 pre tt.vc{color:#003333}.edition2 pre code.vg,.edition2 pre #documentation #main p tt.vg,#documentation #main p .edition2 pre tt.vg{color:#003333}.edition2 pre code.vi,.edition2 pre #documentation #main p tt.vi,#documentation #main p .edition2 pre tt.vi{color:#003333}.edition2 pre code.il,.edition2 pre #documentation #main p tt.il,#documentation #main p .edition2 pre tt.il{color:#FF6600}.edition2 pre code.g,.edition2 pre #documentation #main p tt.g,#documentation #main p .edition2 pre tt.g{color:#005500}.edition2 pre code.l,.edition2 pre #documentation #main p tt.l,#documentation #main p .edition2 pre tt.l{color:#CC6600}.edition2 pre code.l,.edition2 pre #documentation #main p tt.l,#documentation #main p .edition2 pre tt.l{color:#FF9900}.edition2 pre code.n,.edition2 pre #documentation #main p tt.n,#documentation #main p .edition2 pre tt.n{color:#000088}.edition2 pre code.nx,.edition2 pre #documentation #main p tt.nx,#documentation #main p .edition2 pre tt.nx{color:#000088}.edition2 pre code.py,.edition2 pre #documentation #main p tt.py,#documentation #main p .edition2 pre tt.py{color:#9966FF}.edition2 pre code.p,.edition2 pre #documentation #main p tt.p,#documentation #main p .edition2 pre tt.p{color:#000000}.edition2 pre code.x,.edition2 pre #documentation #main p tt.x,#documentation #main p .edition2 pre tt.x{color:#FF0066}.edition2 pre[data-code-language="console"]{padding:10px;background:#eee}.edition2 pre[data-code-language="console"] code.go,.edition2 pre[data-code-language="console"] #documentation #main p tt.go,#documentation #main p .edition2 pre[data-code-language="console"] tt.go{font-size:1.0em;color:#555}.edition2 pre[data-code-language="console"] code.gp,.edition2 pre[data-code-language="console"] #documentation #main p tt.gp,#documentation #main p .edition2 pre[data-code-language="console"] tt.gp{font-weight:bold;color:#009900}body{padding:0;margin:0;font-family:Adelle, Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif;font-size:14px;line-height:22px;color:#4e443c;background:#f0efe7 url("../images/bg/body.jpg")}.windows.chrome body,.windows.ie8 body{font-family:Roboto Slab, DejaVu Serif, Georgia, Times New Roman, sans-serif !important}.inner{position:relative;width:940px;margin:0 auto;overflow:visible}.inner:before{display:table;content:""}.inner:after{display:table;clear:both;content:""}aside{float:left;width:218px;margin-bottom:35px}.banner-message{position:relative;padding:1em 100px;margin-bottom:30px;font-size:100%;color:#855;background-color:#fcbda5}.banner-message a{color:#c22}.banner-message .dismiss{position:absolute;top:0;right:0;width:2em;padding:0;line-height:2em;background:none;border:0}#content{float:right;width:702px}#main{padding:22px;margin-bottom:35px;background-color:#fcfcfa;border:solid 1px #e2e0d8;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px}#main .two-column:before{display:table;content:""}#main .two-column:after{display:table;clear:both;content:""}#main .two-column .column-left{width:47%;float:left}#main .two-column .column-right{width:47%;float:right}#main .callout,#main .bottom-nav,#main #logo-license,#main #book-container{background-color:#e9e8e0;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 14px 4px;margin-bottom:1.4em}#main .callout p,#main .bottom-nav p,#main #logo-license p,#main #book-container p{margin-bottom:0}#main img{max-width:100%;height:auto}#masthead{height:295px;margin-top:-20px;margin-bottom:2em;background:transparent url("../images/bg/isometric-grid.png") top right repeat;background-size:35px 21px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){#masthead{background:transparent url("../images/bg/isometric-grid@2x.png") top right repeat;background-size:35px 21px}}#masthead .inner{padding-top:20px}#masthead .inner p{width:558px;margin-bottom:1.2em;font-size:18px;line-height:26.4px}#masthead .inner .promo{font-weight:bold}#masthead .inner .promo img{position:relative;top:-6px}#masthead .inner img.illustration{position:absolute;right:-30px;top:24px}header{position:relative;padding-bottom:26px;margin-top:14px}header #tagline{position:absolute;top:11px;left:120px;display:block;margin-top:1px;font-size:24px;line-height:24px;color:#9a9994}header #tagline em{letter-spacing:1px}aside nav ul{margin-bottom:1.4em;margin-left:0;font-size:16px;font-weight:bold;list-style:none}aside nav ul li{margin-bottom:0.5em}aside nav ul li a{color:#413932}aside nav ul li a.active,aside nav ul li a:hover{color:#f14e32}aside nav ul li ul{display:none;margin-top:0.3em;margin-left:20px;font-size:13px;font-weight:normal}aside nav ul li ul li{margin-bottom:0}aside nav ul li ul li a.active{font-weight:bold}aside nav ul li ul.expanded{display:block}.bottom-nav{margin-top:2em;font-weight:bold}.bottom-nav:before{display:table;content:""}.bottom-nav:after{display:table;clear:both;content:""}.bottom-nav .previous{float:left}.bottom-nav .next{float:right}section.about.current{display:block}section.about .bottom-nav{display:none}p.center{text-align:center}#logo-license{padding:20px !important;margin-top:2em}#logo-license p{font-size:12px;line-height:1.4;color:#9a9994}#logo-license p+p{margin-top:14px}#logo-license img{float:left;margin-right:20px}.callout.downloading,.downloading.bottom-nav,#logo-license.downloading,#book-container.downloading{background:#e9e8e0 url(../images/icons/download.png) 24px 24px no-repeat;padding:20px 30px 20px 100px !important}.callout.downloading h3,.downloading.bottom-nav h3,#logo-license.downloading h3,#book-container.downloading h3{font-size:18px;color:#f14e32}.callout.downloading p,.downloading.bottom-nav p,#logo-license.downloading p,#book-container.downloading p{margin-bottom:15px !important;font-size:15px;line-height:1.3em}.callout.downloading p.small,.downloading.bottom-nav p.small,#logo-license.downloading p.small,#book-container.downloading p.small{margin-bottom:0 !important;font-size:12px;line-height:1.4;color:#9a9994}.section-nav-container,#reference-version,#book-chapters{position:relative;background-color:#ebe9e1;background-color:rgba(223,221,213,0.33);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;padding:8px 12px 6px;margin-bottom:10px;font-size:13px;font-weight:bold}.section-nav-container .light,#reference-version .light,#book-chapters .light{font-weight:normal}.section-nav-container a,#reference-version a,#book-chapters a{font-weight:bold;position:relative}.section-nav-container .dropdown-panel,#reference-version .dropdown-panel,#book-chapters .dropdown-panel{top:33px}.section-nav-container .dropdown-panel .three-column:before,#reference-version .dropdown-panel .three-column:before,#book-chapters .dropdown-panel .three-column:before{display:table;content:""}.section-nav-container .dropdown-panel .three-column:after,#reference-version .dropdown-panel .three-column:after,#book-chapters .dropdown-panel .three-column:after{display:table;clear:both;content:""}.section-nav-container .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-left{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-middle{float:left;width:31%;padding-right:3%}.section-nav-container .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-right,#book-chapters .dropdown-panel .three-column .column-right{float:left;width:31%}a.dropdown-trigger{padding:4px 5px;border:solid 1px transparent}a.dropdown-trigger.active{position:relative;z-index:200;background-color:#fff !important;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;border-top-right-radius:3px;border:solid 1px #c6c4b8;border-bottom:0}.dropdown-panel{position:absolute;z-index:199;display:none;background-color:#fff;border:solid 1px #c6c4b8;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px #ccc;-moz-box-shadow:0 1px 2px #ccc;box-shadow:0 1px 2px #ccc}.dropdown-panel.left{-webkit-border-top-left-radius:0;-moz-border-top-left-radius:0;border-top-left-radius:0}.dropdown-panel.right{-webkit-border-top-right-radius:0;-moz-border-top-right-radius:0;border-top-right-radius:0}footer{padding:20px 0 40px;margin-top:35px;clear:both;font-size:12px;line-height:15.4px;color:#9a9994;border-top:solid 1px #d8d7cf}footer:before{display:table;content:""}footer:after{display:table;clear:both;content:""}footer a{color:#403f3c}footer a:hover{color:#0b0b0a}footer .site-source{float:left;padding-left:46px;background:transparent url("../images/icons/code.png") 0 2px no-repeat;background-size:38px 23px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){footer .site-source{background:transparent url("../images/icons/code@2x.png") 0 2px no-repeat;background-size:38px 23px}}footer .sfc-member{float:right;text-align:right}table.benchmarks{width:100%;padding:20px;margin-bottom:20px}table.benchmarks tr th.right{text-align:center}table.benchmarks tr td.desc{font-size:0.8em;color:#888}table.benchmarks tr td.number{font-family:monospace;text-align:right}table.benchmarks tr td{padding:0 10px}.scrollToTop{-webkit-border-radius:50px;-moz-border-radius:50px;-ms-border-radius:50px;border-radius:50px;display:none;position:fixed;background-color:rgba(223,221,213,0.33);right:20px;bottom:6.25rem;padding:0.8rem;height:20px;transition:background-color 0.2s;width:20px}.scrollToTop:hover{background-color:rgba(250,250,250,0.9);-webkit-box-shadow:2px;-moz-box-shadow:2px;box-shadow:2px}.scrollToTop:hover::before{transform:translateX(-50%);left:50%;width:0;height:0;color:var(--color-neutral-emphasis-plus);content:"";border:6px solid transparent;border-color:#333333 transparent transparent;top:-0.55rem;position:absolute}.scrollToTop:hover::after{transform:translateX(-50%);left:50%;top:-2rem;border-radius:4px;position:absolute;content:attr(data-label);word-wrap:break-word;white-space:pre;padding:.5em .75em;color:#e9e8e0;background-color:#333333;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.no-js.scrollToTop{display:block}@media (max-width: 940px){.responsive-table{overflow-x:auto}.center img{height:100%}header{padding-bottom:2.5rem}header a,header span{padding-left:1rem;margin-bottom:10px}#home .inner>header{padding-bottom:2rem}#content{width:100%}.inner{width:100%}#content-wrapper{padding:0.8rem}#masthead{height:unset}#masthead .inner{display:flex;margin-top:1.8rem}#masthead .inner div:first-of-type{padding:1rem}#masthead .inner .illustration-wrapper{display:flex;align-items:center}#masthead .inner p{width:unset}#masthead .inner img.illustration{position:unset;right:unset;top:unset;max-height:100%}footer{padding-left:1rem;padding-right:1rem}}@media (max-width: 640px){header{padding-bottom:3rem}header #tagline{font-size:0.8rem;top:0;padding-right:1rem}#home .inner>header{padding-bottom:2.5rem}#masthead .inner{flex-direction:column-reverse}#masthead .illustration-wrapper{display:flex;justify-content:center;overflow:hidden}#masthead .illustration-wrapper .illustration{width:80%;height:100%}#main>.two-column .column-right{position:relative;display:flex;justify-content:center}#main .two-column{display:flex;flex-direction:column}#main .two-column .column-left,#main .two-column .column-right{width:100%}#book-chapters .dropdown-panel,#reference-version .dropdown-panel{width:unset}#book-chapters .dropdown-panel .three-column,#reference-version .dropdown-panel .three-column{display:flex;flex-direction:column;height:70vh;overflow-y:scroll;overflow-x:hidden}#book-chapters .dropdown-panel .three-column .column-left,#book-chapters .dropdown-panel .three-column .column-middle,#book-chapters .dropdown-panel .three-column .column-right,#reference-version .dropdown-panel .three-column .column-left,#reference-version .dropdown-panel .three-column .column-middle,#reference-version .dropdown-panel .three-column .column-right{width:100%;max-width:300px}#book-chapters .dropdown-panel .three-column .unstyled a,#book-chapters .dropdown-panel .three-column ul.stackoverflow a,#book-chapters .dropdown-panel .three-column ol#about-nav a,#book-chapters .dropdown-panel .three-column .content-list a,#book-chapters .dropdown-panel .three-column ul.books-list a,#book-chapters .dropdown-panel .three-column ul.video-thumbnails a,#book-chapters .dropdown-panel .three-column ul.gui-thumbnails a,#book-chapters .dropdown-panel .three-column .section-nav-container a,#book-chapters .dropdown-panel .three-column #download-next-steps a,#book-chapters .dropdown-panel .three-column #search-results table ul a,#search-results table #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column ol.full-search-results a,#book-chapters .dropdown-panel .three-column #front-nav ul a,#front-nav #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #companies-projects ul a,#companies-projects #book-chapters .dropdown-panel .three-column ul a,#book-chapters .dropdown-panel .three-column #reference-version a,#book-chapters .dropdown-panel .three-column ol.reference-previous-versions a,#book-chapters .dropdown-panel .three-column ol.book-toc a,#book-chapters .dropdown-panel .three-column #book-chapters a,#reference-version .dropdown-panel .three-column .unstyled a,#reference-version .dropdown-panel .three-column ul.stackoverflow a,#reference-version .dropdown-panel .three-column ol#about-nav a,#reference-version .dropdown-panel .three-column .content-list a,#reference-version .dropdown-panel .three-column ul.books-list a,#reference-version .dropdown-panel .three-column ul.video-thumbnails a,#reference-version .dropdown-panel .three-column ul.gui-thumbnails a,#reference-version .dropdown-panel .three-column .section-nav-container a,#reference-version .dropdown-panel .three-column #download-next-steps a,#reference-version .dropdown-panel .three-column #search-results table ul a,#search-results table #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column ol.full-search-results a,#reference-version .dropdown-panel .three-column #front-nav ul a,#front-nav #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #companies-projects ul a,#companies-projects #reference-version .dropdown-panel .three-column ul a,#reference-version .dropdown-panel .three-column #reference-version a,#reference-version .dropdown-panel .three-column ol.reference-previous-versions a,#reference-version .dropdown-panel .three-column ol.book-toc a,#reference-version .dropdown-panel .three-column #book-chapters a{padding:0.15rem 0;display:block}#book-chapters .dropdown-panel .three-column .chapter h2,#reference-version .dropdown-panel .three-column .chapter h2{display:flex;align-items:center}#book-chapters .dropdown-panel .three-column .chapter h2 a,#reference-version .dropdown-panel .three-column .chapter h2 a{padding-left:5px}#book-chapters .dropdown-panel .three-column .chapter ol li,#reference-version .dropdown-panel .three-column .chapter ol li{display:flex;align-items:center;margin-bottom:6px;padding:0.45rem 0}#book-chapters .dropdown-panel .three-column .chapter ol li a,#reference-version .dropdown-panel .three-column .chapter ol li a{padding-left:5px}footer{display:flex;justify-content:center;flex-direction:column;align-items:center}footer .site-source{margin-bottom:1rem}.scrollToTop{bottom:6rem}}.content-list,ul.books-list,ul.video-thumbnails,ul.gui-thumbnails{margin-left:0}.content-list li,ul.books-list li,ul.video-thumbnails li,ul.gui-thumbnails li{margin-bottom:1em}.content-list .description,ul.books-list .description,ul.video-thumbnails .description,ul.gui-thumbnails .description{font-size:12px;line-height:15.4px}ul.video-thumbnails,ul.gui-thumbnails{margin-top:1em}ul.video-thumbnails li,ul.gui-thumbnails li{margin-bottom:2em}ul.video-thumbnails li img,ul.gui-thumbnails li img{display:block;padding:3px;margin-bottom:5px;border:solid 1px #d8d7cf}ul.gui-thumbnails li{display:inline-block;width:49%}ul.gui-thumbnails li.masked{display:none}ul.books-list li{padding-left:125px;height:150px}ul.books-list li:before{display:table;content:""}ul.books-list li:after{display:table;clear:both;content:""}ul.books-list li img{float:left;width:109px;max-height:150px;margin-right:-125px;margin-left:-125px;border:solid 1px #b7b7b7}ul.books-list li img.creative-commons{display:block;float:none;width:auto;margin-top:2em;margin-right:0;margin-left:0;border:0}ol#about-nav:before{display:table;content:""}ol#about-nav:after{display:table;clear:both;content:""}ol#about-nav li{display:inline;float:left;width:80px;height:85px;padding-right:5px;margin-right:7px}ol#about-nav li:last-child{margin-right:0}ol#about-nav li a{display:block;width:60px;height:80px;padding:0 15px;font-size:13px;line-height:20px;text-align:center;color:#4e443c;opacity:0.9;background:transparent url("../images/icons/nav-circles.png") top right no-repeat;background-size:90px 180px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){ol#about-nav li a{background:transparent url("../images/icons/nav-circles@2x.png") top right no-repeat;background-size:90px 180px}}ol#about-nav li a.current{background:transparent url("../images/icons/nav-circles.png") 0 -90px no-repeat;background-size:90px 180px;color:#fff;opacity:1}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1){ol#about-nav li a.current{background:transparent url("../images/icons/nav-circles@2x.png") 0 -90px no-repeat;background-size:90px 180px}}ol#about-nav li a.one-line{height:55px;padding-top:35px}ol#about-nav li a.two-line{height:62px;padding-top:28px}ol#about-nav li a.three-line{height:73px;padding-top:17px}ol#about-nav li a:hover{opacity:1}ul.stackoverflow{font-size:12px}ul.stackoverflow li{margin-bottom:1em}ul.stackoverflow a{display:block;line-height:1.2;font-weight:bold}ul.stackoverflow span{display:block;color:#9a9994}ul.stackoverflow span strong{color:#81807a}ul.stackoverflow span em{color:#cccbc8}table.binaries td{position:relative;width:auto;padding:8px 20px 6px 0}table.binaries a{font-weight:bold;border:solid 1px transparent}@media (max-width: 940px){ol#about-nav{display:flex;flex-wrap:wrap;justify-content:space-between}}@media (max-width: 640px){ol#about-nav{justify-content:unset}ol#about-nav li{padding-right:0;margin-right:0.6rem;flex-basis:29%;margin-bottom:1rem}}code,#documentation #main p tt{display:inline;padding:0 5px;word-break:break-all}pre{background-color:#fff;border:solid 1px #efeee6;border-radius:3px;color:#f14e32;display:block;font-family:Courier, monospace;line-height:18px;margin-bottom:1em;overflow:auto;padding:10px 15px 13px}.d-flex{display:flex}
@@ -0,0 +1,20 @@
1
+ /* Modernizr 2.5.3 (Custom Build) | MIT & BSD
2
+ * Build: http://www.modernizr.com/download/#-fontface-input-inputtypes-shiv-cssclasses-addtest-teststyles-load
3
+ */
4
+ ;window.Modernizr=function(a,b,c){function w(a){j.cssText=a}function x(a,b){return w(prefixes.join(a+";")+(b||""))}function y(a,b){return typeof a===b}function z(a,b){return!!~(""+a).indexOf(b)}function A(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:y(f,"function")?f.bind(d||b):f}return!1}function C(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)p[c[d]]=c[d]in k;return p.list&&(p.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),p}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),o[a[d]]=!!e;return o}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n={},o={},p={},q=[],r=q.slice,s,t=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["&#173;","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},u={}.hasOwnProperty,v;!y(u,"undefined")&&!y(u.call,"undefined")?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=r.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(r.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(r.call(arguments)))};return e});var B=function(a,c){var d=a.join(""),f=c.length;t(d,function(a,c){var d=b.styleSheets[b.styleSheets.length-1],g=d?d.cssRules&&d.cssRules[0]?d.cssRules[0].cssText:d.cssText||"":"",h=a.childNodes,i={};while(f--)i[h[f].id]=h[f];e.fontface=/src/i.test(g)&&g.indexOf(c.split(" ")[0])===0},f,c)}(['@font-face {font-family:"font";src:url("https://")}'],["fontface"]);n.fontface=function(){return e.fontface};for(var D in n)v(n,D)&&(s=D.toLowerCase(),e[s]=n[D](),q.push((e[s]?"":"no-")+s));return e.input||C(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)v(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,g.className+=" "+(b?"":"no-")+a,e[a]=b}return e},w(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e.testStyles=t,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+q.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
5
+
6
+ Modernizr.addTest('webkit', function(){
7
+ return RegExp(" AppleWebKit/").test(navigator.userAgent);
8
+ });
9
+
10
+ Modernizr.addTest('chrome', function(){
11
+ return RegExp(" Chrome/").test(navigator.userAgent);
12
+ });
13
+
14
+ Modernizr.addTest('windows', function(){
15
+ return RegExp("Win").test(navigator.platform);
16
+ });
17
+
18
+ Modernizr.addTest('ie8', function(){
19
+ return RegExp("MSIE 8").test(navigator.userAgent);
20
+ });