| @mixin codestyles-highlight () { | ||
| $code-color-keyword: #e0c090; | ||
| $code-color-attribute: #a9c2ba; | ||
| $code-color-property: #abd9cf; | ||
| $code-color-class: #cee4dd; | ||
| $code-color-variable: #b9d0af; | ||
| $code-color-string: #e9baba; | ||
| $code-color-interpolated: #cba8d6; | ||
| $code-color-punctuation: #ded3a1; | ||
| $code-color-comment: #b1bac4; | ||
| $prefix: 'hljs-'; // or '#{$prefix}' | ||
| .hljs { | ||
| display: block; padding: 0.5em; | ||
| // background: #002b36; color: #839496; | ||
| } | ||
| .#{$prefix}comment, | ||
| .#{$prefix}template_comment, | ||
| .diff .#{$prefix}header, | ||
| .#{$prefix}doctype, | ||
| .#{$prefix}pi, | ||
| .lisp .#{$prefix}string, | ||
| .#{$prefix}javadoc { | ||
| color: $code-color-comment; | ||
| font-style: italic; | ||
| } | ||
| .#{$prefix}keyword, | ||
| .#{$prefix}winutils, | ||
| .method, | ||
| .#{$prefix}addition, | ||
| .css .#{$prefix}tag, | ||
| .#{$prefix}request, | ||
| .#{$prefix}status, | ||
| .nginx .#{$prefix}title { | ||
| color: $code-color-keyword; | ||
| } | ||
| .#{$prefix}string { | ||
| color: $code-color-string; | ||
| } | ||
| .#{$prefix}property { | ||
| color: $code-color-variable; | ||
| } | ||
| .#{$prefix}function { | ||
| color: $code-color-property; | ||
| } | ||
| .#{$prefix}class { | ||
| color: $code-color-class; | ||
| } | ||
| .#{$prefix}number, | ||
| .#{$prefix}command, | ||
| .#{$prefix}tag .#{$prefix}value, | ||
| .#{$prefix}rules .#{$prefix}value, | ||
| .#{$prefix}phpdoc, | ||
| .tex .#{$prefix}formula, | ||
| .#{$prefix}regexp, | ||
| .#{$prefix}hexcolor { | ||
| color: $code-color-interpolated; | ||
| } | ||
| .#{$prefix}title, | ||
| .#{$prefix}localvars, | ||
| .#{$prefix}chunk, | ||
| .#{$prefix}decorator, | ||
| .#{$prefix}built_in, | ||
| .#{$prefix}identifier, | ||
| .vhdl .#{$prefix}literal, | ||
| .#{$prefix}id, | ||
| .css .#{$prefix}function { | ||
| color: $code-color-attribute; | ||
| } | ||
| .#{$prefix}attribute, | ||
| .#{$prefix}variable, | ||
| .lisp .#{$prefix}body, | ||
| .smalltalk .#{$prefix}number, | ||
| .#{$prefix}constant, | ||
| .#{$prefix}class .#{$prefix}title, | ||
| .#{$prefix}parent, | ||
| .haskell .#{$prefix}type { | ||
| color: $code-color-variable; | ||
| } | ||
| .#{$prefix}preprocessor, | ||
| .#{$prefix}preprocessor .#{$prefix}keyword, | ||
| .#{$prefix}pragma, | ||
| .#{$prefix}shebang, | ||
| .#{$prefix}symbol, | ||
| .#{$prefix}symbol .#{$prefix}string, | ||
| .diff .#{$prefix}change, | ||
| .#{$prefix}special, | ||
| .#{$prefix}attr_selector, | ||
| .#{$prefix}important, | ||
| .#{$prefix}subst, | ||
| .#{$prefix}cdata, | ||
| .clojure .#{$prefix}title, | ||
| .css .#{$prefix}pseudo { | ||
| color: $code-color-class; | ||
| } | ||
| .#{$prefix}deletion { | ||
| color: #dc322f; | ||
| } | ||
| .tex .#{$prefix}formula { | ||
| background: $code-color-string; | ||
| } | ||
| } | ||
| @mixin inline-codestyles () { | ||
| // Orginal Style from ethanschoonover.com/solarized | ||
| // (c) Jeremy Hull <sourdrums@gmail.com> | ||
| $prefix: 'hljs-'; // or 'hljs-' | ||
| .#{$prefix}comment, | ||
| .#{$prefix}template_comment, | ||
| .diff .#{$prefix}header, | ||
| .#{$prefix}doctype, | ||
| .#{$prefix}pi, | ||
| .lisp .#{$prefix}string, | ||
| .#{$prefix}javadoc { | ||
| color: #93a1a1; | ||
| font-style: italic; | ||
| } | ||
| .#{$prefix}keyword, | ||
| .#{$prefix}winutils, | ||
| .method, | ||
| .#{$prefix}addition, | ||
| .css .#{$prefix}tag, | ||
| .#{$prefix}request, | ||
| .#{$prefix}status, | ||
| .nginx .#{$prefix}title { | ||
| color: #859900; | ||
| } | ||
| .#{$prefix}number, | ||
| .#{$prefix}command, | ||
| .#{$prefix}string, | ||
| .#{$prefix}tag .#{$prefix}value, | ||
| .#{$prefix}rules .#{$prefix}value, | ||
| .#{$prefix}phpdoc, | ||
| .tex .#{$prefix}formula, | ||
| .#{$prefix}regexp, | ||
| .#{$prefix}hexcolor { | ||
| color: #2aa198; | ||
| } | ||
| .#{$prefix}title, | ||
| .#{$prefix}localvars, | ||
| .#{$prefix}chunk, | ||
| .#{$prefix}decorator, | ||
| .#{$prefix}built_in, | ||
| .#{$prefix}identifier, | ||
| .vhdl .#{$prefix}literal, | ||
| .#{$prefix}id, | ||
| .css .#{$prefix}function { | ||
| color: #268bd2; | ||
| } | ||
| .#{$prefix}attribute, | ||
| .#{$prefix}variable, | ||
| .lisp .#{$prefix}body, | ||
| .smalltalk .#{$prefix}number, | ||
| .#{$prefix}constant, | ||
| .#{$prefix}class .#{$prefix}title, | ||
| .#{$prefix}parent, | ||
| .haskell .#{$prefix}type { | ||
| color: #b58900; | ||
| } | ||
| .#{$prefix}preprocessor, | ||
| .#{$prefix}preprocessor .#{$prefix}keyword, | ||
| .#{$prefix}pragma, | ||
| .#{$prefix}shebang, | ||
| .#{$prefix}symbol, | ||
| .#{$prefix}symbol .#{$prefix}string, | ||
| .diff .#{$prefix}change, | ||
| .#{$prefix}special, | ||
| .#{$prefix}attr_selector, | ||
| .#{$prefix}important, | ||
| .#{$prefix}subst, | ||
| .#{$prefix}cdata, | ||
| .clojure .#{$prefix}title, | ||
| .css .#{$prefix}pseudo { | ||
| color: #cb4b16; | ||
| } | ||
| .#{$prefix}deletion { | ||
| color: #dc322f; | ||
| } | ||
| .tex .#{$prefix}formula { | ||
| background: #eee8d5; | ||
| } | ||
| } |
| $code-color-keyword: #e0c090 | ||
| $code-color-attribute: #a9c2ba | ||
| $code-color-property: #abd9cf | ||
| $code-color-class: #cee4dd | ||
| $code-color-variable: #b9d0af | ||
| $code-color-string: #e9baba | ||
| $code-color-interpolated: #cba8d6 | ||
| $code-color-punctuation: #ded3a1 | ||
| $code-color-comment: #b1bac4 | ||
| =codestyles-pygments | ||
| .w // Whitespace | ||
| .err // Error | ||
| .x // Other | ||
| .k // Keyword | ||
| color: $code-color-keyword | ||
| .kc // Keyword.Constant | ||
| color: $code-color-keyword | ||
| .kd // Keyword.Declaration | ||
| color: $code-color-keyword | ||
| .kp // Keyword.Pseudo | ||
| color: $code-color-keyword | ||
| .kr // Keyword.Reserved | ||
| color: $code-color-keyword | ||
| .kt // Keyword.Type | ||
| color: $code-color-keyword | ||
| .n, // Name | ||
| .na // Name.Attribute | ||
| color: $code-color-attribute | ||
| .nb, // Name.Builtin | ||
| .bp, // Name.Builtin.Pseudo | ||
| .nc // Name.Class | ||
| color: $code-color-class | ||
| .no // Name.Constant | ||
| color: $code-color-class | ||
| .nd // Name.Decorator | ||
| color: $code-color-class | ||
| .ni, // Name.Entity | ||
| .ne, // Name.Exception | ||
| .nf // Name.Function | ||
| color: $code-color-property | ||
| .py // Name.Property | ||
| color: $code-color-property | ||
| .nl, // Name.Label | ||
| .nn, // Name.Namespace | ||
| .nx, // Name.Other | ||
| .nt, // Name.Tag | ||
| .nv // Name.Variable | ||
| color: $code-color-variable | ||
| .vc // Name.Variable.Class | ||
| color: $code-color-variable | ||
| .vg // Name.Variable.Global | ||
| color: $code-color-variable | ||
| .vi // Name.Variable.Instance | ||
| color: $code-color-variable | ||
| // .l // Literal | ||
| // .ld // Literal.Date | ||
| .s // String | ||
| color: $code-color-string | ||
| .sb // String.Backtick | ||
| color: $code-color-string | ||
| .sc // String.Char | ||
| color: $code-color-string | ||
| .sd // String.Doc | ||
| color: $code-color-string | ||
| .s2 // String.Double | ||
| color: $code-color-string | ||
| .se // String.Escape | ||
| color: $code-color-string | ||
| .sh // String.Heredoc | ||
| color: $code-color-string | ||
| .si // String.Interpol | ||
| color: $code-color-string | ||
| .sx // String.Other | ||
| color: $code-color-string | ||
| .sr // String.Regex | ||
| color: $code-color-interpolated | ||
| .s1 // String.Single | ||
| color: $code-color-string | ||
| .ss // String.Symbol | ||
| color: $code-color-interpolated | ||
| .m // Number | ||
| color: $code-color-interpolated | ||
| .mf // Number.Float | ||
| color: $code-color-interpolated | ||
| .mh // Number.Hex | ||
| color: $code-color-interpolated | ||
| .mi // Number.Integer | ||
| color: $code-color-interpolated | ||
| .il // Number.Integer.Long | ||
| color: $code-color-interpolated | ||
| .mo // Number.Oct | ||
| color: $code-color-interpolated | ||
| .o // Operator | ||
| color: $code-color-punctuation | ||
| .ow // Operator.Word | ||
| color: $code-color-punctuation | ||
| .p // Punctuation | ||
| color: $code-color-punctuation | ||
| .c, .cm, .cp, .c1, .cs // Comment.* | ||
| font-style: italic | ||
| .c // Comment | ||
| color: $code-color-comment | ||
| .cm // Comment.Multiline | ||
| color: $code-color-comment | ||
| .cp // Comment.Preproc | ||
| color: $code-color-comment | ||
| .c1 // Comment.Single | ||
| color: $code-color-comment | ||
| .cs // Comment.Special | ||
| color: $code-color-comment | ||
| .g // Generic | ||
| .gd // Generic.Deleted | ||
| .ge // Generic.Emph | ||
| .gr // Generic.Error | ||
| .gh // Generic.Heading | ||
| .gi // Generic.Inserted | ||
| .go // Generic.Output | ||
| .gp // Generic.Prompt | ||
| .gs // Generic.Strong | ||
| .gu // Generic.Subheading | ||
| .gt // Generic.Traceback |
| @mixin codestyles () { | ||
| $code-color-keyword: #e0c090; | ||
| $code-color-attribute: #a9c2ba; | ||
| $code-color-property: #abd9cf; | ||
| $code-color-class: #cee4dd; | ||
| $code-color-variable: #b9d0af; | ||
| $code-color-string: #e9baba; | ||
| $code-color-interpolated: #cba8d6; | ||
| $code-color-punctuation: #ded3a1; | ||
| $code-color-comment: #b1bac4; | ||
| $prefix: 'hljs-'; | ||
| .hljs { | ||
| display: block; padding: 0.5em; | ||
| // background: #002b36; color: #839496; | ||
| } | ||
| .#{$prefix}comment, | ||
| .#{$prefix}template_comment, | ||
| .diff .#{$prefix}header, | ||
| .#{$prefix}doctype, | ||
| .#{$prefix}pi, | ||
| .lisp .#{$prefix}string, | ||
| .#{$prefix}javadoc { | ||
| color: $code-color-comment; | ||
| font-style: italic; | ||
| } | ||
| .#{$prefix}keyword, | ||
| .#{$prefix}winutils, | ||
| .method, | ||
| .#{$prefix}addition, | ||
| .css .#{$prefix}tag, | ||
| .#{$prefix}request, | ||
| .#{$prefix}status, | ||
| .nginx .#{$prefix}title { | ||
| color: $code-color-keyword; | ||
| } | ||
| .#{$prefix}string { | ||
| color: $code-color-string; | ||
| } | ||
| .#{$prefix}property { | ||
| color: $code-color-variable; | ||
| } | ||
| .#{$prefix}function { | ||
| color: $code-color-property; | ||
| } | ||
| .#{$prefix}class { | ||
| color: $code-color-class; | ||
| } | ||
| .#{$prefix}number, | ||
| .#{$prefix}command, | ||
| .#{$prefix}tag .#{$prefix}value, | ||
| .#{$prefix}rules .#{$prefix}value, | ||
| .#{$prefix}phpdoc, | ||
| .tex .#{$prefix}formula, | ||
| .#{$prefix}regexp, | ||
| .#{$prefix}hexcolor { | ||
| color: $code-color-interpolated; | ||
| } | ||
| .#{$prefix}title, | ||
| .#{$prefix}localvars, | ||
| .#{$prefix}chunk, | ||
| .#{$prefix}decorator, | ||
| .#{$prefix}built_in, | ||
| .#{$prefix}identifier, | ||
| .vhdl .#{$prefix}literal, | ||
| .#{$prefix}id, | ||
| .css .#{$prefix}function { | ||
| color: $code-color-attribute; | ||
| } | ||
| .#{$prefix}attribute, | ||
| .#{$prefix}variable, | ||
| .lisp .#{$prefix}body, | ||
| .smalltalk .#{$prefix}number, | ||
| .#{$prefix}constant, | ||
| .#{$prefix}class .#{$prefix}title, | ||
| .#{$prefix}parent, | ||
| .haskell .#{$prefix}type { | ||
| color: $code-color-variable; | ||
| } | ||
| .#{$prefix}preprocessor, | ||
| .#{$prefix}preprocessor .#{$prefix}keyword, | ||
| .#{$prefix}pragma, | ||
| .#{$prefix}shebang, | ||
| .#{$prefix}symbol, | ||
| .#{$prefix}symbol .#{$prefix}string, | ||
| .diff .#{$prefix}change, | ||
| .#{$prefix}special, | ||
| .#{$prefix}attr_selector, | ||
| .#{$prefix}important, | ||
| .#{$prefix}subst, | ||
| .#{$prefix}cdata, | ||
| .clojure .#{$prefix}title, | ||
| .css .#{$prefix}pseudo { | ||
| color: $code-color-class; | ||
| } | ||
| .#{$prefix}deletion { | ||
| color: #dc322f; | ||
| } | ||
| .tex .#{$prefix}formula { | ||
| background: $code-color-string; | ||
| } | ||
| } | ||
| @mixin inline-codestyles () { | ||
| // Orginal Style from ethanschoonover.com/solarized | ||
| // (c) Jeremy Hull <sourdrums@gmail.com> | ||
| $prefix: 'hljs-'; | ||
| .#{$prefix}comment, | ||
| .#{$prefix}template_comment, | ||
| .diff .#{$prefix}header, | ||
| .#{$prefix}doctype, | ||
| .#{$prefix}pi, | ||
| .lisp .#{$prefix}string, | ||
| .#{$prefix}javadoc { | ||
| color: #93a1a1; | ||
| font-style: italic; | ||
| } | ||
| .#{$prefix}keyword, | ||
| .#{$prefix}winutils, | ||
| .method, | ||
| .#{$prefix}addition, | ||
| .css .#{$prefix}tag, | ||
| .#{$prefix}request, | ||
| .#{$prefix}status, | ||
| .nginx .#{$prefix}title { | ||
| color: #859900; | ||
| } | ||
| .#{$prefix}number, | ||
| .#{$prefix}command, | ||
| .#{$prefix}string, | ||
| .#{$prefix}tag .#{$prefix}value, | ||
| .#{$prefix}rules .#{$prefix}value, | ||
| .#{$prefix}phpdoc, | ||
| .tex .#{$prefix}formula, | ||
| .#{$prefix}regexp, | ||
| .#{$prefix}hexcolor { | ||
| color: #2aa198; | ||
| } | ||
| .#{$prefix}title, | ||
| .#{$prefix}localvars, | ||
| .#{$prefix}chunk, | ||
| .#{$prefix}decorator, | ||
| .#{$prefix}built_in, | ||
| .#{$prefix}identifier, | ||
| .vhdl .#{$prefix}literal, | ||
| .#{$prefix}id, | ||
| .css .#{$prefix}function { | ||
| color: #268bd2; | ||
| } | ||
| .#{$prefix}attribute, | ||
| .#{$prefix}variable, | ||
| .lisp .#{$prefix}body, | ||
| .smalltalk .#{$prefix}number, | ||
| .#{$prefix}constant, | ||
| .#{$prefix}class .#{$prefix}title, | ||
| .#{$prefix}parent, | ||
| .haskell .#{$prefix}type { | ||
| color: #b58900; | ||
| } | ||
| .#{$prefix}preprocessor, | ||
| .#{$prefix}preprocessor .#{$prefix}keyword, | ||
| .#{$prefix}pragma, | ||
| .#{$prefix}shebang, | ||
| .#{$prefix}symbol, | ||
| .#{$prefix}symbol .#{$prefix}string, | ||
| .diff .#{$prefix}change, | ||
| .#{$prefix}special, | ||
| .#{$prefix}attr_selector, | ||
| .#{$prefix}important, | ||
| .#{$prefix}subst, | ||
| .#{$prefix}cdata, | ||
| .clojure .#{$prefix}title, | ||
| .css .#{$prefix}pseudo { | ||
| color: #cb4b16; | ||
| } | ||
| .#{$prefix}deletion { | ||
| color: #dc322f; | ||
| } | ||
| .tex .#{$prefix}formula { | ||
| background: #eee8d5; | ||
| } | ||
| } |
+5
-5
@@ -108,7 +108,6 @@ # # Command Line Interface | ||
| showdown: | ||
| describe: "Showdown extensions to load, repeat for more, specifying --[no-]showdown discards default." | ||
| alias: 'sd' | ||
| default: ['github','table'] | ||
| type: 'list' | ||
| highlighter: | ||
| describe: "The highlighter to use. Either highlight.js (default) or pygments." | ||
| alias: 'hl' | ||
| default: 'highlight.js' | ||
@@ -197,2 +196,3 @@ strip: | ||
| project.options.languages = argv.languages | ||
| project.options.highlighter = argv.highlighter | ||
@@ -199,0 +199,0 @@ # We expand the `--glob` expressions into a poor-man's set, so that we can easily remove |
+29
-6
@@ -11,2 +11,3 @@ # # Supported Languages | ||
| pygmentsLexer: 'c' | ||
| highlightJS: 'cpp' | ||
| singleLineComment: ['//'] | ||
@@ -19,2 +20,3 @@ ignorePrefix: '}' | ||
| pygmentsLexer: 'csharp' | ||
| highlightJS: 'cs' | ||
| multiLineComment: ['/*', '*', '*/'] | ||
@@ -42,2 +44,3 @@ singleLineComment: ['//'] | ||
| pygmentsLexer: 'coffee-script' | ||
| highlightJS: 'coffeescript' | ||
| # **CoffeScript's multi-line block-comment styles.** | ||
@@ -54,3 +57,3 @@ | ||
| * like the following in compiled javascript: | ||
| * | ||
| * | ||
| * /** | ||
@@ -60,3 +63,3 @@ * * A sample comment, having a preceding whitespace per line. Useful | ||
| * * <= COMBINE THESE TWO CHARS => / | ||
| * | ||
| * | ||
| * (The the final comment-mark above has been TWEAKED to not raise an error) | ||
@@ -69,8 +72,8 @@ ### | ||
| ### | ||
| # - Variant 3: | ||
| # - Variant 3: | ||
| # (This syntax produces arkward comments in the compiled javascript, if | ||
| # the pull-request _“[Format block-comments | ||
| # better](<https://github.com/jashkenas/coffee-script/pull/3132)”_ has | ||
| # better](<https://github.com/jashkenas/coffee-script/pull/3132)”_ has | ||
| # not been applied to coffee-script's codebase …) | ||
| ### } | ||
| ### } | ||
| # The block-comment line-matcher `'#'` also works on lines not starting | ||
@@ -111,2 +114,3 @@ # with `'#'`, because we add unmatched lines to the comments once we are | ||
| pygmentsLexer: 'html' # TODO: is there a handlebars/mustache lexer? Nope. Lame. | ||
| highlightJS: 'handlebars' | ||
| multiLineComment: [ | ||
@@ -132,2 +136,4 @@ '<!--', '', '-->', # HTML block comments go first, for code highlighting / segment splitting purposes | ||
| pygmentsLexer: 'jade' | ||
| # @todo <https://github.com/isagalaev/highlight.js/pull/250> | ||
| highlightJS: 'AUTO' | ||
| singleLineComment: ['//', '//-'] | ||
@@ -177,2 +183,3 @@ ignorePrefix: '}' | ||
| pygmentsLexer: 'latex' | ||
| highlightJS: 'tex' | ||
| singleLineComment: ['%'] | ||
@@ -185,2 +192,3 @@ ignorePrefix: '}' | ||
| pygmentsLexer: 'sass' # TODO: is there a less lexer? No. Maybe in the future. | ||
| highlightJS: 'scss' | ||
| singleLineComment: ['//'] | ||
@@ -215,2 +223,3 @@ ignorePrefix: '}' | ||
| pygmentsLexer: 'html' # TODO: is there a handlebars/mustache lexer? Nope. Lame. | ||
| highlightJS: 'handlebars' | ||
| multiLineComment: ['{{!', '', '}}'] | ||
@@ -223,2 +232,3 @@ ignorePrefix: '#' | ||
| pygmentsLexer: 'objc' | ||
| highlightJS: 'objectivec' | ||
| singleLineComment: ['//'] | ||
@@ -245,2 +255,3 @@ ignorePrefix: '}' | ||
| pygmentsLexer: 'puppet' | ||
| highlightJS: 'AUTO' | ||
| singleLineComment: ['#'] | ||
@@ -267,2 +278,3 @@ ignorePrefix: '}' | ||
| pygmentsLexer: 'sass' | ||
| highlightJS: 'AUTO' | ||
| singleLineComment: ['//'] | ||
@@ -283,2 +295,3 @@ ignorePrefix: '}' | ||
| pygmentsLexer: 'sh' | ||
| highlightJS: 'bash' | ||
| singleLineComment: ['#'] | ||
@@ -294,3 +307,12 @@ ignorePrefix: '}' | ||
| foldPrefix: '^' | ||
| Swift: | ||
| nameMatchers: ['.swift'] | ||
| pygmentsLexer: 'swift' | ||
| highlightJS: 'swift' | ||
| singleLineComment: ['//'] | ||
| multiLineComment: ['/*', '*', '*/'] | ||
| ignorePrefix: '}' | ||
| foldPrefix: '^' | ||
| TypeScript: | ||
@@ -307,4 +329,5 @@ nameMatchers: ['.ts'] | ||
| pygmentsLexer: 'yaml' | ||
| highlightJS: 'AUTO' | ||
| singleLineComment: ['#'] | ||
| ignorePrefix: '}' | ||
| foldPrefix: '^' |
@@ -39,3 +39,8 @@ fs = require 'fs' | ||
| Utils.highlightCode segments, fileInfo.language, (error) => | ||
| if @project.options.highlighter is 'pygments' | ||
| highlightCode = Utils.highlightCodeUsingPygments | ||
| else | ||
| highlightCode = Utils.highlightCodeUsingHighlightJS | ||
| highlightCode segments, fileInfo.language, (error) => | ||
| if error | ||
@@ -42,0 +47,0 @@ if error.failedHighlights |
@@ -1,1 +0,1 @@ | ||
| @charset "UTF-8";html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary{display:block}html,body{height:100%}#document{min-height:100%}body{max-width:33em}.segment{padding:0.5em 0 0.5em 33em;white-space:nowrap}.segment:first-child{padding-top:4.1em}.segment:last-child{padding-bottom:2em}.segment .comments,.segment .code{display:inline-block;vertical-align:top;padding:0 2em}.segment .comments{margin-left:-33em;width:29em;white-space:normal}.segment .code{white-space:pre}#meta{position:absolute;left:33em;padding:0.25em 1em}@media (max-width: 53em){html{font-size:1em}}@media (max-width: 52.94111em){html{font-size:0.99889em}}@media (max-width: 52.88222em){html{font-size:0.99778em}}@media (max-width: 52.82333em){html{font-size:0.99667em}}@media (max-width: 52.76444em){html{font-size:0.99556em}}@media (max-width: 52.70556em){html{font-size:0.99444em}}@media (max-width: 52.64667em){html{font-size:0.99333em}}@media (max-width: 52.58778em){html{font-size:0.99222em}}@media (max-width: 52.52889em){html{font-size:0.99111em}}@media (max-width: 52.47em){html{font-size:0.99em}}@media (max-width: 52.41111em){html{font-size:0.98889em}}@media (max-width: 52.35222em){html{font-size:0.98778em}}@media (max-width: 52.29333em){html{font-size:0.98667em}}@media (max-width: 52.23444em){html{font-size:0.98556em}}@media (max-width: 52.17556em){html{font-size:0.98444em}}@media (max-width: 52.11667em){html{font-size:0.98333em}}@media (max-width: 52.05778em){html{font-size:0.98222em}}@media (max-width: 51.99889em){html{font-size:0.98111em}}@media (max-width: 51.94em){html{font-size:0.98em}}@media (max-width: 51.88111em){html{font-size:0.97889em}}@media (max-width: 51.82222em){html{font-size:0.97778em}}@media (max-width: 51.76333em){html{font-size:0.97667em}}@media (max-width: 51.70444em){html{font-size:0.97556em}}@media (max-width: 51.64556em){html{font-size:0.97444em}}@media (max-width: 51.58667em){html{font-size:0.97333em}}@media (max-width: 51.52778em){html{font-size:0.97222em}}@media (max-width: 51.46889em){html{font-size:0.97111em}}@media (max-width: 51.41em){html{font-size:0.97em}}@media (max-width: 51.35111em){html{font-size:0.96889em}}@media (max-width: 51.29222em){html{font-size:0.96778em}}@media (max-width: 51.23333em){html{font-size:0.96667em}}@media (max-width: 51.17444em){html{font-size:0.96556em}}@media (max-width: 51.11556em){html{font-size:0.96444em}}@media (max-width: 51.05667em){html{font-size:0.96333em}}@media (max-width: 50.99778em){html{font-size:0.96222em}}@media (max-width: 50.93889em){html{font-size:0.96111em}}@media (max-width: 50.88em){html{font-size:0.96em}}@media (max-width: 50.82111em){html{font-size:0.95889em}}@media (max-width: 50.76222em){html{font-size:0.95778em}}@media (max-width: 50.70333em){html{font-size:0.95667em}}@media (max-width: 50.64444em){html{font-size:0.95556em}}@media (max-width: 50.58556em){html{font-size:0.95444em}}@media (max-width: 50.52667em){html{font-size:0.95333em}}@media (max-width: 50.46778em){html{font-size:0.95222em}}@media (max-width: 50.40889em){html{font-size:0.95111em}}@media (max-width: 50.35em){html{font-size:0.95em}}@media (max-width: 50.29111em){html{font-size:0.94889em}}@media (max-width: 50.23222em){html{font-size:0.94778em}}@media (max-width: 50.17333em){html{font-size:0.94667em}}@media (max-width: 50.11444em){html{font-size:0.94556em}}@media (max-width: 50.05556em){html{font-size:0.94444em}}@media (max-width: 49.99667em){html{font-size:0.94333em}}@media (max-width: 49.93778em){html{font-size:0.94222em}}@media (max-width: 49.87889em){html{font-size:0.94111em}}@media (max-width: 49.82em){html{font-size:0.94em}}@media (max-width: 49.76111em){html{font-size:0.93889em}}@media (max-width: 49.70222em){html{font-size:0.93778em}}@media (max-width: 49.64333em){html{font-size:0.93667em}}@media (max-width: 49.58444em){html{font-size:0.93556em}}@media (max-width: 49.52556em){html{font-size:0.93444em}}@media (max-width: 49.46667em){html{font-size:0.93333em}}@media (max-width: 49.40778em){html{font-size:0.93222em}}@media (max-width: 49.34889em){html{font-size:0.93111em}}@media (max-width: 49.29em){html{font-size:0.93em}}@media (max-width: 49.23111em){html{font-size:0.92889em}}@media (max-width: 49.17222em){html{font-size:0.92778em}}@media (max-width: 49.11333em){html{font-size:0.92667em}}@media (max-width: 49.05444em){html{font-size:0.92556em}}@media (max-width: 48.99556em){html{font-size:0.92444em}}@media (max-width: 48.93667em){html{font-size:0.92333em}}@media (max-width: 48.87778em){html{font-size:0.92222em}}@media (max-width: 48.81889em){html{font-size:0.92111em}}@media (max-width: 48.76em){html{font-size:0.92em}}@media (max-width: 48.70111em){html{font-size:0.91889em}}@media (max-width: 48.64222em){html{font-size:0.91778em}}@media (max-width: 48.58333em){html{font-size:0.91667em}}@media (max-width: 48.52444em){html{font-size:0.91556em}}@media (max-width: 48.46556em){html{font-size:0.91444em}}@media (max-width: 48.40667em){html{font-size:0.91333em}}@media (max-width: 48.34778em){html{font-size:0.91222em}}@media (max-width: 48.28889em){html{font-size:0.91111em}}@media (max-width: 48.23em){html{font-size:0.91em}}@media (max-width: 48.17111em){html{font-size:0.90889em}}@media (max-width: 48.11222em){html{font-size:0.90778em}}@media (max-width: 48.05333em){html{font-size:0.90667em}}@media (max-width: 47.99444em){html{font-size:0.90556em}}@media (max-width: 47.93556em){html{font-size:0.90444em}}@media (max-width: 47.87667em){html{font-size:0.90333em}}@media (max-width: 47.81778em){html{font-size:0.90222em}}@media (max-width: 47.75889em){html{font-size:0.90111em}}@media (max-width: 47.7em){html{font-size:0.9em}}@media (max-width: 47.64111em){html{font-size:0.89889em}}@media (max-width: 47.58222em){html{font-size:0.89778em}}@media (max-width: 47.52333em){html{font-size:0.89667em}}@media (max-width: 47.46444em){html{font-size:0.89556em}}@media (max-width: 47.40556em){html{font-size:0.89444em}}@media (max-width: 47.34667em){html{font-size:0.89333em}}@media (max-width: 47.28778em){html{font-size:0.89222em}}@media (max-width: 47.22889em){html{font-size:0.89111em}}@media (max-width: 47.17em){html{font-size:0.89em}}@media (max-width: 47.11111em){html{font-size:0.88889em}}@media (max-width: 47.05222em){html{font-size:0.88778em}}@media (max-width: 46.99333em){html{font-size:0.88667em}}@media (max-width: 46.93444em){html{font-size:0.88556em}}@media (max-width: 46.87556em){html{font-size:0.88444em}}@media (max-width: 46.81667em){html{font-size:0.88333em}}@media (max-width: 46.75778em){html{font-size:0.88222em}}@media (max-width: 46.69889em){html{font-size:0.88111em}}@media (max-width: 46.64em){html{font-size:0.88em}}@media (max-width: 46.58111em){html{font-size:0.87889em}}@media (max-width: 46.52222em){html{font-size:0.87778em}}@media (max-width: 46.46333em){html{font-size:0.87667em}}@media (max-width: 46.40444em){html{font-size:0.87556em}}@media (max-width: 46.34556em){html{font-size:0.87444em}}@media (max-width: 46.28667em){html{font-size:0.87333em}}@media (max-width: 46.22778em){html{font-size:0.87222em}}@media (max-width: 46.16889em){html{font-size:0.87111em}}@media (max-width: 46.11em){html{font-size:0.87em}}@media (max-width: 46.05111em){html{font-size:0.86889em}}@media (max-width: 45.99222em){html{font-size:0.86778em}}@media (max-width: 45.93333em){html{font-size:0.86667em}}@media (max-width: 45.87444em){html{font-size:0.86556em}}@media (max-width: 45.81556em){html{font-size:0.86444em}}@media (max-width: 45.75667em){html{font-size:0.86333em}}@media (max-width: 45.69778em){html{font-size:0.86222em}}@media (max-width: 45.63889em){html{font-size:0.86111em}}@media (max-width: 45.58em){html{font-size:0.86em}}@media (max-width: 45.52111em){html{font-size:0.85889em}}@media (max-width: 45.46222em){html{font-size:0.85778em}}@media (max-width: 45.40333em){html{font-size:0.85667em}}@media (max-width: 45.34444em){html{font-size:0.85556em}}@media (max-width: 45.28556em){html{font-size:0.85444em}}@media (max-width: 45.22667em){html{font-size:0.85333em}}@media (max-width: 45.16778em){html{font-size:0.85222em}}@media (max-width: 45.10889em){html{font-size:0.85111em}}@media (max-width: 45.05em){html{font-size:1em}body{margin:0 auto}.segment{padding:0;white-space:normal;max-width:29em;margin:0 auto}.segment .comments,.segment .code{display:block;padding:1em}.segment .comments{margin-left:0;width:auto}.segment .code{display:block;overflow-y:hidden;overflow-x:auto}.segment .code .wrapper{display:inline-block}#meta{position:static;margin:2em 0 0 0;overflow-y:hidden;overflow-x:auto}#meta .file-path{display:inline-block}}nav{position:fixed;top:0;right:0;width:20em}@media (max-width: 45.05em){nav{left:0;width:100%}}nav .tools{position:relative;z-index:100}nav .tools li{display:table-cell;vertical-align:middle;text-align:center;white-space:nowrap;height:2.1em;padding:0 0.55em}nav .tools .github{padding:0}nav .tools .github a{display:block;height:2.1em;width:2.1em;text-indent:-9001em}nav .tools .search{width:100%}nav .tools .search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:100%}nav .toc{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;top:2.1em;bottom:0;width:100%;overflow-x:hidden;overflow-y:auto}nav .toc li{position:relative}nav .toc .label{display:block;line-height:2em;padding:0 0.55em 0 0.55em}nav .toc li li .label{padding-left:1.1em}nav .toc li li li .label{padding-left:1.65em}nav .toc li li li li .label{padding-left:2.2em}nav .toc li li li li li .label{padding-left:2.75em}nav .toc li li li li li li .label{padding-left:3.3em}nav{-webkit-transition:height 0;-webkit-transition-delay:150ms;-moz-transition:height 0 150ms;-o-transition:height 0 150ms;transition:height 0 150ms}nav .tools .toggle{-webkit-transition:background 150ms;-moz-transition:background 150ms;-o-transition:background 150ms;transition:background 150ms}nav.active{-webkit-transition:height 0 0;-moz-transition:height 0 0;-o-transition:height 0 0;transition:height 0 0;height:100%}nav .toc{-webkit-transition:right 150ms;-moz-transition:right 150ms;-o-transition:right 150ms;transition:right 150ms;right:-100%}nav.active .toc{right:0}@media (max-width: 45.05em){nav .toc{-webkit-transition:left 150ms;-moz-transition:left 150ms;-o-transition:left 150ms;transition:left 150ms;right:auto;left:-100%}nav.active .toc{left:0}}@media (max-width: 45.05em){body{-webkit-transition:left 150ms;-moz-transition:left 150ms;-o-transition:left 150ms;transition:left 150ms;position:relative;left:0}html.popped{overflow:hidden}html.popped body{left:100%;overflow:hidden}}nav .toc .children,nav .toc .outline{display:none}nav .toc .expanded>.children,nav .toc .expanded>.outline,nav .toc .expanded>.outline .children{display:block}nav .toc .discloser{-webkit-transition-property:-moz-transform,-webkit-transform,-o-transform,-webkit-transform;-moz-transition-property:-moz-transform,-webkit-transform,-o-transform,-moz-transform;-o-transition-property:-moz-transform,-webkit-transform,-o-transform,-o-transform;transition-property:-moz-transform -webkit-transform -o-transform transform;-webkit-transition-duration:200ms;-moz-transition-duration:200ms;-o-transition-duration:200ms;transition-duration:200ms;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg);display:inline-block;height:9px;width:9px;padding:0.2em;margin:0.2em 0.2em -0.2em 0.2em;vertical-align:baseline;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOEFDRENGQzE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOEFDRENGRDE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4QUNEQ0ZBMTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4QUNEQ0ZCMTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+nQHMgwAAAM1JREFUeNpi/P//P0NJSYkuAwNDJhDXAPE7BjIAExIbZNA9IC4CYjZKDAIBfiDuBeLzQOxBiUEwoAXE26FYixKDYMAD6rpeqGvJNogBGl5F0PDLpMQgGBAC4mlQF9pTYhAMGADxASBeB8RylBgEA4FAfAOIW4CYhxKDQIAZxmChwJD1QFwGxHfINegaEGcB8UFyA/sd1AA9dEOIddFfIJ4OzdAfcSkiZNAOIC6GegcvwGXQHagBm8jNtB+hBmiTYgi6i+ZCw+EFOWkBIMAA1W4l62UzKWwAAAAASUVORK5CYII=') center center no-repeat;background-size:9px 9px}nav .toc .discloser.placeholder,nav .toc .expanded>.outline .discloser{background:none}nav .toc .expanded>.label .discloser{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}nav .toc .filtered>.label{display:none}nav .toc .matched-child>.label{display:block}nav .toc .matched-child>.children,nav .toc .matched-child>.outline,nav .toc .matched-child>.outline .children{display:block}nav .toc .matched>.children,nav .toc .matched>.outline,nav .toc .matched>.outline .children{display:block}nav.searching .toc .discloser{display:none}.comments .wrapper{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35}.comments .wrapper h1,.comments .wrapper h2,.comments .wrapper h3,.comments .wrapper h4,.comments .wrapper h5,.comments .wrapper h6{font-family:"HelveticaNeue-UltraLight","Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:100;letter-spacing:0.0625em;line-height:1.25;margin-bottom:0.5}.comments .wrapper h1{font-size:2.5em}.comments .wrapper h2{font-size:2em}.comments .wrapper h3{font-size:1.6em}.comments .wrapper h4{font-size:1.4em}.comments .wrapper h5{font-size:1.3em}.comments .wrapper h6{font-size:1.2em}.comments .wrapper p{margin:1em 0}.comments .wrapper>*:first-child{margin-top:0}.comments .wrapper>*:last-child{margin-bottom:0}.comments .wrapper ol,.comments .wrapper ul{padding-left:1.75em}.comments .wrapper ol li{list-style:decimal}.comments .wrapper ul li{list-style:disc}.comments .wrapper li{margin:1em 0}.comments .wrapper li:first-child{margin-top:0}.comments .wrapper li:last-child{margin-bottom:0}.comments .wrapper code{display:inline-block;padding:0.25em 0.25em 0 0.25em}.comments .wrapper pre{display:block;overflow-x:auto;overflow-y:hidden}.comments .wrapper pre code{padding:1em}.comments .wrapper blockquote{padding:0 1em}.comments .wrapper strong{font-weight:700}.comments .wrapper em{font-style:italic}html{background:#4a525a}#document{background:#f5fbff -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #272c30), color-stop(30%, #3e454c), color-stop(100%, #4a525a)) 33em no-repeat;background:#f5fbff -webkit-linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;background:#f5fbff -moz-linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;background:#f5fbff -o-linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;background:#f5fbff linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;margin-right:-1em;padding-right:1em}@media (max-width: 45.05em){#document{margin-right:0;padding-right:0}}#meta>*{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35;text-shadow:#272c30 1px 1px 0}#meta>*,#meta>* a{color:#9faab7}#meta>* a{text-decoration:none}.comments .wrapper{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35;text-shadow:#fff 1px 1px 0;color:#4a525a}.code .wrapper{font-family:"Droid Sans Mono",Menlo,Monaco,monospace;font-size:0.75em;line-height:1.4;text-shadow:#272c30 1px 1px 0;color:#cbd1d8}.code .wrapper .k{color:#e0c090}.code .wrapper .kc{color:#e0c090}.code .wrapper .kd{color:#e0c090}.code .wrapper .kp{color:#e0c090}.code .wrapper .kr{color:#e0c090}.code .wrapper .kt{color:#e0c090}.code .wrapper .na{color:#a9c2ba}.code .wrapper .nc{color:#cee4dd}.code .wrapper .no{color:#cee4dd}.code .wrapper .nd{color:#cee4dd}.code .wrapper .nf{color:#abd9cf}.code .wrapper .py{color:#abd9cf}.code .wrapper .nv{color:#b9d0af}.code .wrapper .vc{color:#b9d0af}.code .wrapper .vg{color:#b9d0af}.code .wrapper .vi{color:#b9d0af}.code .wrapper .s{color:#e9baba}.code .wrapper .sb{color:#e9baba}.code .wrapper .sc{color:#e9baba}.code .wrapper .sd{color:#e9baba}.code .wrapper .s2{color:#e9baba}.code .wrapper .se{color:#e9baba}.code .wrapper .sh{color:#e9baba}.code .wrapper .si{color:#e9baba}.code .wrapper .sx{color:#e9baba}.code .wrapper .sr{color:#cba8d6}.code .wrapper .s1{color:#e9baba}.code .wrapper .ss{color:#cba8d6}.code .wrapper .m{color:#cba8d6}.code .wrapper .mf{color:#cba8d6}.code .wrapper .mh{color:#cba8d6}.code .wrapper .mi{color:#cba8d6}.code .wrapper .il{color:#cba8d6}.code .wrapper .mo{color:#cba8d6}.code .wrapper .o{color:#ded3a1}.code .wrapper .ow{color:#ded3a1}.code .wrapper .p{color:#ded3a1}.code .wrapper .c,.code .wrapper .cm,.code .wrapper .cp,.code .wrapper .c1,.code .wrapper .cs{font-style:italic}.code .wrapper .c{color:#b1bac4}.code .wrapper .cm{color:#b1bac4}.code .wrapper .cp{color:#b1bac4}.code .wrapper .c1{color:#b1bac4}.code .wrapper .cs{color:#b1bac4}@media (max-width: 45.05em){.code{-webkit-border-radius:0.4em;-moz-border-radius:0.4em;-ms-border-radius:0.4em;-o-border-radius:0.4em;border-radius:0.4em;-webkit-box-shadow:#272c30 0 0 0.5em 0.2em inset;-moz-box-shadow:#272c30 0 0 0.5em 0.2em inset;box-shadow:#272c30 0 0 0.5em 0.2em inset;background:#4a525a}.code .wrapper{-webkit-box-shadow:#4a525a 0 0 0.25em 0.75em;-moz-box-shadow:#4a525a 0 0 0.25em 0.75em;box-shadow:#4a525a 0 0 0.25em 0.75em;background:#4a525a}}@media (max-width: 29em){.code{-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}}nav{text-shadow:#f0f0f0 1px 1px 0;color:#4a525a}nav .tools,nav .toc{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35}nav .tools{-webkit-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;-moz-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0.9)), color-stop(100%, rgba(205,205,205,0.9)));background:-webkit-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:-moz-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:-o-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));-moz-border-radius-bottomleft:0.4em;-webkit-border-bottom-left-radius:0.4em;border-bottom-left-radius:0.4em;border-bottom:1px solid #4a525a;border-left:1px solid #4a525a}@media (max-width: 53em){nav .tools{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}}nav .tools li{border-right:1px solid #4a525a}nav .tools li:last-child{border-right:none}nav .tools .toggle{cursor:pointer}nav .tools .github a{-webkit-transition:opacity 200ms;-moz-transition:opacity 200ms;-o-transition:opacity 200ms;transition:opacity 200ms;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAwCAYAAACScGMWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOEFDRENGODE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOEFDRENGOTE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4QUNEQ0Y2MTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4QUNEQ0Y3MTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FC/Z5AAACv9JREFUeNrMWXl0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') center center no-repeat;background-size:19.5px 24px}nav .tools .github a:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=90);opacity:0.9}nav.active .tools{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}nav.active .tools .toggle{background:rgba(205,205,205,0.9);position:relative}nav .toc{-webkit-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;-moz-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;background:rgba(230,230,230,0.9);border-left:1px solid #4a525a}nav .toc .label{color:#4a525a;text-decoration:none;border-top:1px solid rgba(192,192,192,0.9);border-bottom:1px solid rgba(192,192,192,0.9);margin-top:-1px}nav .toc .label:hover{background:rgba(205,205,205,0.9)}nav .toc .file>.label{font-weight:bold}nav .toc .selected>.label{background:#f5fbff}nav .toc .label em{font-weight:bold}nav .toc .file>.label em{color:#101214}nav .toc .matched-child>.label{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:0.65;text-shadow:none;background:rgba(192,192,192,0.9)}@media (max-width: 45.05em){nav .tools,nav .toc{border-left-width:0}nav .tools{background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #cdcdcd));background:-webkit-linear-gradient(top, #ffffff,#cdcdcd);background:-moz-linear-gradient(top, #ffffff,#cdcdcd);background:-o-linear-gradient(top, #ffffff,#cdcdcd);background:linear-gradient(top, #ffffff,#cdcdcd)}nav .toc{background:#e6e6e6}}.comments .wrapper a{display:inline-block;color:#a8614e;text-decoration:none}.comments .wrapper a:hover,.comments .wrapper a:hover *{text-decoration:underline}.comments .wrapper code{font-family:"Droid Sans Mono",Menlo,Monaco,monospace;font-size:0.75em;line-height:1.4;border:1px solid #e6e0d5}.comments .wrapper pre,.comments .wrapper code{-webkit-border-radius:0.4em;-moz-border-radius:0.4em;-ms-border-radius:0.4em;-o-border-radius:0.4em;border-radius:0.4em;background:#fbf8f3}.comments .wrapper pre{-webkit-box-shadow:#f2ece3 0 0 0.4em 0.2em;-moz-box-shadow:#f2ece3 0 0 0.4em 0.2em;box-shadow:#f2ece3 0 0 0.4em 0.2em;border:1px solid #d9c9af}.comments .wrapper pre code{border-width:0;background:transparent}.comments .wrapper blockquote{border-left:0.15em solid #959fa8;margin-left:-0.15em}body{-webkit-text-size-adjust:100%}input[type="search"]{-webkit-border-radius:1em;-moz-border-radius:1em;-ms-border-radius:1em;-o-border-radius:1em;border-radius:1em;-webkit-box-shadow:#ddd 0 1px 1px 0 inset;-moz-box-shadow:#ddd 0 1px 1px 0 inset;box-shadow:#ddd 0 1px 1px 0 inset;border:1px solid #959595;padding:0.15em 0.8em}.comments.doc-section .wrapper{color:#252519}.comments.doc-section.doc-section-private .wrapper,.comments.doc-section.doc-section-protected .wrapper,.comments.doc-section.doc-section-internal .wrapper{color:#7f7f7f}.comments.doc-section .doc-section-header{font:bold 18px "helvetica neue",helvetica,sans-serif}.comments.doc-section .docs .doc-section-header code{font-size:18px}.code .marker,.code .marker.wrapper,.code .wrapper.marker{display:none}.code.folded .wrapper{display:none;cursor:default}.code.folded .marker{-webkit-border-radius:0.2em;-moz-border-radius:0.2em;-ms-border-radius:0.2em;-o-border-radius:0.2em;border-radius:0.2em;-webkit-box-shadow:#2f3539 1px 1px 1px 0;-moz-box-shadow:#2f3539 1px 1px 1px 0;box-shadow:#2f3539 1px 1px 1px 0;display:inline-block;border:1px solid #73787f;padding:0.2em 0.5em;margin-left:-0.5em;margin-right:-0.5em;background:#58616b;font:12px "Droid Sans Mono",Menlo,Monaco,monospace;text-shadow:#2f3539 1px 1px 0px;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none}.code.folded .marker .c1{color:#73787f;font-style:normal}.code.folded .marker:hover{background:#5f6872}.code.folded .marker:hover .c1{color:#7b8087}.code.folded .marker .c1:after{content:" …"} | ||
| html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}html,body{height:100%}#document{min-height:100%}body{max-width:33em}.segment{padding:0.5em 0 0.5em 33em;white-space:nowrap}.segment:first-child{padding-top:4.1em}.segment:last-child{padding-bottom:2em}.segment .comments,.segment .code{display:inline-block;vertical-align:top;padding:0 2em}.segment .comments{margin-left:-33em;width:29em;white-space:normal}.segment .code{white-space:pre}#meta{position:absolute;left:33em;padding:0.25em 1em}@media (max-width: 53em){html{font-size:1em}}@media (max-width: 52.94111em){html{font-size:0.99889em}}@media (max-width: 52.88222em){html{font-size:0.99778em}}@media (max-width: 52.82333em){html{font-size:0.99667em}}@media (max-width: 52.76444em){html{font-size:0.99556em}}@media (max-width: 52.70556em){html{font-size:0.99444em}}@media (max-width: 52.64667em){html{font-size:0.99333em}}@media (max-width: 52.58778em){html{font-size:0.99222em}}@media (max-width: 52.52889em){html{font-size:0.99111em}}@media (max-width: 52.47em){html{font-size:0.99em}}@media (max-width: 52.41111em){html{font-size:0.98889em}}@media (max-width: 52.35222em){html{font-size:0.98778em}}@media (max-width: 52.29333em){html{font-size:0.98667em}}@media (max-width: 52.23444em){html{font-size:0.98556em}}@media (max-width: 52.17556em){html{font-size:0.98444em}}@media (max-width: 52.11667em){html{font-size:0.98333em}}@media (max-width: 52.05778em){html{font-size:0.98222em}}@media (max-width: 51.99889em){html{font-size:0.98111em}}@media (max-width: 51.94em){html{font-size:0.98em}}@media (max-width: 51.88111em){html{font-size:0.97889em}}@media (max-width: 51.82222em){html{font-size:0.97778em}}@media (max-width: 51.76333em){html{font-size:0.97667em}}@media (max-width: 51.70444em){html{font-size:0.97556em}}@media (max-width: 51.64556em){html{font-size:0.97444em}}@media (max-width: 51.58667em){html{font-size:0.97333em}}@media (max-width: 51.52778em){html{font-size:0.97222em}}@media (max-width: 51.46889em){html{font-size:0.97111em}}@media (max-width: 51.41em){html{font-size:0.97em}}@media (max-width: 51.35111em){html{font-size:0.96889em}}@media (max-width: 51.29222em){html{font-size:0.96778em}}@media (max-width: 51.23333em){html{font-size:0.96667em}}@media (max-width: 51.17444em){html{font-size:0.96556em}}@media (max-width: 51.11556em){html{font-size:0.96444em}}@media (max-width: 51.05667em){html{font-size:0.96333em}}@media (max-width: 50.99778em){html{font-size:0.96222em}}@media (max-width: 50.93889em){html{font-size:0.96111em}}@media (max-width: 50.88em){html{font-size:0.96em}}@media (max-width: 50.82111em){html{font-size:0.95889em}}@media (max-width: 50.76222em){html{font-size:0.95778em}}@media (max-width: 50.70333em){html{font-size:0.95667em}}@media (max-width: 50.64444em){html{font-size:0.95556em}}@media (max-width: 50.58556em){html{font-size:0.95444em}}@media (max-width: 50.52667em){html{font-size:0.95333em}}@media (max-width: 50.46778em){html{font-size:0.95222em}}@media (max-width: 50.40889em){html{font-size:0.95111em}}@media (max-width: 50.35em){html{font-size:0.95em}}@media (max-width: 50.29111em){html{font-size:0.94889em}}@media (max-width: 50.23222em){html{font-size:0.94778em}}@media (max-width: 50.17333em){html{font-size:0.94667em}}@media (max-width: 50.11444em){html{font-size:0.94556em}}@media (max-width: 50.05556em){html{font-size:0.94444em}}@media (max-width: 49.99667em){html{font-size:0.94333em}}@media (max-width: 49.93778em){html{font-size:0.94222em}}@media (max-width: 49.87889em){html{font-size:0.94111em}}@media (max-width: 49.82em){html{font-size:0.94em}}@media (max-width: 49.76111em){html{font-size:0.93889em}}@media (max-width: 49.70222em){html{font-size:0.93778em}}@media (max-width: 49.64333em){html{font-size:0.93667em}}@media (max-width: 49.58444em){html{font-size:0.93556em}}@media (max-width: 49.52556em){html{font-size:0.93444em}}@media (max-width: 49.46667em){html{font-size:0.93333em}}@media (max-width: 49.40778em){html{font-size:0.93222em}}@media (max-width: 49.34889em){html{font-size:0.93111em}}@media (max-width: 49.29em){html{font-size:0.93em}}@media (max-width: 49.23111em){html{font-size:0.92889em}}@media (max-width: 49.17222em){html{font-size:0.92778em}}@media (max-width: 49.11333em){html{font-size:0.92667em}}@media (max-width: 49.05444em){html{font-size:0.92556em}}@media (max-width: 48.99556em){html{font-size:0.92444em}}@media (max-width: 48.93667em){html{font-size:0.92333em}}@media (max-width: 48.87778em){html{font-size:0.92222em}}@media (max-width: 48.81889em){html{font-size:0.92111em}}@media (max-width: 48.76em){html{font-size:0.92em}}@media (max-width: 48.70111em){html{font-size:0.91889em}}@media (max-width: 48.64222em){html{font-size:0.91778em}}@media (max-width: 48.58333em){html{font-size:0.91667em}}@media (max-width: 48.52444em){html{font-size:0.91556em}}@media (max-width: 48.46556em){html{font-size:0.91444em}}@media (max-width: 48.40667em){html{font-size:0.91333em}}@media (max-width: 48.34778em){html{font-size:0.91222em}}@media (max-width: 48.28889em){html{font-size:0.91111em}}@media (max-width: 48.23em){html{font-size:0.91em}}@media (max-width: 48.17111em){html{font-size:0.90889em}}@media (max-width: 48.11222em){html{font-size:0.90778em}}@media (max-width: 48.05333em){html{font-size:0.90667em}}@media (max-width: 47.99444em){html{font-size:0.90556em}}@media (max-width: 47.93556em){html{font-size:0.90444em}}@media (max-width: 47.87667em){html{font-size:0.90333em}}@media (max-width: 47.81778em){html{font-size:0.90222em}}@media (max-width: 47.75889em){html{font-size:0.90111em}}@media (max-width: 47.7em){html{font-size:0.9em}}@media (max-width: 47.64111em){html{font-size:0.89889em}}@media (max-width: 47.58222em){html{font-size:0.89778em}}@media (max-width: 47.52333em){html{font-size:0.89667em}}@media (max-width: 47.46444em){html{font-size:0.89556em}}@media (max-width: 47.40556em){html{font-size:0.89444em}}@media (max-width: 47.34667em){html{font-size:0.89333em}}@media (max-width: 47.28778em){html{font-size:0.89222em}}@media (max-width: 47.22889em){html{font-size:0.89111em}}@media (max-width: 47.17em){html{font-size:0.89em}}@media (max-width: 47.11111em){html{font-size:0.88889em}}@media (max-width: 47.05222em){html{font-size:0.88778em}}@media (max-width: 46.99333em){html{font-size:0.88667em}}@media (max-width: 46.93444em){html{font-size:0.88556em}}@media (max-width: 46.87556em){html{font-size:0.88444em}}@media (max-width: 46.81667em){html{font-size:0.88333em}}@media (max-width: 46.75778em){html{font-size:0.88222em}}@media (max-width: 46.69889em){html{font-size:0.88111em}}@media (max-width: 46.64em){html{font-size:0.88em}}@media (max-width: 46.58111em){html{font-size:0.87889em}}@media (max-width: 46.52222em){html{font-size:0.87778em}}@media (max-width: 46.46333em){html{font-size:0.87667em}}@media (max-width: 46.40444em){html{font-size:0.87556em}}@media (max-width: 46.34556em){html{font-size:0.87444em}}@media (max-width: 46.28667em){html{font-size:0.87333em}}@media (max-width: 46.22778em){html{font-size:0.87222em}}@media (max-width: 46.16889em){html{font-size:0.87111em}}@media (max-width: 46.11em){html{font-size:0.87em}}@media (max-width: 46.05111em){html{font-size:0.86889em}}@media (max-width: 45.99222em){html{font-size:0.86778em}}@media (max-width: 45.93333em){html{font-size:0.86667em}}@media (max-width: 45.87444em){html{font-size:0.86556em}}@media (max-width: 45.81556em){html{font-size:0.86444em}}@media (max-width: 45.75667em){html{font-size:0.86333em}}@media (max-width: 45.69778em){html{font-size:0.86222em}}@media (max-width: 45.63889em){html{font-size:0.86111em}}@media (max-width: 45.58em){html{font-size:0.86em}}@media (max-width: 45.52111em){html{font-size:0.85889em}}@media (max-width: 45.46222em){html{font-size:0.85778em}}@media (max-width: 45.40333em){html{font-size:0.85667em}}@media (max-width: 45.34444em){html{font-size:0.85556em}}@media (max-width: 45.28556em){html{font-size:0.85444em}}@media (max-width: 45.22667em){html{font-size:0.85333em}}@media (max-width: 45.16778em){html{font-size:0.85222em}}@media (max-width: 45.10889em){html{font-size:0.85111em}}@media (max-width: 45.05em){html{font-size:1em}body{margin:0 auto}.segment{padding:0;white-space:normal;max-width:29em;margin:0 auto}.segment .comments,.segment .code{display:block;padding:1em}.segment .comments{margin-left:0;width:auto}.segment .code{display:block;overflow-y:hidden;overflow-x:auto}.segment .code .wrapper{display:inline-block}#meta{position:static;margin:2em 0 0 0;overflow-y:hidden;overflow-x:auto}#meta .file-path{display:inline-block}}nav{position:fixed;top:0;right:0;width:20em}@media (max-width: 45.05em){nav{left:0;width:100%}}nav .tools{position:relative;z-index:100}nav .tools li{display:table-cell;vertical-align:middle;text-align:center;white-space:nowrap;height:2.1em;padding:0 0.55em}nav .tools .github{padding:0}nav .tools .github a{display:block;height:2.1em;width:2.1em;text-indent:-9001em}nav .tools .search{width:100%}nav .tools .search input{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:100%}nav .toc{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;top:2.1em;bottom:0;width:100%;overflow-x:hidden;overflow-y:auto}nav .toc li{position:relative}nav .toc .label{display:block;line-height:2em;padding:0 0.55em 0 0.55em}nav .toc li li .label{padding-left:1.1em}nav .toc li li li .label{padding-left:1.65em}nav .toc li li li li .label{padding-left:2.2em}nav .toc li li li li li .label{padding-left:2.75em}nav .toc li li li li li li .label{padding-left:3.3em}nav{-moz-transition:height 150ms 0;-o-transition:height 150ms 0;-webkit-transition:height 150ms 0;transition:height 150ms 0}nav .tools .toggle{-moz-transition:background 150ms;-o-transition:background 150ms;-webkit-transition:background 150ms;transition:background 150ms}nav.active{-moz-transition:height 0;-o-transition:height 0;-webkit-transition:height 0;transition:height 0;height:100%}nav .toc{-moz-transition:right 150ms;-o-transition:right 150ms;-webkit-transition:right 150ms;transition:right 150ms;right:-100%}nav.active .toc{right:0}@media (max-width: 45.05em){nav .toc{-moz-transition:left 150ms;-o-transition:left 150ms;-webkit-transition:left 150ms;transition:left 150ms;right:auto;left:-100%}nav.active .toc{left:0}}@media (max-width: 45.05em){body{-moz-transition:left 150ms;-o-transition:left 150ms;-webkit-transition:left 150ms;transition:left 150ms;position:relative;left:0}html.popped{overflow:hidden}html.popped body{left:100%;overflow:hidden}}nav .toc .children,nav .toc .outline{display:none}nav .toc .expanded>.children,nav .toc .expanded>.outline,nav .toc .expanded>.outline .children{display:block}nav .toc .discloser{-moz-transition-property:-moz-transform,-webkit-transform,-o-transform,-moz-transform;-o-transition-property:-moz-transform,-webkit-transform,-o-transform,-o-transform;-webkit-transition-property:-moz-transform,-webkit-transform,-o-transform,-webkit-transform;transition-property:-moz-transform -webkit-transform -o-transform transform;-moz-transition-duration:200ms;-o-transition-duration:200ms;-webkit-transition-duration:200ms;transition-duration:200ms;-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg);display:inline-block;height:9px;width:9px;padding:0.2em;margin:0.2em 0.2em -0.2em 0.2em;vertical-align:baseline;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOEFDRENGQzE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOEFDRENGRDE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4QUNEQ0ZBMTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4QUNEQ0ZCMTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+nQHMgwAAAM1JREFUeNpi/P//P0NJSYkuAwNDJhDXAPE7BjIAExIbZNA9IC4CYjZKDAIBfiDuBeLzQOxBiUEwoAXE26FYixKDYMAD6rpeqGvJNogBGl5F0PDLpMQgGBAC4mlQF9pTYhAMGADxASBeB8RylBgEA4FAfAOIW4CYhxKDQIAZxmChwJD1QFwGxHfINegaEGcB8UFyA/sd1AA9dEOIddFfIJ4OzdAfcSkiZNAOIC6GegcvwGXQHagBm8jNtB+hBmiTYgi6i+ZCw+EFOWkBIMAA1W4l62UzKWwAAAAASUVORK5CYII=') center center no-repeat;background-size:9px 9px}nav .toc .discloser.placeholder,nav .toc .expanded>.outline .discloser{background:none}nav .toc .expanded>.label .discloser{-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg);transform:rotate(90deg)}nav .toc .filtered>.label{display:none}nav .toc .matched-child>.label{display:block}nav .toc .matched-child>.children,nav .toc .matched-child>.outline,nav .toc .matched-child>.outline .children{display:block}nav .toc .matched>.children,nav .toc .matched>.outline,nav .toc .matched>.outline .children{display:block}nav.searching .toc .discloser{display:none}.comments .wrapper{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35}.comments .wrapper h1,.comments .wrapper h2,.comments .wrapper h3,.comments .wrapper h4,.comments .wrapper h5,.comments .wrapper h6{font-family:"HelveticaNeue-UltraLight","Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:100;letter-spacing:0.0625em;line-height:1.25;margin-bottom:0.5em}.comments .wrapper h1{font-size:2.5em}.comments .wrapper h2{font-size:2em}.comments .wrapper h3{font-size:1.6em}.comments .wrapper h4{font-size:1.4em}.comments .wrapper h5{font-size:1.3em}.comments .wrapper h6{font-size:1.2em}.comments .wrapper p{margin:1em 0}.comments .wrapper>*:first-child{margin-top:0}.comments .wrapper>*:last-child{margin-bottom:0}.comments .wrapper ol,.comments .wrapper ul{padding-left:1.75em;margin:1em 0}.comments .wrapper ol li{list-style:decimal}.comments .wrapper ul li{list-style:disc}.comments .wrapper li{margin:1em 0}.comments .wrapper li:first-child{margin-top:0}.comments .wrapper li:last-child{margin-bottom:0}.comments .wrapper code{display:inline-block;padding:0.25em 0.25em 0 0.25em}.comments .wrapper pre{display:block;overflow-x:auto;overflow-y:hidden}.comments .wrapper pre .hljs-comment,.comments .wrapper pre .hljs-template_comment,.comments .wrapper pre .diff .hljs-header,.comments .wrapper pre .hljs-doctype,.comments .wrapper pre .hljs-pi,.comments .wrapper pre .lisp .hljs-string,.comments .wrapper pre .hljs-javadoc{color:#93a1a1;font-style:italic}.comments .wrapper pre .hljs-keyword,.comments .wrapper pre .hljs-winutils,.comments .wrapper pre .method,.comments .wrapper pre .hljs-addition,.comments .wrapper pre .css .hljs-tag,.comments .wrapper pre .hljs-request,.comments .wrapper pre .hljs-status,.comments .wrapper pre .nginx .hljs-title{color:#859900}.comments .wrapper pre .hljs-number,.comments .wrapper pre .hljs-command,.comments .wrapper pre .hljs-string,.comments .wrapper pre .hljs-tag .hljs-value,.comments .wrapper pre .hljs-rules .hljs-value,.comments .wrapper pre .hljs-phpdoc,.comments .wrapper pre .tex .hljs-formula,.comments .wrapper pre .hljs-regexp,.comments .wrapper pre .hljs-hexcolor{color:#2aa198}.comments .wrapper pre .hljs-title,.comments .wrapper pre .hljs-localvars,.comments .wrapper pre .hljs-chunk,.comments .wrapper pre .hljs-decorator,.comments .wrapper pre .hljs-built_in,.comments .wrapper pre .hljs-identifier,.comments .wrapper pre .vhdl .hljs-literal,.comments .wrapper pre .hljs-id,.comments .wrapper pre .css .hljs-function{color:#268bd2}.comments .wrapper pre .hljs-attribute,.comments .wrapper pre .hljs-variable,.comments .wrapper pre .lisp .hljs-body,.comments .wrapper pre .smalltalk .hljs-number,.comments .wrapper pre .hljs-constant,.comments .wrapper pre .hljs-class .hljs-title,.comments .wrapper pre .hljs-parent,.comments .wrapper pre .haskell .hljs-type{color:#b58900}.comments .wrapper pre .hljs-preprocessor,.comments .wrapper pre .hljs-preprocessor .hljs-keyword,.comments .wrapper pre .hljs-pragma,.comments .wrapper pre .hljs-shebang,.comments .wrapper pre .hljs-symbol,.comments .wrapper pre .hljs-symbol .hljs-string,.comments .wrapper pre .diff .hljs-change,.comments .wrapper pre .hljs-special,.comments .wrapper pre .hljs-attr_selector,.comments .wrapper pre .hljs-important,.comments .wrapper pre .hljs-subst,.comments .wrapper pre .hljs-cdata,.comments .wrapper pre .clojure .hljs-title,.comments .wrapper pre .css .hljs-pseudo{color:#cb4b16}.comments .wrapper pre .hljs-deletion{color:#dc322f}.comments .wrapper pre .tex .hljs-formula{background:#eee8d5}.comments .wrapper pre code{padding:1em}.comments .wrapper blockquote{padding:0 1em}.comments .wrapper strong{font-weight:700}.comments .wrapper em{font-style:italic}html{background:#4a525a}#document{background:#f5fbff url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI3MmMzMCIvPjxzdG9wIG9mZnNldD0iMzAlIiBzdG9wLWNvbG9yPSIjM2U0NTRjIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjNGE1MjVhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g') 33em no-repeat;background:#f5fbff -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #272c30),color-stop(30%, #3e454c),color-stop(100%, #4a525a)) 33em no-repeat;background:#f5fbff -moz-linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;background:#f5fbff -webkit-linear-gradient(left, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;background:#f5fbff linear-gradient(to right, #272c30,#3e454c 0.3em,#4a525a 1em) 33em no-repeat;margin-right:-1em;padding-right:1em}@media (max-width: 45.05em){#document{margin-right:0;padding-right:0}}#meta>*{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35;text-shadow:#272c30 1px 1px 0}#meta>*,#meta>* a{color:#9faab7}#meta>* a{text-decoration:none}.comments .wrapper{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35;text-shadow:#fff 1px 1px 0;color:#4a525a}.code .wrapper{font-family:"Droid Sans Mono",Menlo,Monaco,monospace;font-size:0.75em;line-height:1.4;text-shadow:#272c30 1px 1px 0;color:#cbd1d8}.code .wrapper .hljs{display:block;padding:0.5em}.code .wrapper .hljs-comment,.code .wrapper .hljs-template_comment,.code .wrapper .diff .hljs-header,.code .wrapper .hljs-doctype,.code .wrapper .hljs-pi,.code .wrapper .lisp .hljs-string,.code .wrapper .hljs-javadoc{color:#b1bac4;font-style:italic}.code .wrapper .hljs-keyword,.code .wrapper .hljs-winutils,.code .wrapper .method,.code .wrapper .hljs-addition,.code .wrapper .css .hljs-tag,.code .wrapper .hljs-request,.code .wrapper .hljs-status,.code .wrapper .nginx .hljs-title{color:#e0c090}.code .wrapper .hljs-string{color:#e9baba}.code .wrapper .hljs-property{color:#b9d0af}.code .wrapper .hljs-function{color:#abd9cf}.code .wrapper .hljs-class{color:#cee4dd}.code .wrapper .hljs-number,.code .wrapper .hljs-command,.code .wrapper .hljs-tag .hljs-value,.code .wrapper .hljs-rules .hljs-value,.code .wrapper .hljs-phpdoc,.code .wrapper .tex .hljs-formula,.code .wrapper .hljs-regexp,.code .wrapper .hljs-hexcolor{color:#cba8d6}.code .wrapper .hljs-title,.code .wrapper .hljs-localvars,.code .wrapper .hljs-chunk,.code .wrapper .hljs-decorator,.code .wrapper .hljs-built_in,.code .wrapper .hljs-identifier,.code .wrapper .vhdl .hljs-literal,.code .wrapper .hljs-id,.code .wrapper .css .hljs-function{color:#a9c2ba}.code .wrapper .hljs-attribute,.code .wrapper .hljs-variable,.code .wrapper .lisp .hljs-body,.code .wrapper .smalltalk .hljs-number,.code .wrapper .hljs-constant,.code .wrapper .hljs-class .hljs-title,.code .wrapper .hljs-parent,.code .wrapper .haskell .hljs-type{color:#b9d0af}.code .wrapper .hljs-preprocessor,.code .wrapper .hljs-preprocessor .hljs-keyword,.code .wrapper .hljs-pragma,.code .wrapper .hljs-shebang,.code .wrapper .hljs-symbol,.code .wrapper .hljs-symbol .hljs-string,.code .wrapper .diff .hljs-change,.code .wrapper .hljs-special,.code .wrapper .hljs-attr_selector,.code .wrapper .hljs-important,.code .wrapper .hljs-subst,.code .wrapper .hljs-cdata,.code .wrapper .clojure .hljs-title,.code .wrapper .css .hljs-pseudo{color:#cee4dd}.code .wrapper .hljs-deletion{color:#dc322f}.code .wrapper .tex .hljs-formula{background:#e9baba}@media (max-width: 45.05em){.code{-moz-border-radius:0.4em;-webkit-border-radius:0.4em;border-radius:0.4em;-moz-box-shadow:#272c30 0 0 0.5em 0.2em inset;-webkit-box-shadow:#272c30 0 0 0.5em 0.2em inset;box-shadow:#272c30 0 0 0.5em 0.2em inset;background:#4a525a}.code .wrapper{-moz-box-shadow:#4a525a 0 0 0.25em 0.75em;-webkit-box-shadow:#4a525a 0 0 0.25em 0.75em;box-shadow:#4a525a 0 0 0.25em 0.75em;background:#4a525a}}@media (max-width: 29em){.code{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}}nav{text-shadow:#f0f0f0 1px 1px 0;color:#4a525a}nav .tools,nav .toc{font-family:"Helvetica Neue",Helvetica,"Droid Sans",sans-serif;font-weight:300;font-size:0.9375em;line-height:1.35}nav .tools{-moz-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;-webkit-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;background:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjkiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNjZGNkY2QiIHN0b3Atb3BhY2l0eT0iMC45Ii8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(255,255,255,0.9)),color-stop(100%, rgba(205,205,205,0.9)));background:-moz-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:-webkit-linear-gradient(top, rgba(255,255,255,0.9),rgba(205,205,205,0.9));background:linear-gradient(to bottom, rgba(255,255,255,0.9),rgba(205,205,205,0.9));-moz-border-radius-bottomleft:0.4em;-webkit-border-bottom-left-radius:0.4em;border-bottom-left-radius:0.4em;border-bottom:1px solid #4a525a;border-left:1px solid #4a525a}@media (max-width: 53em){nav .tools{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}}nav .tools li{border-right:1px solid #4a525a}nav .tools li:last-child{border-right:none}nav .tools .toggle{cursor:pointer}nav .tools .github a{-moz-transition:opacity 200ms;-o-transition:opacity 200ms;-webkit-transition:opacity 200ms;transition:opacity 200ms;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAwCAYAAACScGMWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOEFDRENGODE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOEFDRENGOTE2NEUxMUUxODdDNUQ2ODM0QzVGRkVBMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4QUNEQ0Y2MTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4QUNEQ0Y3MTY0RTExRTE4N0M1RDY4MzRDNUZGRUExIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FC/Z5AAACv9JREFUeNrMWXl0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') center center no-repeat;background-size:19.5px 24px}nav .tools .github a:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=90);opacity:0.9}nav.active .tools{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}nav.active .tools .toggle{background:rgba(205,205,205,0.9);position:relative}nav .toc{-moz-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;-webkit-box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;box-shadow:rgba(0,0,0,0.3) 0 0 0.5em 0.1em;background:rgba(230,230,230,0.9);border-left:1px solid #4a525a}nav .toc .label{color:#4a525a;text-decoration:none;border-top:1px solid rgba(192,192,192,0.9);border-bottom:1px solid rgba(192,192,192,0.9);margin-top:-1px}nav .toc .label:hover{background:rgba(205,205,205,0.9)}nav .toc .file>.label{font-weight:bold}nav .toc .selected>.label{background:#f5fbff}nav .toc .label em{font-weight:bold}nav .toc .file>.label em{color:#101214}nav .toc .matched-child>.label{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:0.65;text-shadow:none;background:rgba(192,192,192,0.9)}@media (max-width: 45.05em){nav .tools,nav .toc{border-left-width:0}nav .tools{background:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2NkY2RjZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff),color-stop(100%, #cdcdcd));background:-moz-linear-gradient(top, #ffffff,#cdcdcd);background:-webkit-linear-gradient(top, #ffffff,#cdcdcd);background:linear-gradient(to bottom, #ffffff,#cdcdcd)}nav .toc{background:#e6e6e6}}.comments .wrapper a{display:inline-block;color:#a8614e;text-decoration:none}.comments .wrapper a:hover,.comments .wrapper a:hover *{text-decoration:underline}.comments .wrapper code{font-family:"Droid Sans Mono",Menlo,Monaco,monospace;font-size:0.75em;line-height:1.4;border:1px solid #e6e0d5}.comments .wrapper pre,.comments .wrapper code{-moz-border-radius:0.4em;-webkit-border-radius:0.4em;border-radius:0.4em;background:#fbf8f3}.comments .wrapper pre{-moz-box-shadow:#f2ece3 0 0 0.4em 0.2em;-webkit-box-shadow:#f2ece3 0 0 0.4em 0.2em;box-shadow:#f2ece3 0 0 0.4em 0.2em;border:1px solid #d9c9af}.comments .wrapper pre code{border-width:0;background:transparent}.comments .wrapper blockquote{border-left:0.15em solid #959fa8;margin-left:-0.15em}body{-webkit-text-size-adjust:100%}input[type="search"]{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em;-moz-box-shadow:#ddd 0 1px 1px 0 inset;-webkit-box-shadow:#ddd 0 1px 1px 0 inset;box-shadow:#ddd 0 1px 1px 0 inset;border:1px solid #959595;padding:0.15em 0.8em}.comments.doc-section .wrapper{color:#252519}.comments.doc-section.doc-section-private .wrapper,.comments.doc-section.doc-section-protected .wrapper,.comments.doc-section.doc-section-internal .wrapper{color:#7f7f7f}.comments.doc-section .doc-section-header{font:bold 18px "helvetica neue",helvetica,sans-serif}.comments.doc-section .docs .doc-section-header code{font-size:18px}.code .marker,.code .marker.wrapper,.code .wrapper.marker{display:none}.code.folded .wrapper{display:none;cursor:default}.code.folded .marker{-moz-border-radius:0.2em;-webkit-border-radius:0.2em;border-radius:0.2em;-moz-box-shadow:#2f3539 1px 1px 1px 0;-webkit-box-shadow:#2f3539 1px 1px 1px 0;box-shadow:#2f3539 1px 1px 1px 0;display:inline-block;border:1px solid #73787f;padding:0.2em 0.5em;margin-left:-0.5em;margin-right:-0.5em;background:#58616b;font:12px "Droid Sans Mono",Menlo,Monaco,monospace;text-shadow:#2f3539 1px 1px 0px;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none}.code.folded .marker .c1{color:#73787f;font-style:normal}.code.folded .marker:hover{background:#5f6872}.code.folded .marker:hover .c1{color:#7b8087}.code.folded .marker .c1:after{content:" …"} |
| @import "compass" | ||
| @import "code_styles" | ||
| @import "codestyles" | ||
@@ -411,2 +411,3 @@ @import "compass/reset" | ||
| overflow-y: hidden | ||
| +inline-codestyles | ||
@@ -463,3 +464,3 @@ code | ||
| .wrapper | ||
| +code-styles | ||
| +codestyles | ||
| +code-font | ||
@@ -466,0 +467,0 @@ +text-shadow($code-shadow-color 1px 1px 0) |
+50
-18
@@ -11,4 +11,14 @@ ### | ||
| _ = require 'underscore' | ||
| showdown = require 'showdown' | ||
| hljs = require 'highlight.js' | ||
| marked = require 'marked' | ||
| marked.setOptions | ||
| highlight: (code, lang) -> | ||
| if lang | ||
| try | ||
| return hljs.highlight(lang, code, true).value | ||
| catch e | ||
| return code | ||
| return code | ||
| CompatibilityHelpers = require './utils/compatibility_helpers' | ||
@@ -81,3 +91,4 @@ LANGUAGES = null | ||
| for stripPath in stripPrefixes | ||
| file = file[stripPath.length..] if file[0...stripPath.length] is stripPath | ||
| if file[0...stripPath.length] is stripPath | ||
| file = file[stripPath.length..] | ||
@@ -155,3 +166,3 @@ # We also strip the extension under the assumption that the consumer of | ||
| # above). If this flag is missing it defaults to `true`. The main idea | ||
| # is to embed sample block-comments with syntax A in another block-comment | ||
| # is to embed sample block-comments with syntax A in another block-comment | ||
| # with syntax B. This useful in handlebar's mixed syntax or other language | ||
@@ -243,3 +254,3 @@ # combinations like html+php, which are supported by `pygmentize`. | ||
| # Variables used in temporary assignments have been collected here for | ||
| # documentation purposes only. | ||
| # documentation purposes only. | ||
| blockline = null | ||
@@ -275,3 +286,3 @@ blockmark = null | ||
| # We always start a new segment if the current one is not empty or | ||
| # We always start a new segment if the current one is not empty or | ||
| # already folded. | ||
@@ -291,3 +302,3 @@ if inFolded or currSegment.code.length > 0 | ||
| # Also strip it from our `blockline`. | ||
| blockline = blockline[foldPrefix.length...] | ||
| blockline = blockline[foldPrefix.length...] | ||
@@ -305,3 +316,3 @@ # Check if this block-comment stays embedded in the code. | ||
| # Also strip it from our `blockline`. | ||
| blockline = blockline[ignorePrefix.length...] | ||
| blockline = blockline[ignorePrefix.length...] | ||
@@ -353,3 +364,3 @@ # Block-comments are an important tool to structure code into larger | ||
| # Make sure that the next cycle starts fresh, | ||
| # Make sure that the next cycle starts fresh, | ||
| # if we are going to leave the block. | ||
@@ -375,3 +386,3 @@ inIgnored = false if not inBlock | ||
| currSegment = new @Segment | ||
| # A special case as described in the initialization of `aEmptyLine`. | ||
@@ -442,7 +453,7 @@ if aEmptyLine.test line | ||
| # follow the above's code segment, which looks visually not so | ||
| # appealing in the narrowed single-column-view. | ||
| # | ||
| # TODO: _Alternative (a)_: Improve folded comments to not start a new segment, like embedded comments from above. _(preferred solution)_ | ||
| # TODO: _Alternative (b)_: Improve folded comments visual appearance in single-column view. _(easy solution)_ | ||
| # appealing in the narrowed single-column-view. | ||
| # | ||
| # TODO: _Alternative (a)_: Improve folded comments to not start a new segment, like embedded comments from above. _(preferred solution)_ | ||
| # TODO: _Alternative (b)_: Improve folded comments visual appearance in single-column view. _(easy solution)_ | ||
| # | ||
| # ^ … if we start this comment with “^” instead of “}” it and all | ||
@@ -476,4 +487,21 @@ # } code up to the next segment's first comment starts folded | ||
| # Annotate an array of segments using [highlight.js](http://highlightjs.org/) | ||
| highlightCodeUsingHighlightJS: (segments, language, callback) -> | ||
| lang = language.highlightJS or language.pygmentsLexer or '' | ||
| doHighlight = do -> | ||
| if (lang is 'AUTO') or (lang is '') | ||
| (code) -> hljs.highlightAuto(code).value | ||
| else | ||
| (code) -> hljs.highlight(lang, code, true).value | ||
| for segment in segments | ||
| if segment.code?.length | ||
| segment.highlightedCode = doHighlight segment.code.join('\n') | ||
| else | ||
| segment.highlightedCode = "" | ||
| callback() | ||
| # Annotate an array of segments by running their code through [Pygments](http://pygments.org/). | ||
| highlightCode: (segments, language, callback) -> | ||
| highlightCodeUsingPygments: (segments, language, callback) -> | ||
| # Don't bother spawning pygments if we have nothing to highlight | ||
@@ -569,2 +597,8 @@ numCodeLines = segments.reduce ( (c,s) -> c + s.code.length ), 0 | ||
| # default | ||
| highlightCode: (segments, language, callback) -> | ||
| Logger.warn "Usage of highlightCode is deprecated. Specify highlighter"+ | ||
| " instead. (Using highlight.js as default.)" | ||
| highlightCodeUsingHighlightJS(segments, language, callback) | ||
| parseDocTags: (segments, project, callback) -> | ||
@@ -652,9 +686,7 @@ TAG_REGEX = /(?:^|\n)@(\w+)(?:\s+(.*))?/ | ||
| # Annotate an array of segments by running their comments through | ||
| # [showdown](https://github.com/coreyti/showdown). | ||
| # [marked](https://github.com/chjj/marked). | ||
| markdownComments: (segments, project, callback) -> | ||
| converter = new showdown.converter(extensions: project.options.showdown) | ||
| try | ||
| for segment, segmentIndex in segments | ||
| markdown = converter.makeHtml segment.comments.join '\n' | ||
| markdown = marked segment.comments.join '\n' | ||
| headers = [] | ||
@@ -661,0 +693,0 @@ |
+13
-11
| { | ||
| "name": "groc", | ||
| "version": "0.6.3", | ||
| "version": "0.7.0", | ||
| "description": "Documentation generation, in the spirit of literate programming.", | ||
@@ -31,12 +31,14 @@ "keywords": ["documentation", "docs", "generator"], | ||
| "dependencies": { | ||
| "coffee-script": ">= 1.1.3", | ||
| "colors": ">= 0.5.1", | ||
| "fs-tools": ">= 0.1.0", | ||
| "glob": ">= 3.0.1", | ||
| "jade": "0.x", | ||
| "optimist": ">= 0.3.4", | ||
| "showdown": ">= 0.2.0", | ||
| "spate": ">= 0.1.0", | ||
| "uglify-js": ">= 1.1.1", | ||
| "underscore": ">= 1.2.2" | ||
| "coffee-script": ">= 1.6.3", | ||
| "colors": "~0.6.2", | ||
| "fs-tools": "~0.2.10", | ||
| "glob": "~3.2.7", | ||
| "highlight.js": "~8.0.0", | ||
| "jade": "~0.35.0", | ||
| "marked": "~0.2.10", | ||
| "optimist": "~0.6.0", | ||
| "showdown": "~0.3.1", | ||
| "spate": "~0.1.0", | ||
| "uglify-js": "~2.4.6", | ||
| "underscore": "~1.6.0" | ||
| }, | ||
@@ -43,0 +45,0 @@ "devDependencies": {}, |
+26
-11
@@ -12,2 +12,8 @@ # groc | ||
| ## Maintainers | ||
| Groc, unfortunately, does not have any active maintainers. If you are interested in picking up the | ||
| torch, please toss me an email (ian@nevir.net). | ||
| ## What does it give you? | ||
@@ -36,7 +42,8 @@ | ||
| Groc depends on [Node.js](http://nodejs.org/) and [Pygments](http://pygments.org/). Once you have | ||
| those installed - and assuming that your node install came with [npm](http://npmjs.org/) - you can | ||
| install groc via: | ||
| Groc depends on [Node.js](http://nodejs.org/). Once you have those installed - and assuming that | ||
| your node install came with [npm](http://npmjs.org/) - you can install groc via: | ||
| npm install -g groc | ||
| ```bash | ||
| $ npm install -g groc | ||
| ``` | ||
@@ -51,7 +58,11 @@ For those new to npm, `-g` indicates that you want groc installed as a global command for your | ||
| groc *.rb | ||
| ```bash | ||
| $ groc *.rb | ||
| ``` | ||
| Groc will also handle extended globbing syntax if you quote arguments: | ||
| groc "lib/**/*.coffee" README.md | ||
| ```bash | ||
| $ groc "lib/**/*.coffee" README.md | ||
| ``` | ||
@@ -64,3 +75,5 @@ By default, groc will drop the generated documentation in the `doc/` folder of your project, and it | ||
| groc --github "lib/**/*.coffee" README.md | ||
| ```bash | ||
| $ groc --github "lib/**/*.coffee" README.md | ||
| ``` | ||
@@ -81,6 +94,8 @@ Groc will automagically create and push the `gh-pages` branch if it is missing. | ||
| { | ||
| "glob": ["lib/**/*.coffee", "README.md", "lib/styles/*/style.sass", "lib/styles/*/*.jade"], | ||
| "github": true | ||
| } | ||
| ```json | ||
| { | ||
| "glob": ["lib/**/*.coffee", "README.md", "lib/styles/*/style.sass", "lib/styles/*/*.jade"], | ||
| "github": true | ||
| } | ||
| ``` | ||
@@ -87,0 +102,0 @@ From now on, if you call `groc` without any arguments, it will use your pre-defined configuration. |
| $code-color-keyword: #e0c090 | ||
| $code-color-attribute: #a9c2ba | ||
| $code-color-property: #abd9cf | ||
| $code-color-class: #cee4dd | ||
| $code-color-variable: #b9d0af | ||
| $code-color-string: #e9baba | ||
| $code-color-interpolated: #cba8d6 | ||
| $code-color-punctuation: #ded3a1 | ||
| $code-color-comment: #b1bac4 | ||
| =code-styles | ||
| .w // Whitespace | ||
| .err // Error | ||
| .x // Other | ||
| .k // Keyword | ||
| color: $code-color-keyword | ||
| .kc // Keyword.Constant | ||
| color: $code-color-keyword | ||
| .kd // Keyword.Declaration | ||
| color: $code-color-keyword | ||
| .kp // Keyword.Pseudo | ||
| color: $code-color-keyword | ||
| .kr // Keyword.Reserved | ||
| color: $code-color-keyword | ||
| .kt // Keyword.Type | ||
| color: $code-color-keyword | ||
| .n // Name | ||
| .na // Name.Attribute | ||
| color: $code-color-attribute | ||
| .nb // Name.Builtin | ||
| .bp // Name.Builtin.Pseudo | ||
| .nc // Name.Class | ||
| color: $code-color-class | ||
| .no // Name.Constant | ||
| color: $code-color-class | ||
| .nd // Name.Decorator | ||
| color: $code-color-class | ||
| .ni // Name.Entity | ||
| .ne // Name.Exception | ||
| .nf // Name.Function | ||
| color: $code-color-property | ||
| .py // Name.Property | ||
| color: $code-color-property | ||
| .nl // Name.Label | ||
| .nn // Name.Namespace | ||
| .nx // Name.Other | ||
| .nt // Name.Tag | ||
| .nv // Name.Variable | ||
| color: $code-color-variable | ||
| .vc // Name.Variable.Class | ||
| color: $code-color-variable | ||
| .vg // Name.Variable.Global | ||
| color: $code-color-variable | ||
| .vi // Name.Variable.Instance | ||
| color: $code-color-variable | ||
| // .l // Literal | ||
| // .ld // Literal.Date | ||
| .s // String | ||
| color: $code-color-string | ||
| .sb // String.Backtick | ||
| color: $code-color-string | ||
| .sc // String.Char | ||
| color: $code-color-string | ||
| .sd // String.Doc | ||
| color: $code-color-string | ||
| .s2 // String.Double | ||
| color: $code-color-string | ||
| .se // String.Escape | ||
| color: $code-color-string | ||
| .sh // String.Heredoc | ||
| color: $code-color-string | ||
| .si // String.Interpol | ||
| color: $code-color-string | ||
| .sx // String.Other | ||
| color: $code-color-string | ||
| .sr // String.Regex | ||
| color: $code-color-interpolated | ||
| .s1 // String.Single | ||
| color: $code-color-string | ||
| .ss // String.Symbol | ||
| color: $code-color-interpolated | ||
| .m // Number | ||
| color: $code-color-interpolated | ||
| .mf // Number.Float | ||
| color: $code-color-interpolated | ||
| .mh // Number.Hex | ||
| color: $code-color-interpolated | ||
| .mi // Number.Integer | ||
| color: $code-color-interpolated | ||
| .il // Number.Integer.Long | ||
| color: $code-color-interpolated | ||
| .mo // Number.Oct | ||
| color: $code-color-interpolated | ||
| .o // Operator | ||
| color: $code-color-punctuation | ||
| .ow // Operator.Word | ||
| color: $code-color-punctuation | ||
| .p // Punctuation | ||
| color: $code-color-punctuation | ||
| .c, .cm, .cp, .c1, .cs // Comment.* | ||
| font-style: italic | ||
| .c // Comment | ||
| color: $code-color-comment | ||
| .cm // Comment.Multiline | ||
| color: $code-color-comment | ||
| .cp // Comment.Preproc | ||
| color: $code-color-comment | ||
| .c1 // Comment.Single | ||
| color: $code-color-comment | ||
| .cs // Comment.Special | ||
| color: $code-color-comment | ||
| .g // Generic | ||
| .gd // Generic.Deleted | ||
| .ge // Generic.Emph | ||
| .gr // Generic.Error | ||
| .gh // Generic.Heading | ||
| .gi // Generic.Inserted | ||
| .go // Generic.Output | ||
| .gp // Generic.Prompt | ||
| .gs // Generic.Strong | ||
| .gu // Generic.Subheading | ||
| .gt // Generic.Traceback |
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
263101
5.92%32
6.67%400
4.17%138
12.2%12
20%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated
Updated
Updated
Updated
Updated
Updated
Updated
Updated