[{"data":1,"prerenderedAt":3888},["ShallowReactive",2],{"indicators:core-concepts/user-functions":3},{"slug":4,"filePath":5,"frontmatter":6,"rawMarkdown":11,"tree":12},"core-concepts/user-functions","core-concepts/user-functions.md",{"title":7,"description":8,"order":9,"section":10},"User-defined functions","Create custom, reusable functions with the function keyword: typed parameters, a typed return, default values, functions as values, and the rules that keep…",28,"core-concepts","---\ntitle: \"User-defined functions\"\ndescription: \"Create custom, reusable functions with the function keyword: typed parameters, a typed return, default values, functions as values, and the rules that keep…\"\norder: 28\nsection: \"core-concepts\"\n---\n\n\u003C!-- source: docs/indicators/core-concepts/user-functions.md; generated by packages/cli/scripts/gen-indicator-docs.ts, do not edit -->\n\n# User-defined functions\n\nCreate custom, reusable functions with the `function` keyword: typed\nparameters, a typed return, default values, functions as values, and the\nrules that keep them honest in a per-bar module. kScript (legacy) v3\nintroduced `func` with inferred types and keyword-argument calls; an\nIndicator's functions are plain TypeScript, with every type written out and\nmodule-level state in place of closures.\n\n## Overview\n\n| Feature | Description |\n| --- | --- |\n| `function` | The keyword; declares a named function with typed parameters and return |\n| Any logic | Encapsulate a calculation, a predicate, a candle pattern, a session test |\n| Module state | Functions read and write module-level variables; that is how state reaches them |\n| Values | A non-capturing function is a value you can store and pass |\n\n## Function declaration\n\n### Basic syntax\n\n```text\nfunction functionName(parameter1: f64, parameter2: f64): f64 {\n  // body\n  return result;\n}\n```\n\nEvery parameter carries a type and the return type is written after the\nparameter list. Leaving the return type off is a parse error (`Type\nexpected.`), so annotate even `void`.\n\n### Calling\n\nCalls are positional, in the declared order. There are no keyword\narguments; readable names and a stable order do the same job, and a\nfunction with many settings takes a class instance instead of a long\nargument list. Parameters may carry defaults:\n\n```text\nfunction calculate(base: f64, multiplier: f64, offset: f64 = 0.0): f64 {\n  return base * multiplier + offset;\n}\n\nconst a = calculate(10.0, 2.0, 5.0);   // 25\nconst b = calculate(10.0, 2.0);        // 20, offset defaulted\n```\n\n### Syntax details\n\n**Function name:** standard identifier rules (letters, digits,\nunderscore; not starting with a digit). The four names `init`, `state`,\n`finalize`, and `reset` are the module's exports and the host's contract;\neverything else is yours and needs no `export`.\n\n**Parameters:** typed, positional, optionally defaulted. A parameter is an\n`f64` for a price or a value, an `i32` for a count, a `StaticArray\u003Cf64>`\nfor a window, a class for a struct, or a function type for a callback.\n\n**Return statement:** every path returns a value of the declared type\n(`void` returns nothing). The compiler refuses a missing return.\n\n## Function examples\n\n### Safe division\n\n```text\nfunction safeDiv(a: f64, b: f64): f64 {\n  return b == 0.0 ? 0.0 : a / b;\n}\n\nconst ratio = safeDiv(10.0, 2.0);   // 5\nconst safe = safeDiv(10.0, 0.0);    // 0\n```\n\n### Average of two values\n\n```text\nfunction average(a: f64, b: f64): f64 {\n  return (a + b) / 2.0;\n}\n\nconst mid = average(close, prevClose);\n```\n\n### Custom pattern logic\n\nA candle-pattern test takes this bar's and the previous bar's open and\nclose. Where kScript indexed `open[1]`, an Indicator remembers the previous\nbar's values in module-level variables at the end of `state()`:\n\n```typescript\nimport { input, line, lower, none, ohlcv, output, overlay, shape } from \"./sdk/declare\";\nimport { in_close, in_low, in_open } from \"./gen/inputs\";\nimport { emitRow, out_body_ratio, out_engulfing, out_is_engulfing } from \"./gen/outputs\";\n\ninput(\"open\", ohlcv.open);\ninput(\"close\", ohlcv.close);\ninput(\"low\", ohlcv.low);\noutput(\"engulfing\", shape, overlay, { color: \"#16a34a\", shape_where: \"is_engulfing\", description: \"Bullish engulfing candle\" });\noutput(\"is_engulfing\", none);\noutput(\"body_ratio\", line, lower, { color: \"#94a3b8\", description: \"This body divided by the previous body\" });\n\nfunction safeDiv(a: f64, b: f64): f64 {\n  return b == 0.0 ? 0.0 : a / b;\n}\n\nfunction isGreenCandle(openPrice: f64, closePrice: f64): bool {\n  return closePrice > openPrice;\n}\n\nfunction isBullishEngulfing(prevOpen: f64, prevClose: f64, currOpen: f64, currClose: f64): bool {\n  const prevWasRed = prevClose \u003C prevOpen;\n  const currIsGreen = isGreenCandle(currOpen, currClose);\n  const engulfs = currOpen \u003C prevClose && currClose > prevOpen;\n  return prevWasRed && currIsGreen && engulfs;\n}\n\nlet prevOpen: f64 = NaN;\nlet prevClose: f64 = NaN;\nlet low: f64 = NaN;\nlet engulfing: bool = false;\nlet bodyRatio: f64 = NaN;\n\nexport function init(): void {}\n\nexport function state(): i32 {\n  const open = in_open();\n  const close = in_close();\n  low = in_low();\n  const ready = !isNaN(prevOpen);\n  engulfing = ready && isBullishEngulfing(prevOpen, prevClose, open, close);\n  bodyRatio = ready ? safeDiv(Math.abs(close - open), Math.abs(prevClose - prevOpen)) : NaN;\n  prevOpen = open;\n  prevClose = close;\n  return ready ? 1 : 0;\n}\n\nexport function finalize(): void {\n  out_engulfing(low); // the mark sits under the candle\n  out_is_engulfing(engulfing ? 1.0 : 0.0);\n  out_body_ratio(bodyRatio);\n  emitRow();\n}\n\nexport function reset(): void {\n  prevOpen = NaN;\n  prevClose = NaN;\n  low = NaN;\n  engulfing = false;\n  bodyRatio = NaN;\n}\n```\n\nThe three helpers are pure: they take numbers and return a number or a\n`bool`, and `state()` supplies the remembered previous bar. That keeps the\npattern testable in isolation and the per-bar function short.\n\n## Functions as values\n\nA function that captures no local variable is a value. Store it in a\nvariable typed with its signature, pass it to a loop, keep a small table of\nthem:\n\n```text\nfunction aboveMean(x: f64): bool { return x > mean; }   // mean is module-level\n\nlet pred: (x: f64) => bool = aboveMean;\nconst hits = countWhere(window, n, pred);\n```\n\nArrow functions work the same way, and nested functions (declared inside\nanother function) are allowed as long as they read nothing from the\nenclosing function's locals. The full treatment, with the loop that takes\na predicate, is `lambdas-and-reducers.md`.\n\n## Constraints and rules\n\n### No declarations inside functions\n\n`param(...)`, `input(...)`, `output(...)`, `box(...)`, and the rest are\ntop-level statements of the file; the build reads them without running the\ncode. One inside a function is a named build error:\n\n```text\noutput(...) declarations must be top-level statements, not inside a function, class, or expression\n```\n\nPass an input's value in as an argument instead:\n\n```text\n// Invalid\nfunction bad(): f64 {\n  input(\"close\", ohlcv.close);   // a declaration cannot live here\n  return 0.0;\n}\n\n// Valid: declare at the top level, pass the value\nfunction good(close: f64, avg: f64): f64 {\n  return close - avg;\n}\n```\n\n### No locals from the outside\n\nA function reads its parameters and module-level state. An inner function\nor arrow that reads a local of the function around it is refused with\n`AS100: Not implemented: Closures`. Move the value to module scope or pass\nit as a parameter.\n\n### Allocation is once, not per call\n\nA function called in `state()` runs on every bar. A `new` inside it (a\nclass, an array, a string built with `+`) allocates memory the module never\nfrees. Helpers on the per-bar path take and return numbers, or write into\nbuffers allocated at module scope.\n\n### Types everywhere\n\nParameter types and the return type are required; there is no inference\nfrom usage. A function meant for both a price and a count is written for\n`f64`, and the caller casts (`f64(count)`).\n\n### Phase rules still apply inside functions\n\n`p_\u003Cparam>()` is legal in `init()`, `in_\u003Cinput>()` in `state()`,\n`out_\u003Coutput>()` and `emitRow()` in `finalize()`; a helper inherits the\nphase of its caller, so keep helpers pure and let the four exports read and\nwrite.\n\n## Best practices\n\n- **Keep functions focused.** One thing per function: `rsiZone(rsiValue:\n  f64): f64` returns `0`, `1`, or `2`; the output write stays in\n  `finalize()`.\n- **Use descriptive names.** `isOverbought(rsiValue)`,\n  `percentChange(oldValue, newValue)`; not `calc(a, b)` or `check(x)`.\n- **Prefer parameters to module state for pure math.** A function that\n  takes everything it needs is reusable across Indicators by pasting; a\n  function that reaches into module state is tied to this file. Reserve\n  module-state reads for predicates you pass as values.\n- **Turn a family of helpers into a class** when they share state: a\n  `Window` with `sum()`, `avg()`, and `median()` (`collections.md`), a\n  `Macd` with `update()` (`named-streams.md`). Helpers that share nothing\n  stay functions.\n",{"type":13,"children":14,"data":3881,"position":3883},"root",[15,25,28,29,89,90,107,109,330,331,347,348,365,366,415,416,472,473,489,490,504,505,565,566,582,583,709,710,796,797,845,846,862,863,879,880,939,940,956,957,1007,1008,1024,1025,1078,1079,2659,2660,2711,2712,2727,2728,2743,2744,2786,2787,2821,2822,2838,2839,2855,2856,2936,2937,2953,2954,2969,2970,3064,3065,3081,3082,3117,3118,3134,3135,3206,3207,3223,3224,3274,3275,3292,3293,3426,3427,3443,3444],{"type":16,"value":17,"position":18},"comment"," source: docs/indicators/core-concepts/user-functions.md; generated by packages/cli/scripts/gen-indicator-docs.ts, do not edit ",{"start":19,"end":22},{"line":20,"column":20,"offset":21},1,0,{"line":20,"column":23,"offset":24},135,134,{"type":26,"value":27},"text","\n",{"type":26,"value":27},{"type":30,"tagName":31,"properties":32,"children":33,"position":86},"element","p",{},[34,43,57,65,78],{"type":26,"value":35,"position":36},"Create custom, reusable functions with the ",{"start":37,"end":40},{"line":38,"column":20,"offset":39},5,162,{"line":38,"column":41,"offset":42},44,205,{"type":30,"tagName":44,"properties":45,"children":46,"position":54},"code",{},[47],{"type":26,"value":48,"position":49},"function",{"start":50,"end":51},{"line":38,"column":41,"offset":42},{"line":38,"column":52,"offset":53},54,215,{"start":55,"end":56},{"line":38,"column":41,"offset":42},{"line":38,"column":52,"offset":53},{"type":26,"value":58,"position":59}," keyword: typed\nparameters, a typed return, default values, functions as values, and the\nrules that keep them honest in a per-bar module. kScript (legacy) v3\nintroduced ",{"start":60,"end":61},{"line":38,"column":52,"offset":53},{"line":62,"column":63,"offset":64},8,12,384,{"type":30,"tagName":44,"properties":66,"children":67,"position":75},{},[68],{"type":26,"value":69,"position":70},"func",{"start":71,"end":72},{"line":62,"column":63,"offset":64},{"line":62,"column":73,"offset":74},18,390,{"start":76,"end":77},{"line":62,"column":63,"offset":64},{"line":62,"column":73,"offset":74},{"type":26,"value":79,"position":80}," with inferred types and keyword-argument calls; an\nIndicator's functions are plain TypeScript, with every type written out and\nmodule-level state in place of closures.",{"start":81,"end":82},{"line":62,"column":73,"offset":74},{"line":83,"column":84,"offset":85},10,41,558,{"start":87,"end":88},{"line":38,"column":20,"offset":39},{"line":83,"column":84,"offset":85},{"type":26,"value":27},{"type":30,"tagName":91,"properties":92,"children":94,"position":103},"h2",{"id":93},"overview",[95],{"type":26,"value":96,"position":97},"Overview",{"start":98,"end":101},{"line":63,"column":99,"offset":100},4,563,{"line":63,"column":63,"offset":102},571,{"start":104,"end":106},{"line":63,"column":20,"offset":105},560,{"line":63,"column":63,"offset":102},{"type":26,"value":108},"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",{"type":30,"tagName":110,"properties":111,"children":112,"position":327},"table",{},[113,163],{"type":30,"tagName":114,"properties":115,"children":116,"position":160},"thead",{},[117],{"type":30,"tagName":118,"properties":119,"children":120,"position":157},"tr",{},[121,140],{"type":30,"tagName":122,"properties":123,"children":124,"position":134},"th",{},[125],{"type":26,"value":126,"position":127},"Feature",{"start":128,"end":132},{"line":129,"column":130,"offset":131},14,3,575,{"line":129,"column":83,"offset":133},582,{"start":135,"end":137},{"line":129,"column":20,"offset":136},573,{"line":129,"column":138,"offset":139},11,583,{"type":30,"tagName":122,"properties":141,"children":142,"position":152},{},[143],{"type":26,"value":144,"position":145},"Description",{"start":146,"end":149},{"line":129,"column":147,"offset":148},13,585,{"line":129,"column":150,"offset":151},24,596,{"start":153,"end":154},{"line":129,"column":138,"offset":139},{"line":129,"column":155,"offset":156},26,598,{"start":158,"end":159},{"line":129,"column":20,"offset":136},{"line":129,"column":155,"offset":156},{"start":161,"end":162},{"line":129,"column":20,"offset":136},{"line":129,"column":155,"offset":156},{"type":30,"tagName":164,"properties":165,"children":166,"position":324},"tbody",{},[167,211,248,285],{"type":30,"tagName":118,"properties":168,"children":169,"position":208},{},[170,192],{"type":30,"tagName":171,"properties":172,"children":173,"position":187},"td",{},[174],{"type":30,"tagName":44,"properties":175,"children":176,"position":184},{},[177],{"type":26,"value":48,"position":178},{"start":179,"end":182},{"line":180,"column":130,"offset":181},16,615,{"line":180,"column":147,"offset":183},625,{"start":185,"end":186},{"line":180,"column":130,"offset":181},{"line":180,"column":147,"offset":183},{"start":188,"end":190},{"line":180,"column":20,"offset":189},613,{"line":180,"column":129,"offset":191},626,{"type":30,"tagName":171,"properties":193,"children":194,"position":203},{},[195],{"type":26,"value":196,"position":197},"The keyword; declares a named function with typed parameters and return",{"start":198,"end":200},{"line":180,"column":180,"offset":199},628,{"line":180,"column":201,"offset":202},87,699,{"start":204,"end":205},{"line":180,"column":129,"offset":191},{"line":180,"column":206,"offset":207},89,701,{"start":209,"end":210},{"line":180,"column":20,"offset":189},{"line":180,"column":206,"offset":207},{"type":30,"tagName":118,"properties":212,"children":213,"position":245},{},[214,230],{"type":30,"tagName":171,"properties":215,"children":216,"position":225},{},[217],{"type":26,"value":218,"position":219},"Any logic",{"start":220,"end":223},{"line":221,"column":130,"offset":222},17,704,{"line":221,"column":63,"offset":224},713,{"start":226,"end":228},{"line":221,"column":20,"offset":227},702,{"line":221,"column":147,"offset":229},714,{"type":30,"tagName":171,"properties":231,"children":232,"position":241},{},[233],{"type":26,"value":234,"position":235},"Encapsulate a calculation, a predicate, a candle pattern, a session test",{"start":236,"end":239},{"line":221,"column":237,"offset":238},15,716,{"line":221,"column":201,"offset":240},788,{"start":242,"end":243},{"line":221,"column":147,"offset":229},{"line":221,"column":206,"offset":244},790,{"start":246,"end":247},{"line":221,"column":20,"offset":227},{"line":221,"column":206,"offset":244},{"type":30,"tagName":118,"properties":249,"children":250,"position":282},{},[251,266],{"type":30,"tagName":171,"properties":252,"children":253,"position":261},{},[254],{"type":26,"value":255,"position":256},"Module state",{"start":257,"end":259},{"line":73,"column":130,"offset":258},793,{"line":73,"column":237,"offset":260},805,{"start":262,"end":264},{"line":73,"column":20,"offset":263},791,{"line":73,"column":180,"offset":265},806,{"type":30,"tagName":171,"properties":267,"children":268,"position":277},{},[269],{"type":26,"value":270,"position":271},"Functions read and write module-level variables; that is how state reaches them",{"start":272,"end":274},{"line":73,"column":73,"offset":273},808,{"line":73,"column":275,"offset":276},97,887,{"start":278,"end":279},{"line":73,"column":180,"offset":265},{"line":73,"column":280,"offset":281},99,889,{"start":283,"end":284},{"line":73,"column":20,"offset":263},{"line":73,"column":280,"offset":281},{"type":30,"tagName":118,"properties":286,"children":287,"position":321},{},[288,305],{"type":30,"tagName":171,"properties":289,"children":290,"position":300},{},[291],{"type":26,"value":292,"position":293},"Values",{"start":294,"end":297},{"line":295,"column":130,"offset":296},19,892,{"line":295,"column":298,"offset":299},9,898,{"start":301,"end":303},{"line":295,"column":20,"offset":302},890,{"line":295,"column":83,"offset":304},899,{"type":30,"tagName":171,"properties":306,"children":307,"position":316},{},[308],{"type":26,"value":309,"position":310},"A non-capturing function is a value you can store and pass",{"start":311,"end":313},{"line":295,"column":63,"offset":312},901,{"line":295,"column":314,"offset":315},70,959,{"start":317,"end":318},{"line":295,"column":83,"offset":304},{"line":295,"column":319,"offset":320},72,961,{"start":322,"end":323},{"line":295,"column":20,"offset":302},{"line":295,"column":319,"offset":320},{"start":325,"end":326},{"line":180,"column":20,"offset":189},{"line":295,"column":319,"offset":320},{"start":328,"end":329},{"line":129,"column":20,"offset":136},{"line":295,"column":319,"offset":320},{"type":26,"value":27},{"type":30,"tagName":91,"properties":332,"children":334,"position":343},{"id":333},"function-declaration",[335],{"type":26,"value":336,"position":337},"Function declaration",{"start":338,"end":341},{"line":339,"column":99,"offset":340},21,966,{"line":339,"column":150,"offset":342},986,{"start":344,"end":346},{"line":339,"column":20,"offset":345},963,{"line":339,"column":150,"offset":342},{"type":26,"value":27},{"type":30,"tagName":349,"properties":350,"children":352,"position":361},"h3",{"id":351},"basic-syntax",[353],{"type":26,"value":354,"position":355},"Basic syntax",{"start":356,"end":359},{"line":357,"column":38,"offset":358},23,992,{"line":357,"column":221,"offset":360},1004,{"start":362,"end":364},{"line":357,"column":20,"offset":363},988,{"line":357,"column":221,"offset":360},{"type":26,"value":27},{"type":13,"children":367},[368],{"type":30,"tagName":369,"properties":370,"children":374,"data":-1},"pre",{"class":371,"style":372,"tabindex":373},"shiki shiki-themes github-dark github-light","--shiki-dark:#e1e4e8;--shiki-light:#24292e;--shiki-dark-bg:#24292e;--shiki-light-bg:#fff","0",[375],{"type":30,"tagName":44,"properties":376,"children":377},{},[378,388,389,397,398,406,407],{"type":30,"tagName":379,"properties":380,"children":382},"span",{"class":381},"line",[383],{"type":30,"tagName":379,"properties":384,"children":385},{},[386],{"type":26,"value":387},"function functionName(parameter1: f64, parameter2: f64): f64 {",{"type":26,"value":27},{"type":30,"tagName":379,"properties":390,"children":391},{"class":381},[392],{"type":30,"tagName":379,"properties":393,"children":394},{},[395],{"type":26,"value":396},"  // body",{"type":26,"value":27},{"type":30,"tagName":379,"properties":399,"children":400},{"class":381},[401],{"type":30,"tagName":379,"properties":402,"children":403},{},[404],{"type":26,"value":405},"  return result;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":408,"children":409},{"class":381},[410],{"type":30,"tagName":379,"properties":411,"children":412},{},[413],{"type":26,"value":414},"}",{"type":26,"value":27},{"type":30,"tagName":31,"properties":417,"children":418,"position":469},{},[419,429,442,449,462],{"type":26,"value":420,"position":421},"Every parameter carries a type and the return type is written after the\nparameter list. Leaving the return type off is a parse error (",{"start":422,"end":425},{"line":423,"column":20,"offset":424},32,1111,{"line":426,"column":427,"offset":428},33,63,1245,{"type":30,"tagName":44,"properties":430,"children":431,"position":439},{},[432],{"type":26,"value":433,"position":434},"Type expected.",{"start":435,"end":436},{"line":426,"column":427,"offset":428},{"line":437,"column":138,"offset":438},34,1261,{"start":440,"end":441},{"line":426,"column":427,"offset":428},{"line":437,"column":138,"offset":438},{"type":26,"value":443,"position":444},"), so annotate even ",{"start":445,"end":446},{"line":437,"column":138,"offset":438},{"line":437,"column":447,"offset":448},31,1281,{"type":30,"tagName":44,"properties":450,"children":451,"position":459},{},[452],{"type":26,"value":453,"position":454},"void",{"start":455,"end":456},{"line":437,"column":447,"offset":448},{"line":437,"column":457,"offset":458},37,1287,{"start":460,"end":461},{"line":437,"column":447,"offset":448},{"line":437,"column":457,"offset":458},{"type":26,"value":463,"position":464},".",{"start":465,"end":466},{"line":437,"column":457,"offset":458},{"line":437,"column":467,"offset":468},38,1288,{"start":470,"end":471},{"line":423,"column":20,"offset":424},{"line":437,"column":467,"offset":468},{"type":26,"value":27},{"type":30,"tagName":349,"properties":474,"children":476,"position":485},{"id":475},"calling",[477],{"type":26,"value":478,"position":479},"Calling",{"start":480,"end":483},{"line":481,"column":38,"offset":482},36,1294,{"line":481,"column":63,"offset":484},1301,{"start":486,"end":488},{"line":481,"column":20,"offset":487},1290,{"line":481,"column":63,"offset":484},{"type":26,"value":27},{"type":30,"tagName":31,"properties":491,"children":492,"position":501},{},[493],{"type":26,"value":494,"position":495},"Calls are positional, in the declared order. There are no keyword\narguments; readable names and a stable order do the same job, and a\nfunction with many settings takes a class instance instead of a long\nargument list. Parameters may carry defaults:",{"start":496,"end":498},{"line":467,"column":20,"offset":497},1303,{"line":84,"column":499,"offset":500},46,1551,{"start":502,"end":503},{"line":467,"column":20,"offset":497},{"line":84,"column":499,"offset":500},{"type":26,"value":27},{"type":13,"children":506},[507],{"type":30,"tagName":369,"properties":508,"children":509,"data":-1},{"class":371,"style":372,"tabindex":373},[510],{"type":30,"tagName":44,"properties":511,"children":512},{},[513,521,522,530,531,538,539,547,548,556,557],{"type":30,"tagName":379,"properties":514,"children":515},{"class":381},[516],{"type":30,"tagName":379,"properties":517,"children":518},{},[519],{"type":26,"value":520},"function calculate(base: f64, multiplier: f64, offset: f64 = 0.0): f64 {",{"type":26,"value":27},{"type":30,"tagName":379,"properties":523,"children":524},{"class":381},[525],{"type":30,"tagName":379,"properties":526,"children":527},{},[528],{"type":26,"value":529},"  return base * multiplier + offset;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":532,"children":533},{"class":381},[534],{"type":30,"tagName":379,"properties":535,"children":536},{},[537],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":540,"children":541},{"class":381},[542],{"type":30,"tagName":379,"properties":543,"children":544},{},[545],{"type":26,"value":546},"",{"type":26,"value":27},{"type":30,"tagName":379,"properties":549,"children":550},{"class":381},[551],{"type":30,"tagName":379,"properties":552,"children":553},{},[554],{"type":26,"value":555},"const a = calculate(10.0, 2.0, 5.0);   // 25",{"type":26,"value":27},{"type":30,"tagName":379,"properties":558,"children":559},{"class":381},[560],{"type":30,"tagName":379,"properties":561,"children":562},{},[563],{"type":26,"value":564},"const b = calculate(10.0, 2.0);        // 20, offset defaulted",{"type":26,"value":27},{"type":30,"tagName":349,"properties":567,"children":569,"position":578},{"id":568},"syntax-details",[570],{"type":26,"value":571,"position":572},"Syntax details",{"start":573,"end":576},{"line":574,"column":38,"offset":575},52,1791,{"line":574,"column":295,"offset":577},1805,{"start":579,"end":581},{"line":574,"column":20,"offset":580},1787,{"line":574,"column":295,"offset":577},{"type":26,"value":27},{"type":30,"tagName":31,"properties":584,"children":585,"position":706},{},[586,602,610,623,630,643,649,661,667,679,687,700],{"type":30,"tagName":587,"properties":588,"children":589,"position":597},"strong",{},[590],{"type":26,"value":591,"position":592},"Function name:",{"start":593,"end":595},{"line":52,"column":130,"offset":594},1809,{"line":52,"column":221,"offset":596},1823,{"start":598,"end":600},{"line":52,"column":20,"offset":599},1807,{"line":52,"column":295,"offset":601},1825,{"type":26,"value":603,"position":604}," standard identifier rules (letters, digits,\nunderscore; not starting with a digit). The four names ",{"start":605,"end":606},{"line":52,"column":295,"offset":601},{"line":607,"column":608,"offset":609},55,56,1925,{"type":30,"tagName":44,"properties":611,"children":612,"position":620},{},[613],{"type":26,"value":614,"position":615},"init",{"start":616,"end":617},{"line":607,"column":608,"offset":609},{"line":607,"column":618,"offset":619},62,1931,{"start":621,"end":622},{"line":607,"column":608,"offset":609},{"line":607,"column":618,"offset":619},{"type":26,"value":624,"position":625},", ",{"start":626,"end":627},{"line":607,"column":618,"offset":619},{"line":607,"column":628,"offset":629},64,1933,{"type":30,"tagName":44,"properties":631,"children":632,"position":640},{},[633],{"type":26,"value":634,"position":635},"state",{"start":636,"end":637},{"line":607,"column":628,"offset":629},{"line":607,"column":638,"offset":639},71,1940,{"start":641,"end":642},{"line":607,"column":628,"offset":629},{"line":607,"column":638,"offset":639},{"type":26,"value":644,"position":645},",\n",{"start":646,"end":647},{"line":607,"column":638,"offset":639},{"line":608,"column":20,"offset":648},1942,{"type":30,"tagName":44,"properties":650,"children":651,"position":658},{},[652],{"type":26,"value":653,"position":654},"finalize",{"start":655,"end":656},{"line":608,"column":20,"offset":648},{"line":608,"column":138,"offset":657},1952,{"start":659,"end":660},{"line":608,"column":20,"offset":648},{"line":608,"column":138,"offset":657},{"type":26,"value":662,"position":663},", and ",{"start":664,"end":665},{"line":608,"column":138,"offset":657},{"line":608,"column":221,"offset":666},1958,{"type":30,"tagName":44,"properties":668,"children":669,"position":676},{},[670],{"type":26,"value":671,"position":672},"reset",{"start":673,"end":674},{"line":608,"column":221,"offset":666},{"line":608,"column":150,"offset":675},1965,{"start":677,"end":678},{"line":608,"column":221,"offset":666},{"line":608,"column":150,"offset":675},{"type":26,"value":680,"position":681}," are the module's exports and the host's contract;\neverything else is yours and needs no ",{"start":682,"end":683},{"line":608,"column":150,"offset":675},{"line":684,"column":685,"offset":686},57,39,2054,{"type":30,"tagName":44,"properties":688,"children":689,"position":697},{},[690],{"type":26,"value":691,"position":692},"export",{"start":693,"end":694},{"line":684,"column":685,"offset":686},{"line":684,"column":695,"offset":696},47,2062,{"start":698,"end":699},{"line":684,"column":685,"offset":686},{"line":684,"column":695,"offset":696},{"type":26,"value":463,"position":701},{"start":702,"end":703},{"line":684,"column":695,"offset":696},{"line":684,"column":704,"offset":705},48,2063,{"start":707,"end":708},{"line":52,"column":20,"offset":599},{"line":684,"column":704,"offset":705},{"type":26,"value":27},{"type":30,"tagName":31,"properties":711,"children":712,"position":793},{},[713,729,736,749,755,767,773,786],{"type":30,"tagName":587,"properties":714,"children":715,"position":724},{},[716],{"type":26,"value":717,"position":718},"Parameters:",{"start":719,"end":722},{"line":720,"column":130,"offset":721},59,2067,{"line":720,"column":129,"offset":723},2078,{"start":725,"end":727},{"line":720,"column":20,"offset":726},2065,{"line":720,"column":180,"offset":728},2080,{"type":26,"value":730,"position":731}," typed, positional, optionally defaulted. A parameter is an\n",{"start":732,"end":733},{"line":720,"column":180,"offset":728},{"line":734,"column":20,"offset":735},60,2140,{"type":30,"tagName":44,"properties":737,"children":738,"position":746},{},[739],{"type":26,"value":740,"position":741},"f64",{"start":742,"end":743},{"line":734,"column":20,"offset":735},{"line":734,"column":744,"offset":745},6,2145,{"start":747,"end":748},{"line":734,"column":20,"offset":735},{"line":734,"column":744,"offset":745},{"type":26,"value":750,"position":751}," for a price or a value, an ",{"start":752,"end":753},{"line":734,"column":744,"offset":745},{"line":734,"column":437,"offset":754},2173,{"type":30,"tagName":44,"properties":756,"children":757,"position":764},{},[758],{"type":26,"value":759,"position":760},"i32",{"start":761,"end":762},{"line":734,"column":437,"offset":754},{"line":734,"column":685,"offset":763},2178,{"start":765,"end":766},{"line":734,"column":437,"offset":754},{"line":734,"column":685,"offset":763},{"type":26,"value":768,"position":769}," for a count, a ",{"start":770,"end":771},{"line":734,"column":685,"offset":763},{"line":734,"column":607,"offset":772},2194,{"type":30,"tagName":44,"properties":774,"children":775,"position":783},{},[776],{"type":26,"value":777,"position":778},"StaticArray\u003Cf64>",{"start":779,"end":780},{"line":734,"column":607,"offset":772},{"line":734,"column":781,"offset":782},73,2212,{"start":784,"end":785},{"line":734,"column":607,"offset":772},{"line":734,"column":781,"offset":782},{"type":26,"value":787,"position":788},"\nfor a window, a class for a struct, or a function type for a callback.",{"start":789,"end":790},{"line":734,"column":781,"offset":782},{"line":791,"column":638,"offset":792},61,2283,{"start":794,"end":795},{"line":720,"column":20,"offset":726},{"line":791,"column":638,"offset":792},{"type":26,"value":27},{"type":30,"tagName":31,"properties":798,"children":799,"position":842},{},[800,817,824,835],{"type":30,"tagName":587,"properties":801,"children":802,"position":811},{},[803],{"type":26,"value":804,"position":805},"Return statement:",{"start":806,"end":808},{"line":427,"column":130,"offset":807},2287,{"line":427,"column":809,"offset":810},20,2304,{"start":812,"end":814},{"line":427,"column":20,"offset":813},2285,{"line":427,"column":815,"offset":816},22,2306,{"type":26,"value":818,"position":819}," every path returns a value of the declared type\n(",{"start":820,"end":821},{"line":427,"column":815,"offset":816},{"line":628,"column":822,"offset":823},2,2356,{"type":30,"tagName":44,"properties":825,"children":826,"position":832},{},[827],{"type":26,"value":453,"position":828},{"start":829,"end":830},{"line":628,"column":822,"offset":823},{"line":628,"column":62,"offset":831},2362,{"start":833,"end":834},{"line":628,"column":822,"offset":823},{"line":628,"column":62,"offset":831},{"type":26,"value":836,"position":837}," returns nothing). The compiler refuses a missing return.",{"start":838,"end":839},{"line":628,"column":62,"offset":831},{"line":628,"column":840,"offset":841},65,2419,{"start":843,"end":844},{"line":427,"column":20,"offset":813},{"line":628,"column":840,"offset":841},{"type":26,"value":27},{"type":30,"tagName":91,"properties":847,"children":849,"position":858},{"id":848},"function-examples",[850],{"type":26,"value":851,"position":852},"Function examples",{"start":853,"end":856},{"line":854,"column":99,"offset":855},66,2424,{"line":854,"column":339,"offset":857},2441,{"start":859,"end":861},{"line":854,"column":20,"offset":860},2421,{"line":854,"column":339,"offset":857},{"type":26,"value":27},{"type":30,"tagName":349,"properties":864,"children":866,"position":875},{"id":865},"safe-division",[867],{"type":26,"value":868,"position":869},"Safe division",{"start":870,"end":873},{"line":871,"column":38,"offset":872},68,2447,{"line":871,"column":73,"offset":874},2460,{"start":876,"end":878},{"line":871,"column":20,"offset":877},2443,{"line":871,"column":73,"offset":874},{"type":26,"value":27},{"type":13,"children":881},[882],{"type":30,"tagName":369,"properties":883,"children":884,"data":-1},{"class":371,"style":372,"tabindex":373},[885],{"type":30,"tagName":44,"properties":886,"children":887},{},[888,896,897,905,906,913,914,921,922,930,931],{"type":30,"tagName":379,"properties":889,"children":890},{"class":381},[891],{"type":30,"tagName":379,"properties":892,"children":893},{},[894],{"type":26,"value":895},"function safeDiv(a: f64, b: f64): f64 {",{"type":26,"value":27},{"type":30,"tagName":379,"properties":898,"children":899},{"class":381},[900],{"type":30,"tagName":379,"properties":901,"children":902},{},[903],{"type":26,"value":904},"  return b == 0.0 ? 0.0 : a / b;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":907,"children":908},{"class":381},[909],{"type":30,"tagName":379,"properties":910,"children":911},{},[912],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":915,"children":916},{"class":381},[917],{"type":30,"tagName":379,"properties":918,"children":919},{},[920],{"type":26,"value":546},{"type":26,"value":27},{"type":30,"tagName":379,"properties":923,"children":924},{"class":381},[925],{"type":30,"tagName":379,"properties":926,"children":927},{},[928],{"type":26,"value":929},"const ratio = safeDiv(10.0, 2.0);   // 5",{"type":26,"value":27},{"type":30,"tagName":379,"properties":932,"children":933},{"class":381},[934],{"type":30,"tagName":379,"properties":935,"children":936},{},[937],{"type":26,"value":938},"const safe = safeDiv(10.0, 0.0);    // 0",{"type":26,"value":27},{"type":30,"tagName":349,"properties":941,"children":943,"position":952},{"id":942},"average-of-two-values",[944],{"type":26,"value":945,"position":946},"Average of two values",{"start":947,"end":950},{"line":948,"column":38,"offset":949},79,2637,{"line":948,"column":155,"offset":951},2658,{"start":953,"end":955},{"line":948,"column":20,"offset":954},2633,{"line":948,"column":155,"offset":951},{"type":26,"value":27},{"type":13,"children":958},[959],{"type":30,"tagName":369,"properties":960,"children":961,"data":-1},{"class":371,"style":372,"tabindex":373},[962],{"type":30,"tagName":44,"properties":963,"children":964},{},[965,973,974,982,983,990,991,998,999],{"type":30,"tagName":379,"properties":966,"children":967},{"class":381},[968],{"type":30,"tagName":379,"properties":969,"children":970},{},[971],{"type":26,"value":972},"function average(a: f64, b: f64): f64 {",{"type":26,"value":27},{"type":30,"tagName":379,"properties":975,"children":976},{"class":381},[977],{"type":30,"tagName":379,"properties":978,"children":979},{},[980],{"type":26,"value":981},"  return (a + b) / 2.0;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":984,"children":985},{"class":381},[986],{"type":30,"tagName":379,"properties":987,"children":988},{},[989],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":992,"children":993},{"class":381},[994],{"type":30,"tagName":379,"properties":995,"children":996},{},[997],{"type":26,"value":546},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1000,"children":1001},{"class":381},[1002],{"type":30,"tagName":379,"properties":1003,"children":1004},{},[1005],{"type":26,"value":1006},"const mid = average(close, prevClose);",{"type":26,"value":27},{"type":30,"tagName":349,"properties":1009,"children":1011,"position":1020},{"id":1010},"custom-pattern-logic",[1012],{"type":26,"value":1013,"position":1014},"Custom pattern logic",{"start":1015,"end":1017},{"line":206,"column":38,"offset":1016},2783,{"line":206,"column":1018,"offset":1019},25,2803,{"start":1021,"end":1023},{"line":206,"column":20,"offset":1022},2779,{"line":206,"column":1018,"offset":1019},{"type":26,"value":27},{"type":30,"tagName":31,"properties":1026,"children":1027,"position":1075},{},[1028,1038,1050,1057,1069],{"type":26,"value":1029,"position":1030},"A candle-pattern test takes this bar's and the previous bar's open and\nclose. Where kScript indexed ",{"start":1031,"end":1034},{"line":1032,"column":20,"offset":1033},91,2805,{"line":1035,"column":1036,"offset":1037},92,30,2905,{"type":30,"tagName":44,"properties":1039,"children":1040,"position":1047},{},[1041],{"type":26,"value":1042,"position":1043},"open[1]",{"start":1044,"end":1045},{"line":1035,"column":1036,"offset":1037},{"line":1035,"column":685,"offset":1046},2914,{"start":1048,"end":1049},{"line":1035,"column":1036,"offset":1037},{"line":1035,"column":685,"offset":1046},{"type":26,"value":1051,"position":1052},", an Indicator remembers the previous\nbar's values in module-level variables at the end of ",{"start":1053,"end":1054},{"line":1035,"column":685,"offset":1046},{"line":1055,"column":52,"offset":1056},93,3005,{"type":30,"tagName":44,"properties":1058,"children":1059,"position":1066},{},[1060],{"type":26,"value":1061,"position":1062},"state()",{"start":1063,"end":1064},{"line":1055,"column":52,"offset":1056},{"line":1055,"column":427,"offset":1065},3014,{"start":1067,"end":1068},{"line":1055,"column":52,"offset":1056},{"line":1055,"column":427,"offset":1065},{"type":26,"value":1070,"position":1071},":",{"start":1072,"end":1073},{"line":1055,"column":427,"offset":1065},{"line":1055,"column":628,"offset":1074},3015,{"start":1076,"end":1077},{"line":1032,"column":20,"offset":1033},{"line":1055,"column":628,"offset":1074},{"type":26,"value":27},{"type":13,"children":1080},[1081],{"type":30,"tagName":369,"properties":1082,"children":1083,"data":-1},{"class":371,"style":372,"tabindex":373},[1084],{"type":30,"tagName":44,"properties":1085,"children":1086},{},[1087,1118,1119,1144,1145,1170,1171,1174,1175,1199,1200,1221,1222,1243,1244,1296,1297,1317,1318,1357,1358,1361,1362,1428,1429,1482,1483,1490,1491,1494,1495,1558,1559,1581,1582,1589,1590,1593,1594,1690,1691,1724,1725,1750,1751,1798,1799,1829,1830,1837,1838,1841,1842,1876,1877,1909,1910,1942,1943,1976,1977,2009,2010,2013,2014,2050,2051,2054,2055,2088,2089,2115,2116,2141,2142,2164,2165,2196,2197,2227,2228,2308,2309,2326,2327,2344,2345,2378,2379,2386,2387,2390,2391,2423,2424,2443,2444,2479,2480,2493,2494,2506,2507,2514,2515,2518,2519,2551,2552,2571,2572,2591,2592,2611,2612,2631,2632,2651,2652],{"type":30,"tagName":379,"properties":1088,"children":1089},{"class":381},[1090,1096,1102,1107,1113],{"type":30,"tagName":379,"properties":1091,"children":1093},{"style":1092},"--shiki-dark:#F97583;--shiki-light:#D73A49",[1094],{"type":26,"value":1095},"import",{"type":30,"tagName":379,"properties":1097,"children":1099},{"style":1098},"--shiki-dark:#E1E4E8;--shiki-light:#24292E",[1100],{"type":26,"value":1101}," { input, line, lower, none, ohlcv, output, overlay, shape } ",{"type":30,"tagName":379,"properties":1103,"children":1104},{"style":1092},[1105],{"type":26,"value":1106},"from",{"type":30,"tagName":379,"properties":1108,"children":1110},{"style":1109},"--shiki-dark:#9ECBFF;--shiki-light:#032F62",[1111],{"type":26,"value":1112}," \"./sdk/declare\"",{"type":30,"tagName":379,"properties":1114,"children":1115},{"style":1098},[1116],{"type":26,"value":1117},";",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1120,"children":1121},{"class":381},[1122,1126,1131,1135,1140],{"type":30,"tagName":379,"properties":1123,"children":1124},{"style":1092},[1125],{"type":26,"value":1095},{"type":30,"tagName":379,"properties":1127,"children":1128},{"style":1098},[1129],{"type":26,"value":1130}," { in_close, in_low, in_open } ",{"type":30,"tagName":379,"properties":1132,"children":1133},{"style":1092},[1134],{"type":26,"value":1106},{"type":30,"tagName":379,"properties":1136,"children":1137},{"style":1109},[1138],{"type":26,"value":1139}," \"./gen/inputs\"",{"type":30,"tagName":379,"properties":1141,"children":1142},{"style":1098},[1143],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1146,"children":1147},{"class":381},[1148,1152,1157,1161,1166],{"type":30,"tagName":379,"properties":1149,"children":1150},{"style":1092},[1151],{"type":26,"value":1095},{"type":30,"tagName":379,"properties":1153,"children":1154},{"style":1098},[1155],{"type":26,"value":1156}," { emitRow, out_body_ratio, out_engulfing, out_is_engulfing } ",{"type":30,"tagName":379,"properties":1158,"children":1159},{"style":1092},[1160],{"type":26,"value":1106},{"type":30,"tagName":379,"properties":1162,"children":1163},{"style":1109},[1164],{"type":26,"value":1165}," \"./gen/outputs\"",{"type":30,"tagName":379,"properties":1167,"children":1168},{"style":1098},[1169],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1172,"children":1173},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":1176,"children":1177},{"class":381},[1178,1184,1189,1194],{"type":30,"tagName":379,"properties":1179,"children":1181},{"style":1180},"--shiki-dark:#B392F0;--shiki-light:#6F42C1",[1182],{"type":26,"value":1183},"input",{"type":30,"tagName":379,"properties":1185,"children":1186},{"style":1098},[1187],{"type":26,"value":1188},"(",{"type":30,"tagName":379,"properties":1190,"children":1191},{"style":1109},[1192],{"type":26,"value":1193},"\"open\"",{"type":30,"tagName":379,"properties":1195,"children":1196},{"style":1098},[1197],{"type":26,"value":1198},", ohlcv.open);",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1201,"children":1202},{"class":381},[1203,1207,1211,1216],{"type":30,"tagName":379,"properties":1204,"children":1205},{"style":1180},[1206],{"type":26,"value":1183},{"type":30,"tagName":379,"properties":1208,"children":1209},{"style":1098},[1210],{"type":26,"value":1188},{"type":30,"tagName":379,"properties":1212,"children":1213},{"style":1109},[1214],{"type":26,"value":1215},"\"close\"",{"type":30,"tagName":379,"properties":1217,"children":1218},{"style":1098},[1219],{"type":26,"value":1220},", ohlcv.close);",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1223,"children":1224},{"class":381},[1225,1229,1233,1238],{"type":30,"tagName":379,"properties":1226,"children":1227},{"style":1180},[1228],{"type":26,"value":1183},{"type":30,"tagName":379,"properties":1230,"children":1231},{"style":1098},[1232],{"type":26,"value":1188},{"type":30,"tagName":379,"properties":1234,"children":1235},{"style":1109},[1236],{"type":26,"value":1237},"\"low\"",{"type":30,"tagName":379,"properties":1239,"children":1240},{"style":1098},[1241],{"type":26,"value":1242},", ohlcv.low);",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1245,"children":1246},{"class":381},[1247,1252,1256,1261,1266,1271,1276,1281,1286,1291],{"type":30,"tagName":379,"properties":1248,"children":1249},{"style":1180},[1250],{"type":26,"value":1251},"output",{"type":30,"tagName":379,"properties":1253,"children":1254},{"style":1098},[1255],{"type":26,"value":1188},{"type":30,"tagName":379,"properties":1257,"children":1258},{"style":1109},[1259],{"type":26,"value":1260},"\"engulfing\"",{"type":30,"tagName":379,"properties":1262,"children":1263},{"style":1098},[1264],{"type":26,"value":1265},", shape, overlay, { color: ",{"type":30,"tagName":379,"properties":1267,"children":1268},{"style":1109},[1269],{"type":26,"value":1270},"\"#16a34a\"",{"type":30,"tagName":379,"properties":1272,"children":1273},{"style":1098},[1274],{"type":26,"value":1275},", shape_where: ",{"type":30,"tagName":379,"properties":1277,"children":1278},{"style":1109},[1279],{"type":26,"value":1280},"\"is_engulfing\"",{"type":30,"tagName":379,"properties":1282,"children":1283},{"style":1098},[1284],{"type":26,"value":1285},", description: ",{"type":30,"tagName":379,"properties":1287,"children":1288},{"style":1109},[1289],{"type":26,"value":1290},"\"Bullish engulfing candle\"",{"type":30,"tagName":379,"properties":1292,"children":1293},{"style":1098},[1294],{"type":26,"value":1295}," });",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1298,"children":1299},{"class":381},[1300,1304,1308,1312],{"type":30,"tagName":379,"properties":1301,"children":1302},{"style":1180},[1303],{"type":26,"value":1251},{"type":30,"tagName":379,"properties":1305,"children":1306},{"style":1098},[1307],{"type":26,"value":1188},{"type":30,"tagName":379,"properties":1309,"children":1310},{"style":1109},[1311],{"type":26,"value":1280},{"type":30,"tagName":379,"properties":1313,"children":1314},{"style":1098},[1315],{"type":26,"value":1316},", none);",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1319,"children":1320},{"class":381},[1321,1325,1329,1334,1339,1344,1348,1353],{"type":30,"tagName":379,"properties":1322,"children":1323},{"style":1180},[1324],{"type":26,"value":1251},{"type":30,"tagName":379,"properties":1326,"children":1327},{"style":1098},[1328],{"type":26,"value":1188},{"type":30,"tagName":379,"properties":1330,"children":1331},{"style":1109},[1332],{"type":26,"value":1333},"\"body_ratio\"",{"type":30,"tagName":379,"properties":1335,"children":1336},{"style":1098},[1337],{"type":26,"value":1338},", line, lower, { color: ",{"type":30,"tagName":379,"properties":1340,"children":1341},{"style":1109},[1342],{"type":26,"value":1343},"\"#94a3b8\"",{"type":30,"tagName":379,"properties":1345,"children":1346},{"style":1098},[1347],{"type":26,"value":1285},{"type":30,"tagName":379,"properties":1349,"children":1350},{"style":1109},[1351],{"type":26,"value":1352},"\"This body divided by the previous body\"",{"type":30,"tagName":379,"properties":1354,"children":1355},{"style":1098},[1356],{"type":26,"value":1295},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1359,"children":1360},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":1363,"children":1364},{"class":381},[1365,1369,1374,1378,1384,1388,1393,1397,1402,1406,1410,1415,1419,1423],{"type":30,"tagName":379,"properties":1366,"children":1367},{"style":1092},[1368],{"type":26,"value":48},{"type":30,"tagName":379,"properties":1370,"children":1371},{"style":1180},[1372],{"type":26,"value":1373}," safeDiv",{"type":30,"tagName":379,"properties":1375,"children":1376},{"style":1098},[1377],{"type":26,"value":1188},{"type":30,"tagName":379,"properties":1379,"children":1381},{"style":1380},"--shiki-dark:#FFAB70;--shiki-light:#E36209",[1382],{"type":26,"value":1383},"a",{"type":30,"tagName":379,"properties":1385,"children":1386},{"style":1092},[1387],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1389,"children":1390},{"style":1180},[1391],{"type":26,"value":1392}," f64",{"type":30,"tagName":379,"properties":1394,"children":1395},{"style":1098},[1396],{"type":26,"value":624},{"type":30,"tagName":379,"properties":1398,"children":1399},{"style":1380},[1400],{"type":26,"value":1401},"b",{"type":30,"tagName":379,"properties":1403,"children":1404},{"style":1092},[1405],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1407,"children":1408},{"style":1180},[1409],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1411,"children":1412},{"style":1098},[1413],{"type":26,"value":1414},")",{"type":30,"tagName":379,"properties":1416,"children":1417},{"style":1092},[1418],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1420,"children":1421},{"style":1180},[1422],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1424,"children":1425},{"style":1098},[1426],{"type":26,"value":1427}," {",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1430,"children":1431},{"class":381},[1432,1437,1442,1447,1453,1458,1462,1467,1472,1477],{"type":30,"tagName":379,"properties":1433,"children":1434},{"style":1092},[1435],{"type":26,"value":1436},"  return",{"type":30,"tagName":379,"properties":1438,"children":1439},{"style":1098},[1440],{"type":26,"value":1441}," b ",{"type":30,"tagName":379,"properties":1443,"children":1444},{"style":1092},[1445],{"type":26,"value":1446},"==",{"type":30,"tagName":379,"properties":1448,"children":1450},{"style":1449},"--shiki-dark:#79B8FF;--shiki-light:#005CC5",[1451],{"type":26,"value":1452}," 0.0",{"type":30,"tagName":379,"properties":1454,"children":1455},{"style":1092},[1456],{"type":26,"value":1457}," ?",{"type":30,"tagName":379,"properties":1459,"children":1460},{"style":1449},[1461],{"type":26,"value":1452},{"type":30,"tagName":379,"properties":1463,"children":1464},{"style":1092},[1465],{"type":26,"value":1466}," :",{"type":30,"tagName":379,"properties":1468,"children":1469},{"style":1098},[1470],{"type":26,"value":1471}," a ",{"type":30,"tagName":379,"properties":1473,"children":1474},{"style":1092},[1475],{"type":26,"value":1476},"/",{"type":30,"tagName":379,"properties":1478,"children":1479},{"style":1098},[1480],{"type":26,"value":1481}," b;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1484,"children":1485},{"class":381},[1486],{"type":30,"tagName":379,"properties":1487,"children":1488},{"style":1098},[1489],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1492,"children":1493},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":1496,"children":1497},{"class":381},[1498,1502,1507,1511,1516,1520,1524,1528,1533,1537,1541,1545,1549,1554],{"type":30,"tagName":379,"properties":1499,"children":1500},{"style":1092},[1501],{"type":26,"value":48},{"type":30,"tagName":379,"properties":1503,"children":1504},{"style":1180},[1505],{"type":26,"value":1506}," isGreenCandle",{"type":30,"tagName":379,"properties":1508,"children":1509},{"style":1098},[1510],{"type":26,"value":1188},{"type":30,"tagName":379,"properties":1512,"children":1513},{"style":1380},[1514],{"type":26,"value":1515},"openPrice",{"type":30,"tagName":379,"properties":1517,"children":1518},{"style":1092},[1519],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1521,"children":1522},{"style":1180},[1523],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1525,"children":1526},{"style":1098},[1527],{"type":26,"value":624},{"type":30,"tagName":379,"properties":1529,"children":1530},{"style":1380},[1531],{"type":26,"value":1532},"closePrice",{"type":30,"tagName":379,"properties":1534,"children":1535},{"style":1092},[1536],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1538,"children":1539},{"style":1180},[1540],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1542,"children":1543},{"style":1098},[1544],{"type":26,"value":1414},{"type":30,"tagName":379,"properties":1546,"children":1547},{"style":1092},[1548],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1550,"children":1551},{"style":1180},[1552],{"type":26,"value":1553}," bool",{"type":30,"tagName":379,"properties":1555,"children":1556},{"style":1098},[1557],{"type":26,"value":1427},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1560,"children":1561},{"class":381},[1562,1566,1571,1576],{"type":30,"tagName":379,"properties":1563,"children":1564},{"style":1092},[1565],{"type":26,"value":1436},{"type":30,"tagName":379,"properties":1567,"children":1568},{"style":1098},[1569],{"type":26,"value":1570}," closePrice ",{"type":30,"tagName":379,"properties":1572,"children":1573},{"style":1092},[1574],{"type":26,"value":1575},">",{"type":30,"tagName":379,"properties":1577,"children":1578},{"style":1098},[1579],{"type":26,"value":1580}," openPrice;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1583,"children":1584},{"class":381},[1585],{"type":30,"tagName":379,"properties":1586,"children":1587},{"style":1098},[1588],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1591,"children":1592},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":1595,"children":1596},{"class":381},[1597,1601,1606,1610,1615,1619,1623,1627,1632,1636,1640,1644,1649,1653,1657,1661,1666,1670,1674,1678,1682,1686],{"type":30,"tagName":379,"properties":1598,"children":1599},{"style":1092},[1600],{"type":26,"value":48},{"type":30,"tagName":379,"properties":1602,"children":1603},{"style":1180},[1604],{"type":26,"value":1605}," isBullishEngulfing",{"type":30,"tagName":379,"properties":1607,"children":1608},{"style":1098},[1609],{"type":26,"value":1188},{"type":30,"tagName":379,"properties":1611,"children":1612},{"style":1380},[1613],{"type":26,"value":1614},"prevOpen",{"type":30,"tagName":379,"properties":1616,"children":1617},{"style":1092},[1618],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1620,"children":1621},{"style":1180},[1622],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1624,"children":1625},{"style":1098},[1626],{"type":26,"value":624},{"type":30,"tagName":379,"properties":1628,"children":1629},{"style":1380},[1630],{"type":26,"value":1631},"prevClose",{"type":30,"tagName":379,"properties":1633,"children":1634},{"style":1092},[1635],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1637,"children":1638},{"style":1180},[1639],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1641,"children":1642},{"style":1098},[1643],{"type":26,"value":624},{"type":30,"tagName":379,"properties":1645,"children":1646},{"style":1380},[1647],{"type":26,"value":1648},"currOpen",{"type":30,"tagName":379,"properties":1650,"children":1651},{"style":1092},[1652],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1654,"children":1655},{"style":1180},[1656],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1658,"children":1659},{"style":1098},[1660],{"type":26,"value":624},{"type":30,"tagName":379,"properties":1662,"children":1663},{"style":1380},[1664],{"type":26,"value":1665},"currClose",{"type":30,"tagName":379,"properties":1667,"children":1668},{"style":1092},[1669],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1671,"children":1672},{"style":1180},[1673],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1675,"children":1676},{"style":1098},[1677],{"type":26,"value":1414},{"type":30,"tagName":379,"properties":1679,"children":1680},{"style":1092},[1681],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1683,"children":1684},{"style":1180},[1685],{"type":26,"value":1553},{"type":30,"tagName":379,"properties":1687,"children":1688},{"style":1098},[1689],{"type":26,"value":1427},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1692,"children":1693},{"class":381},[1694,1699,1704,1709,1714,1719],{"type":30,"tagName":379,"properties":1695,"children":1696},{"style":1092},[1697],{"type":26,"value":1698},"  const",{"type":30,"tagName":379,"properties":1700,"children":1701},{"style":1449},[1702],{"type":26,"value":1703}," prevWasRed",{"type":30,"tagName":379,"properties":1705,"children":1706},{"style":1092},[1707],{"type":26,"value":1708}," =",{"type":30,"tagName":379,"properties":1710,"children":1711},{"style":1098},[1712],{"type":26,"value":1713}," prevClose ",{"type":30,"tagName":379,"properties":1715,"children":1716},{"style":1092},[1717],{"type":26,"value":1718},"\u003C",{"type":30,"tagName":379,"properties":1720,"children":1721},{"style":1098},[1722],{"type":26,"value":1723}," prevOpen;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1726,"children":1727},{"class":381},[1728,1732,1737,1741,1745],{"type":30,"tagName":379,"properties":1729,"children":1730},{"style":1092},[1731],{"type":26,"value":1698},{"type":30,"tagName":379,"properties":1733,"children":1734},{"style":1449},[1735],{"type":26,"value":1736}," currIsGreen",{"type":30,"tagName":379,"properties":1738,"children":1739},{"style":1092},[1740],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":1742,"children":1743},{"style":1180},[1744],{"type":26,"value":1506},{"type":30,"tagName":379,"properties":1746,"children":1747},{"style":1098},[1748],{"type":26,"value":1749},"(currOpen, currClose);",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1752,"children":1753},{"class":381},[1754,1758,1763,1767,1772,1776,1780,1785,1790,1794],{"type":30,"tagName":379,"properties":1755,"children":1756},{"style":1092},[1757],{"type":26,"value":1698},{"type":30,"tagName":379,"properties":1759,"children":1760},{"style":1449},[1761],{"type":26,"value":1762}," engulfs",{"type":30,"tagName":379,"properties":1764,"children":1765},{"style":1092},[1766],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":1768,"children":1769},{"style":1098},[1770],{"type":26,"value":1771}," currOpen ",{"type":30,"tagName":379,"properties":1773,"children":1774},{"style":1092},[1775],{"type":26,"value":1718},{"type":30,"tagName":379,"properties":1777,"children":1778},{"style":1098},[1779],{"type":26,"value":1713},{"type":30,"tagName":379,"properties":1781,"children":1782},{"style":1092},[1783],{"type":26,"value":1784},"&&",{"type":30,"tagName":379,"properties":1786,"children":1787},{"style":1098},[1788],{"type":26,"value":1789}," currClose ",{"type":30,"tagName":379,"properties":1791,"children":1792},{"style":1092},[1793],{"type":26,"value":1575},{"type":30,"tagName":379,"properties":1795,"children":1796},{"style":1098},[1797],{"type":26,"value":1723},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1800,"children":1801},{"class":381},[1802,1806,1811,1815,1820,1824],{"type":30,"tagName":379,"properties":1803,"children":1804},{"style":1092},[1805],{"type":26,"value":1436},{"type":30,"tagName":379,"properties":1807,"children":1808},{"style":1098},[1809],{"type":26,"value":1810}," prevWasRed ",{"type":30,"tagName":379,"properties":1812,"children":1813},{"style":1092},[1814],{"type":26,"value":1784},{"type":30,"tagName":379,"properties":1816,"children":1817},{"style":1098},[1818],{"type":26,"value":1819}," currIsGreen ",{"type":30,"tagName":379,"properties":1821,"children":1822},{"style":1092},[1823],{"type":26,"value":1784},{"type":30,"tagName":379,"properties":1825,"children":1826},{"style":1098},[1827],{"type":26,"value":1828}," engulfs;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":1831,"children":1832},{"class":381},[1833],{"type":30,"tagName":379,"properties":1834,"children":1835},{"style":1098},[1836],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1839,"children":1840},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":1843,"children":1844},{"class":381},[1845,1850,1855,1859,1863,1867,1872],{"type":30,"tagName":379,"properties":1846,"children":1847},{"style":1092},[1848],{"type":26,"value":1849},"let",{"type":30,"tagName":379,"properties":1851,"children":1852},{"style":1098},[1853],{"type":26,"value":1854}," prevOpen",{"type":30,"tagName":379,"properties":1856,"children":1857},{"style":1092},[1858],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1860,"children":1861},{"style":1180},[1862],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1864,"children":1865},{"style":1092},[1866],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":1868,"children":1869},{"style":1449},[1870],{"type":26,"value":1871}," NaN",{"type":30,"tagName":379,"properties":1873,"children":1874},{"style":1098},[1875],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1878,"children":1879},{"class":381},[1880,1884,1889,1893,1897,1901,1905],{"type":30,"tagName":379,"properties":1881,"children":1882},{"style":1092},[1883],{"type":26,"value":1849},{"type":30,"tagName":379,"properties":1885,"children":1886},{"style":1098},[1887],{"type":26,"value":1888}," prevClose",{"type":30,"tagName":379,"properties":1890,"children":1891},{"style":1092},[1892],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1894,"children":1895},{"style":1180},[1896],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1898,"children":1899},{"style":1092},[1900],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":1902,"children":1903},{"style":1449},[1904],{"type":26,"value":1871},{"type":30,"tagName":379,"properties":1906,"children":1907},{"style":1098},[1908],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1911,"children":1912},{"class":381},[1913,1917,1922,1926,1930,1934,1938],{"type":30,"tagName":379,"properties":1914,"children":1915},{"style":1092},[1916],{"type":26,"value":1849},{"type":30,"tagName":379,"properties":1918,"children":1919},{"style":1098},[1920],{"type":26,"value":1921}," low",{"type":30,"tagName":379,"properties":1923,"children":1924},{"style":1092},[1925],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1927,"children":1928},{"style":1180},[1929],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1931,"children":1932},{"style":1092},[1933],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":1935,"children":1936},{"style":1449},[1937],{"type":26,"value":1871},{"type":30,"tagName":379,"properties":1939,"children":1940},{"style":1098},[1941],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1944,"children":1945},{"class":381},[1946,1950,1955,1959,1963,1967,1972],{"type":30,"tagName":379,"properties":1947,"children":1948},{"style":1092},[1949],{"type":26,"value":1849},{"type":30,"tagName":379,"properties":1951,"children":1952},{"style":1098},[1953],{"type":26,"value":1954}," engulfing",{"type":30,"tagName":379,"properties":1956,"children":1957},{"style":1092},[1958],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1960,"children":1961},{"style":1180},[1962],{"type":26,"value":1553},{"type":30,"tagName":379,"properties":1964,"children":1965},{"style":1092},[1966],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":1968,"children":1969},{"style":1449},[1970],{"type":26,"value":1971}," false",{"type":30,"tagName":379,"properties":1973,"children":1974},{"style":1098},[1975],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":1978,"children":1979},{"class":381},[1980,1984,1989,1993,1997,2001,2005],{"type":30,"tagName":379,"properties":1981,"children":1982},{"style":1092},[1983],{"type":26,"value":1849},{"type":30,"tagName":379,"properties":1985,"children":1986},{"style":1098},[1987],{"type":26,"value":1988}," bodyRatio",{"type":30,"tagName":379,"properties":1990,"children":1991},{"style":1092},[1992],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":1994,"children":1995},{"style":1180},[1996],{"type":26,"value":1392},{"type":30,"tagName":379,"properties":1998,"children":1999},{"style":1092},[2000],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":2002,"children":2003},{"style":1449},[2004],{"type":26,"value":1871},{"type":30,"tagName":379,"properties":2006,"children":2007},{"style":1098},[2008],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2011,"children":2012},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":2015,"children":2016},{"class":381},[2017,2021,2026,2031,2036,2040,2045],{"type":30,"tagName":379,"properties":2018,"children":2019},{"style":1092},[2020],{"type":26,"value":691},{"type":30,"tagName":379,"properties":2022,"children":2023},{"style":1092},[2024],{"type":26,"value":2025}," function",{"type":30,"tagName":379,"properties":2027,"children":2028},{"style":1180},[2029],{"type":26,"value":2030}," init",{"type":30,"tagName":379,"properties":2032,"children":2033},{"style":1098},[2034],{"type":26,"value":2035},"()",{"type":30,"tagName":379,"properties":2037,"children":2038},{"style":1092},[2039],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":2041,"children":2042},{"style":1449},[2043],{"type":26,"value":2044}," void",{"type":30,"tagName":379,"properties":2046,"children":2047},{"style":1098},[2048],{"type":26,"value":2049}," {}",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2052,"children":2053},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":2056,"children":2057},{"class":381},[2058,2062,2066,2071,2075,2079,2084],{"type":30,"tagName":379,"properties":2059,"children":2060},{"style":1092},[2061],{"type":26,"value":691},{"type":30,"tagName":379,"properties":2063,"children":2064},{"style":1092},[2065],{"type":26,"value":2025},{"type":30,"tagName":379,"properties":2067,"children":2068},{"style":1180},[2069],{"type":26,"value":2070}," state",{"type":30,"tagName":379,"properties":2072,"children":2073},{"style":1098},[2074],{"type":26,"value":2035},{"type":30,"tagName":379,"properties":2076,"children":2077},{"style":1092},[2078],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":2080,"children":2081},{"style":1180},[2082],{"type":26,"value":2083}," i32",{"type":30,"tagName":379,"properties":2085,"children":2086},{"style":1098},[2087],{"type":26,"value":1427},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2090,"children":2091},{"class":381},[2092,2096,2101,2105,2110],{"type":30,"tagName":379,"properties":2093,"children":2094},{"style":1092},[2095],{"type":26,"value":1698},{"type":30,"tagName":379,"properties":2097,"children":2098},{"style":1449},[2099],{"type":26,"value":2100}," open",{"type":30,"tagName":379,"properties":2102,"children":2103},{"style":1092},[2104],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":2106,"children":2107},{"style":1180},[2108],{"type":26,"value":2109}," in_open",{"type":30,"tagName":379,"properties":2111,"children":2112},{"style":1098},[2113],{"type":26,"value":2114},"();",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2117,"children":2118},{"class":381},[2119,2123,2128,2132,2137],{"type":30,"tagName":379,"properties":2120,"children":2121},{"style":1092},[2122],{"type":26,"value":1698},{"type":30,"tagName":379,"properties":2124,"children":2125},{"style":1449},[2126],{"type":26,"value":2127}," close",{"type":30,"tagName":379,"properties":2129,"children":2130},{"style":1092},[2131],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":2133,"children":2134},{"style":1180},[2135],{"type":26,"value":2136}," in_close",{"type":30,"tagName":379,"properties":2138,"children":2139},{"style":1098},[2140],{"type":26,"value":2114},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2143,"children":2144},{"class":381},[2145,2150,2155,2160],{"type":30,"tagName":379,"properties":2146,"children":2147},{"style":1098},[2148],{"type":26,"value":2149},"  low ",{"type":30,"tagName":379,"properties":2151,"children":2152},{"style":1092},[2153],{"type":26,"value":2154},"=",{"type":30,"tagName":379,"properties":2156,"children":2157},{"style":1180},[2158],{"type":26,"value":2159}," in_low",{"type":30,"tagName":379,"properties":2161,"children":2162},{"style":1098},[2163],{"type":26,"value":2114},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2166,"children":2167},{"class":381},[2168,2172,2177,2181,2186,2191],{"type":30,"tagName":379,"properties":2169,"children":2170},{"style":1092},[2171],{"type":26,"value":1698},{"type":30,"tagName":379,"properties":2173,"children":2174},{"style":1449},[2175],{"type":26,"value":2176}," ready",{"type":30,"tagName":379,"properties":2178,"children":2179},{"style":1092},[2180],{"type":26,"value":1708},{"type":30,"tagName":379,"properties":2182,"children":2183},{"style":1092},[2184],{"type":26,"value":2185}," !",{"type":30,"tagName":379,"properties":2187,"children":2188},{"style":1180},[2189],{"type":26,"value":2190},"isNaN",{"type":30,"tagName":379,"properties":2192,"children":2193},{"style":1098},[2194],{"type":26,"value":2195},"(prevOpen);",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2198,"children":2199},{"class":381},[2200,2205,2209,2214,2218,2222],{"type":30,"tagName":379,"properties":2201,"children":2202},{"style":1098},[2203],{"type":26,"value":2204},"  engulfing ",{"type":30,"tagName":379,"properties":2206,"children":2207},{"style":1092},[2208],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2210,"children":2211},{"style":1098},[2212],{"type":26,"value":2213}," ready ",{"type":30,"tagName":379,"properties":2215,"children":2216},{"style":1092},[2217],{"type":26,"value":1784},{"type":30,"tagName":379,"properties":2219,"children":2220},{"style":1180},[2221],{"type":26,"value":1605},{"type":30,"tagName":379,"properties":2223,"children":2224},{"style":1098},[2225],{"type":26,"value":2226},"(prevOpen, prevClose, open, close);",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2229,"children":2230},{"class":381},[2231,2236,2240,2244,2249,2253,2258,2263,2268,2273,2278,2282,2287,2291,2296,2300,2304],{"type":30,"tagName":379,"properties":2232,"children":2233},{"style":1098},[2234],{"type":26,"value":2235},"  bodyRatio ",{"type":30,"tagName":379,"properties":2237,"children":2238},{"style":1092},[2239],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2241,"children":2242},{"style":1098},[2243],{"type":26,"value":2213},{"type":30,"tagName":379,"properties":2245,"children":2246},{"style":1092},[2247],{"type":26,"value":2248},"?",{"type":30,"tagName":379,"properties":2250,"children":2251},{"style":1180},[2252],{"type":26,"value":1373},{"type":30,"tagName":379,"properties":2254,"children":2255},{"style":1098},[2256],{"type":26,"value":2257},"(Math.",{"type":30,"tagName":379,"properties":2259,"children":2260},{"style":1180},[2261],{"type":26,"value":2262},"abs",{"type":30,"tagName":379,"properties":2264,"children":2265},{"style":1098},[2266],{"type":26,"value":2267},"(close ",{"type":30,"tagName":379,"properties":2269,"children":2270},{"style":1092},[2271],{"type":26,"value":2272},"-",{"type":30,"tagName":379,"properties":2274,"children":2275},{"style":1098},[2276],{"type":26,"value":2277}," open), Math.",{"type":30,"tagName":379,"properties":2279,"children":2280},{"style":1180},[2281],{"type":26,"value":2262},{"type":30,"tagName":379,"properties":2283,"children":2284},{"style":1098},[2285],{"type":26,"value":2286},"(prevClose ",{"type":30,"tagName":379,"properties":2288,"children":2289},{"style":1092},[2290],{"type":26,"value":2272},{"type":30,"tagName":379,"properties":2292,"children":2293},{"style":1098},[2294],{"type":26,"value":2295}," prevOpen)) ",{"type":30,"tagName":379,"properties":2297,"children":2298},{"style":1092},[2299],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":2301,"children":2302},{"style":1449},[2303],{"type":26,"value":1871},{"type":30,"tagName":379,"properties":2305,"children":2306},{"style":1098},[2307],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2310,"children":2311},{"class":381},[2312,2317,2321],{"type":30,"tagName":379,"properties":2313,"children":2314},{"style":1098},[2315],{"type":26,"value":2316},"  prevOpen ",{"type":30,"tagName":379,"properties":2318,"children":2319},{"style":1092},[2320],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2322,"children":2323},{"style":1098},[2324],{"type":26,"value":2325}," open;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2328,"children":2329},{"class":381},[2330,2335,2339],{"type":30,"tagName":379,"properties":2331,"children":2332},{"style":1098},[2333],{"type":26,"value":2334},"  prevClose ",{"type":30,"tagName":379,"properties":2336,"children":2337},{"style":1092},[2338],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2340,"children":2341},{"style":1098},[2342],{"type":26,"value":2343}," close;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2346,"children":2347},{"class":381},[2348,2352,2356,2360,2365,2369,2374],{"type":30,"tagName":379,"properties":2349,"children":2350},{"style":1092},[2351],{"type":26,"value":1436},{"type":30,"tagName":379,"properties":2353,"children":2354},{"style":1098},[2355],{"type":26,"value":2213},{"type":30,"tagName":379,"properties":2357,"children":2358},{"style":1092},[2359],{"type":26,"value":2248},{"type":30,"tagName":379,"properties":2361,"children":2362},{"style":1449},[2363],{"type":26,"value":2364}," 1",{"type":30,"tagName":379,"properties":2366,"children":2367},{"style":1092},[2368],{"type":26,"value":1466},{"type":30,"tagName":379,"properties":2370,"children":2371},{"style":1449},[2372],{"type":26,"value":2373}," 0",{"type":30,"tagName":379,"properties":2375,"children":2376},{"style":1098},[2377],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2380,"children":2381},{"class":381},[2382],{"type":30,"tagName":379,"properties":2383,"children":2384},{"style":1098},[2385],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2388,"children":2389},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":2392,"children":2393},{"class":381},[2394,2398,2402,2407,2411,2415,2419],{"type":30,"tagName":379,"properties":2395,"children":2396},{"style":1092},[2397],{"type":26,"value":691},{"type":30,"tagName":379,"properties":2399,"children":2400},{"style":1092},[2401],{"type":26,"value":2025},{"type":30,"tagName":379,"properties":2403,"children":2404},{"style":1180},[2405],{"type":26,"value":2406}," finalize",{"type":30,"tagName":379,"properties":2408,"children":2409},{"style":1098},[2410],{"type":26,"value":2035},{"type":30,"tagName":379,"properties":2412,"children":2413},{"style":1092},[2414],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":2416,"children":2417},{"style":1449},[2418],{"type":26,"value":2044},{"type":30,"tagName":379,"properties":2420,"children":2421},{"style":1098},[2422],{"type":26,"value":1427},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2425,"children":2426},{"class":381},[2427,2432,2437],{"type":30,"tagName":379,"properties":2428,"children":2429},{"style":1180},[2430],{"type":26,"value":2431},"  out_engulfing",{"type":30,"tagName":379,"properties":2433,"children":2434},{"style":1098},[2435],{"type":26,"value":2436},"(low); ",{"type":30,"tagName":379,"properties":2438,"children":2440},{"style":2439},"--shiki-dark:#6A737D;--shiki-light:#6A737D",[2441],{"type":26,"value":2442},"// the mark sits under the candle",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2445,"children":2446},{"class":381},[2447,2452,2457,2461,2466,2470,2474],{"type":30,"tagName":379,"properties":2448,"children":2449},{"style":1180},[2450],{"type":26,"value":2451},"  out_is_engulfing",{"type":30,"tagName":379,"properties":2453,"children":2454},{"style":1098},[2455],{"type":26,"value":2456},"(engulfing ",{"type":30,"tagName":379,"properties":2458,"children":2459},{"style":1092},[2460],{"type":26,"value":2248},{"type":30,"tagName":379,"properties":2462,"children":2463},{"style":1449},[2464],{"type":26,"value":2465}," 1.0",{"type":30,"tagName":379,"properties":2467,"children":2468},{"style":1092},[2469],{"type":26,"value":1466},{"type":30,"tagName":379,"properties":2471,"children":2472},{"style":1449},[2473],{"type":26,"value":1452},{"type":30,"tagName":379,"properties":2475,"children":2476},{"style":1098},[2477],{"type":26,"value":2478},");",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2481,"children":2482},{"class":381},[2483,2488],{"type":30,"tagName":379,"properties":2484,"children":2485},{"style":1180},[2486],{"type":26,"value":2487},"  out_body_ratio",{"type":30,"tagName":379,"properties":2489,"children":2490},{"style":1098},[2491],{"type":26,"value":2492},"(bodyRatio);",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2495,"children":2496},{"class":381},[2497,2502],{"type":30,"tagName":379,"properties":2498,"children":2499},{"style":1180},[2500],{"type":26,"value":2501},"  emitRow",{"type":30,"tagName":379,"properties":2503,"children":2504},{"style":1098},[2505],{"type":26,"value":2114},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2508,"children":2509},{"class":381},[2510],{"type":30,"tagName":379,"properties":2511,"children":2512},{"style":1098},[2513],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2516,"children":2517},{"class":381},[],{"type":26,"value":27},{"type":30,"tagName":379,"properties":2520,"children":2521},{"class":381},[2522,2526,2530,2535,2539,2543,2547],{"type":30,"tagName":379,"properties":2523,"children":2524},{"style":1092},[2525],{"type":26,"value":691},{"type":30,"tagName":379,"properties":2527,"children":2528},{"style":1092},[2529],{"type":26,"value":2025},{"type":30,"tagName":379,"properties":2531,"children":2532},{"style":1180},[2533],{"type":26,"value":2534}," reset",{"type":30,"tagName":379,"properties":2536,"children":2537},{"style":1098},[2538],{"type":26,"value":2035},{"type":30,"tagName":379,"properties":2540,"children":2541},{"style":1092},[2542],{"type":26,"value":1070},{"type":30,"tagName":379,"properties":2544,"children":2545},{"style":1449},[2546],{"type":26,"value":2044},{"type":30,"tagName":379,"properties":2548,"children":2549},{"style":1098},[2550],{"type":26,"value":1427},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2553,"children":2554},{"class":381},[2555,2559,2563,2567],{"type":30,"tagName":379,"properties":2556,"children":2557},{"style":1098},[2558],{"type":26,"value":2316},{"type":30,"tagName":379,"properties":2560,"children":2561},{"style":1092},[2562],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2564,"children":2565},{"style":1449},[2566],{"type":26,"value":1871},{"type":30,"tagName":379,"properties":2568,"children":2569},{"style":1098},[2570],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2573,"children":2574},{"class":381},[2575,2579,2583,2587],{"type":30,"tagName":379,"properties":2576,"children":2577},{"style":1098},[2578],{"type":26,"value":2334},{"type":30,"tagName":379,"properties":2580,"children":2581},{"style":1092},[2582],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2584,"children":2585},{"style":1449},[2586],{"type":26,"value":1871},{"type":30,"tagName":379,"properties":2588,"children":2589},{"style":1098},[2590],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2593,"children":2594},{"class":381},[2595,2599,2603,2607],{"type":30,"tagName":379,"properties":2596,"children":2597},{"style":1098},[2598],{"type":26,"value":2149},{"type":30,"tagName":379,"properties":2600,"children":2601},{"style":1092},[2602],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2604,"children":2605},{"style":1449},[2606],{"type":26,"value":1871},{"type":30,"tagName":379,"properties":2608,"children":2609},{"style":1098},[2610],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2613,"children":2614},{"class":381},[2615,2619,2623,2627],{"type":30,"tagName":379,"properties":2616,"children":2617},{"style":1098},[2618],{"type":26,"value":2204},{"type":30,"tagName":379,"properties":2620,"children":2621},{"style":1092},[2622],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2624,"children":2625},{"style":1449},[2626],{"type":26,"value":1971},{"type":30,"tagName":379,"properties":2628,"children":2629},{"style":1098},[2630],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2633,"children":2634},{"class":381},[2635,2639,2643,2647],{"type":30,"tagName":379,"properties":2636,"children":2637},{"style":1098},[2638],{"type":26,"value":2235},{"type":30,"tagName":379,"properties":2640,"children":2641},{"style":1092},[2642],{"type":26,"value":2154},{"type":30,"tagName":379,"properties":2644,"children":2645},{"style":1449},[2646],{"type":26,"value":1871},{"type":30,"tagName":379,"properties":2648,"children":2649},{"style":1098},[2650],{"type":26,"value":1117},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2653,"children":2654},{"class":381},[2655],{"type":30,"tagName":379,"properties":2656,"children":2657},{"style":1098},[2658],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2661,"children":2662,"position":2708},{},[2663,2672,2685,2690,2701],{"type":26,"value":2664,"position":2665},"The three helpers are pure: they take numbers and return a number or a\n",{"start":2666,"end":2669},{"line":2667,"column":20,"offset":2668},158,4953,{"line":2670,"column":20,"offset":2671},159,5024,{"type":30,"tagName":44,"properties":2673,"children":2674,"position":2682},{},[2675],{"type":26,"value":2676,"position":2677},"bool",{"start":2678,"end":2679},{"line":2670,"column":20,"offset":2671},{"line":2670,"column":2680,"offset":2681},7,5030,{"start":2683,"end":2684},{"line":2670,"column":20,"offset":2671},{"line":2670,"column":2680,"offset":2681},{"type":26,"value":662,"position":2686},{"start":2687,"end":2688},{"line":2670,"column":2680,"offset":2681},{"line":2670,"column":147,"offset":2689},5036,{"type":30,"tagName":44,"properties":2691,"children":2692,"position":2698},{},[2693],{"type":26,"value":1061,"position":2694},{"start":2695,"end":2696},{"line":2670,"column":147,"offset":2689},{"line":2670,"column":815,"offset":2697},5045,{"start":2699,"end":2700},{"line":2670,"column":147,"offset":2689},{"line":2670,"column":815,"offset":2697},{"type":26,"value":2702,"position":2703}," supplies the remembered previous bar. That keeps the\npattern testable in isolation and the per-bar function short.",{"start":2704,"end":2705},{"line":2670,"column":815,"offset":2697},{"line":2706,"column":618,"offset":2707},160,5160,{"start":2709,"end":2710},{"line":2667,"column":20,"offset":2668},{"line":2706,"column":618,"offset":2707},{"type":26,"value":27},{"type":30,"tagName":91,"properties":2713,"children":2715,"position":2723},{"id":2714},"functions-as-values",[2716],{"type":26,"value":2717,"position":2718},"Functions as values",{"start":2719,"end":2721},{"line":39,"column":99,"offset":2720},5165,{"line":39,"column":357,"offset":2722},5184,{"start":2724,"end":2726},{"line":39,"column":20,"offset":2725},5162,{"line":39,"column":357,"offset":2722},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2729,"children":2730,"position":2740},{},[2731],{"type":26,"value":2732,"position":2733},"A function that captures no local variable is a value. Store it in a\nvariable typed with its signature, pass it to a loop, keep a small table of\nthem:",{"start":2734,"end":2737},{"line":2735,"column":20,"offset":2736},164,5186,{"line":2738,"column":744,"offset":2739},166,5336,{"start":2741,"end":2742},{"line":2735,"column":20,"offset":2736},{"line":2738,"column":744,"offset":2739},{"type":26,"value":27},{"type":13,"children":2745},[2746],{"type":30,"tagName":369,"properties":2747,"children":2748,"data":-1},{"class":371,"style":372,"tabindex":373},[2749],{"type":30,"tagName":44,"properties":2750,"children":2751},{},[2752,2760,2761,2768,2769,2777,2778],{"type":30,"tagName":379,"properties":2753,"children":2754},{"class":381},[2755],{"type":30,"tagName":379,"properties":2756,"children":2757},{},[2758],{"type":26,"value":2759},"function aboveMean(x: f64): bool { return x > mean; }   // mean is module-level",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2762,"children":2763},{"class":381},[2764],{"type":30,"tagName":379,"properties":2765,"children":2766},{},[2767],{"type":26,"value":546},{"type":26,"value":27},{"type":30,"tagName":379,"properties":2770,"children":2771},{"class":381},[2772],{"type":30,"tagName":379,"properties":2773,"children":2774},{},[2775],{"type":26,"value":2776},"let pred: (x: f64) => bool = aboveMean;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2779,"children":2780},{"class":381},[2781],{"type":30,"tagName":379,"properties":2782,"children":2783},{},[2784],{"type":26,"value":2785},"const hits = countWhere(window, n, pred);",{"type":26,"value":27},{"type":30,"tagName":31,"properties":2788,"children":2789,"position":2818},{},[2790,2799,2812],{"type":26,"value":2791,"position":2792},"Arrow functions work the same way, and nested functions (declared inside\nanother function) are allowed as long as they read nothing from the\nenclosing function's locals. The full treatment, with the loop that takes\na predicate, is ",{"start":2793,"end":2796},{"line":2794,"column":20,"offset":2795},175,5514,{"line":2797,"column":221,"offset":2798},178,5745,{"type":30,"tagName":44,"properties":2800,"children":2801,"position":2809},{},[2802],{"type":26,"value":2803,"position":2804},"lambdas-and-reducers.md",{"start":2805,"end":2806},{"line":2797,"column":221,"offset":2798},{"line":2797,"column":2807,"offset":2808},42,5770,{"start":2810,"end":2811},{"line":2797,"column":221,"offset":2798},{"line":2797,"column":2807,"offset":2808},{"type":26,"value":463,"position":2813},{"start":2814,"end":2815},{"line":2797,"column":2807,"offset":2808},{"line":2797,"column":2816,"offset":2817},43,5771,{"start":2819,"end":2820},{"line":2794,"column":20,"offset":2795},{"line":2797,"column":2816,"offset":2817},{"type":26,"value":27},{"type":30,"tagName":91,"properties":2823,"children":2825,"position":2834},{"id":2824},"constraints-and-rules",[2826],{"type":26,"value":2827,"position":2828},"Constraints and rules",{"start":2829,"end":2832},{"line":2830,"column":99,"offset":2831},180,5776,{"line":2830,"column":1018,"offset":2833},5797,{"start":2835,"end":2837},{"line":2830,"column":20,"offset":2836},5773,{"line":2830,"column":1018,"offset":2833},{"type":26,"value":27},{"type":30,"tagName":349,"properties":2840,"children":2842,"position":2851},{"id":2841},"no-declarations-inside-functions",[2843],{"type":26,"value":2844,"position":2845},"No declarations inside functions",{"start":2846,"end":2849},{"line":2847,"column":38,"offset":2848},182,5803,{"line":2847,"column":457,"offset":2850},5835,{"start":2852,"end":2854},{"line":2847,"column":20,"offset":2853},5799,{"line":2847,"column":457,"offset":2850},{"type":26,"value":27},{"type":30,"tagName":31,"properties":2857,"children":2858,"position":2933},{},[2859,2873,2878,2891,2897,2909,2914,2926],{"type":30,"tagName":44,"properties":2860,"children":2861,"position":2870},{},[2862],{"type":26,"value":2863,"position":2864},"param(...)",{"start":2865,"end":2868},{"line":2866,"column":20,"offset":2867},184,5837,{"line":2866,"column":147,"offset":2869},5849,{"start":2871,"end":2872},{"line":2866,"column":20,"offset":2867},{"line":2866,"column":147,"offset":2869},{"type":26,"value":624,"position":2874},{"start":2875,"end":2876},{"line":2866,"column":147,"offset":2869},{"line":2866,"column":237,"offset":2877},5851,{"type":30,"tagName":44,"properties":2879,"children":2880,"position":2888},{},[2881],{"type":26,"value":2882,"position":2883},"input(...)",{"start":2884,"end":2885},{"line":2866,"column":237,"offset":2877},{"line":2866,"column":2886,"offset":2887},27,5863,{"start":2889,"end":2890},{"line":2866,"column":237,"offset":2877},{"line":2866,"column":2886,"offset":2887},{"type":26,"value":624,"position":2892},{"start":2893,"end":2894},{"line":2866,"column":2886,"offset":2887},{"line":2866,"column":2895,"offset":2896},29,5865,{"type":30,"tagName":44,"properties":2898,"children":2899,"position":2906},{},[2900],{"type":26,"value":2901,"position":2902},"output(...)",{"start":2903,"end":2904},{"line":2866,"column":2895,"offset":2896},{"line":2866,"column":2807,"offset":2905},5878,{"start":2907,"end":2908},{"line":2866,"column":2895,"offset":2896},{"line":2866,"column":2807,"offset":2905},{"type":26,"value":624,"position":2910},{"start":2911,"end":2912},{"line":2866,"column":2807,"offset":2905},{"line":2866,"column":41,"offset":2913},5880,{"type":30,"tagName":44,"properties":2915,"children":2916,"position":2923},{},[2917],{"type":26,"value":2918,"position":2919},"box(...)",{"start":2920,"end":2921},{"line":2866,"column":41,"offset":2913},{"line":2866,"column":52,"offset":2922},5890,{"start":2924,"end":2925},{"line":2866,"column":41,"offset":2913},{"line":2866,"column":52,"offset":2922},{"type":26,"value":2927,"position":2928},", and the rest are\ntop-level statements of the file; the build reads them without running the\ncode. One inside a function is a named build error:",{"start":2929,"end":2930},{"line":2866,"column":52,"offset":2922},{"line":2931,"column":574,"offset":2932},186,6035,{"start":2934,"end":2935},{"line":2866,"column":20,"offset":2867},{"line":2931,"column":574,"offset":2932},{"type":26,"value":27},{"type":13,"children":2938},[2939],{"type":30,"tagName":369,"properties":2940,"children":2941,"data":-1},{"class":371,"style":372,"tabindex":373},[2942],{"type":30,"tagName":44,"properties":2943,"children":2944},{},[2945],{"type":30,"tagName":379,"properties":2946,"children":2947},{"class":381},[2948],{"type":30,"tagName":379,"properties":2949,"children":2950},{},[2951],{"type":26,"value":2952},"output(...) declarations must be top-level statements, not inside a function, class, or expression",{"type":26,"value":27},{"type":30,"tagName":31,"properties":2955,"children":2956,"position":2966},{},[2957],{"type":26,"value":2958,"position":2959},"Pass an input's value in as an argument instead:",{"start":2960,"end":2963},{"line":2961,"column":20,"offset":2962},192,6149,{"line":2961,"column":2964,"offset":2965},49,6197,{"start":2967,"end":2968},{"line":2961,"column":20,"offset":2962},{"line":2961,"column":2964,"offset":2965},{"type":26,"value":27},{"type":13,"children":2971},[2972],{"type":30,"tagName":369,"properties":2973,"children":2974,"data":-1},{"class":371,"style":372,"tabindex":373},[2975],{"type":30,"tagName":44,"properties":2976,"children":2977},{},[2978,2986,2987,2995,2996,3004,3005,3013,3014,3021,3022,3029,3030,3038,3039,3047,3048,3056,3057],{"type":30,"tagName":379,"properties":2979,"children":2980},{"class":381},[2981],{"type":30,"tagName":379,"properties":2982,"children":2983},{},[2984],{"type":26,"value":2985},"// Invalid",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2988,"children":2989},{"class":381},[2990],{"type":30,"tagName":379,"properties":2991,"children":2992},{},[2993],{"type":26,"value":2994},"function bad(): f64 {",{"type":26,"value":27},{"type":30,"tagName":379,"properties":2997,"children":2998},{"class":381},[2999],{"type":30,"tagName":379,"properties":3000,"children":3001},{},[3002],{"type":26,"value":3003},"  input(\"close\", ohlcv.close);   // a declaration cannot live here",{"type":26,"value":27},{"type":30,"tagName":379,"properties":3006,"children":3007},{"class":381},[3008],{"type":30,"tagName":379,"properties":3009,"children":3010},{},[3011],{"type":26,"value":3012},"  return 0.0;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":3015,"children":3016},{"class":381},[3017],{"type":30,"tagName":379,"properties":3018,"children":3019},{},[3020],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":379,"properties":3023,"children":3024},{"class":381},[3025],{"type":30,"tagName":379,"properties":3026,"children":3027},{},[3028],{"type":26,"value":546},{"type":26,"value":27},{"type":30,"tagName":379,"properties":3031,"children":3032},{"class":381},[3033],{"type":30,"tagName":379,"properties":3034,"children":3035},{},[3036],{"type":26,"value":3037},"// Valid: declare at the top level, pass the value",{"type":26,"value":27},{"type":30,"tagName":379,"properties":3040,"children":3041},{"class":381},[3042],{"type":30,"tagName":379,"properties":3043,"children":3044},{},[3045],{"type":26,"value":3046},"function good(close: f64, avg: f64): f64 {",{"type":26,"value":27},{"type":30,"tagName":379,"properties":3049,"children":3050},{"class":381},[3051],{"type":30,"tagName":379,"properties":3052,"children":3053},{},[3054],{"type":26,"value":3055},"  return close - avg;",{"type":26,"value":27},{"type":30,"tagName":379,"properties":3058,"children":3059},{"class":381},[3060],{"type":30,"tagName":379,"properties":3061,"children":3062},{},[3063],{"type":26,"value":414},{"type":26,"value":27},{"type":30,"tagName":349,"properties":3066,"children":3068,"position":3077},{"id":3067},"no-locals-from-the-outside",[3069],{"type":26,"value":3070,"position":3071},"No locals from the outside",{"start":3072,"end":3075},{"line":3073,"column":38,"offset":3074},207,6451,{"line":3073,"column":447,"offset":3076},6477,{"start":3078,"end":3080},{"line":3073,"column":20,"offset":3079},6447,{"line":3073,"column":447,"offset":3076},{"type":26,"value":27},{"type":30,"tagName":31,"properties":3083,"children":3084,"position":3114},{},[3085,3094,3107],{"type":26,"value":3086,"position":3087},"A function reads its parameters and module-level state. An inner function\nor arrow that reads a local of the function around it is refused with\n",{"start":3088,"end":3091},{"line":3089,"column":20,"offset":3090},209,6479,{"line":3092,"column":20,"offset":3093},211,6623,{"type":30,"tagName":44,"properties":3095,"children":3096,"position":3104},{},[3097],{"type":26,"value":3098,"position":3099},"AS100: Not implemented: Closures",{"start":3100,"end":3101},{"line":3092,"column":20,"offset":3093},{"line":3092,"column":3102,"offset":3103},35,6657,{"start":3105,"end":3106},{"line":3092,"column":20,"offset":3093},{"line":3092,"column":3102,"offset":3103},{"type":26,"value":3108,"position":3109},". Move the value to module scope or pass\nit as a parameter.",{"start":3110,"end":3111},{"line":3092,"column":3102,"offset":3103},{"line":3112,"column":295,"offset":3113},212,6716,{"start":3115,"end":3116},{"line":3089,"column":20,"offset":3090},{"line":3112,"column":295,"offset":3113},{"type":26,"value":27},{"type":30,"tagName":349,"properties":3119,"children":3121,"position":3130},{"id":3120},"allocation-is-once-not-per-call",[3122],{"type":26,"value":3123,"position":3124},"Allocation is once, not per call",{"start":3125,"end":3128},{"line":3126,"column":38,"offset":3127},214,6722,{"line":3126,"column":457,"offset":3129},6754,{"start":3131,"end":3133},{"line":3126,"column":20,"offset":3132},6718,{"line":3126,"column":457,"offset":3129},{"type":26,"value":27},{"type":30,"tagName":31,"properties":3136,"children":3137,"position":3203},{},[3138,3146,3157,3164,3177,3184,3196],{"type":26,"value":3139,"position":3140},"A function called in ",{"start":3141,"end":3144},{"line":3142,"column":20,"offset":3143},216,6756,{"line":3142,"column":815,"offset":3145},6777,{"type":30,"tagName":44,"properties":3147,"children":3148,"position":3154},{},[3149],{"type":26,"value":1061,"position":3150},{"start":3151,"end":3152},{"line":3142,"column":815,"offset":3145},{"line":3142,"column":447,"offset":3153},6786,{"start":3155,"end":3156},{"line":3142,"column":815,"offset":3145},{"line":3142,"column":447,"offset":3153},{"type":26,"value":3158,"position":3159}," runs on every bar. A ",{"start":3160,"end":3161},{"line":3142,"column":447,"offset":3153},{"line":3142,"column":3162,"offset":3163},53,6808,{"type":30,"tagName":44,"properties":3165,"children":3166,"position":3174},{},[3167],{"type":26,"value":3168,"position":3169},"new",{"start":3170,"end":3171},{"line":3142,"column":3162,"offset":3163},{"line":3142,"column":3172,"offset":3173},58,6813,{"start":3175,"end":3176},{"line":3142,"column":3162,"offset":3163},{"line":3142,"column":3172,"offset":3173},{"type":26,"value":3178,"position":3179}," inside it (a\nclass, an array, a string built with ",{"start":3180,"end":3181},{"line":3142,"column":3172,"offset":3173},{"line":3182,"column":467,"offset":3183},217,6864,{"type":30,"tagName":44,"properties":3185,"children":3186,"position":3193},{},[3187],{"type":26,"value":3188,"position":3189},"+",{"start":3190,"end":3191},{"line":3182,"column":467,"offset":3183},{"line":3182,"column":84,"offset":3192},6867,{"start":3194,"end":3195},{"line":3182,"column":467,"offset":3183},{"line":3182,"column":84,"offset":3192},{"type":26,"value":3197,"position":3198},") allocates memory the module never\nfrees. Helpers on the per-bar path take and return numbers, or write into\nbuffers allocated at module scope.",{"start":3199,"end":3200},{"line":3182,"column":84,"offset":3192},{"line":3201,"column":3102,"offset":3202},219,7011,{"start":3204,"end":3205},{"line":3142,"column":20,"offset":3143},{"line":3201,"column":3102,"offset":3202},{"type":26,"value":27},{"type":30,"tagName":349,"properties":3208,"children":3210,"position":3219},{"id":3209},"types-everywhere",[3211],{"type":26,"value":3212,"position":3213},"Types everywhere",{"start":3214,"end":3217},{"line":3215,"column":38,"offset":3216},221,7017,{"line":3215,"column":339,"offset":3218},7033,{"start":3220,"end":3222},{"line":3215,"column":20,"offset":3221},7013,{"line":3215,"column":339,"offset":3218},{"type":26,"value":27},{"type":30,"tagName":31,"properties":3225,"children":3226,"position":3271},{},[3227,3236,3247,3253,3265],{"type":26,"value":3228,"position":3229},"Parameter types and the return type are required; there is no inference\nfrom usage. A function meant for both a price and a count is written for\n",{"start":3230,"end":3233},{"line":3231,"column":20,"offset":3232},223,7035,{"line":3234,"column":20,"offset":3235},225,7180,{"type":30,"tagName":44,"properties":3237,"children":3238,"position":3244},{},[3239],{"type":26,"value":740,"position":3240},{"start":3241,"end":3242},{"line":3234,"column":20,"offset":3235},{"line":3234,"column":744,"offset":3243},7185,{"start":3245,"end":3246},{"line":3234,"column":20,"offset":3235},{"line":3234,"column":744,"offset":3243},{"type":26,"value":3248,"position":3249},", and the caller casts (",{"start":3250,"end":3251},{"line":3234,"column":744,"offset":3243},{"line":3234,"column":1036,"offset":3252},7209,{"type":30,"tagName":44,"properties":3254,"children":3255,"position":3262},{},[3256],{"type":26,"value":3257,"position":3258},"f64(count)",{"start":3259,"end":3260},{"line":3234,"column":1036,"offset":3252},{"line":3234,"column":2807,"offset":3261},7221,{"start":3263,"end":3264},{"line":3234,"column":1036,"offset":3252},{"line":3234,"column":2807,"offset":3261},{"type":26,"value":3266,"position":3267},").",{"start":3268,"end":3269},{"line":3234,"column":2807,"offset":3261},{"line":3234,"column":41,"offset":3270},7223,{"start":3272,"end":3273},{"line":3231,"column":20,"offset":3232},{"line":3234,"column":41,"offset":3270},{"type":26,"value":27},{"type":30,"tagName":349,"properties":3276,"children":3278,"position":3288},{"id":3277},"phase-rules-still-apply-inside-functions",[3279],{"type":26,"value":3280,"position":3281},"Phase rules still apply inside functions",{"start":3282,"end":3285},{"line":3283,"column":38,"offset":3284},227,7229,{"line":3283,"column":3286,"offset":3287},45,7269,{"start":3289,"end":3291},{"line":3283,"column":20,"offset":3290},7225,{"line":3283,"column":3286,"offset":3287},{"type":26,"value":27},{"type":30,"tagName":31,"properties":3294,"children":3295,"position":3423},{},[3296,3310,3316,3328,3333,3346,3352,3363,3369,3381,3387,3399,3404,3416],{"type":30,"tagName":44,"properties":3297,"children":3298,"position":3307},{},[3299],{"type":26,"value":3300,"position":3301},"p_\u003Cparam>()",{"start":3302,"end":3305},{"line":3303,"column":20,"offset":3304},229,7271,{"line":3303,"column":129,"offset":3306},7284,{"start":3308,"end":3309},{"line":3303,"column":20,"offset":3304},{"line":3303,"column":129,"offset":3306},{"type":26,"value":3311,"position":3312}," is legal in ",{"start":3313,"end":3314},{"line":3303,"column":129,"offset":3306},{"line":3303,"column":2886,"offset":3315},7297,{"type":30,"tagName":44,"properties":3317,"children":3318,"position":3325},{},[3319],{"type":26,"value":3320,"position":3321},"init()",{"start":3322,"end":3323},{"line":3303,"column":2886,"offset":3315},{"line":3303,"column":3102,"offset":3324},7305,{"start":3326,"end":3327},{"line":3303,"column":2886,"offset":3315},{"line":3303,"column":3102,"offset":3324},{"type":26,"value":624,"position":3329},{"start":3330,"end":3331},{"line":3303,"column":3102,"offset":3324},{"line":3303,"column":457,"offset":3332},7307,{"type":30,"tagName":44,"properties":3334,"children":3335,"position":3343},{},[3336],{"type":26,"value":3337,"position":3338},"in_\u003Cinput>()",{"start":3339,"end":3340},{"line":3303,"column":457,"offset":3332},{"line":3303,"column":3341,"offset":3342},51,7321,{"start":3344,"end":3345},{"line":3303,"column":457,"offset":3332},{"line":3303,"column":3341,"offset":3342},{"type":26,"value":3347,"position":3348}," in ",{"start":3349,"end":3350},{"line":3303,"column":3341,"offset":3342},{"line":3303,"column":607,"offset":3351},7325,{"type":30,"tagName":44,"properties":3353,"children":3354,"position":3360},{},[3355],{"type":26,"value":1061,"position":3356},{"start":3357,"end":3358},{"line":3303,"column":607,"offset":3351},{"line":3303,"column":628,"offset":3359},7334,{"start":3361,"end":3362},{"line":3303,"column":607,"offset":3351},{"line":3303,"column":628,"offset":3359},{"type":26,"value":644,"position":3364},{"start":3365,"end":3366},{"line":3303,"column":628,"offset":3359},{"line":3367,"column":20,"offset":3368},230,7336,{"type":30,"tagName":44,"properties":3370,"children":3371,"position":3378},{},[3372],{"type":26,"value":3373,"position":3374},"out_\u003Coutput>()",{"start":3375,"end":3376},{"line":3367,"column":20,"offset":3368},{"line":3367,"column":221,"offset":3377},7352,{"start":3379,"end":3380},{"line":3367,"column":20,"offset":3368},{"line":3367,"column":221,"offset":3377},{"type":26,"value":3382,"position":3383}," and ",{"start":3384,"end":3385},{"line":3367,"column":221,"offset":3377},{"line":3367,"column":815,"offset":3386},7357,{"type":30,"tagName":44,"properties":3388,"children":3389,"position":3396},{},[3390],{"type":26,"value":3391,"position":3392},"emitRow()",{"start":3393,"end":3394},{"line":3367,"column":815,"offset":3386},{"line":3367,"column":426,"offset":3395},7368,{"start":3397,"end":3398},{"line":3367,"column":815,"offset":3386},{"line":3367,"column":426,"offset":3395},{"type":26,"value":3347,"position":3400},{"start":3401,"end":3402},{"line":3367,"column":426,"offset":3395},{"line":3367,"column":457,"offset":3403},7372,{"type":30,"tagName":44,"properties":3405,"children":3406,"position":3413},{},[3407],{"type":26,"value":3408,"position":3409},"finalize()",{"start":3410,"end":3411},{"line":3367,"column":457,"offset":3403},{"line":3367,"column":2964,"offset":3412},7384,{"start":3414,"end":3415},{"line":3367,"column":457,"offset":3403},{"line":3367,"column":2964,"offset":3412},{"type":26,"value":3417,"position":3418},"; a helper inherits the\nphase of its caller, so keep helpers pure and let the four exports read and\nwrite.",{"start":3419,"end":3420},{"line":3367,"column":2964,"offset":3412},{"line":3421,"column":2680,"offset":3422},232,7490,{"start":3424,"end":3425},{"line":3303,"column":20,"offset":3304},{"line":3421,"column":2680,"offset":3422},{"type":26,"value":27},{"type":30,"tagName":91,"properties":3428,"children":3430,"position":3439},{"id":3429},"best-practices",[3431],{"type":26,"value":3432,"position":3433},"Best practices",{"start":3434,"end":3437},{"line":3435,"column":99,"offset":3436},234,7495,{"line":3435,"column":73,"offset":3438},7509,{"start":3440,"end":3442},{"line":3435,"column":20,"offset":3441},7492,{"line":3435,"column":73,"offset":3438},{"type":26,"value":27},{"type":30,"tagName":3445,"properties":3446,"children":3447,"position":3878},"ul",{},[3448,3449,3568,3569,3670,3671,3701,3702,3877],{"type":26,"value":27},{"type":30,"tagName":3450,"properties":3451,"children":3452,"position":3564},"li",{},[3453,3469,3475,3488,3494,3505,3510,3522,3528,3540,3547,3559],{"type":30,"tagName":587,"properties":3454,"children":3455,"position":3464},{},[3456],{"type":26,"value":3457,"position":3458},"Keep functions focused.",{"start":3459,"end":3462},{"line":3460,"column":38,"offset":3461},236,7515,{"line":3460,"column":9,"offset":3463},7538,{"start":3465,"end":3467},{"line":3460,"column":130,"offset":3466},7513,{"line":3460,"column":1036,"offset":3468},7540,{"type":26,"value":3470,"position":3471}," One thing per function: ",{"start":3472,"end":3473},{"line":3460,"column":1036,"offset":3468},{"line":3460,"column":607,"offset":3474},7565,{"type":30,"tagName":44,"properties":3476,"children":3477,"position":3485},{},[3478],{"type":26,"value":3479,"position":3480},"rsiZone(rsiValue: f64): f64",{"start":3481,"end":3482},{"line":3460,"column":607,"offset":3474},{"line":3483,"column":147,"offset":3484},237,7596,{"start":3486,"end":3487},{"line":3460,"column":607,"offset":3474},{"line":3483,"column":147,"offset":3484},{"type":26,"value":3489,"position":3490}," returns ",{"start":3491,"end":3492},{"line":3483,"column":147,"offset":3484},{"line":3483,"column":815,"offset":3493},7605,{"type":30,"tagName":44,"properties":3495,"children":3496,"position":3502},{},[3497],{"type":26,"value":373,"position":3498},{"start":3499,"end":3500},{"line":3483,"column":815,"offset":3493},{"line":3483,"column":1018,"offset":3501},7608,{"start":3503,"end":3504},{"line":3483,"column":815,"offset":3493},{"line":3483,"column":1018,"offset":3501},{"type":26,"value":624,"position":3506},{"start":3507,"end":3508},{"line":3483,"column":1018,"offset":3501},{"line":3483,"column":2886,"offset":3509},7610,{"type":30,"tagName":44,"properties":3511,"children":3512,"position":3519},{},[3513],{"type":26,"value":3514,"position":3515},"1",{"start":3516,"end":3517},{"line":3483,"column":2886,"offset":3509},{"line":3483,"column":1036,"offset":3518},7613,{"start":3520,"end":3521},{"line":3483,"column":2886,"offset":3509},{"line":3483,"column":1036,"offset":3518},{"type":26,"value":3523,"position":3524},", or ",{"start":3525,"end":3526},{"line":3483,"column":1036,"offset":3518},{"line":3483,"column":3102,"offset":3527},7618,{"type":30,"tagName":44,"properties":3529,"children":3530,"position":3537},{},[3531],{"type":26,"value":3532,"position":3533},"2",{"start":3534,"end":3535},{"line":3483,"column":3102,"offset":3527},{"line":3483,"column":467,"offset":3536},7621,{"start":3538,"end":3539},{"line":3483,"column":3102,"offset":3527},{"line":3483,"column":467,"offset":3536},{"type":26,"value":3541,"position":3542},"; the output write stays in\n",{"start":3543,"end":3544},{"line":3483,"column":467,"offset":3536},{"line":3545,"column":20,"offset":3546},238,7649,{"type":30,"tagName":44,"properties":3548,"children":3549,"position":3556},{},[3550],{"type":26,"value":3408,"position":3551},{"start":3552,"end":3554},{"line":3545,"column":130,"offset":3553},7651,{"line":3545,"column":237,"offset":3555},7663,{"start":3557,"end":3558},{"line":3545,"column":130,"offset":3553},{"line":3545,"column":237,"offset":3555},{"type":26,"value":463,"position":3560},{"start":3561,"end":3562},{"line":3545,"column":237,"offset":3555},{"line":3545,"column":180,"offset":3563},7664,{"start":3565,"end":3567},{"line":3460,"column":20,"offset":3566},7511,{"line":3545,"column":180,"offset":3563},{"type":26,"value":27},{"type":30,"tagName":3450,"properties":3570,"children":3571,"position":3666},{},[3572,3588,3594,3606,3612,3625,3631,3643,3649,3661],{"type":30,"tagName":587,"properties":3573,"children":3574,"position":3583},{},[3575],{"type":26,"value":3576,"position":3577},"Use descriptive names.",{"start":3578,"end":3581},{"line":3579,"column":38,"offset":3580},239,7669,{"line":3579,"column":2886,"offset":3582},7691,{"start":3584,"end":3586},{"line":3579,"column":130,"offset":3585},7667,{"line":3579,"column":2895,"offset":3587},7693,{"type":26,"value":3589,"position":3590}," ",{"start":3591,"end":3592},{"line":3579,"column":2895,"offset":3587},{"line":3579,"column":1036,"offset":3593},7694,{"type":30,"tagName":44,"properties":3595,"children":3596,"position":3603},{},[3597],{"type":26,"value":3598,"position":3599},"isOverbought(rsiValue)",{"start":3600,"end":3601},{"line":3579,"column":1036,"offset":3593},{"line":3579,"column":52,"offset":3602},7718,{"start":3604,"end":3605},{"line":3579,"column":1036,"offset":3593},{"line":3579,"column":52,"offset":3602},{"type":26,"value":644,"position":3607},{"start":3608,"end":3609},{"line":3579,"column":52,"offset":3602},{"line":3610,"column":20,"offset":3611},240,7720,{"type":30,"tagName":44,"properties":3613,"children":3614,"position":3622},{},[3615],{"type":26,"value":3616,"position":3617},"percentChange(oldValue, newValue)",{"start":3618,"end":3620},{"line":3610,"column":130,"offset":3619},7722,{"line":3610,"column":467,"offset":3621},7757,{"start":3623,"end":3624},{"line":3610,"column":130,"offset":3619},{"line":3610,"column":467,"offset":3621},{"type":26,"value":3626,"position":3627},"; not ",{"start":3628,"end":3629},{"line":3610,"column":467,"offset":3621},{"line":3610,"column":41,"offset":3630},7763,{"type":30,"tagName":44,"properties":3632,"children":3633,"position":3640},{},[3634],{"type":26,"value":3635,"position":3636},"calc(a, b)",{"start":3637,"end":3638},{"line":3610,"column":41,"offset":3630},{"line":3610,"column":608,"offset":3639},7775,{"start":3641,"end":3642},{"line":3610,"column":41,"offset":3630},{"line":3610,"column":608,"offset":3639},{"type":26,"value":3644,"position":3645}," or ",{"start":3646,"end":3647},{"line":3610,"column":608,"offset":3639},{"line":3610,"column":734,"offset":3648},7779,{"type":30,"tagName":44,"properties":3650,"children":3651,"position":3658},{},[3652],{"type":26,"value":3653,"position":3654},"check(x)",{"start":3655,"end":3656},{"line":3610,"column":734,"offset":3648},{"line":3610,"column":314,"offset":3657},7789,{"start":3659,"end":3660},{"line":3610,"column":734,"offset":3648},{"line":3610,"column":314,"offset":3657},{"type":26,"value":463,"position":3662},{"start":3663,"end":3664},{"line":3610,"column":314,"offset":3657},{"line":3610,"column":638,"offset":3665},7790,{"start":3667,"end":3669},{"line":3579,"column":20,"offset":3668},7665,{"line":3610,"column":638,"offset":3665},{"type":26,"value":27},{"type":30,"tagName":3450,"properties":3672,"children":3673,"position":3697},{},[3674,3690],{"type":30,"tagName":587,"properties":3675,"children":3676,"position":3685},{},[3677],{"type":26,"value":3678,"position":3679},"Prefer parameters to module state for pure math.",{"start":3680,"end":3683},{"line":3681,"column":38,"offset":3682},241,7795,{"line":3681,"column":3162,"offset":3684},7843,{"start":3686,"end":3688},{"line":3681,"column":130,"offset":3687},7793,{"line":3681,"column":607,"offset":3689},7845,{"type":26,"value":3691,"position":3692}," A function that\ntakes everything it needs is reusable across Indicators by pasting; a\nfunction that reaches into module state is tied to this file. Reserve\nmodule-state reads for predicates you pass as values.",{"start":3693,"end":3694},{"line":3681,"column":607,"offset":3689},{"line":3695,"column":608,"offset":3696},244,8061,{"start":3698,"end":3700},{"line":3681,"column":20,"offset":3699},7791,{"line":3695,"column":608,"offset":3696},{"type":26,"value":27},{"type":30,"tagName":3450,"properties":3703,"children":3704,"position":3873},{},[3705,3721,3728,3741,3747,3759,3764,3776,3781,3793,3799,3812,3819,3832,3837,3849,3854,3866],{"type":30,"tagName":587,"properties":3706,"children":3707,"position":3716},{},[3708],{"type":26,"value":3709,"position":3710},"Turn a family of helpers into a class",{"start":3711,"end":3714},{"line":3712,"column":38,"offset":3713},245,8066,{"line":3712,"column":2807,"offset":3715},8103,{"start":3717,"end":3719},{"line":3712,"column":130,"offset":3718},8064,{"line":3712,"column":41,"offset":3720},8105,{"type":26,"value":3722,"position":3723}," when they share state: a\n",{"start":3724,"end":3725},{"line":3712,"column":41,"offset":3720},{"line":3726,"column":20,"offset":3727},246,8131,{"type":30,"tagName":44,"properties":3729,"children":3730,"position":3738},{},[3731],{"type":26,"value":3732,"position":3733},"Window",{"start":3734,"end":3736},{"line":3726,"column":130,"offset":3735},8133,{"line":3726,"column":138,"offset":3737},8141,{"start":3739,"end":3740},{"line":3726,"column":130,"offset":3735},{"line":3726,"column":138,"offset":3737},{"type":26,"value":3742,"position":3743}," with ",{"start":3744,"end":3745},{"line":3726,"column":138,"offset":3737},{"line":3726,"column":221,"offset":3746},8147,{"type":30,"tagName":44,"properties":3748,"children":3749,"position":3756},{},[3750],{"type":26,"value":3751,"position":3752},"sum()",{"start":3753,"end":3754},{"line":3726,"column":221,"offset":3746},{"line":3726,"column":150,"offset":3755},8154,{"start":3757,"end":3758},{"line":3726,"column":221,"offset":3746},{"line":3726,"column":150,"offset":3755},{"type":26,"value":624,"position":3760},{"start":3761,"end":3762},{"line":3726,"column":150,"offset":3755},{"line":3726,"column":155,"offset":3763},8156,{"type":30,"tagName":44,"properties":3765,"children":3766,"position":3773},{},[3767],{"type":26,"value":3768,"position":3769},"avg()",{"start":3770,"end":3771},{"line":3726,"column":155,"offset":3763},{"line":3726,"column":426,"offset":3772},8163,{"start":3774,"end":3775},{"line":3726,"column":155,"offset":3763},{"line":3726,"column":426,"offset":3772},{"type":26,"value":662,"position":3777},{"start":3778,"end":3779},{"line":3726,"column":426,"offset":3772},{"line":3726,"column":685,"offset":3780},8169,{"type":30,"tagName":44,"properties":3782,"children":3783,"position":3790},{},[3784],{"type":26,"value":3785,"position":3786},"median()",{"start":3787,"end":3788},{"line":3726,"column":685,"offset":3780},{"line":3726,"column":2964,"offset":3789},8179,{"start":3791,"end":3792},{"line":3726,"column":685,"offset":3780},{"line":3726,"column":2964,"offset":3789},{"type":26,"value":3794,"position":3795}," (",{"start":3796,"end":3797},{"line":3726,"column":2964,"offset":3789},{"line":3726,"column":3341,"offset":3798},8181,{"type":30,"tagName":44,"properties":3800,"children":3801,"position":3809},{},[3802],{"type":26,"value":3803,"position":3804},"collections.md",{"start":3805,"end":3806},{"line":3726,"column":3341,"offset":3798},{"line":3726,"column":3807,"offset":3808},67,8197,{"start":3810,"end":3811},{"line":3726,"column":3341,"offset":3798},{"line":3726,"column":3807,"offset":3808},{"type":26,"value":3813,"position":3814},"), a\n",{"start":3815,"end":3816},{"line":3726,"column":3807,"offset":3808},{"line":3817,"column":20,"offset":3818},247,8202,{"type":30,"tagName":44,"properties":3820,"children":3821,"position":3829},{},[3822],{"type":26,"value":3823,"position":3824},"Macd",{"start":3825,"end":3827},{"line":3817,"column":130,"offset":3826},8204,{"line":3817,"column":298,"offset":3828},8210,{"start":3830,"end":3831},{"line":3817,"column":130,"offset":3826},{"line":3817,"column":298,"offset":3828},{"type":26,"value":3742,"position":3833},{"start":3834,"end":3835},{"line":3817,"column":298,"offset":3828},{"line":3817,"column":237,"offset":3836},8216,{"type":30,"tagName":44,"properties":3838,"children":3839,"position":3846},{},[3840],{"type":26,"value":3841,"position":3842},"update()",{"start":3843,"end":3844},{"line":3817,"column":237,"offset":3836},{"line":3817,"column":1018,"offset":3845},8226,{"start":3847,"end":3848},{"line":3817,"column":237,"offset":3836},{"line":3817,"column":1018,"offset":3845},{"type":26,"value":3794,"position":3850},{"start":3851,"end":3852},{"line":3817,"column":1018,"offset":3845},{"line":3817,"column":2886,"offset":3853},8228,{"type":30,"tagName":44,"properties":3855,"children":3856,"position":3863},{},[3857],{"type":26,"value":3858,"position":3859},"named-streams.md",{"start":3860,"end":3861},{"line":3817,"column":2886,"offset":3853},{"line":3817,"column":3286,"offset":3862},8246,{"start":3864,"end":3865},{"line":3817,"column":2886,"offset":3853},{"line":3817,"column":3286,"offset":3862},{"type":26,"value":3867,"position":3868},"). Helpers that share nothing\nstay functions.",{"start":3869,"end":3870},{"line":3817,"column":3286,"offset":3862},{"line":3871,"column":73,"offset":3872},248,8293,{"start":3874,"end":3876},{"line":3712,"column":20,"offset":3875},8062,{"line":3871,"column":73,"offset":3872},{"type":26,"value":27},{"start":3879,"end":3880},{"line":3460,"column":20,"offset":3566},{"line":3871,"column":73,"offset":3872},{"quirksMode":3882},false,{"start":3884,"end":3885},{"line":20,"column":20,"offset":21},{"line":3886,"column":20,"offset":3887},249,8294,1790157147023]