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