{
  "information": {
    "Title": "ejss_model_DigitalMicrometer Digital Display Micrometer Model Manual Syllabus 2024",
    "Author": [
      "Fu-Kwun Hwang",
      "lookang",
      "Wolfgang Christian"
    ],
    "AuthorLogo": [
      "./Micrometer/01authorfu-kwun.hwang.png",
      "./01authorlookang50x50.png",
      "./01authorwc_icon.png"
    ],
    "Password": "",
    "Keywords": "Micrometer ",
    "Abstract": "texture from\nhttps://pixabay.com/en/pattern-lines-texture-design-1314301/\n\n\nhttp://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=683.msg2451#msg2451\nhttp://weelookang.blogspot.sg/2010/06/ejs-open-source-micrometer-java-applet.html\nOriginal Source code by Fu-Kwun Hwang http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=567.msg2364#msg2364 Derived work by Wee Loo Kang under creative commons http://creativecommons.org/licenses/by/2.5/tw/deed.en\nhttp://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=683.0\nMicrometer Ejs open source creative commons license world best java applet \nMicrometers use the principle of a screw to amplify small distances that are too small to measure directly into large rotations of the screw that are big enough to read from a scale. The accuracy of a micrometer derives from the accuracy of the thread form that is at its heart. The basic operating principles of a micrometer are as follows:\nThe amount of rotation of an accurately made screw can be directly and precisely correlated to a certain amount of axial movement (and vice-versa), through the constant known as the screw's lead. A screw's lead is the distance it moves forward axially with one complete turn (360?. (In most threads [that is, in all single-start threads], lead and pitch refer to essentially the same concept.)\nWith an appropriate lead and major diameter of the screw, a given amount of axial movement will be amplified in the resulting circumferential movement.\nThe micrometer has most functional physical parts of a real micrometer.\nFrame (Orange)\nThe C-shaped body that holds the anvil and barrel in constant relation to each other. It is thick because it needs to minimize expansion, and contraction, which would distort the measurement. The frame is heavy and consequently has a high thermal mass, to prevent substantial heating up by the holding hand/fingers. has a text 0.01 mm for smallest division of instrument has a text 2 rounds = 100 = 1.00 mm to allow association to actual micrometer\nAnvil (Gray)\nThe shiny part that the spindle moves toward, and that the sample rests against.\nSleeve / barrel / stock (Yellow)\nThe stationary round part with the linear scale on it. Sometimes vernier markings.\nLock nut / lock-ring / thimble lock (Blue)\nThe knurled part (or lever) that one can tighten to hold the spindle stationary, such as when momentarily holding a measurement.\nScrew\n(not seen) The heart of the micrometer It is inside the barrel.\nSpindle (Dark Green)\nThe shiny cylindrical part that the thimble causes to move toward the anvil.\nThimble (Green)\nThe part that one's thumb turns. Graduated markings.\nRatchet (Teal)\n(not shown ) Device on end of handle that limits applied pressure by slipping at a calibrated torque.\nThis applet has an object (Black)\nwith slider on left top to control the y-motion of the object into the anvil and spindle (jaws), the graphics also allows drag action.\nwith slider on left bottom to control the x-size of the object into the anvil and spindle (jaws).\nOn the left bottom slider is the zero error control to allow of exploring with if the micrometer has either +0.15 mm (max) or -0.15mm (min) zero error. The are check boxes:\nhint: guide lines and arrows to indicate the region of interest plus the accompanying rationale for the answer.\nanswer: shows the measurement d = Huh mm\nlock: allows simulating of the lock function in real micrometer which disable changes to the position of the spindle then by the measurement is unchangeable.\nOn the bottom there is a green slider to control the position of the spindle, drag on any part of the view also drags the spindle.\nThere is 2 buttons left and right fine control to allow for single incremental change of the measurement, to allow learners to sense the rotation simulation of the spindle with the many lines to simulate the coarse pattern to increase friction between fingers and on the thimble and ratchet.\nThe reset button restores learning environment to default setting.",
    "Copyright": "CC-BY-SA-NC",
    "Level": "secondary",
    "Language": "english",
    "Logo": [
      "./Micrometer/Screenshot 2024-01-22 at 5.25.10 PM.png"
    ],
    "RunAlways": "true",
    "ModelTab": "",
    "ModelTabTitle": "",
    "ModelName": "",
    "FixedNavigationBar": "false",
    "CSSFile": "./font/ttf_fonts.css",
    "DetectedFiles": [
      "./01authorlookang50x50.png",
      "./01authorwc_icon.png",
      "./Micrometer/01authorfu-kwun.hwang.png",
      "./Micrometer/Screenshot 2024-01-22 at 5.25.10 PM.png",
      "./font/ttf_fonts.css"
    ],
    "AuxiliaryFiles": [
      "./Micrometer/",
      "./assessment.json",
      "./font/"
    ],
    "HTMLHead": "<script async=\"true\" src=\"https://www.googletagmanager.com/gtag/js?id=UA-3326007-19\"></script>\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n  gtag('config', 'UA-3326007-19');\n</script>\n<script data-ad-client=\"ca-pub-0121577198857509\" async=\"true\" src=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>",
    "SaveInXMLFormat": "false",
    "IncludeSource": "true",
    "IncludeLibrary": "true",
    "UglifyJS": "false",
    "PreviewFullModel": "false",
    "UseInterpreter": "true",
    "UseDeltaForODE": "false"
  },
  "description": {
    "pages": [
      {
        "Name": "About",
        "Active": "true",
        "Internal": "false",
        "Type": "DESCRIPTION_EDITOR",
        "Locale": "_default_",
        "Title": "About",
        "External": "false",
        "Code": "<html>\n<head></head>\n<body>\n<p> </p><h2> <a href=\"https://www.seab.gov.sg/content/syllabus/olevel/2015Syllabus/5059_2015.pdf\">Topics</a> </h2><p>    Measurement of length and time<br>    </p><h2>      Description    </h2><p>    Play with the Micrometer Model. Test what you've learned by trying the     input field.<br><br>Micrometers use the principle of a screw to amplify     small distances that are too small to measure directly into large     rotations of the screw that are big enough to read from a scale. The     accuracy of a micrometer derives from the accuracy of the thread form that     is at its heart. The basic operating principles of a micrometer are as     follows:<br><br>The amount of rotation of an accurately made screw can be     directly and precisely correlated to a certain amount of axial movement     (and vice-versa), through the constant known as the screw's lead. A     screw's lead is the distance it moves forward axially with one complete     turn (360\u00b0). (In most threads [that is, in all single-start threads], lead     and pitch refer to essentially the same concept.)<br><br>With an     appropriate lead and major diameter of the screw, a given amount of axial     movement will be amplified in the resulting circumferential movement.<br><br>The     micrometer has most functional physical parts of a real micrometer.<br><br>Frame     (Orange)<br><br>The C-shaped body that holds the anvil and barrel in     constant relation to each other. It is thick because it needs to minimize     expansion, and contraction, which would distort the measurement. The frame     is heavy and consequently has a high thermal mass, to prevent substantial     heating up by the holding hand/fingers. has a text 0.01 mm for smallest     division of instrument has a text 2 rounds = 100 = 1.00 mm to allow     association to actual micrometer<br><br>Anvil (Gray)<br><br>The shiny part     that the spindle moves toward, and that the sample rests against.<br><br>Sleeve     / barrel / stock (Yellow)<br><br>The stationary round part with the linear     scale on it. Sometimes vernier markings.<br><br>Lock nut / lock-ring /     thimble lock (Blue)<br><br>The knurled part (or lever) that one can     tighten to hold the spindle stationary, such as when momentarily holding a     measurement.<br><br>Screw<br><br>(not seen) The heart of the micrometer It     is inside the barrel.<br><br>Spindle (Dark Green)<br><br>The shiny     cylindrical part that the thimble causes to move toward the anvil.<br><br>Thimble     (Green)<br><br>The part that one's thumb turns. Graduated markings.<br><br>Ratchet     (Teal)<br><br>(not shown ) Device on end of handle that limits applied     pressure by slipping at a calibrated torque.<br><br>This applet has an     object (Black)<br><br>with slider on left top to control the y-motion of     the object into the anvil and spindle (jaws), the graphics also allows     drag action.<br><br>with slider on left bottom to control the x-size of     the object into the anvil and spindle (jaws).<br><br>On the left bottom     slider is the zero error control to allow of exploring with if the     micrometer has either +0.15 mm (max) or -0.15mm (min) zero error. The are     check boxes:<br><br>hint: guide lines and arrows to indicate the region of     interest plus the accompanying rationale for the answer.<br><br>answer:     shows the measurement d = ??? mm<br><br>lock: allows simulating of the     lock function in real micrometer which disable changes to the position of     the spindle then by the measurement is unchangeable.<br><br>On the bottom     there is a green slider to control the position of the spindle, drag on     any part of the view also drags the spindle.<br><br>There is 2 buttons     left and right fine control to allow for single incremental change of the     measurement, to allow learners to sense the rotation simulation of the     spindle with the many lines to simulate the coarse pattern to increase     friction between fingers and on the thimble and ratchet.<br><br>The reset     button restores learning environment to default setting<br><br>    </p><h2>      Research    </h2><p> <a href=\"http://arxiv.org/abs/1408.3803\">arXiv:1408.3803</a> [<a href=\"http://arxiv.org/pdf/1408.3803\">pdf</a>]<br>Vernier     caliper and micrometer computer models using Easy Java Simulation and its     pedagogical design feature-ideas to augment learning with real instruments<br><a href=\"http://arxiv.org/find/physics/1/au:+Wee_L/0/1/0/all/0/1\">Loo     Kang Wee</a>, <a href=\"http://arxiv.org/find/physics/1/au:+Ning_H/0/1/0/all/0/1\">Hwee     Tiang Ning</a><br>Comments: 8 pages, 8 figures, Physics Education journal<br>Subjects:     Physics Education (physics.ed-ph); Instrumentation and Detectors     (physics.ins-det)<br><a href=\"https://youtu.be/jHoA5M-_1R4\">https://youtu.be/jHoA5M-_1R4</a><br></p><div class=\"se-component se-video-container __se__float-none\" contenteditable=\"false\" style=\"width: 100%;\"><figure style=\"width: 100%; height: 56.25%; padding-bottom: 56.25%; margin: 0px;\"><iframe src=\"https://www.youtube.com/embed/jHoA5M-_1R4\" data-percentage=\"100%,56.25%\" data-size=\"100%,56.25%\" data-align=\"none\" data-file-name=\"jHoA5M-_1R4\" data-file-size=\"0\" data-origin=\"100%,56.25%\" style=\"width: 100%; height: 100%; pointer-events: auto;\" data-index=\"0\"></iframe></figure></div><p><br>    </p><div> <h2>        Video      </h2> <div> <a href=\"https://youtu.be/YAmn-xksu2s\">https://youtu.be/YAmn-xksu2s</a> </div> </div><p> </p><div class=\"se-component se-video-container __se__float-none\" contenteditable=\"false\" style=\"width: 100%;\"><figure style=\"width: 100%; height: 56.25%; padding-bottom: 56.25%; margin: 0px;\"><iframe src=\"https://www.youtube.com/embed/YAmn-xksu2s\" data-percentage=\"100%,56.25%\" data-size=\"100%,56.25%\" data-align=\"none\" data-file-name=\"YAmn-xksu2s\" data-file-size=\"0\" data-origin=\"100%,56.25%\" style=\"width: 100%; height: 100%; pointer-events: auto;\" data-index=\"1\">    </iframe></figure></div><p> <br>    <a href=\"https://youtu.be/I-RZxhyZVio\">https://youtu.be/I-RZxhyZVio </a></p><div class=\"se-component se-video-container __se__float-none\" contenteditable=\"false\" style=\"width: 100%;\"><figure style=\"width: 100%; height: 56.25%; padding-bottom: 56.25%; margin: 0px;\"><iframe src=\"https://www.youtube.com/embed/I-RZxhyZVio\" data-percentage=\"100%,56.25%\" data-size=\"100%,56.25%\" data-align=\"none\" data-file-name=\"I-RZxhyZVio\" data-file-size=\"0\" data-origin=\"100%,56.25%\" style=\"width: 100%; height: 100%; pointer-events: auto;\" data-index=\"2\"></iframe></figure></div><p> </p><h2>      Sample Learning Goals    </h2><p>    (g) describe how to measure a variety of lengths with appropriate accuracy     by means of tapes, rules, micrometers and calipers, using a vernier scale     as necessary.<br><br>    </p><h2>      Version:    </h2><p> <br>    <br>        </p><ol><li> <a href=\"http://weelookang.blogspot.sg/2015/07/ejss-micrometer-model.html?m=1\" target=\"_blank\">http://weelookang.blogspot.sg/2015/07/ejss-micrometer-model.html?m=1</a> </li><li> <a href=\"http://weelookang.blogspot.sg/2010/06/ejs-open-source-micrometer-java-applet.html\">http://weelookang.blogspot.sg/2010/06/ejs-open-source-micrometer-java-applet.html&nbsp;</a> </li><li> <a href=\"http://iwant2study.org/lookangejss/01_measurement/ejs/ejs_model_Micrometer02.jar\">http://iwant2study.org/lookangejss/01_measurement/ejs/ejs_model_Micrometer02.jar</a> </li><li> <a href=\"http://weelookang.blogspot.sg/2010/06/ejs-open-source-micrometer-java-applet.html\">http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=567.msg2364#msg2364</a> </li><li> <a href=\"http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=683.msg2451#msg2451\" target=\"_blank\">http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=683.msg2451#msg2451</a> </li></ol><p> </p>\n</body>\n</html>"
      }
    ]
  },
  "model": {
    "variables": {
      "pages": [
        {
          "Name": "coordinate",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "clicked",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "inputdropmenu",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "font",
              "Value": "\"normal normal \"+Math.max(16,Math.min(24,Math.max(document.documentElement.clientWidth,window.innerWidth||0)*2.2/100))+\"px sans-serif\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "mode",
              "Value": "\"hint off\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "mode",
              "Domain": "public"
            },
            {
              "Name": "range",
              "Value": "200",
              "Type": "double",
              "Dimension": "",
              "Comment": "range",
              "Domain": "public"
            },
            {
              "Name": "xmin",
              "Value": "-range/2*2.3",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xmax",
              "Value": "range/2*1.7",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ymin",
              "Value": "-range/2*1.7",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ymax",
              "Value": "range/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "t",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dt",
              "Value": "0.05",
              "Type": "double",
              "Dimension": "",
              "Comment": "time step",
              "Domain": "public"
            },
            {
              "Name": "size",
              "Value": "range/20",
              "Type": "double",
              "Dimension": "",
              "Comment": "particle size",
              "Domain": "public"
            },
            {
              "Name": "size2",
              "Value": "size/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "stroke",
              "Value": "2.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "zero",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "pi",
              "Value": "Math.PI",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "show",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "show2",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "mx",
              "Value": "25",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "my",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "mxs",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "mys",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "zoom",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "autoscale",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "question",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "isFirstTry",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "isQuestionAnswered",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "learningMode",
              "Value": "\"Explore\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "Explore, Practice, or Challenge",
              "Domain": "public"
            },
            {
              "Name": "hintStage",
              "Value": "1",
              "Type": "int",
              "Dimension": "",
              "Comment": "0 none, 1 datum line, 2 sleeve, 3 thimble, 4 correction",
              "Domain": "public"
            },
            {
              "Name": "hasAttempted",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "guards challenge hints and worked calculation",
              "Domain": "public"
            },
            {
              "Name": "lastAssessmentSignature",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "guarded reset when measurement inputs change",
              "Domain": "public"
            },
            {
              "Name": "observedReading",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "sleeve plus thimble before zero-error correction",
              "Domain": "public"
            },
            {
              "Name": "sleeveReading",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "last visible 0.50 mm sleeve graduation",
              "Domain": "public"
            },
            {
              "Name": "thimbleReading",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "aligned thimble division in millimetres",
              "Domain": "public"
            },
            {
              "Name": "correctedReading",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "observed reading minus zero error",
              "Domain": "public"
            },
            {
              "Name": "guidanceText",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "mode-aware scaffold shown in the view",
              "Domain": "public"
            },
            {
              "Name": "workedCalculation",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "revealed only after an attempt",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "basic",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "y",
              "Value": "-size",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "n",
              "Value": "35",
              "Type": "int",
              "Dimension": "",
              "Comment": "n is the number of markers 34 to draw till the end of stage ",
              "Domain": "public"
            },
            {
              "Name": "n2",
              "Value": "n/5",
              "Type": "int",
              "Dimension": "",
              "Comment": "n2 is counter of the number 0 5 10 15 for drawing ",
              "Domain": "public"
            },
            {
              "Name": "xv",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "yv",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xi",
              "Value": "size*1.5",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dx",
              "Value": "xmax/n",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "tx",
              "Value": "0",
              "Type": "double",
              "Dimension": "[n2]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "txt",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "[n2]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "n3",
              "Value": "21",
              "Type": "int",
              "Dimension": "",
              "Comment": "21",
              "Domain": "public"
            },
            {
              "Name": "hy",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n3]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "hdx",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n3]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "hdy",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n3]",
              "Comment": "attempt to add y component to make fake 3D view",
              "Domain": "public"
            },
            {
              "Name": "hdxthread",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n3]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "hythread",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n3]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "hythreadrachet",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n3]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "greendial",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "np",
              "Value": "6",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "h",
              "Value": "3*size",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "h2",
              "Value": "h*1.2",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xp",
              "Value": "[3*h,1.5*h,0,0,1.5*h,3*h]",
              "Type": "double",
              "Dimension": "[np]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "yp",
              "Value": "[h2,h2,h,-h,-h2,-h2]",
              "Type": "double",
              "Dimension": "[np]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xpolygon",
              "Value": "[[4*h,h2],[0.5*h,h2],[0,h],[0,-h],[0.5*h,-h2],[4*h,-h2]]",
              "Type": "double",
              "Dimension": "[6][2]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xpolygondrag",
              "Value": "[[4*h+xi,h2],[0.5*h+xi,h2],[0+xi,h],[0+xi,-h],[0.5*h+xi,-h2],[4*h+xi,-h2]]",
              "Type": "double",
              "Dimension": "[6][2]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "test",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "alerttext",
              "Value": "\"drag the green (Spindle or Ratchet) \\n to measure length\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "firsttime",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "firsttime2",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "rachet",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "npr",
              "Value": "6",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xpr",
              "Value": "3*h",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ypr",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "direction",
              "Value": "1",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "step0",
              "Value": "direction*dx/50",
              "Type": "double",
              "Dimension": "",
              "Comment": "first micrometer step 0.11767",
              "Domain": "public"
            },
            {
              "Name": "step",
              "Value": "step0",
              "Type": "double",
              "Dimension": "",
              "Comment": "current micrometer step",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "view",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "objectpositionx",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "objectpositiony",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "w",
              "Value": "0.9*ymax",
              "Type": "double",
              "Dimension": "",
              "Comment": "w width to be drawn",
              "Domain": "public"
            },
            {
              "Name": "L0",
              "Value": "w*1.81",
              "Type": "double",
              "Dimension": "",
              "Comment": "unknow",
              "Domain": "public"
            },
            {
              "Name": "w2",
              "Value": "Math.max(Math.random()*w,50)",
              "Type": "double",
              "Dimension": "",
              "Comment": "w2 is width of mircometer",
              "Domain": "public"
            },
            {
              "Name": "d",
              "Value": "108",
              "Type": "double",
              "Dimension": "",
              "Comment": "d is width of micrometer on the screen",
              "Domain": "public"
            },
            {
              "Name": "ds",
              "Value": "108",
              "Type": "double",
              "Dimension": "",
              "Comment": "d is width of micrometer on the screen",
              "Domain": "public"
            },
            {
              "Name": "Lmax",
              "Value": "L0-w2",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "L",
              "Value": "L0-d",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dmin",
              "Value": "w2",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "x1",
              "Value": "0.75*size",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xzero",
              "Value": "xi+d",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "id",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "iy",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dy",
              "Value": "2*h/(n3-1)",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ci",
              "Value": "-pi/4",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dc",
              "Value": "pi/2/(n3-1)",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "c",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "R",
              "Value": "h/Math.sin(-ci)",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "yt",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[5]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "txty",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "[5]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "tc",
              "Value": "1",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "error",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "text",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "l_msg",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "idv",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_msg_2",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "integerd",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "decimald",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "integerd1",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "decimald1",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "integerd2",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "for kim kia suggestion 8.5 + 0.34 = 8.84",
              "Domain": "public"
            },
            {
              "Name": "decimald2",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_integerd",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_decimald",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "showhint",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "lock",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "nolock",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "lock",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "check",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "showAnswerFlag",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "answer",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_answer",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_enterK1f",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "enterK1f",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "K1fcorrect",
              "Value": "\"Micrometer Model\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "K1fcorrectbackground",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "magnify",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "showmagnify",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xmagnify",
              "Value": "30",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ymagnify",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "factor",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "wmagnify",
              "Value": "160",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ratio",
              "Value": "wmagnify/factor",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "lookang",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "text",
              "Value": "\"drag the green slider (Spindle or Ratchet) to measure length\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "selected",
              "Value": "\"shm_with_xo=0,vo=2\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ddragme",
              "Value": "xi+d+1.5*h",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "bottomdragmesize",
              "Value": "-w*2+size+w2",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "iOSapp",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "Androidapp",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "anyapp",
              "Value": "iOSapp||Androidapp",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "isAndroid",
              "Value": "checkAndroid()",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "iOS",
              "Value": "/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "Android",
              "Value": "/Android|android/i.test(navigator.userAgent)",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "iPad",
              "Value": "/iPad/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "iPhone",
              "Value": "/iPhone|iPod/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "dragmex",
              "Value": "size*3",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragmexs",
              "Value": "ddragme",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragmey",
              "Value": "ymin*3/4",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragemetrue",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragemetrue2",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "tdrag",
              "Value": "0",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "Width",
              "Value": "\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Height",
              "Value": "(_isEPub)?\"500\":\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "Width1",
              "Value": "\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Width2",
              "Value": "\"50%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "vvst",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "disabledworld",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "disabled",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "KEvstime",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "world",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xmodel",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "showmodel",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "functionY",
              "Value": "\"0\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "solutionY",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "\"Y = \"+_view._format(Acalculated,\"0.0\")+\"sin(\" +_view._format(w,\"0.00\")+\"t\"+_view._format(phi,\"0.00\")+\")\"\"",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "digital",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "Coco's workings",
          "Variables": [
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "trackergdX",
              "Value": "[0.968,-20.99,-22.29,-21.42,-21.86,-44.68,-48.55,-49.42,-50.28,-49.42,-46.83,-43.39,-38.65,-34.34,-23.58,-10.23,5.274,24.65,39.29,54.36,68.14,84.94,96.14,110.8,119.8,134.0,142.6,151.7,156.9,161.6,161.6,161.2,159.3,159.5,158.9,158.9,158.9,158.9,160.5,109.1,108.5,108.4,108.2,108.1,107.9,107.9,108.1,108.5,109.0,109.3,109.1,107.2,105.3,102.7,99.56,95.90,91.16,85.33,78.69,32.82,28.39,24.32,19.99,15.65,11.72,8.735,5.752,3.854,2.092,1.414]",
              "Type": "double",
              "Dimension": "",
              "Comment": "Trackergd X: [0.968,-20.99,-22.29,-21.42,-21.86,-44.68,-48.55,-49.42,-50.28,-49.42,-46.83,-43.39,-38.65,-34.34,-23.58,-10.23,5.274,24.65,39.29,54.36,68.14,84.94,96.14,110.8,119.8,134.0,142.6,151.7,156.9,161.6,161.6,161.2,159.3,159.5,158.9,158.9,158.9,158.9,160.5,109.1,108.5,108.4,108.2,108.1,107.9,107.9,108.1,108.5,109.0,109.3,109.1,107.2,105.3,102.7,99.56,95.90,91.16,85.33,78.69,32.82,28.39,24.32,19.99,15.65,11.72,8.735,5.752,3.854,2.092,1.414]",
              "Domain": "public"
            },
            {
              "Name": "trackergdY",
              "Value": "[-0.384,0.0,-6.843,-14.59,-20.19,-73.16,-83.06,-90.81,-96.41,-102.0,-111.5,-120.5,-129.6,-136.5,-150.7,-160.1,-170.9,-178.2,-181.2,-183.8,-182.1,-179.1,-174.8,-166.6,-160.6,-148.1,-136.9,-121.0,-108.5,-88.23,-74.02,-34.83,-25.97,-18.11,-11.97,-6.797,-0.469,6.435,16.02,16.41,12.43,7.564,2.693,-2.025,-6.895,-12.53,-18.61,-24.55,-32.92,-75.84,-80.68,-86.64,-91.39,-95.32,-99.39,-102.9,-106.2,-108.9,-110.4,-110.5,-110.2,-108.9,-107.0,-104.1,-101.0,-97.49,-93.29,-89.08,-83.66,-77.43]",
              "Type": "double",
              "Dimension": "",
              "Comment": "trackerGdY: [-0.384,0.0,-6.843,-14.59,-20.19,-73.16,-83.06,-90.81,-96.41,-102.0,-111.5,-120.5,-129.6,-136.5,-150.7,-160.1,-170.9,-178.2,-181.2,-183.8,-182.1,-179.1,-174.8,-166.6,-160.6,-148.1,-136.9,-121.0,-108.5,-88.23,-74.02,-34.83,-25.97,-18.11,-11.97,-6.797,-0.469,6.435,16.02,16.41,12.43,7.564,2.693,-2.025,-6.895,-12.53,-18.61,-24.55,-32.92,-75.84,-80.68,-86.64,-91.39,-95.32,-99.39,-102.9,-106.2,-108.9,-110.4,-110.5,-110.2,-108.9,-107.0,-104.1,-101.0,-97.49,-93.29,-89.08,-83.66,-77.43]",
              "Domain": "public"
            },
            {
              "Name": "shapeX",
              "Value": "[x1,x1,-4,-19,-50,-54,-55,-55]",
              "Type": "double",
              "Dimension": "",
              "Comment": "From ruler (x1,-55) clockwise; [x1,x1,-4,-19,-50,-54,-55,-55]",
              "Domain": "public"
            },
            {
              "Name": "shapeY",
              "Value": "[-55,-70,-100,-130,-153,-154,-150,-55]",
              "Type": "double",
              "Dimension": "",
              "Comment": "From ruler (x1,-55) clockwise; [-55,-70,-100,-130,-153,-154,-150,-55]",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "boxSizeX",
              "Value": "size*6.25",
              "Type": "double",
              "Dimension": "",
              "Comment": ":\\coordinate\\size == range/20 where range == 200;",
              "Domain": "public"
            },
            {
              "Name": "boxSizeY",
              "Value": "size*7",
              "Type": "double",
              "Dimension": "",
              "Comment": ":\\coordinate\\size == range/20 where range == 200;",
              "Domain": "public"
            },
            {
              "Name": "boxColour",
              "Value": "\"url(#mygradient3)\"",
              "Type": "String",
              "Dimension": "",
              "Comment": ":\\initialization\\radial == colour urls",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "screenX",
              "Value": "x1 - 5",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "screenY",
              "Value": "zero - 30",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "screenSizeX",
              "Value": "size*5.25",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "screenSizeY",
              "Value": "size*4",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "screenColour",
              "Value": "\"url(#mygradient4)\"",
              "Type": "String",
              "Dimension": "",
              "Comment": ":\\initialization\\radial == colour urls",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "fontdigitalmono",
              "Value": "\"normal bold \"+Math.max(22,Math.min(40,Math.max(document.documentElement.clientWidth,window.innerWidth||0)*3/100))+\"px led_digital_7_mono\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "\"normal bold 3vw led_digital_7_mono\"",
              "Domain": "public"
            },
            {
              "Name": "fontdigitalmonosmall",
              "Value": "\"normal bold \"+Math.max(14,Math.min(24,Math.max(document.documentElement.clientWidth,window.innerWidth||0)*2/100))+\"px led_digital_7_mono\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "\"normal bold 2vw led_digital_7_mono\"",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        }
      ]
    },
    "initialization": {
      "pages": [
        {
          "Name": "Init Page",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "\nfor(var i=0;i<n;i++){\n xv[i]=xi+i*dx; // drawing lines marking on the main scale\n  if(i%2===0){\n   yv[i]=size2; // ALL upper part y coordinate of line size2 which is a fraction of range\n   \n   if(i%10===0){\n    yv[i]*=2;    // *= is not equal to 2 0,5,10,15y coordinate of line 2 \n    \n    if(i%20===0)\n    \n    yv[i]*=1.25;  // 0,10 y position coordinate of line  \n  tx[i/10]=xv[i];  // generate the x coordinate of 0 5 10 15\n txt[i/10]=(i/2)+\"\"; // clever way to make txt 0 5 10 15\n // when i = 10 , txt[1] = 5; when i = 20 , txt [2] = 10, when i =30, txt = 15\n \n   }\n  }else yv[i]=-size2; // to flip the lines downwards\n}\n //_step(); // no idea what this do "
        },
        {
          "Name": "message",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "if (_isMobile){\n  //do nothing\n  }\n  \n  else{\n    // copy this into the initialization\n// make the font bigger\n\n_view.plottingPanel.getMessageDecoration(\"TL\").getFont().setFontSize(Math.max(14,Math.min(18,Math.max(document.documentElement.clientWidth,window.innerWidth||0)*1.4/100))+\"px\");\n_view.plottingPanel.getMessageDecoration(\"TR\").getFont().setFontSize(Math.max(14,Math.min(18,Math.max(document.documentElement.clientWidth,window.innerWidth||0)*1.4/100))+\"px\");\n_view.plottingPanel.getMessageDecoration(\"BL\").getFont().setFontSize(Math.max(14,Math.min(18,Math.max(document.documentElement.clientWidth,window.innerWidth||0)*1.4/100))+\"px\");\n_view.plottingPanel.getMessageDecoration(\"BR\").getFont().setFontSize(Math.max(16,Math.min(24,Math.max(document.documentElement.clientWidth,window.innerWidth||0)*2/100))+\"px\");\n    }"
        },
        {
          "Name": "undefined",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "if (dragemetrue==undefined){\n  dragemetrue=false;\n  } \n  if (dragemetrue2==undefined){\n  dragemetrue2=false;\n  }\n   if (show2==undefined){\n  show2=true;\n  }\n   if (show==undefined){\n  show=false;\n  }\n  \n  if (showhint==undefined){\n  showhint=true;\n  }\n  if (firsttime==undefined){\n  firsttime=true;\n  }\n  if (firsttime2==undefined){\n  firsttime2=true;\n  }\n// to make menu none at the beginning\n//_view.inputfield.getStyle().setDisplay(\"none\");\n//kheight=0.96;"
        },
        {
          "Name": "radial",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "//golden color\nif (clicked ==undefined){\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(255,255,255); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(255,255,0);stop-opacity:0\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient)\" gives translucent gold\n\n\n\n\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient1\" cx=\"30%\" cy=\"30%\" r=\"70%\" fx=\"50%\" fy=\"50%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(0,0,0); stop-opacity:0.5\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(150,150,150);stop-opacity:0.5\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient1)\" gives v translucent dark grey\n\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient2\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"80%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(255,255,255); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(200,200,200);stop-opacity:0\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient2)\" gives translucent light grey\n\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygradient3\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(128,128,128); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(0,0,0);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygradient3)\" gives darker grey for the digitalBox \n\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygradient4\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(255,255,255); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(192,192,192);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygradient4)\" gives lighter grey for the digital screen\n}\nclicked = true\n"
        },
        {
          "Name": "alert",
          "Active": "false",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "if (firsttime2==true){\n//alert(\"drag the green (Spindle or Ratchet) \\n to measure length\");\n //EJSS_INTERFACE.BoxPanel.showOkDialog(\"drag the (Spindle or Ratchet) to measure length\");\n //alert(\"a\");\n _tools.showOkDialog(\"drag the (Spindle or Ratchet) to measure length\");\ndocument.getElementById(\".myBoxPanelOk\").style.top = \"0px\";\nfirsttime2=false;\n}\n"
        }
      ]
    },
    "evolution": {
      "information": {
        "FPS": "20",
        "SPD": "1",
        "RealTimeVariable": "",
        "Autoplay": "false"
      },
      "pages": [
        {
          "Name": "Evol Page",
          "Active": "true",
          "Internal": "false",
          "Type": "EVOLUTION_EDITOR",
          "Comment": "",
          "Code": "if(lock==true) return;\nd=d-direction*step; // change to - by lookang to close jaws\nt = t+step;\nif (d<=0){\n  d = 0;\n // _pause();\n   direction=-1; //reverse after hitting object\n  \n  }\nif (d>=150){\n  d = 150;\n // _pause();\n   direction=1; //reverse after hitting object\n  \n  }  \n//d=Math.max(0,d);\n//d=Math.min(160,d);\nif(y<=size2) { // object has moved y in jaws\n  d=Math.max(d,w2);\n  \n  }\n  if (d <= w2&&y<=size2){\n _pause();\n direction=-1; //reverse after hitting object\n alerttext=\"micrometer is paused, try to select the answer, \\n or key in directly via the input field?\";\n //alert(alerttext);\n  EJSS_INTERFACE.BoxPanel.showOkDialog(alerttext);\n //direction=-direction; //reverse after hitting object\n    _view.inputfield.getStyle().setDisplay(\"inline-flex\");\n//changeOrientation(0.5);\n//kheight=0.90;\n    }\n\n\nL=L0-d;\n"
        }
      ]
    },
    "fixed_relations": {
      "pages": [
        {
          "Name": "FixRel Page 2",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "//this the codes that causes mobile to lag when dragging spindle\n\nxzero=xi+d;\nzero=0.;\nid=parseInt(d/dx*50);\ntc=0;\n\nfor(var i=0;i<n3;i++){\n iy=id+i-10+error;\n if(iy<0)iy+=50;\n iy=iy%50;\n c=ci+dc*i;\n hy[i]=R*Math.sin(c);\n \n hythread[i] = 1.2*R*Math.sin(c); // draw thread at higher y to fill the green dial broad part\n hythreadrachet[i] = 0.5*R*Math.sin(c);// draw thread at lower y to fill the rachet part\n \n if(iy%5===0){\n   \n  \n  if(iy%10==0){\n    hdx[i]=1.5*size; // if iy%10==0 draw a 1.5*size line\n  hdy[i] = c*7; // seems to work to create fake3D circular view\n  }\n  \n  else {\n    hdx[i]=size; // if iy%5==0 draw a size line\n//  hdy[i] = 2*Math.sin(c*3);\nhdy[i] = c*7/2;\n  }\n  \n if(tc<5){\n  yt[tc]=hy[i];\n  //add _5 instead of 5 to slign circular readings\n // if (iy<10){\n //   txty[tc]=\"0\"+iy;\n //   }\n // else { //continue to do normally 10 15 20 align already\n    txty[tc]=iy+\"\";\n // }\n  tc++;\n }\n \n }\n \n else {\n hdx[i]=size2; // the rest draw a size2 line\n// hdy[i] = Math.sin(c*3); // small delta up and down\n  hdy[i] = c*7/4;\n  hdxthread[i]=-5*size2; // lines to make thread same and draw -5*size2 direction\n}\n\n}\n"
        },
        {
          "Name": "hintnew",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "//integerd =parseInt(id/100); // integer ( 840.0/100) = 8.0\nintegerd =parseInt((id+error)/100); // integer ( 840.0/100) = 8.0\ndecimald =(-integerd*100+id)/100.;\n\n// for kim kia suggestion\nintegerd2 =Math.floor((id+error)/50)*50/100; // integer ( 840.0/100) = 8.0\ndecimald2 =(-integerd2*100+id)/100.;\n\n//l_integerd = _view._format(integerd,\"0\")+\".0 mm\"; // +\"0\" is the trick to create extra zero\nl_integerd = integerd.toFixed(2)+\" mm\";\nl_integerd2 = integerd2.toFixed(2)+\" mm\";\n// codes added to address Ered post on making significant of zero error clear\nif ( error === 0 ) {\n//  l_decimald = double2String(decimald,1000.0 )+\" mm\";\n\n    l_decimald = _view._format(decimald,\"0.00\")+\" mm\"; // to solve problem of id = 920 and idv = 9.20\n    l_decimald2 = _view._format(decimald2,\"0.00\")+\" mm\"; //\n}\n\n\nelse if((error>0)){\nl_decimald = _view._format(decimald+error/100,\"0.00\")+\"-(\"+ _view._format(error/100,\"0.00\")+\")\"+\" mm \"; // to solve problem of id = 920 and idv = 9.20\nl_decimald2 = _view._format(decimald2+error/100,\"0.00\")+\"-(\"+ _view._format(error/100,\"0.00\")+\")\"+\" mm \"; // to solve problem of id = 920 and idv = 9.20\n\n}\n    \nelse if((error<0)){\nl_decimald = _view._format(decimald+error/100,\"0.00\")+\"-(\"+ _view._format(error/100,\"0.00\")+\")\"+\" mm \"; // to solve problem of id = 920 and idv = 9.20\nl_decimald2 = _view._format(decimald2+error/100,\"0.00\")+\"-(\"+ _view._format(error/100,\"0.00\")+\")\"+\" mm \"; // to solve problem of id = 920 and idv = 9.20\n\n}\n    \n\n"
        },
        {
          "Name": "showanswer",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "if(id/10===parseInt(id/10)) {\n    idv=(id/100.)+\"0\"; // to solve problem of id = 920 and idv = 9.20\n\n                            }\nelse {\n  idv=id/100.+\"\";\n  \n      }\n    answer= \"\"+_view._format(idv,\"0.00\"); // convert to double to be used in check\n    l_answer=idv+\"\";\n\nif(show===true&&show2==false)\n{\n //   l_msg=\"d = \"+_view._format(idv,\"0.00\")+\" mm\"; // wanted to make clearer but did not\n  l_msg=\"d = \"+_view._format(integerd,\"0.0\")+\"+\"+_view._format(l_decimald,\"0.00\")+\"-(\"+_view._format(error/100,\"0.00\")+\")= \"+ +_view._format(idv,\"0.00\")+\" mm\"; // wanted to make clearer but did not\n\n}\nelse if(show2===true&&show==false)\n{\n //   l_msg=\"d = \"+_view._format(idv,\"0.00\")+\" mm\"; // wanted to make clearer but did not\n  l_msg=\"d = \"+_view._format(integerd2,\"0.0\")+\"+\"+_view._format(l_decimald2,\"0.00\")+\"-(\"+_view._format(error/100,\"0.00\")+\")= \"+ +_view._format(idv,\"0.00\")+\" mm\"; // wanted to make clearer but did not\n\n}\n  else {\n  l_msg=\"d = ??? mm\";\n       }\n\n"
        },
        {
          "Name": "check",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "\nif (showAnswerFlag == false) {\n}\nelse if (showAnswerFlag == true) {\n  if (!isQuestionStarted() && !isQuestionAnswered) {\n    startQuestion(\"Measurement\"); //moodle part of the start\n    //addQuestionHistory(`Target Measurement: ${l_answer}`); //moodle part of the history\n    addQuestionHistory(`Target Measurement: ${l_msg}`); //moodle part of the history\n  }\n\n  onAnswer(l_enterK1f, l_answer == l_enterK1f);\n\n  if (l_answer == l_enterK1f) {\n    K1fcorrect = \"\u2705 Great! You have \\n the right answer!\";\n    EJSS_INTERFACE.BoxPanel.showOkDialog(\"Great! You have \\n the right answer!\");\n    if (isFirstTry) {\n      awardQuestionMarks(2);\n    } else {\n      awardQuestionMarks(1);\n    }\n    endQuestion();\n    isQuestionAnswered = true;\n    K1fcorrectbackground = \"rgba(0,255,0,255)\";\n  }\n  else if (Math.abs(answer - l_enterK1f) < 1.e-7) {// same value but different digits or incorrect format\n    isFirstTry = false;\n    K1fcorrect = \"\u26a0 Check the number of digits\";\n    K1fcorrectbackground = \"rgba(255,200,0,255)\";\n    EJSS_INTERFACE.BoxPanel.showOkDialog(\" Check the number of digits \");\n    endQuestion(); // added by lookang in attempt to make moodle check for end of Question\n  }\n  else {\n    isFirstTry = false;\n    K1fcorrect = \"\u274c Incorrect, \\n Your input is out by \\n\" + _view._format(answer - l_enterK1f, \"0.00\");\n    K1fcorrectbackground = \"rgba(255,0,0,255)\";\n    EJSS_INTERFACE.BoxPanel.showOkDialog(\"Try again, then use Hint: next step if needed\");\n    endQuestion(); // added by lookang in attempt to make moodle check for end of Question\n  }\n  //   }\n\n  showAnswerFlag = false; // set back to false\n  speech(K1fcorrect.replace(/\\n/g, \"\"));\n}\n"
        },
        {
          "Name": "readingScaffold",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "Metric micrometer reading sequence and guarded assessment state",
          "Code": "guardAssessmentInputs();\n\nvar observedHundredths = id + error;\nvar sleeveHundredths = Math.floor(observedHundredths / 50) * 50;\nobservedReading = observedHundredths / 100;\nsleeveReading = sleeveHundredths / 100;\nthimbleReading = (observedHundredths - sleeveHundredths) / 100;\ncorrectedReading = observedReading - error / 100;\n\nl_integerd = Math.floor(observedReading).toFixed(2) + \" mm\";\nl_decimald = (observedReading - Math.floor(observedReading)).toFixed(2) + \" mm\";\nl_integerd2 = sleeveReading.toFixed(2) + \" mm\";\nl_decimald2 = thimbleReading.toFixed(2) + \" mm\";\nidv = correctedReading.toFixed(2);\nanswer = correctedReading;\nl_answer = idv;\nworkedCalculation = \"Worked: sleeve \" + sleeveReading.toFixed(2) + \" mm + thimble \" + thimbleReading.toFixed(2) + \" mm = observed \" + observedReading.toFixed(2) + \" mm; corrected = \" + observedReading.toFixed(2) + \" - (\" + (error / 100).toFixed(2) + \") = \" + correctedReading.toFixed(2) + \" mm.\";\n\nif (hasAttempted) {\n  guidanceText = workedCalculation;\n} else if (!showhint || hintStage === 0) {\n  guidanceText = learningMode + \" mode: read the sleeve and thimble, then enter your answer.\";\n} else if (hintStage === 1) {\n  guidanceText = \"Step 1: Zoom in on the scales and locate the sleeve datum/reference line beside the thimble.\";\n} else if (hintStage === 2) {\n  guidanceText = \"Step 2: Find the last sleeve/main-scale graduation still visible to the left of the thimble edge. Include the 0.50 mm mark when it is visible.\";\n} else if (hintStage === 3) {\n  guidanceText = \"Step 3: Find the thimble graduation most closely aligned with the sleeve datum/reference line. Each division is 0.01 mm.\";\n} else {\n  guidanceText = \"Step 4: Submit an attempt to reveal the full calculation: corrected reading = observed reading - zero error.\";\n}\nl_msg = guidanceText;\n"
        },
        {
          "Name": "preventgoing over",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "if (d<=0){\n  d = 0;\n // _pause();\n  direction=-1; //reverse after hitting object\n  \n  }\n  if (d>=150){\n  d = 150;\n // _pause();\n   direction=1; //reverse after hitting object\n  \n  } \n  if(y<=size2) { // object has moved y in jaws\n  d=Math.max(d,w2);\n  \n  }\n"
        }
      ]
    },
    "custom": {
      "pages": [
        {
          "Name": "Lib Page",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "//https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\n// does not work for iOS \n/*jslint browser:true */\nfunction toggleFullScreen() {\n  if (!document.fullscreenElement &&    // alternative standard method\n      !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) {  // current working methods\n    if (document.documentElement.requestFullscreen) {\n      document.documentElement.requestFullscreen();\n    } else if (document.documentElement.msRequestFullscreen) {\n      document.documentElement.msRequestFullscreen();\n    } else if (document.documentElement.mozRequestFullScreen) {\n      document.documentElement.mozRequestFullScreen();\n    } else if (document.documentElement.webkitRequestFullscreen) {\n      document.documentElement.webkitRequestFullscreen();\n    }\n  } else {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n    } else if (document.msExitFullscreen) {\n      document.msExitFullscreen();\n    } else if (document.mozCancelFullScreen) {\n      document.mozCancelFullScreen();\n    } else if (document.webkitExitFullscreen) {\n      document.webkitExitFullscreen();\n    }\n  }\n}"
        },
        {
          "Name": "learningModes",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "Mode, scaffold, challenge, and guarded assessment reset helpers",
          "Code": "function resetAssessmentState(reason) {\n  while (isQuestionStarted()) {\n    endQuestion();\n  }\n  resetQuestion(\"Measurement\");\n  isFirstTry = true;\n  isQuestionAnswered = false;\n  hasAttempted = false;\n  l_enterK1f = \"\";\n  showAnswerFlag = false;\n  K1fcorrect = reason ? \"Ready: \" + reason : \"Ready to measure\";\n  K1fcorrectbackground = \"rgba(235,245,255,255)\";\n  if (learningMode === \"Explore\") {\n    showhint = true;\n    hintStage = 1;\n  } else {\n    showhint = false;\n    hintStage = 0;\n  }\n}\n\nfunction assessmentSignature() {\n  return [Math.round(d * 1000), Math.round(w2 * 1000), Math.round(y * 1000), error, learningMode].join(\"|\");\n}\n\nfunction guardAssessmentInputs() {\n  var signature = assessmentSignature();\n  if (lastAssessmentSignature === \"\") {\n    lastAssessmentSignature = signature;\n  } else if (signature !== lastAssessmentSignature) {\n    lastAssessmentSignature = signature;\n    resetAssessmentState(\"measurement changed\");\n  }\n}\n\nfunction newChallenge() {\n  var targetHundredths = 100 + Math.floor(Math.random() * 851);\n  error = -15 + Math.floor(Math.random() * 31);\n  d = targetHundredths * dx / 50;\n  w2 = d;\n  y = -size;\n  direction = -1;\n  lastAssessmentSignature = \"\";\n  resetAssessmentState(\"new challenge\");\n}\n\nfunction setLearningMode(nextMode) {\n  learningMode = nextMode;\n  lastAssessmentSignature = \"\";\n  if (learningMode === \"Challenge\") {\n    newChallenge();\n  } else {\n    resetAssessmentState(learningMode + \" mode\");\n  }\n}\n\nfunction requestNextHint() {\n  if (learningMode === \"Challenge\" && !hasAttempted) {\n    K1fcorrect = \"Hint locked: make one attempt first.\";\n    K1fcorrectbackground = \"rgba(255,245,200,255)\";\n    return;\n  }\n  showhint = true;\n  hintStage = Math.min(4, hintStage + 1);\n}\n\nfunction hideGuidance() {\n  showhint = false;\n}\n\nfunction setZeroErrorFromLabel(option) {\n  var match = option.match(/(-?\\d+\\.\\d{2})/);\n  if (match) {\n    error = Math.round(parseFloat(match[1]) * 100);\n    lastAssessmentSignature = \"\";\n    resetAssessmentState(\"zero error changed\");\n  }\n}\n"
        },
        {
          "Name": "questionLib",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "// Assume ECMAScript 6; Chrome >=49, Edge >=14, Firefox >=41, Opera >=36, Safari >=8\n\nconst debugMode = true;\nconst _questionLib = {};\n_questionLib.stack = [];\n_questionLib.history = Object.create(null);\n_questionLib.questionMarksAwarded = Object.create(null);\n_questionLib.instantMarksAwarded = Object.create(null);\n\nconst _nullFunction = debugMode ?\n  console.log\n  :\n  function(){};\n\nfunction _debugPrint(msg) {\n  if (debugMode) {\n    console.log(msg);\n  }\n}\n\nfunction getPendingQuestion() {\n  if (!isQuestionStarted()) {\n    return null;\n  }\n  return _questionLib.stack[_questionLib.stack.length - 1];\n}\n\nfunction isQuestionStarted() {\n  return _questionLib.stack.length > 0;\n}\n\n// for assessment.json event - start\nfunction startQuestion(questionName) {\n  _view._addInteraction(_nullFunction, {action:\"questionStart\", name:questionName}, {element:\"questionLib\", property:\"value\"});\n  _debugPrint(\"Start question: \" + questionName);\n  \n  _questionLib.stack.push(questionName);\n}\n\n// for assessment.json history\nfunction addQuestionHistory(history, questionName=null) {\n  if (questionName === null && isQuestionStarted()) {\n    questionName = getPendingQuestion();\n  }\n  \n  if (!(questionName in _questionLib.history)) {\n    _debugPrint(\"Create question history for \" + questionName);\n    \n    _questionLib.history[questionName] = [];\n  }\n  if (debugMode) {\n    console.log(\"Push \\\"\" + history + \"\\\" to question history for \" + questionName);\n  }\n  _questionLib.history[questionName].push(history);\n  _flushQuestionHistory(questionName);\n}\n\nfunction _flushQuestionHistory(questionName) {\n  // TODO: check if need to flush\n  if (questionName === getPendingQuestion()) {\n    const outputHistory = _getQuestionHistory(questionName);\n    _view._addInteraction(_nullFunction, outputHistory, {property: \"historyFor\" + questionName, element: \"questionLib\"});\n  }\n}\n\nfunction _getQuestionHistory(questionName) {\n  if (questionName in _questionLib.history) {\n    return _questionLib.history[questionName].join(\"\\n\");\n  } else {\n    _debugPrint(\"No question \\\"\" + questionName + \"\\\" exists\");\n\n    return \"\";\n  }\n}\n\n// for assessment.json event - states\nfunction onAnswer(answer, isCorrect=false, history=answer, questionName=null) {\n  if (questionName === null && isQuestionStarted()) {\n    questionName = _questionLib.stack[_questionLib.stack.length - 1];\n  }\n  if (questionName !== null) {\n    const explainer = Object.create(null);\n    explainer[true] = \" \u2705\";\n    explainer[false] = \" \u274c\";\n    explainer[undefined] = \"\";\n    explainer[null] = \"\";\n\n    addQuestionHistory(history + explainer[isCorrect], questionName);\n    if (questionName === getPendingQuestion()) {\n      _view._addInteraction(_nullFunction, {name:questionName, answer:answer, isCorrect:isCorrect, action:\"questionAnswer\"}, {property: \"answer\", element:\"questionLib\"});\n    }\n  }\n}\n\n// for assessment.json event - end\nfunction endQuestion() {\n  if (_questionLib.stack.length > 0) {\n    const questionName = _questionLib.stack.pop();\n    _debugPrint(\"End question: \" + questionName);\n    _view._addInteraction(_nullFunction, {action:\"questionEnd\", name:questionName}, {element: \"questionLib\", property: \"value\"});\n  }\n}\n\n// for assessment.json marks\nfunction awardQuestionMarks(marks=1) {\n  if (isQuestionStarted()) {\n    const questionName = getPendingQuestion();\n    _debugPrint(`Award ${marks} marks for ${questionName}`)\n    _questionLib.questionMarksAwarded[questionName] = marks;\n    \n    _view._addInteraction(_nullFunction, _questionLib.questionMarksAwarded[questionName], {element:\"questionLib\", property:\"awardMarkFor\"+questionName});\n  }\n}\n\nfunction resetQuestionMarks(questionName) {\n  _questionLib.questionMarksAwarded[questionName] = 0;\n}\n\nfunction questionInstantMark(questionName, message) {\n  let shouldAwardMark = true;\n  if (questionName in _questionLib.instantMarksAwarded) {\n    if (message in _questionLib.instantMarksAwarded[questionName]) {\n      shouldAwardMark = false;\n    }\n  } else {\n    _questionLib.instantMarksAwarded[questionName] = Object.create(null);\n  }\n  _questionLib.instantMarksAwarded[questionName][message] = true;\n\n  if (shouldAwardMark) {\n    startQuestion(questionName);\n    _debugPrint(\"\" + message);\n    if (message) {\n      addQuestionHistory(message);\n    } else {\n      _flushQuestionHistory(questionName);\n    }\n    awardQuestionMarks();\n    endQuestion();\n  }\n}\n\nfunction questionAppendHistory(questionName, message) {\n  if (!(questionName in _questionLib.questionMarksAwarded)) {\n    _questionLib.questionMarksAwarded[questionName] = 0;\n  }\n  let shouldPushQuestion = getPendingQuestion() !== questionName;\n  if (shouldPushQuestion) {\n    startQuestion(questionName);\n  }\n  awardQuestionMarks(_questionLib.questionMarksAwarded[questionName])\n  addQuestionHistory(message);\n  if (shouldPushQuestion) {\n    endQuestion();\n  }\n}\n\nfunction resetQuestionHistory(questionName) {\n  _questionLib.history[questionName] = [];\n}\n\nfunction resetQuestion(questionName) {\n  resetQuestionHistory(questionName);\n  resetQuestionMarks(questionName);\n}\n"
        },
        {
          "Name": "Speech",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "// copy this custom function\n// in iOS need to add speech to the play button as On iOS the API works but must be triggered by a user action callback, like a response to a tap event, to provide a better experience to users and avoid unexpected sounds out of your phone\nfunction speech (option) {\n\n\n// allow code to run in Student Learning Space \nvar isCordova = (!!this.parent.cordova || !!window.cordova);\nif(isCordova) { // check it is running in Android or iOS\n        \n\tparent.TTS.speak({text:option,locale:'en-US'});\n} else {\n  var msg = new SpeechSynthesisUtterance(option);\n\n  //https://stackoverflow.com/questions/43983845/speechsynthesis-api-for-chinese-firefox\n  // Set the text.\n\t//msg.text = option; \n\t//https://forums.developer.apple.com/message/323564#323564\n\t// comment out the next 2 lines for english\n//msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Ting-Ting'; })[0];\nmsg.lang = 'en-US'; // need for android?\n\n//https://flaviocopes.com/speech-synthesis-api/\n//debug\n//console.log(`Voices #: ${speechSynthesis.getVoices().length}`)\n//speechSynthesis.getVoices().forEach(voice => {\n// console.log(voice.name, voice.lang)\n//})\n//debug\n\n// Queue this utterance.\nwindow.speechSynthesis.speak(msg);\n}\n\n}"
        },
        {
          "Name": "changeOrientationnormalapp",
          "Active": "false",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function changeOrientation() {\nvar k =1;\nvar kapple=0.95;\nif(typeof parent.device != 'undefined')\n  _view.mytext.setText(parent.device.platform)\nelse\n  _view.mytext.setText(\"nada:\");\n\n// check platform for Apps\nvar iOSapp =  (typeof parent.device != 'undefined' && parent.device.platform == \"iOS\");\nvar Androidapp = (typeof parent.device != 'undefined' && parent.device.platform == \"Android\");\n\n// check platform for web browsers\nvar iOS =/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar iPad =/iPad/.test(navigator.userAgent) && !window.MSStream;\nvar iPhone = /iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar Android= /Android|android/i.test(navigator.userAgent);\n\n_view.mytext.setText(_view.mytext.getText() + \"-orient:\" + window.orientation + \"-\" + iOSapp + \"-\" + Androidapp);\n\nswitch (window.orientation) {\n  case 0:\n  case 180:\n    this.screenOrientation = 'portrait';\n    if (iOSapp){ // does not seems to work\n      //   return Math.max(window.screen.width,window.screen.height)*0.9;\n      return window.screen.height*kapple;  //0.1 for app and 0.1 for nonfullscreenapp  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      // return document.documentElement.clientHeight;\n    }\n    \n    else {\n      // return Math.max(window.innerWidth,window.innerHeight)*0.9;\n      return window.innerHeight*k;\n    }\n    break;\n  case 90:\n  case -90:\n    this.screenOrientation = 'landscape';\n\n    if (iOSapp){ // App\n      return window.screen.width*kapple;  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      //  return document.documentElement.clientHeight;\n    }\n    \n    else { // browser Android and PC\n      // return Math.min(window.innerWidth,window.innerHeight)*0.9;\n      // alert(\"browser Android and PC\");\n      return window.innerHeight*k;\n    }\n    break;\n  default:\n    this.screenOrientation = 'unknown';\n    //       return (iPad)?\"\"+(window.screen.width+window.screen.height)*0.4:((iPhone)?\"\"+window.screen.width:_view._format(window.innerHeight*0.9,\"0\"));\n    return \"100vh\";\n}\n\n}"
        },
        {
          "Name": "changeOrientation",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "// code to be copied to EJSS source code under Custom and used in drawingPanel3D and plottingPanel2D\n// address the problem is height difference is iOS app , epub, and Firefox\n// user need to change only k and kepub\n// copy %changeOrientation()% into the Height Field of drawingPanel3D and plottingPanel2D\nfunction changeOrientation() {\n \nvar k =0.85 ; // k control height 1 is for full screen, 0.9 shorten etc\nvar kapple =0.95 // control apple app height\nvar kepub =0.90 ;\n// check platform for Apps\ntry { // allow code to run in Student Learning Space \n  var iOSapp =  (typeof parent.device != 'undefined' && parent.device.platform == \"iOS\");\n  var Androidapp = (typeof parent.device != 'undefined' && parent.device.platform == \"Android\");\n} catch(e) {\n  var iOSapp = false;\n  var Androidapp = false;\n}\n// check platform for web browsers\nvar iOS =/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar iPad =/iPad/.test(navigator.userAgent) && !window.MSStream;\nvar iPhone = /iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar Android= /Android|android/i.test(navigator.userAgent);\n\n//navigator\nvar Firefox = navigator.userAgent.indexOf(\"Firefox\") != -1;\n \nswitch (window.orientation) { // using window.orientation as deciding factor\n  case 0:\n  case 180:\n    this.screenOrientation = 'portrait';\n    if (iOSapp){ // does not seems to work\n      \n      return window.screen.height*kapple;  //0.1 for app and 0.1 for nonfullscreenapp  \n    \n    }\n    else if (_isEPub){ // does not seems to work\n      //   return Math.max(window.screen.width,window.screen.height)*0.9;\n      return window.innerHeight*kepub;  //0.1 for app and 0.1 for nonfullscreenapp  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      // return document.documentElement.clientHeight;\n    }\n   \n    else {\n     return window.innerHeight*k;\n      //return 100*k+\"vh\";\n    }\n    break;\n  case 90:\n  case -90:\n    this.screenOrientation = 'landscape';\n \n    if (iOSapp){ // App\n      return window.screen.width*kapple;  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      //  return document.documentElement.clientHeight;\n    }\n    else if (_isEPub){ // does not seems to work\n      //   return Math.max(window.screen.width,window.screen.height)*0.9;\n      return window.innerHeight*kepub;  //0.1 for app and 0.1 for nonfullscreenapp  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      // return document.documentElement.clientHeight;\n    }\n   \n    else {\n      return window.innerHeight*k;\n      //return 100*k+\"vh\"; // safari produce error\n      }\n    break;\n  default:\n    this.screenOrientation = 'unknown';\n    //       return (iPad)?\"\"+(window.screen.width+window.screen.height)*0.4:((iPhone)?\"\"+window.screen.width:_view._format(window.innerHeight*0.9,\"0\"));\n     if (Firefox){\n      return window.innerHeight*k;// number as of 20180831 Firefox does not support vh yet so need a separate line to handle\n      }\n   //   else if (iOS&&(window.orientation==0)||(window.orientation==180)){\n   //   return  window.screen.height*k;// number as of 20180831 Firefox does not support vh yet so need a separate line to handle\n   //   }\n    //  else if (iOS&&(window.orientation==90)||(window.orientation==-90)){\n   //   return  window.screen.width*k;// number as of 20180831 Firefox does not support vh yet so need a separate line to handle\n   //   }\n      else {\n      //alert();\n      // return 100*k+\"%\"; // work on fullscreen works in EJSS6.0beta\n        //  works in EjsS_5.3_180131\n      return  window.innerHeight*k; // work on panel \n       \n}\n\n}\n \n}"
        },
        {
          "Name": "android",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "//code reference: http://davidwalsh.name/detect-android\nfunction checkAndroid () {\n  var ua = navigator.userAgent.toLowerCase();\n  return ua.indexOf(\"android\") > -1; //&& ua.indexOf(\"mobile\");\n}"
        }
      ]
    },
    "elements": {
      "list": []
    }
  },
  "view": {
    "Tree": [
      {
        "Name": "fullscreen",
        "Type": "Panel",
        "Expanded": "true",
        "Properties": [
          {
            "name": "Height",
            "value": "\"100%\""
          },
          {
            "name": "Width",
            "value": "\"100%\""
          }
        ],
        "Children": [
          {
            "Name": "control",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [],
            "Children": [
              {
                "Name": "inputfield",
                "Type": "Panel",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "Width",
                    "value": "\"90%\""
                  },
                  {
                    "name": "Display",
                    "value": "\"inline-flex\""
                  }
                ],
                "Children": [
                  {
                    "Name": "comboBox3",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"Mode: Explore\",\"Mode: Practice\",\"Mode: Challenge\",\"Hint: next step\",\"Hint: hide\",\"Lock spindle\",\"Unlock spindle\",\"New challenge\"]"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"Learning mode, scaffold, spindle lock, and new challenge\""
                      },
                      {
                        "name": "OnChange",
                        "value": "var opts = _view.comboBox3.getProperty(\"SelectedOptions\");\nvar option = (opts.length > 0) ? opts[0] : \"\";\nif (option === \"Mode: Explore\") setLearningMode(\"Explore\");\nelse if (option === \"Mode: Practice\") setLearningMode(\"Practice\");\nelse if (option === \"Mode: Challenge\") setLearningMode(\"Challenge\");\nelse if (option === \"Hint: next step\") requestNextHint();\nelse if (option === \"Hint: hide\") hideGuidance();\nelse if (option === \"Lock spindle\") lock = true;\nelse if (option === \"Unlock spindle\") lock = false;\nelse if (option === \"New challenge\") {\n  if (learningMode !== \"Challenge\") learningMode = \"Challenge\";\n  newChallenge();\n}"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Width",
                        "value": "\"clamp(150px,28vw,240px)\""
                      },
                      {
                        "name": "Height",
                        "value": "\"44px\""
                      }
                    ]
                  },
                  {
                    "Name": "comboBox",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"Zero error: -0.15 mm\",\"Zero error: -0.14 mm\",\"Zero error: -0.13 mm\",\"Zero error: -0.12 mm\",\"Zero error: -0.11 mm\",\"Zero error: -0.10 mm\",\"Zero error: -0.09 mm\",\"Zero error: -0.08 mm\",\"Zero error: -0.07 mm\",\"Zero error: -0.06 mm\",\"Zero error: -0.05 mm\",\"Zero error: -0.04 mm\",\"Zero error: -0.03 mm\",\"Zero error: -0.02 mm\",\"Zero error: -0.01 mm\",\"Zero error: 0.00 mm\",\"Zero error: 0.01 mm\",\"Zero error: 0.02 mm\",\"Zero error: 0.03 mm\",\"Zero error: 0.04 mm\",\"Zero error: 0.05 mm\",\"Zero error: 0.06 mm\",\"Zero error: 0.07 mm\",\"Zero error: 0.08 mm\",\"Zero error: 0.09 mm\",\"Zero error: 0.10 mm\",\"Zero error: 0.11 mm\",\"Zero error: 0.12 mm\",\"Zero error: 0.13 mm\",\"Zero error: 0.14 mm\",\"Zero error: 0.15 mm\"]"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"Zero error in millimetres; disabled in Challenge mode\""
                      },
                      {
                        "name": "SelectedOptions",
                        "value": "[\"Zero error: \" + (error / 100).toFixed(2) + \" mm\"]"
                      },
                      {
                        "name": "OnChange",
                        "value": "var opts = _view.comboBox.getProperty(\"SelectedOptions\");\nvar option = (opts.length > 0) ? opts[0] : \"\";\nsetZeroErrorFromLabel(option);"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Width",
                        "value": "\"clamp(150px,24vw,220px)\""
                      },
                      {
                        "name": "Height",
                        "value": "\"44px\""
                      },
                      {
                        "name": "Disabled",
                        "value": "learningMode==\"Challenge\""
                      }
                    ]
                  },
                  {
                    "Name": "playPauseButton",
                    "Type": "TwoStateButton",
                    "Properties": [
                      {
                        "name": "OffClick",
                        "value": "text=\"paused, 2 rounds = 100 divisions = 1.00 mm\";\n_pause();\nalerttext=\"micrometer is paused\";\n"
                      },
                      {
                        "name": "TextOn",
                        "value": "\"\u25ba\""
                      },
                      {
                        "name": "State",
                        "value": "_isPaused"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"Play/Pause\""
                      },
                      {
                        "name": "TextOff",
                        "value": "\"||\""
                      },
                      {
                        "name": "Disabled",
                        "value": "lock"
                      },
                      {
                        "name": "OnClick",
                        "value": "_play();\nalerttext=\"micrometer is playing\";\ntext=\"playing, 2 rounds = 100 divisions = 1.00 mm\";"
                      },
                      {
                        "name": "Width",
                        "value": "\"clamp(88px,18vw,150px)\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "\"none\""
                      }
                    ]
                  },
                  {
                    "Name": "resetButton",
                    "Type": "Button",
                    "Properties": [
                      {
                        "name": "Tooltip",
                        "value": "learningMode==\"Challenge\"?\"Generate a new randomized measurement and zero error\":\"Reset the simulation\""
                      },
                      {
                        "name": "Text",
                        "value": "learningMode==\"Challenge\"?\"New challenge\":\"Reset\""
                      },
                      {
                        "name": "OnClick",
                        "value": "if (learningMode===\"Challenge\") newChallenge();\nelse _reset();"
                      },
                      {
                        "name": "Width",
                        "value": "\"clamp(88px,18vw,150px)\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "\"inline-block\""
                      }
                    ]
                  },
                  {
                    "Name": "answer2",
                    "Type": "Label",
                    "Properties": [
                      {
                        "name": "Background",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"Switch between the answer list and text entry; both remain available\""
                      },
                      {
                        "name": "Text",
                        "value": "inputdropmenu?\"Input: list\":\"Input: text\""
                      },
                      {
                        "name": "OnClick",
                        "value": "if (inputdropmenu==true){\n  inputdropmenu=false;\n  }\n  else if (inputdropmenu==false){\n  inputdropmenu=true;\n  }"
                      },
                      {
                        "name": "Width",
                        "value": "\"clamp(96px,18vw,150px)\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "comboBox2",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"0.00\",\"0.01\",\"0.02\",\"0.03\",\"0.04\",\"0.05\",\"0.06\",\"0.07\",\"0.08\",\"0.09\",\"0.10\",\"0.11\",\"0.12\",\"0.13\",\"0.14\",\"0.15\",\"0.16\",\"0.17\",\"0.18\",\"0.19\",\"0.20\",\"0.21\",\"0.22\",\"0.23\",\"0.24\",\"0.25\",\"0.26\",\"0.27\",\"0.28\",\"0.29\",\"0.30\",\"0.31\",\"0.32\",\"0.33\",\"0.34\",\"0.35\",\"0.36\",\"0.37\",\"0.38\",\"0.39\",\"0.40\",\"0.41\",\"0.42\",\"0.43\",\"0.44\",\"0.45\",\"0.46\",\"0.47\",\"0.48\",\"0.49\",\"0.50\",\"0.51\",\"0.52\",\"0.53\",\"0.54\",\"0.55\",\"0.56\",\"0.57\",\"0.58\",\"0.59\",\"0.60\",\"0.61\",\"0.62\",\"0.63\",\"0.64\",\"0.65\",\"0.66\",\"0.67\",\"0.68\",\"0.69\",\"0.70\",\"0.71\",\"0.72\",\"0.73\",\"0.74\",\"0.75\",\"0.76\",\"0.77\",\"0.78\",\"0.79\",\"0.80\",\"0.81\",\"0.82\",\"0.83\",\"0.84\",\"0.85\",\"0.86\",\"0.87\",\"0.88\",\"0.89\",\"0.90\",\"0.91\",\"0.92\",\"0.93\",\"0.94\",\"0.95\",\"0.96\",\"0.97\",\"0.98\",\"0.99\",\"1.00\",\"1.01\",\"1.02\",\"1.03\",\"1.04\",\"1.05\",\"1.06\",\"1.07\",\"1.08\",\"1.09\",\"1.10\",\"1.11\",\"1.12\",\"1.13\",\"1.14\",\"1.15\",\"1.16\",\"1.17\",\"1.18\",\"1.19\",\"1.20\",\"1.21\",\"1.22\",\"1.23\",\"1.24\",\"1.25\",\"1.26\",\"1.27\",\"1.28\",\"1.29\",\"1.30\",\"1.31\",\"1.32\",\"1.33\",\"1.34\",\"1.35\",\"1.36\",\"1.37\",\"1.38\",\"1.39\",\"1.40\",\"1.41\",\"1.42\",\"1.43\",\"1.44\",\"1.45\",\"1.46\",\"1.47\",\"1.48\",\"1.49\",\"1.50\",\"1.51\",\"1.52\",\"1.53\",\"1.54\",\"1.55\",\"1.56\",\"1.57\",\"1.58\",\"1.59\",\"1.60\",\"1.61\",\"1.62\",\"1.63\",\"1.64\",\"1.65\",\"1.66\",\"1.67\",\"1.68\",\"1.69\",\"1.70\",\"1.71\",\"1.72\",\"1.73\",\"1.74\",\"1.75\",\"1.76\",\"1.77\",\"1.78\",\"1.79\",\"1.80\",\"1.81\",\"1.82\",\"1.83\",\"1.84\",\"1.85\",\"1.86\",\"1.87\",\"1.88\",\"1.89\",\"1.90\",\"1.91\",\"1.92\",\"1.93\",\"1.94\",\"1.95\",\"1.96\",\"1.97\",\"1.98\",\"1.99\",\"2.00\",\"2.01\",\"2.02\",\"2.03\",\"2.04\",\"2.05\",\"2.06\",\"2.07\",\"2.08\",\"2.09\",\"2.10\",\"2.11\",\"2.12\",\"2.13\",\"2.14\",\"2.15\",\"2.16\",\"2.17\",\"2.18\",\"2.19\",\"2.20\",\"2.21\",\"2.22\",\"2.23\",\"2.24\",\"2.25\",\"2.26\",\"2.27\",\"2.28\",\"2.29\",\"2.30\",\"2.31\",\"2.32\",\"2.33\",\"2.34\",\"2.35\",\"2.36\",\"2.37\",\"2.38\",\"2.39\",\"2.40\",\"2.41\",\"2.42\",\"2.43\",\"2.44\",\"2.45\",\"2.46\",\"2.47\",\"2.48\",\"2.49\",\"2.50\",\"2.51\",\"2.52\",\"2.53\",\"2.54\",\"2.55\",\"2.56\",\"2.57\",\"2.58\",\"2.59\",\"2.60\",\"2.61\",\"2.62\",\"2.63\",\"2.64\",\"2.65\",\"2.66\",\"2.67\",\"2.68\",\"2.69\",\"2.70\",\"2.71\",\"2.72\",\"2.73\",\"2.74\",\"2.75\",\"2.76\",\"2.77\",\"2.78\",\"2.79\",\"2.80\",\"2.81\",\"2.82\",\"2.83\",\"2.84\",\"2.85\",\"2.86\",\"2.87\",\"2.88\",\"2.89\",\"2.90\",\"2.91\",\"2.92\",\"2.93\",\"2.94\",\"2.95\",\"2.96\",\"2.97\",\"2.98\",\"2.99\",\"3.00\",\"3.01\",\"3.02\",\"3.03\",\"3.04\",\"3.05\",\"3.06\",\"3.07\",\"3.08\",\"3.09\",\"3.10\",\"3.11\",\"3.12\",\"3.13\",\"3.14\",\"3.15\",\"3.16\",\"3.17\",\"3.18\",\"3.19\",\"3.20\",\"3.21\",\"3.22\",\"3.23\",\"3.24\",\"3.25\",\"3.26\",\"3.27\",\"3.28\",\"3.29\",\"3.30\",\"3.31\",\"3.32\",\"3.33\",\"3.34\",\"3.35\",\"3.36\",\"3.37\",\"3.38\",\"3.39\",\"3.40\",\"3.41\",\"3.42\",\"3.43\",\"3.44\",\"3.45\",\"3.46\",\"3.47\",\"3.48\",\"3.49\",\"3.50\",\"3.51\",\"3.52\",\"3.53\",\"3.54\",\"3.55\",\"3.56\",\"3.57\",\"3.58\",\"3.59\",\"3.60\",\"3.61\",\"3.62\",\"3.63\",\"3.64\",\"3.65\",\"3.66\",\"3.67\",\"3.68\",\"3.69\",\"3.70\",\"3.71\",\"3.72\",\"3.73\",\"3.74\",\"3.75\",\"3.76\",\"3.77\",\"3.78\",\"3.79\",\"3.80\",\"3.81\",\"3.82\",\"3.83\",\"3.84\",\"3.85\",\"3.86\",\"3.87\",\"3.88\",\"3.89\",\"3.90\",\"3.91\",\"3.92\",\"3.93\",\"3.94\",\"3.95\",\"3.96\",\"3.97\",\"3.98\",\"3.99\",\"4.00\",\"4.01\",\"4.02\",\"4.03\",\"4.04\",\"4.05\",\"4.06\",\"4.07\",\"4.08\",\"4.09\",\"4.10\",\"4.11\",\"4.12\",\"4.13\",\"4.14\",\"4.15\",\"4.16\",\"4.17\",\"4.18\",\"4.19\",\"4.20\",\"4.21\",\"4.22\",\"4.23\",\"4.24\",\"4.25\",\"4.26\",\"4.27\",\"4.28\",\"4.29\",\"4.30\",\"4.31\",\"4.32\",\"4.33\",\"4.34\",\"4.35\",\"4.36\",\"4.37\",\"4.38\",\"4.39\",\"4.40\",\"4.41\",\"4.42\",\"4.43\",\"4.44\",\"4.45\",\"4.46\",\"4.47\",\"4.48\",\"4.49\",\"4.50\",\"4.51\",\"4.52\",\"4.53\",\"4.54\",\"4.55\",\"4.56\",\"4.57\",\"4.58\",\"4.59\",\"4.60\",\"4.61\",\"4.62\",\"4.63\",\"4.64\",\"4.65\",\"4.66\",\"4.67\",\"4.68\",\"4.69\",\"4.70\",\"4.71\",\"4.72\",\"4.73\",\"4.74\",\"4.75\",\"4.76\",\"4.77\",\"4.78\",\"4.79\",\"4.80\",\"4.81\",\"4.82\",\"4.83\",\"4.84\",\"4.85\",\"4.86\",\"4.87\",\"4.88\",\"4.89\",\"4.90\",\"4.91\",\"4.92\",\"4.93\",\"4.94\",\"4.95\",\"4.96\",\"4.97\",\"4.98\",\"4.99\",\"5.00\",\"5.01\",\"5.02\",\"5.03\",\"5.04\",\"5.05\",\"5.06\",\"5.07\",\"5.08\",\"5.09\",\"5.10\",\"5.11\",\"5.12\",\"5.13\",\"5.14\",\"5.15\",\"5.16\",\"5.17\",\"5.18\",\"5.19\",\"5.20\",\"5.21\",\"5.22\",\"5.23\",\"5.24\",\"5.25\",\"5.26\",\"5.27\",\"5.28\",\"5.29\",\"5.30\",\"5.31\",\"5.32\",\"5.33\",\"5.34\",\"5.35\",\"5.36\",\"5.37\",\"5.38\",\"5.39\",\"5.40\",\"5.41\",\"5.42\",\"5.43\",\"5.44\",\"5.45\",\"5.46\",\"5.47\",\"5.48\",\"5.49\",\"5.50\",\"5.51\",\"5.52\",\"5.53\",\"5.54\",\"5.55\",\"5.56\",\"5.57\",\"5.58\",\"5.59\",\"5.60\",\"5.61\",\"5.62\",\"5.63\",\"5.64\",\"5.65\",\"5.66\",\"5.67\",\"5.68\",\"5.69\",\"5.70\",\"5.71\",\"5.72\",\"5.73\",\"5.74\",\"5.75\",\"5.76\",\"5.77\",\"5.78\",\"5.79\",\"5.80\",\"5.81\",\"5.82\",\"5.83\",\"5.84\",\"5.85\",\"5.86\",\"5.87\",\"5.88\",\"5.89\",\"5.90\",\"5.91\",\"5.92\",\"5.93\",\"5.94\",\"5.95\",\"5.96\",\"5.97\",\"5.98\",\"5.99\",\"6.00\",\"6.01\",\"6.02\",\"6.03\",\"6.04\",\"6.05\",\"6.06\",\"6.07\",\"6.08\",\"6.09\",\"6.10\",\"6.11\",\"6.12\",\"6.13\",\"6.14\",\"6.15\",\"6.16\",\"6.17\",\"6.18\",\"6.19\",\"6.20\",\"6.21\",\"6.22\",\"6.23\",\"6.24\",\"6.25\",\"6.26\",\"6.27\",\"6.28\",\"6.29\",\"6.30\",\"6.31\",\"6.32\",\"6.33\",\"6.34\",\"6.35\",\"6.36\",\"6.37\",\"6.38\",\"6.39\",\"6.40\",\"6.41\",\"6.42\",\"6.43\",\"6.44\",\"6.45\",\"6.46\",\"6.47\",\"6.48\",\"6.49\",\"6.50\",\"6.51\",\"6.52\",\"6.53\",\"6.54\",\"6.55\",\"6.56\",\"6.57\",\"6.58\",\"6.59\",\"6.60\",\"6.61\",\"6.62\",\"6.63\",\"6.64\",\"6.65\",\"6.66\",\"6.67\",\"6.68\",\"6.69\",\"6.70\",\"6.71\",\"6.72\",\"6.73\",\"6.74\",\"6.75\",\"6.76\",\"6.77\",\"6.78\",\"6.79\",\"6.80\",\"6.81\",\"6.82\",\"6.83\",\"6.84\",\"6.85\",\"6.86\",\"6.87\",\"6.88\",\"6.89\",\"6.90\",\"6.91\",\"6.92\",\"6.93\",\"6.94\",\"6.95\",\"6.96\",\"6.97\",\"6.98\",\"6.99\",\"7.00\",\"7.01\",\"7.02\",\"7.03\",\"7.04\",\"7.05\",\"7.06\",\"7.07\",\"7.08\",\"7.09\",\"7.10\",\"7.11\",\"7.12\",\"7.13\",\"7.14\",\"7.15\",\"7.16\",\"7.17\",\"7.18\",\"7.19\",\"7.20\",\"7.21\",\"7.22\",\"7.23\",\"7.24\",\"7.25\",\"7.26\",\"7.27\",\"7.28\",\"7.29\",\"7.30\",\"7.31\",\"7.32\",\"7.33\",\"7.34\",\"7.35\",\"7.36\",\"7.37\",\"7.38\",\"7.39\",\"7.40\",\"7.41\",\"7.42\",\"7.43\",\"7.44\",\"7.45\",\"7.46\",\"7.47\",\"7.48\",\"7.49\",\"7.50\",\"7.51\",\"7.52\",\"7.53\",\"7.54\",\"7.55\",\"7.56\",\"7.57\",\"7.58\",\"7.59\",\"7.60\",\"7.61\",\"7.62\",\"7.63\",\"7.64\",\"7.65\",\"7.66\",\"7.67\",\"7.68\",\"7.69\",\"7.70\",\"7.71\",\"7.72\",\"7.73\",\"7.74\",\"7.75\",\"7.76\",\"7.77\",\"7.78\",\"7.79\",\"7.80\",\"7.81\",\"7.82\",\"7.83\",\"7.84\",\"7.85\",\"7.86\",\"7.87\",\"7.88\",\"7.89\",\"7.90\",\"7.91\",\"7.92\",\"7.93\",\"7.94\",\"7.95\",\"7.96\",\"7.97\",\"7.98\",\"7.99\",\"8.00\",\"8.01\",\"8.02\",\"8.03\",\"8.04\",\"8.05\",\"8.06\",\"8.07\",\"8.08\",\"8.09\",\"8.10\",\"8.11\",\"8.12\",\"8.13\",\"8.14\",\"8.15\",\"8.16\",\"8.17\",\"8.18\",\"8.19\",\"8.20\",\"8.21\",\"8.22\",\"8.23\",\"8.24\",\"8.25\",\"8.26\",\"8.27\",\"8.28\",\"8.29\",\"8.30\",\"8.31\",\"8.32\",\"8.33\",\"8.34\",\"8.35\",\"8.36\",\"8.37\",\"8.38\",\"8.39\",\"8.40\",\"8.41\",\"8.42\",\"8.43\",\"8.44\",\"8.45\",\"8.46\",\"8.47\",\"8.48\",\"8.49\",\"8.50\",\"8.51\",\"8.52\",\"8.53\",\"8.54\",\"8.55\",\"8.56\",\"8.57\",\"8.58\",\"8.59\",\"8.60\",\"8.61\",\"8.62\",\"8.63\",\"8.64\",\"8.65\",\"8.66\",\"8.67\",\"8.68\",\"8.69\",\"8.70\",\"8.71\",\"8.72\",\"8.73\",\"8.74\",\"8.75\",\"8.76\",\"8.77\",\"8.78\",\"8.79\",\"8.80\",\"8.81\",\"8.82\",\"8.83\",\"8.84\",\"8.85\",\"8.86\",\"8.87\",\"8.88\",\"8.89\",\"8.90\",\"8.91\",\"8.92\",\"8.93\",\"8.94\",\"8.95\",\"8.96\",\"8.97\",\"8.98\",\"8.99\",\"9.00\",\"9.01\",\"9.02\",\"9.03\",\"9.04\",\"9.05\",\"9.06\",\"9.07\",\"9.08\",\"9.09\",\"9.10\",\"9.11\",\"9.12\",\"9.13\",\"9.14\",\"9.15\",\"9.16\",\"9.17\",\"9.18\",\"9.19\",\"9.20\",\"9.21\",\"9.22\",\"9.23\",\"9.24\",\"9.25\",\"9.26\",\"9.27\",\"9.28\",\"9.29\",\"9.30\",\"9.31\",\"9.32\",\"9.33\",\"9.34\",\"9.35\",\"9.36\",\"9.37\",\"9.38\",\"9.39\",\"9.40\",\"9.41\",\"9.42\",\"9.43\",\"9.44\",\"9.45\",\"9.46\",\"9.47\",\"9.48\",\"9.49\",\"9.50\",\"9.51\",\"9.52\",\"9.53\",\"9.54\",\"9.55\",\"9.56\",\"9.57\",\"9.58\",\"9.59\",\"9.60\",\"9.61\",\"9.62\",\"9.63\",\"9.64\",\"9.65\",\"9.66\",\"9.67\",\"9.68\",\"9.69\",\"9.70\",\"9.71\",\"9.72\",\"9.73\",\"9.74\",\"9.75\",\"9.76\",\"9.77\",\"9.78\",\"9.79\",\"9.80\",\"9.81\",\"9.82\",\"9.83\",\"9.84\",\"9.85\",\"9.86\",\"9.87\",\"9.88\",\"9.89\",\"9.90\",\"9.91\",\"9.92\",\"9.93\",\"9.94\",\"9.95\",\"9.96\",\"9.97\",\"9.98\",\"9.99\"]"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"Choose an answer, then press Check\""
                      },
                      {
                        "name": "OnChange",
                        "value": "var selectedAnswer = _view.comboBox2.getProperty(\"SelectedOptions\");\nl_enterK1f = (selectedAnswer.length > 0) ? selectedAnswer[0] : \"\";"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "inputdropmenu?\"inline-block\":\"none\""
                      },
                      {
                        "name": "Height",
                        "value": "\"44px\""
                      }
                    ]
                  },
                  {
                    "Name": "textField2",
                    "Type": "TextField",
                    "Properties": [
                      {
                        "name": "Background",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"Enter the reading in millimetres, then press Check\""
                      },
                      {
                        "name": "Value",
                        "value": "l_enterK1f"
                      },
                      {
                        "name": "OnChange",
                        "value": "showAnswerFlag=false;\n"
                      },
                      {
                        "name": "Width",
                        "value": "\"clamp(110px,20vw,180px)\""
                      },
                      {
                        "name": "Height",
                        "value": "\"44px\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "!inputdropmenu?\"inline-block\":\"none\""
                      }
                    ]
                  },
                  {
                    "Name": "checkButton",
                    "Type": "Button",
                    "Properties": [
                      {
                        "name": "Tooltip",
                        "value": "\"Check the entered micrometer reading\""
                      },
                      {
                        "name": "Text",
                        "value": "\"Check\""
                      },
                      {
                        "name": "OnClick",
                        "value": "if (String(l_enterK1f).trim()===\"\") {\n  K1fcorrect=\"Enter a reading before checking.\";\n  K1fcorrectbackground=\"rgba(255,245,200,255)\";\n} else {\n  hasAttempted=true;\n  showhint=true;\n  hintStage=4;\n  showAnswerFlag=true;\n}"
                      },
                      {
                        "name": "Width",
                        "value": "\"clamp(72px,14vw,110px)\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "zeroErrorUnitLabel",
                    "Type": "Label",
                    "Properties": [
                      {
                        "name": "Background",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"millimetre\""
                      },
                      {
                        "name": "Text",
                        "value": "\" mm \""
                      },
                      {
                        "name": "Visibility",
                        "value": "!_isMobile"
                      },
                      {
                        "name": "Height",
                        "value": "!_isMobile?\"\":\"0\""
                      },
                      {
                        "name": "Width",
                        "value": "!_isMobile?\"\":\"0\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  }
                ]
              },
              {
                "Name": "collate",
                "Type": "TwoStateButton",
                "Properties": [
                  {
                    "name": "OffClick",
                    "value": "_view.inputfield.getStyle().setDisplay(\"none\");\nkheight=0.96;\n//_view.plottingPanel.getGraphics().setHeight(changeOrientation(0.95));"
                  },
                  {
                    "name": "TextOn",
                    "value": "\"\u2630\""
                  },
                  {
                    "name": "TextOff",
                    "value": "\"\u25c0\""
                  },
                  {
                    "name": "OnClick",
                    "value": "_view.inputfield.getStyle().setDisplay(\"inline-flex\");\n//changeOrientation(0.5);\nkheight=0.90;\n//_view.plottingPanel.getGraphics().setHeight(changeOrientation(0.85));\n//_view.plottingPanel.propertyChanged(\"Height\",\"100%\");\n//_view._update();\n"
                  },
                  {
                    "name": "Font",
                    "value": "\"normal normal \"+Math.max(16,Math.min(24,Math.max(document.documentElement.clientWidth,window.innerWidth||0)*2.2/100))+\"px sans-serif\""
                  },
                  {
                    "name": "Display",
                    "value": "\"none\""
                  }
                ]
              }
            ]
          },
          {
            "Name": "panel",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "Height",
                "value": "\"100%\""
              },
              {
                "name": "Width",
                "value": "\"100%\""
              }
            ],
            "Children": [
              {
                "Name": "plottingPanel",
                "Type": "PlottingPanel",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "Gutters",
                    "value": "[0,0,0,0]"
                  },
                  {
                    "name": "ShowAreaRectangle",
                    "value": "false"
                  },
                  {
                    "name": "EnabledZooming",
                    "value": "true"
                  },
                  {
                    "name": "YScalePrecision",
                    "value": "0"
                  },
                  {
                    "name": "XFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "OnDoubleClick",
                    "value": "_pause();\ntoggleFullScreen();"
                  },
                  {
                    "name": "YFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "XTickStep",
                    "value": "100"
                  },
                  {
                    "name": "YTickStep",
                    "value": "100"
                  },
                  {
                    "name": "AllowScalingDragging",
                    "value": "true"
                  },
                  {
                    "name": "XAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "Height",
                    "value": "%changeOrientation()%"
                  },
                  {
                    "name": "GridXShow",
                    "value": "false"
                  },
                  {
                    "name": "Width",
                    "value": "\"100%\""
                  },
                  {
                    "name": "Enabled",
                    "value": "true"
                  },
                  {
                    "name": "Title",
                    "value": "\"World View of the Micrometer Model\""
                  },
                  {
                    "name": "MaximumY",
                    "value": "100"
                  },
                  {
                    "name": "OnDrag",
                    "value": "\nif ((mx<xi+d+3*h&&mx>xi+d+0&&my<h2&&my>-h2)||(mx<xi+d+3*h+h&&mx>xi+d+3*h&&my<h/2&&my>-h/2)){\n  test = 1;\nif (my>mys) d = d-step/4; // move up\nif (my<mys) d = d+step/4; // move down\nd=Math.max(0,d);\nd=Math.min(160,d);\nif(y<size2 && d<w2)d=w2; // move the darkgreen\nL=L0-d; // move the darkgreen\n}\ntest = 0;\n\n\n_view.plottingPanel.setProperty(\"MinimumX\",Math.max(_view.plottingPanel.getProperty(\"MinimumX\"),-350));\n_view.plottingPanel.setProperty(\"MaximumX\",Math.min(_view.plottingPanel.getProperty(\"MaximumX\"),350));\n_view.plottingPanel.setProperty(\"MinimumY\",Math.max(_view.plottingPanel.getProperty(\"MinimumY\"),-200));\n_view.plottingPanel.setProperty(\"MaximumY\",Math.min(_view.plottingPanel.getProperty(\"MaximumY\"),200));\n_view.plottingPanel.setZoomLimits([200,600]);"
                  },
                  {
                    "name": "MaximumX",
                    "value": "170"
                  },
                  {
                    "name": "EnabledDragging",
                    "value": "\"ENABLED_ANY\""
                  },
                  {
                    "name": "GridYShow",
                    "value": "false"
                  },
                  {
                    "name": "YAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "MinimumX",
                    "value": "-230"
                  },
                  {
                    "name": "MinimumY",
                    "value": "-170"
                  },
                  {
                    "name": "TitleY",
                    "value": "\"y\""
                  },
                  {
                    "name": "TitleX",
                    "value": "\"x\""
                  },
                  {
                    "name": "AutoScaleY",
                    "value": "false"
                  },
                  {
                    "name": "OnZoom",
                    "value": "//_view.plottingPanel.setProperty(\"MinimumX\",Math.max(_view.plottingPanel.getProperty(\"MinimumX\"),-80));\n//_view.plottingPanel.setProperty(\"MaximumX\",Math.min(_view.plottingPanel.getProperty(\"MaximumX\"),80));\n//_view.plottingPanel.setProperty(\"MinimumY\",Math.max(_view.plottingPanel.getProperty(\"MinimumY\"),-1.6));\n//_view.plottingPanel.setProperty(\"MaximumY\",Math.min(_view.plottingPanel.getProperty(\"MaximumY\"),1.6));\n\n_view.plottingPanel.setZoomLimits([200,600]);"
                  },
                  {
                    "name": "AutoScaleX",
                    "value": "false"
                  },
                  {
                    "name": "Visibility",
                    "value": "world===true"
                  },
                  {
                    "name": "XScalePrecision",
                    "value": "0"
                  },
                  {
                    "name": "BLMessage",
                    "value": "%K1fcorrect%"
                  },
                  {
                    "name": "BRMessage",
                    "value": "%l_msg%"
                  }
                ],
                "Children": [
                  {
                    "Name": "parts",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "Frameorange",
                        "Type": "AnalyticCurve2D",
                        "Properties": [
                          {
                            "name": "FunctionY",
                            "value": "\"-90*sin(cta)\""
                          },
                          {
                            "name": "FunctionX",
                            "value": "\"90*cos(cta)-90\""
                          },
                          {
                            "name": "NumPoints",
                            "value": "36"
                          },
                          {
                            "name": "Minimum",
                            "value": "0"
                          },
                          {
                            "name": "Maximum",
                            "value": "pi"
                          },
                          {
                            "name": "Variable",
                            "value": "\"cta\""
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Orange\""
                          },
                          {
                            "name": "Visibility",
                            "value": "false"
                          },
                          {
                            "name": "DrawLines",
                            "value": "true"
                          },
                          {
                            "name": "LineWidth",
                            "value": "40"
                          }
                        ]
                      },
                      {
                        "Name": "right2magenta2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "CornerRadius",
                            "value": "20"
                          },
                          {
                            "name": "SizeX",
                            "value": "2*size"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "zero"
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "SizeY",
                            "value": "6*size"
                          }
                        ]
                      },
                      {
                        "Name": "leftanvilgrey2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"rgba(200,220,208,1)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-w*2+size2"
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*1.5"
                          }
                        ]
                      },
                      {
                        "Name": "leftanvil2greytip2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size/2"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-w*2+size2"
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*1.5"
                          }
                        ]
                      },
                      {
                        "Name": "test",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "20"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "-w*2+size2+size/2"
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "Visibility",
                            "value": "false"
                          },
                          {
                            "name": "SizeY",
                            "value": "20"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "test2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "20"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "-0.75*size-L"
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "Visibility",
                            "value": "false"
                          },
                          {
                            "name": "SizeY",
                            "value": "20"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "object22",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Green\""
                          },
                          {
                            "name": "SizeX",
                            "value": "w2"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"SOUTH_WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-w*2+size"
                          },
                          {
                            "name": "Y",
                            "value": "y"
                          },
                          {
                            "name": "SizeY",
                            "value": "6*size"
                          },
                          {
                            "name": "OnDrag",
                            "value": "if(d<w2)y=Math.max(y,size2);\nif(d<w2&& y<size*0.75){\n  y=size*0.75;\n}\n\ny=Math.max(y,-2*size);"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          }
                        ]
                      },
                      {
                        "Name": "bottomposition",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"rgba(0,255,0,0.0)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "20"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-w*2+size+w2/2"
                          },
                          {
                            "name": "Y",
                            "value": "y+6*size/2"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "SizeY",
                            "value": "20"
                          }
                        ]
                      },
                      {
                        "Name": "bottomresize",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"rgba(0,255,0,0.0)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "20"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "bottomdragmesize"
                          },
                          {
                            "name": "Y",
                            "value": "y"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "SizeY",
                            "value": "20"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_X\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "dragemetrue2=true;\nw2 = bottomdragmesize-(-w*2+size);\nif(d<w2 && y<0.75*size) { // right side stop\n  w2=d;\n  bottomdragmesize = w2+(-w*2+size);\n  }\n  else if ( w2<=0){\n  //bottomdragmesize =  w2+(-w*2+size);\n  w2=0;\n  bottomdragmesize = 0+ (-w*2+size);\n    }\n  \nelse if(y<=size2) {\n  w2=Math.min(d,w2);\n// w2=Math.min(d,bottomdragmesize-(-w*2+size));\n}\n"
                          }
                        ]
                      },
                      {
                        "Name": "arrowdragme2",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"ANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "bottomdragmesize-dragmex"
                          },
                          {
                            "name": "X",
                            "value": "dragmex"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "Y",
                            "value": "dragmey"
                          },
                          {
                            "name": "Visibility",
                            "value": "dragemetrue2===false"
                          },
                          {
                            "name": "SizeY",
                            "value": "y-dragmey"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          },
                          {
                            "name": "Offset",
                            "value": "\"SOUTH_WEST\""
                          }
                        ]
                      },
                      {
                        "Name": "dragme2",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "X",
                            "value": "dragmex"
                          },
                          {
                            "name": "Y",
                            "value": "dragmey"
                          },
                          {
                            "name": "Text",
                            "value": "\"drag me\""
                          },
                          {
                            "name": "Visibility",
                            "value": "(dragemetrue2===false)"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "stockyellow",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "yellowruler2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"LightGray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "xmax"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "x1"
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "SizeY",
                            "value": "6*size"
                          }
                        ]
                      },
                      {
                        "Name": "yellowruler",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient2)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "xmax"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "x1"
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "SizeY",
                            "value": "6*size"
                          }
                        ]
                      },
                      {
                        "Name": "arrowSet",
                        "Type": "ArrowSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "n"
                          },
                          {
                            "name": "MarkEnd",
                            "value": "\"NONE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "zero"
                          },
                          {
                            "name": "X",
                            "value": "xv"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "MarkStart",
                            "value": "\"NONE\""
                          },
                          {
                            "name": "SizeY",
                            "value": "yv"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "horizontalline",
                        "Type": "Segment2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "xmax"
                          },
                          {
                            "name": "X",
                            "value": "x1"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "SizeY",
                            "value": "0"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "textSetnumbersonmainscale",
                        "Type": "TextSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "n2"
                          },
                          {
                            "name": "X",
                            "value": "tx"
                          },
                          {
                            "name": "Y",
                            "value": "2*size"
                          },
                          {
                            "name": "Text",
                            "value": "%txt%"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      },
                      {
                        "Name": "hintred3",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"EAST\""
                          },
                          {
                            "name": "X",
                            "value": "dx*2*integerd2+xi"
                          },
                          {
                            "name": "Y",
                            "value": "h*2"
                          },
                          {
                            "name": "Text",
                            "value": "%l_integerd2%"
                          },
                          {
                            "name": "Visibility",
                            "value": "showhint&&hintStage>=2"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      },
                      {
                        "Name": "hintred",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"EAST\""
                          },
                          {
                            "name": "X",
                            "value": "dx*integerd*2+xi"
                          },
                          {
                            "name": "Y",
                            "value": "h*2"
                          },
                          {
                            "name": "Text",
                            "value": "%l_integerd%"
                          },
                          {
                            "name": "Visibility",
                            "value": "false"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      },
                      {
                        "Name": "hintred22",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "0"
                          },
                          {
                            "name": "X",
                            "value": "dx*2*integerd2+xi"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "Attributes",
                            "value": "{ \"stroke-dasharray\":\"8 8 8 8\" } "
                          },
                          {
                            "name": "Y",
                            "value": "h*2"
                          },
                          {
                            "name": "Visibility",
                            "value": "showhint&&hintStage>=2"
                          },
                          {
                            "name": "SizeY",
                            "value": "-2*h"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "hintred2",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "0"
                          },
                          {
                            "name": "X",
                            "value": "dx*integerd*2+xi"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "Attributes",
                            "value": "{ \"stroke-dasharray\":\"8 8 8 8\" } "
                          },
                          {
                            "name": "Y",
                            "value": "h*2"
                          },
                          {
                            "name": "Visibility",
                            "value": "false"
                          },
                          {
                            "name": "SizeY",
                            "value": "-2*h"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "spindledarkgreen",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "polygon2",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "Points",
                            "value": "xpolygon"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"Gray\""
                          },
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "OnExit",
                            "value": "_pause();"
                          },
                          {
                            "name": "X",
                            "value": "xi+d"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "DrawLines",
                            "value": "true"
                          },
                          {
                            "name": "OnDrag",
                            "value": "dragemetrue=true;\n//d = ddragme - xi-1.5*h;\n\nif(y<size2 && d<w2){ //hit object left\n  d=w2;\n//ddragme = xi+w2+1.5*h;\n}\nelse if(-w*2+1.5*size2-1>=-0.75*size-L){ //hit left end 1 added arbitrary to prevent sticking\n//ddragme = xi+0+1.5*h;\nd=  0;\n}\nelse if (d>=w*1.8){\n  d =w*1.8;\n//  ddragme = xi+w*1.8+1.5*h;\n  }\nL=L0-d;\n//_play();\n\nif ((mx<xi+d+3*h&&mx>xi+d+0&&my<h2&&my>-h2)||(mx<xi+d+3*h+h&&mx>xi+d+3*h&&my<h/2&&my>-h/2))\n{\n  test = 1;\nif (my>mys) d = d-step/4; // move up\nif (my<mys) d = d+step/4; // move down\nd=Math.max(0,d);\nd=Math.min(160,d);\nif(y<size2 && d<w2)d=w2; // move the darkgreen\nL=L0-d; // move the darkgreen\n}\ntest = 0;\n\n"
                          }
                        ]
                      },
                      {
                        "Name": "polygon_dragworkinghere",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "OnRelease",
                            "value": "if (ds-d>0) \n{\n  direction=1;\n  }\n  \n  else if (ds-d<0) \n  {\n    direction=-1;\n    }\n"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"Gray\""
                          },
                          {
                            "name": "Points",
                            "value": "xpolygondrag"
                          },
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "MovesGroup",
                            "value": "false"
                          },
                          {
                            "name": "Measured",
                            "value": "true"
                          },
                          {
                            "name": "X",
                            "value": "d"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "//if (_isPlaying==true) _pause();\n//else if(_isPaused==true) _play();\n\nds = d; // for release velocity effect\n"
                          },
                          {
                            "name": "DrawLines",
                            "value": "true"
                          },
                          {
                            "name": "OnDrag",
                            "value": "\n\ndragemetrue=true;\n//d = ddragme - xi-1.5*h;\n\nif(y<size2 && d<w2){ //hit object left\n  d=w2;\n//ddragme = xi+w2+1.5*h;\n}\nelse if(-w*2+1.5*size2-1>=-0.75*size-L){ //hit left end 1 added arbitrary to prevent sticking\n//ddragme = xi+0+1.5*h;\nd=  0;\n}\nelse if (d>=w*1.8){\n  d =w*1.8;\n//  ddragme = xi+w*1.8+1.5*h;\n  }\nL=L0-d;\n//_play();\n\nif ((mx<xi+d+3*h&&mx>xi+d+0&&my<h2&&my>-h2)||(mx<xi+d+3*h+h&&mx>xi+d+3*h&&my<h/2&&my>-h/2))\n{\n  test = 1;\nif (my>mys) d = d-step/4; // move up\nif (my<mys) d = d+step/4; // move down\nd=Math.max(0,d);\nd=Math.min(160,d);\nif(y<size2 && d<w2)d=w2; // move the darkgreen\nL=L0-d; // move the darkgreen\n}\ntest = 0;\n\n\n\n/*\n\ndragemetrue=true;\n\nif(y<size2 && d<w2)d=w2;\nL=L0-d;\n\nxzero=xi+d;\nzero=0.;\nid=parseInt(d/dx*50);\ntc=0;\n\nfor(var i=0;i<n3;i++){\n iy=id+i-10+error;\n if(iy<0)iy+=50;\n iy=iy%50;\n c=ci+dc*i;\n hy[i]=R*Math.sin(c);\n \n hythread[i] = 1.2*R*Math.sin(c); // draw thread at higher y to fill the green dial broad part\n hythreadrachet[i] = 0.5*R*Math.sin(c);// draw thread at lower y to fill the rachet part\n \n if(iy%5===0){\n   \n  \n  if(iy%10==0){\n    hdx[i]=1.5*size; // if iy%10==0 draw a 1.5*size line\n  hdy[i] = c*7; // seems to work to create fake3D circular view\n  }\n  \n  else {\n    hdx[i]=size; // if iy%5==0 draw a size line\n//  hdy[i] = 2*Math.sin(c*3);\nhdy[i] = c*7/2;\n  }\n  \n if(tc<5){\n  yt[tc]=hy[i];\n  txty[tc]=iy+\"\";\n  tc++;\n }\n \n }\n \n else {\n hdx[i]=size2; // the rest draw a size2 line\n// hdy[i] = Math.sin(c*3); // small delta up and down\n  hdy[i] = c*7/4;\n  hdxthread[i]=-5*size2; // lines to make thread same and draw -5*size2 direction\n}\n\n}\n\n*/\n\nvar ds=d;\nvar vs = (ds-d)/dt;\nif (vs<0) direction=1;\nelse if(vs>0)direction=-1;\n"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "lock?\"ENABLED_NO_MOVE\":\"ENABLED_X\""
                          }
                        ]
                      },
                      {
                        "Name": "SVG23",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient)\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "3.5*h"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "Measured",
                            "value": "true"
                          },
                          {
                            "name": "X",
                            "value": "xi+d+0.5*h"
                          },
                          {
                            "name": "SizeY",
                            "value": "h2*2"
                          },
                          {
                            "name": "OnDrag",
                            "value": "dragemetrue=true;\n//d = ddragme - xi-1.5*h;\n\nif(y<size2 && d<w2){ //hit object left\n  d=w2;\n//ddragme = xi+w2+1.5*h;\n}\nelse if(-w*2+1.5*size2-1>=-0.75*size-L){ //hit left end 1 added arbitrary to prevent sticking\n//ddragme = xi+0+1.5*h;\nd=  0;\n}\nelse if (d>=w*1.8){\n  d =w*1.8;\n//  ddragme = xi+w*1.8+1.5*h;\n  }\nL=L0-d;\n//_play();\n\nif ((mx<xi+d+3*h&&mx>xi+d+0&&my<h2&&my>-h2)||(mx<xi+d+3*h+h&&mx>xi+d+3*h&&my<h/2&&my>-h/2))\n{\n  test = 1;\nif (my>mys) d = d-step/4; // move up\nif (my<mys) d = d+step/4; // move down\nd=Math.max(0,d);\nd=Math.min(160,d);\nif(y<size2 && d<w2)d=w2; // move the darkgreen\nL=L0-d; // move the darkgreen\n}\ntest = 0;\n\n\n\n/*\n\ndragemetrue=true;\n\nif(y<size2 && d<w2)d=w2;\nL=L0-d;\n\nxzero=xi+d;\nzero=0.;\nid=parseInt(d/dx*50);\ntc=0;\n\nfor(var i=0;i<n3;i++){\n iy=id+i-10+error;\n if(iy<0)iy+=50;\n iy=iy%50;\n c=ci+dc*i;\n hy[i]=R*Math.sin(c);\n \n hythread[i] = 1.2*R*Math.sin(c); // draw thread at higher y to fill the green dial broad part\n hythreadrachet[i] = 0.5*R*Math.sin(c);// draw thread at lower y to fill the rachet part\n \n if(iy%5===0){\n   \n  \n  if(iy%10==0){\n    hdx[i]=1.5*size; // if iy%10==0 draw a 1.5*size line\n  hdy[i] = c*7; // seems to work to create fake3D circular view\n  }\n  \n  else {\n    hdx[i]=size; // if iy%5==0 draw a size line\n//  hdy[i] = 2*Math.sin(c*3);\nhdy[i] = c*7/2;\n  }\n  \n if(tc<5){\n  yt[tc]=hy[i];\n  txty[tc]=iy+\"\";\n  tc++;\n }\n \n }\n \n else {\n hdx[i]=size2; // the rest draw a size2 line\n// hdy[i] = Math.sin(c*3); // small delta up and down\n  hdy[i] = c*7/4;\n  hdxthread[i]=-5*size2; // lines to make thread same and draw -5*size2 direction\n}\n\n}\n\n*/"
                          }
                        ]
                      },
                      {
                        "Name": "SVGwhiteboard_to_bend_with",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "SizeX",
                            "value": "5.5*h"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "xi+d+2.5*h"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "SizeY",
                            "value": "h2*2"
                          }
                        ]
                      },
                      {
                        "Name": "image",
                        "Type": "Image2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "1.5*h"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "X",
                            "value": "xi+d+2.5*h"
                          },
                          {
                            "name": "ImageUrl",
                            "value": "\"./Micrometer/pattern-1314301_640.jpg\""
                          },
                          {
                            "name": "SizeY",
                            "value": "h2*2.1"
                          }
                        ]
                      },
                      {
                        "Name": "rough2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"LightGray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size/8"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "ddragme"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "Visibility",
                            "value": "false"
                          },
                          {
                            "name": "SizeY",
                            "value": "h2*2"
                          }
                        ]
                      },
                      {
                        "Name": "rough",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"LightGray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size/8"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "3*h+xi+d"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "h2*2"
                          }
                        ]
                      },
                      {
                        "Name": "drag",
                        "Type": "Group2D",
                        "Expanded": "false",
                        "Properties": [
                          {
                            "name": "X",
                            "value": "30"
                          },
                          {
                            "name": "Visibility",
                            "value": "false"
                          }
                        ],
                        "Children": [
                          {
                            "Name": "reposition3",
                            "Type": "Shape2D",
                            "Properties": [
                              {
                                "name": "FillColor",
                                "value": "\"rgba(0,255,0,0.0)\""
                              },
                              {
                                "name": "Sensitivity",
                                "value": "100"
                              },
                              {
                                "name": "SizeX",
                                "value": "20"
                              },
                              {
                                "name": "ShapeType",
                                "value": "\"WHEEL\""
                              },
                              {
                                "name": "X",
                                "value": "d"
                              },
                              {
                                "name": "LineColor",
                                "value": "\"Green\""
                              },
                              {
                                "name": "OnEnter",
                                "value": "\nif (d >=160||d<=0){\n  direction=+1;\n}\n\nif (firsttime==true&&_isPaused){\n//alerttext= \"micrometer is playing\";\n//alert(\"micrometer is playing\");\n //EJSS_INTERFACE.BoxPanel.showOkDialog(\"micrometer is playing\");\n //document.getElementById(\".myBoxPanelOk\").style.top = \"0px\";\n//_play();\nfirsttime=false;\n}\n\n"
                              },
                              {
                                "name": "Y",
                                "value": "0"
                              },
                              {
                                "name": "PixelSize",
                                "value": "true"
                              },
                              {
                                "name": "SizeY",
                                "value": "20"
                              },
                              {
                                "name": "EnabledPosition",
                                "value": "lock?\"NONE\":\"ENABLED_X\""
                              },
                              {
                                "name": "OnDrag",
                                "value": "dragemetrue=true;\n//d = ddragme - xi-1.5*h;\n\nif(y<size2 && d<w2){ //hit object left\n  d=w2;\n//ddragme = xi+w2+1.5*h;\n}\nelse if(-w*2+1.5*size2-1>=-0.75*size-L){ //hit left end 1 added arbitrary to prevent sticking\n//ddragme = xi+0+1.5*h;\nd=  0;\n}\nelse if (d>=w*1.8){\n  d =w*1.8;\n//  ddragme = xi+w*1.8+1.5*h;\n  }\nL=L0-d;\n"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "Name": "arrowdragme",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"ANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "d+30-dragmex"
                          },
                          {
                            "name": "X",
                            "value": "dragmex"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "Y",
                            "value": "dragmey"
                          },
                          {
                            "name": "Visibility",
                            "value": "dragemetrue===false"
                          },
                          {
                            "name": "SizeY",
                            "value": "0-dragmey"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          },
                          {
                            "name": "Offset",
                            "value": "\"SOUTH_WEST\""
                          }
                        ]
                      },
                      {
                        "Name": "dragme",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "X",
                            "value": "dragmex"
                          },
                          {
                            "name": "Y",
                            "value": "dragmey"
                          },
                          {
                            "name": "Text",
                            "value": "\"drag me\""
                          },
                          {
                            "name": "Visibility",
                            "value": "(dragemetrue===false)"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      },
                      {
                        "Name": "timblegreen",
                        "Type": "Group2D",
                        "Expanded": "false",
                        "Properties": [],
                        "Children": [
                          {
                            "Name": "textSet2",
                            "Type": "TextSet2D",
                            "Properties": [
                              {
                                "name": "NumberOfElements",
                                "value": "tc"
                              },
                              {
                                "name": "RelativePosition",
                                "value": "\"WEST\""
                              },
                              {
                                "name": "X",
                                "value": "xzero+2*size"
                              },
                              {
                                "name": "Y",
                                "value": "yt"
                              },
                              {
                                "name": "Text",
                                "value": "%txty%"
                              },
                              {
                                "name": "PixelSize",
                                "value": "true"
                              },
                              {
                                "name": "Font",
                                "value": "font"
                              }
                            ]
                          },
                          {
                            "Name": "shorthorizontalline",
                            "Type": "SegmentSet2D",
                            "Properties": [
                              {
                                "name": "NumberOfElements",
                                "value": "n3"
                              },
                              {
                                "name": "SizeX",
                                "value": "hdx"
                              },
                              {
                                "name": "X",
                                "value": "xzero"
                              },
                              {
                                "name": "LineColor",
                                "value": "\"Black\""
                              },
                              {
                                "name": "Y",
                                "value": "hy"
                              },
                              {
                                "name": "SizeY",
                                "value": "hdy"
                              },
                              {
                                "name": "LineWidth",
                                "value": "2"
                              },
                              {
                                "name": "Offset",
                                "value": "\"SOUTH_WEST\""
                              }
                            ]
                          },
                          {
                            "Name": "graduatemarksblue",
                            "Type": "ArrowSet2D",
                            "Properties": [
                              {
                                "name": "NumberOfElements",
                                "value": "n3"
                              },
                              {
                                "name": "MarkEnd",
                                "value": "\"NONE\""
                              },
                              {
                                "name": "SizeX",
                                "value": "hdx"
                              },
                              {
                                "name": "X",
                                "value": "xzero+7*size+h"
                              },
                              {
                                "name": "LineColor",
                                "value": "\"Black\""
                              },
                              {
                                "name": "Y",
                                "value": "hythread"
                              },
                              {
                                "name": "MarkStart",
                                "value": "\"NONE\""
                              },
                              {
                                "name": "SizeY",
                                "value": "zero"
                              },
                              {
                                "name": "LineWidth",
                                "value": "2"
                              }
                            ]
                          },
                          {
                            "Name": "graduatemarksbluelonger",
                            "Type": "ArrowSet2D",
                            "Properties": [
                              {
                                "name": "NumberOfElements",
                                "value": "n3"
                              },
                              {
                                "name": "MarkEnd",
                                "value": "\"NONE\""
                              },
                              {
                                "name": "SizeX",
                                "value": "hdxthread"
                              },
                              {
                                "name": "X",
                                "value": "xzero+7*size+h"
                              },
                              {
                                "name": "LineColor",
                                "value": "\"Black\""
                              },
                              {
                                "name": "Y",
                                "value": "hythread"
                              },
                              {
                                "name": "MarkStart",
                                "value": "\"NONE\""
                              },
                              {
                                "name": "SizeY",
                                "value": "zero"
                              },
                              {
                                "name": "LineWidth",
                                "value": "2"
                              }
                            ]
                          },
                          {
                            "Name": "horitontalguide2",
                            "Type": "Arrow2D",
                            "Properties": [
                              {
                                "name": "SizeX",
                                "value": "-xi*2"
                              },
                              {
                                "name": "X",
                                "value": "xi+d+2*xi"
                              },
                              {
                                "name": "LineColor",
                                "value": "\"Red\""
                              },
                              {
                                "name": "Attributes",
                                "value": "{ \"stroke-dasharray\":\"8 8 8 8\" } "
                              },
                              {
                                "name": "Y",
                                "value": "zero"
                              },
                              {
                                "name": "Visibility",
                                "value": "showhint&&(show||show2)"
                              },
                              {
                                "name": "SizeY",
                                "value": "0"
                              },
                              {
                                "name": "LineWidth",
                                "value": "2"
                              }
                            ]
                          },
                          {
                            "Name": "verticalguide",
                            "Type": "Arrow2D",
                            "Properties": [
                              {
                                "name": "MarkEnd",
                                "value": "\"NONE\""
                              },
                              {
                                "name": "SizeX",
                                "value": "0"
                              },
                              {
                                "name": "X",
                                "value": "xi+d+2*xi"
                              },
                              {
                                "name": "LineColor",
                                "value": "\"Red\""
                              },
                              {
                                "name": "Attributes",
                                "value": "{ \"stroke-dasharray\":\"8 8 8 8\" } "
                              },
                              {
                                "name": "Y",
                                "value": "zero"
                              },
                              {
                                "name": "MarkStart",
                                "value": "\"NONE\""
                              },
                              {
                                "name": "Visibility",
                                "value": "showhint&&(show||show2)"
                              },
                              {
                                "name": "SizeY",
                                "value": "-size*6"
                              },
                              {
                                "name": "LineWidth",
                                "value": "2"
                              }
                            ]
                          },
                          {
                            "Name": "text2",
                            "Type": "Text2D",
                            "Properties": [
                              {
                                "name": "FillColor",
                                "value": "\"Red\""
                              },
                              {
                                "name": "X",
                                "value": "xi+d+2*xi"
                              },
                              {
                                "name": "Y",
                                "value": "-size*6"
                              },
                              {
                                "name": "Text",
                                "value": "%l_decimald2%"
                              },
                              {
                                "name": "Visibility",
                                "value": "showhint&&hintStage>=3"
                              },
                              {
                                "name": "PixelSize",
                                "value": "true"
                              },
                              {
                                "name": "Font",
                                "value": "font"
                              }
                            ]
                          },
                          {
                            "Name": "text",
                            "Type": "Text2D",
                            "Properties": [
                              {
                                "name": "FillColor",
                                "value": "\"Red\""
                              },
                              {
                                "name": "X",
                                "value": "xi+d+2*xi"
                              },
                              {
                                "name": "Y",
                                "value": "-size*6"
                              },
                              {
                                "name": "Text",
                                "value": "%l_decimald%"
                              },
                              {
                                "name": "Visibility",
                                "value": "false"
                              },
                              {
                                "name": "PixelSize",
                                "value": "true"
                              },
                              {
                                "name": "Font",
                                "value": "font"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "Name": "greenrod",
                        "Type": "Group2D",
                        "Expanded": "false",
                        "Properties": [],
                        "Children": [
                          {
                            "Name": "rodgreen22",
                            "Type": "Shape2D",
                            "Properties": [
                              {
                                "name": "FillColor",
                                "value": "\"LightGray\""
                              },
                              {
                                "name": "SizeX",
                                "value": "L"
                              },
                              {
                                "name": "RelativePosition",
                                "value": "\"EAST\""
                              },
                              {
                                "name": "ShapeType",
                                "value": "\"RECTANGLE\""
                              },
                              {
                                "name": "X",
                                "value": "-0.75*size"
                              },
                              {
                                "name": "Y",
                                "value": "zero"
                              },
                              {
                                "name": "SizeY",
                                "value": "size*1.5"
                              }
                            ]
                          },
                          {
                            "Name": "rodgreen2",
                            "Type": "Shape2D",
                            "Properties": [
                              {
                                "name": "FillColor",
                                "value": "\"url(#mygrandient)\""
                              },
                              {
                                "name": "SizeX",
                                "value": "L"
                              },
                              {
                                "name": "RelativePosition",
                                "value": "\"EAST\""
                              },
                              {
                                "name": "ShapeType",
                                "value": "\"RECTANGLE\""
                              },
                              {
                                "name": "X",
                                "value": "-0.75*size"
                              },
                              {
                                "name": "Y",
                                "value": "zero"
                              },
                              {
                                "name": "SizeY",
                                "value": "size*1.5"
                              }
                            ]
                          },
                          {
                            "Name": "rodgreentip",
                            "Type": "Shape2D",
                            "Properties": [
                              {
                                "name": "FillColor",
                                "value": "\"DarkGray\""
                              },
                              {
                                "name": "SizeX",
                                "value": "+size/2"
                              },
                              {
                                "name": "RelativePosition",
                                "value": "\"WEST\""
                              },
                              {
                                "name": "ShapeType",
                                "value": "\"RECTANGLE\""
                              },
                              {
                                "name": "X",
                                "value": "-0.73*size-L"
                              },
                              {
                                "name": "Y",
                                "value": "zero"
                              },
                              {
                                "name": "SizeY",
                                "value": "size*1.5"
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "ratcheteal",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "rachetteteal",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Cyan\""
                          },
                          {
                            "name": "SizeX",
                            "value": "h"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "xi+d+4*h"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "h"
                          }
                        ]
                      },
                      {
                        "Name": "image2",
                        "Type": "Image2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "h"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "X",
                            "value": "xi+d+4*h"
                          },
                          {
                            "name": "ImageUrl",
                            "value": "\"./Micrometer/Screen Shot 2017-01-03 at 1.58.23 PM.png\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "if (_isPlaying==true) _pause();\nelse if(_isPaused==true) _play();\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "h"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "rough222",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"LightGray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size/8"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "xzero+10*size+h"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "h"
                          }
                        ]
                      },
                      {
                        "Name": "rough22",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"LightGray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size/8"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "xzero+10*size+size*1.5+h"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "h"
                          }
                        ]
                      },
                      {
                        "Name": "graduatemarksrat",
                        "Type": "ArrowSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "n3"
                          },
                          {
                            "name": "MarkEnd",
                            "value": "\"NONE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "hdx"
                          },
                          {
                            "name": "X",
                            "value": "xzero+10*size+h"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "hythreadrachet"
                          },
                          {
                            "name": "MarkStart",
                            "value": "\"NONE\""
                          },
                          {
                            "name": "SizeY",
                            "value": "zero"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "greyframe",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "trackergood2",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "trackergdY"
                          },
                          {
                            "name": "PointsX",
                            "value": "trackergdX"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "1.1"
                          },
                          {
                            "name": "X",
                            "value": "-175"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "14"
                          },
                          {
                            "name": "LineWidth",
                            "value": "1"
                          }
                        ]
                      },
                      {
                        "Name": "trackergood",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "%trackergdY%"
                          },
                          {
                            "name": "PointsX",
                            "value": "%trackergdX%"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient1)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "1.1"
                          },
                          {
                            "name": "X",
                            "value": "-175"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "14"
                          },
                          {
                            "name": "LineWidth",
                            "value": "1"
                          }
                        ]
                      },
                      {
                        "Name": "drawingtrackerinsideline",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "[-34.72,-35.69,-40.52,-53.57,-71.45,-85.47,-95.14,-102.9,-111.6,-119.3,-128.5,-138.6,-145.4,-153.6,-158.9,-165.2,-173.0,-175.4,-176.8,-176.8,-173.4,-169.1,-163.3,-155.1,-143.0,-130.4,-119.3,-101.9,-87.89,-72.90,-58.89,-47.29,-36.65,-34.24,-33.75,-33.75,-36.17,-43.42,-73.87,-89.82,-104.3,-110.1,-115.9,-117.4,-117.4,-117.9,-112.5,-103.8,-92.72,-80.15,-55.99,-44.87,-38.59,-35.20]"
                          },
                          {
                            "name": "PointsX",
                            "value": "[-14.98,-19.33,-22.72,-29.49,-36.25,-42.05,-43.50,-42.05,-39.15,-35.77,-32.39,-25.62,-19.33,-10.63,-3.384,7.733,26.10,38.67,48.82,62.35,77.82,93.29,104.4,115.5,127.6,137.8,144.0,150.3,153.2,153.7,153.7,153.7,151.8,146.5,132.0,123.3,117.5,116.5,115.5,114.1,104.4,96.67,84.59,72.50,55.10,31.42,15.95,6.766,-1.451,-5.801,-5.801,-5.801,-6.768,-10.63]"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "1.1"
                          },
                          {
                            "name": "X",
                            "value": "-175"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "14"
                          },
                          {
                            "name": "LineWidth",
                            "value": "1"
                          }
                        ]
                      },
                      {
                        "Name": "ospsg",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "X",
                            "value": "-110"
                          },
                          {
                            "name": "Y",
                            "value": "-140"
                          },
                          {
                            "name": "Text",
                            "value": "\"Made in \ud83c\uddf8\ud83c\uddec\""
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "digitalScreen",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [
                      {
                        "name": "Visibility",
                        "value": "learningMode==\"Explore\"||isQuestionAnswered"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "box",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "%boxColour%"
                          },
                          {
                            "name": "SizeX",
                            "value": "boxSizeX"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_EAST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "x1"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "zero"
                          },
                          {
                            "name": "SizeY",
                            "value": "boxSizeY"
                          },
                          {
                            "name": "LineWidth",
                            "value": "3"
                          }
                        ]
                      },
                      {
                        "Name": "shape",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "shapeY"
                          },
                          {
                            "name": "FillColor",
                            "value": "%boxColour%"
                          },
                          {
                            "name": "PointsX",
                            "value": "shapeX"
                          }
                        ]
                      },
                      {
                        "Name": "screen",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "%screenColour%"
                          },
                          {
                            "name": "SizeX",
                            "value": "screenSizeX"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_EAST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "screenX"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"rgba(255,255,255,1)\""
                          },
                          {
                            "name": "Y",
                            "value": "screenY"
                          },
                          {
                            "name": "SizeY",
                            "value": "screenSizeY"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "units",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_EAST\""
                          },
                          {
                            "name": "X",
                            "value": "screenX-2"
                          },
                          {
                            "name": "Y",
                            "value": "screenY"
                          },
                          {
                            "name": "Text",
                            "value": "\"mm\""
                          },
                          {
                            "name": "Font",
                            "value": "%fontdigitalmonosmall%"
                          }
                        ]
                      },
                      {
                        "Name": "answer3",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_EAST\""
                          },
                          {
                            "name": "X",
                            "value": "screenX-10"
                          },
                          {
                            "name": "Y",
                            "value": "screenY-14"
                          },
                          {
                            "name": "Text",
                            "value": "_view._format(observedReading,\"0.00\")"
                          },
                          {
                            "name": "Font",
                            "value": "%fontdigitalmono%"
                          }
                        ]
                      },
                      {
                        "Name": "screw3",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Gray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/15"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_EAST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "x1-53"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "-140"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/15"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "screw2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Gray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/15"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_EAST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "x1-5"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "-73"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/15"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "screw1",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Gray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/15"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_EAST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "x1-2"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "-2"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/15"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "originButton",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "ShapeType",
                            "value": "\"ELLIPSE\""
                          },
                          {
                            "name": "X",
                            "value": "screenX"
                          },
                          {
                            "name": "Y",
                            "value": "screenY"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "unlock22",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "-48"
                      },
                      {
                        "name": "Visibility",
                        "value": "!lock"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "rod2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "Transformation",
                            "value": "-pi/4"
                          },
                          {
                            "name": "SizeX",
                            "value": "size/5*size"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "lock=true;"
                          },
                          {
                            "name": "SizeY",
                            "value": "size/20*size"
                          }
                        ]
                      },
                      {
                        "Name": "circle2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/7"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "//lock ();\nlock=true;\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/7"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "circle23",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/14"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ELLIPSE\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "lock ();"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/14"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "circle22",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/21"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "//lock ();\nlock=true;\nalert(\"lock=\"+lock);"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/21"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "lock",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "-48"
                      },
                      {
                        "name": "Visibility",
                        "value": "lock"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "rod22",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Magenta\""
                          },
                          {
                            "name": "Transformation",
                            "value": "-3*pi/4"
                          },
                          {
                            "name": "SizeX",
                            "value": "size/5*size"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "lock=false;\n\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "size/20*size"
                          }
                        ]
                      },
                      {
                        "Name": "circle24",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/7"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "lock=false;\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/7"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "circle232",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/14"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ELLIPSE\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "lock=false;"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/14"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "circle222",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"DarkGray\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "size*size/21"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "OnPress",
                            "value": "//lock ();\nlock=false;\nalert(\"lock=\"+lock);\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*size/21"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "step",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "d+30"
                      },
                      {
                        "name": "Y",
                        "value": "45"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "image3",
                        "Type": "Image2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "40"
                          },
                          {
                            "name": "X",
                            "value": "-direction*3"
                          },
                          {
                            "name": "ImageUrl",
                            "value": "\"./Micrometer/unnamed.gif\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "40"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "arrow2",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"TRIANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "-20"
                          },
                          {
                            "name": "OnPress",
                            "value": "direction=1;\n_step();"
                          },
                          {
                            "name": "SizeY",
                            "value": "0"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "arrow",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"TRIANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "20"
                          },
                          {
                            "name": "OnPress",
                            "value": "direction=-1;\n_step();"
                          },
                          {
                            "name": "SizeY",
                            "value": "0"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "answer",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "Y",
                        "value": "size*5"
                      },
                      {
                        "name": "Text",
                        "value": "%K1fcorrect%"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "mytext",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "Y",
                        "value": "ymax/2"
                      },
                      {
                        "name": "Text",
                        "value": "\"mytext\""
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "dragdot",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"Magenta\""
                      },
                      {
                        "name": "Sensitivity",
                        "value": "0"
                      },
                      {
                        "name": "SizeX",
                        "value": "50"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"CENTERED\""
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"RECTANGLE\""
                      },
                      {
                        "name": "X",
                        "value": "d"
                      },
                      {
                        "name": "Y",
                        "value": "-100"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      },
                      {
                        "name": "SizeY",
                        "value": "50"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_X\""
                      },
                      {
                        "name": "OnDrag",
                        "value": "//dragemetrue=true;\n//d = ddragme - xi-1.5*h;\n/*\nif(y<size2 && d<w2){ //hit object left\n  d=w2;\n//ddragme = xi+w2+1.5*h;\n}\nelse if(-w*2+1.5*size2-1>=-0.75*size-L){ //hit left end 1 added arbitrary to prevent sticking\n//ddragme = xi+0+1.5*h;\nd=  0;\n}\nelse if (d>=w*1.8){\n  d =w*1.8;\n//  ddragme = xi+w*1.8+1.5*h;\n  }\n  */\n//L=L0-d;\n"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "Name": "text3",
            "Type": "Panel",
            "Properties": [
              {
                "name": "Html",
                "value": "<h2>General Description</h2>\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/Wf9KXUThwbk?si=jyBP0sZi-DdGAD2n\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe>\n<p>This JavaScript app simulates a micrometer screw gauge used to measure the external dimensions of a rectangular object.</p>\n\n<p>The green object is positioned between the anvil and spindle. Learners can drag the object and adjust its size, then operate the micrometer to measure its width.</p>\n\n<h2>Visual Elements</h2>\n\n<ul>\n  <li><strong>Frame:</strong> The C-shaped body that holds the anvil and sleeve in a fixed position. Its rigid construction minimizes expansion, contraction, and deformation that could affect the measurement. Labels such as \u201c0.01 mm\u201d and \u201c2 rotations = 100 divisions = 1.00 mm\u201d help learners connect the simulation to the operation of an actual micrometer.</li>\n\n  <li><strong>Anvil:</strong> The fixed, polished measuring surface against which the object rests.</li>\n\n  <li><strong>Sleeve (barrel or stock):</strong> The stationary cylindrical part bearing the main linear scale.</li>\n\n  <li><strong>Lock nut (lock ring or thimble lock):</strong> Holds the spindle in position so that a reading can be taken without changing the measurement.</li>\n\n  <li><strong>Screw:</strong> The internal mechanism at the heart of the micrometer. It converts the rotation of the thimble into the linear movement of the spindle.</li>\n\n  <li><strong>Spindle:</strong> The movable, polished cylindrical measuring surface that advances towards the anvil.</li>\n\n  <li><strong>Thimble:</strong> The rotating part operated by the thumb and fingers. Its graduated scale is used together with the sleeve scale to obtain the measurement.</li>\n\n  <li><strong>Ratchet:</strong> The device at the end of the micrometer that limits the applied measuring force by slipping when the calibrated torque is reached.</li>\n\n  <li><strong>Fine-control arrows:</strong> Allow learners to move the spindle in precise, single-step increments.</li>\n\n  <li><strong>Measurement display:</strong> The micrometer provides readings to the nearest 0.01 mm.</li>\n</ul>\n\n<h2>Controls</h2>\n\n<ul>\n  <li><strong>Learning mode:</strong> Choose <em>Explore</em>, <em>Practice</em>, or <em>Challenge</em>. Learners can also request the next guided hint, lock or unlock the spindle, or begin a new challenge.</li>\n\n  <li><strong>Zero error:</strong> Select a positive or negative zero error in millimetres. In Challenge mode, the zero error is randomized.</li>\n\n  <li><strong>Play:</strong> Starts the automatic movement of the micrometer spindle.</li>\n\n  <li><strong>Reset:</strong> Returns the simulation to its default state.</li>\n\n  <li><strong>New Challenge:</strong> Generates a new object measurement and zero error.</li>\n\n  <li><strong>Answer input:</strong> Switch between selecting an answer from a list and entering the reading as text.</li>\n\n  <li><strong>Check:</strong> After selecting or entering a reading, press <em>Check</em> to receive feedback.</li>\n\n  <li><strong>Full-screen mode:</strong> Double-click or double-tap the screen to enter full-screen mode. This is particularly useful on mobile devices.</li>\n\n  <li><strong>Reposition:</strong> Drag the simulation to reposition it on the screen.</li>\n\n  <li><strong>Zoom:</strong> Pinch in or out to examine the micrometer scales more closely.</li>\n\n  <li><strong>Menu:</strong> Show or hide the control panel.</li>\n</ul>\n\n<h2>Related Resources</h2>\n\n<ul>\n  <li><a href=\"https://iwant2study.moe.edu.sg\" target=\"_blank\" rel=\"noopener noreferrer\">Visit the official MOE-hosted iWant2Study website</a></li>\n\n  <li><a href=\"https://iwant2study.org/\" target=\"_blank\" rel=\"noopener noreferrer\">Browse the full catalogue and search for interactive resources</a></li>\n\n  <li><a href=\"https://sg.iwant2study.org/ospsg/index.php/interactive-resources/physics/01-foundations-of-physics/quantities-measurement\" target=\"_blank\" rel=\"noopener noreferrer\">Explore resources on physical quantities and measurement</a></li>\n\n  <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-foundations-of-physics/1189-digitalmicrometer\" target=\"_blank\" rel=\"noopener noreferrer\">Explore the digital micrometer version</a></li>\n\n  <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-measurements/1005-micrometer02manualversion\" target=\"_blank\" rel=\"noopener noreferrer\">Explore the manual micrometer version</a></li>\n\n  <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-measurements/6-micrometer02\" target=\"_blank\" rel=\"noopener noreferrer\">Open the full-screen micrometer version</a></li>\n</ul>"
              }
            ]
          }
        ]
      }
    ],
    "RootProperties": []
  },
  "metadata": {
    "APP": "WebEJS",
    "CreatedWith": "WebEJS : The web version of Easy JavaScript Simulations",
    "MoreInfo": "WebEJS 1.1",
    "version": "https://www.um.es/fem/wikis/webejs/"
  }
}