{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.calculatorx.com/schemas/math.percentage.input.json",
  "title": "Percentage — input",
  "oneOf": [
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "of",
            "percent-of",
            "pctof"
          ]
        },
        "p": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "pInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "P": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "x": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "xInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "X": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        }
      },
      "required": [],
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "p"
              ]
            },
            {
              "required": [
                "pInput"
              ]
            },
            {
              "required": [
                "P"
              ]
            },
            {
              "required": [
                "percent"
              ]
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "x"
              ]
            },
            {
              "required": [
                "xInput"
              ]
            },
            {
              "required": [
                "X"
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "is-what",
            "what",
            "iswhat"
          ]
        },
        "x": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "xInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "X": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "y": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "yInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "Y": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        }
      },
      "required": [
        "mode"
      ],
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "x"
              ]
            },
            {
              "required": [
                "xInput"
              ]
            },
            {
              "required": [
                "X"
              ]
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "y"
              ]
            },
            {
              "required": [
                "yInput"
              ]
            },
            {
              "required": [
                "Y"
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "of-what",
            "whole",
            "ofwhat"
          ]
        },
        "x": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "xInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "X": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "p": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "pInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "P": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        }
      },
      "required": [
        "mode"
      ],
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "x"
              ]
            },
            {
              "required": [
                "xInput"
              ]
            },
            {
              "required": [
                "X"
              ]
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "p"
              ]
            },
            {
              "required": [
                "pInput"
              ]
            },
            {
              "required": [
                "P"
              ]
            },
            {
              "required": [
                "percent"
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "change"
          ]
        },
        "oldV": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "old": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "oldInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "v1": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "v1Input": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "newV": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "new": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "newInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "v2": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "v2Input": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        }
      },
      "required": [
        "mode"
      ],
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "oldV"
              ]
            },
            {
              "required": [
                "old"
              ]
            },
            {
              "required": [
                "oldInput"
              ]
            },
            {
              "required": [
                "v1"
              ]
            },
            {
              "required": [
                "v1Input"
              ]
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "newV"
              ]
            },
            {
              "required": [
                "new"
              ]
            },
            {
              "required": [
                "newInput"
              ]
            },
            {
              "required": [
                "v2"
              ]
            },
            {
              "required": [
                "v2Input"
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "adjust-up",
            "increase"
          ]
        },
        "x": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "xInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "X": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "p": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "pInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "P": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        }
      },
      "required": [
        "mode"
      ],
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "x"
              ]
            },
            {
              "required": [
                "xInput"
              ]
            },
            {
              "required": [
                "X"
              ]
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "p"
              ]
            },
            {
              "required": [
                "pInput"
              ]
            },
            {
              "required": [
                "P"
              ]
            },
            {
              "required": [
                "percent"
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "adjust-down",
            "decrease"
          ]
        },
        "x": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "xInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "X": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "p": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "pInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "P": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        }
      },
      "required": [
        "mode"
      ],
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "x"
              ]
            },
            {
              "required": [
                "xInput"
              ]
            },
            {
              "required": [
                "X"
              ]
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "p"
              ]
            },
            {
              "required": [
                "pInput"
              ]
            },
            {
              "required": [
                "P"
              ]
            },
            {
              "required": [
                "percent"
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "difference",
            "diff"
          ]
        },
        "a": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "aInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "A": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "b": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "bInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "B": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        }
      },
      "required": [
        "mode"
      ],
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "a"
              ]
            },
            {
              "required": [
                "aInput"
              ]
            },
            {
              "required": [
                "A"
              ]
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "b"
              ]
            },
            {
              "required": [
                "bInput"
              ]
            },
            {
              "required": [
                "B"
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "mode": {
          "const": "adjust"
        },
        "dir": {
          "enum": [
            "increase",
            "up",
            "adjust-up",
            "decrease",
            "down",
            "adjust-down"
          ]
        },
        "adjustDir": {
          "enum": [
            "increase",
            "up",
            "adjust-up",
            "decrease",
            "down",
            "adjust-down"
          ]
        },
        "x": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "xInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "X": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ]
        },
        "p": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "pInput": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "P": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        },
        "percent": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
            }
          ],
          "x-unit": "%",
          "x-unit-id": "cx:percent",
          "x-quantity-kind": "ratio",
          "x-role": "scalar",
          "x-dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "x-uuce-unit": {
            "unit_id": "cx:percent",
            "revision": "1.0.0",
            "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
            "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
            "quantity_kind": "ratio",
            "dimension": [
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ],
            "registry_version": "0.3.0-preview.3",
            "digest_contract": "calculatorx-unit-definition-digests-v2",
            "registry_status": "preview",
            "definition_lifecycle": "candidate",
            "role": "scalar"
          }
        }
      },
      "required": [
        "mode"
      ],
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "x"
              ]
            },
            {
              "required": [
                "xInput"
              ]
            },
            {
              "required": [
                "X"
              ]
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "p"
              ]
            },
            {
              "required": [
                "pInput"
              ]
            },
            {
              "required": [
                "P"
              ]
            },
            {
              "required": [
                "percent"
              ]
            }
          ]
        }
      ]
    }
  ],
  "description": "Seven percentage modes; each needs its two active fields. Decimal strings up to512 characters or finite binary64 numbers; aliases must agree after normalization. Reject nonzero conversion/output underflow, overflow, zero denominator and negative difference operands. Difference average and change delta must also be representable. Explicit zero canonicalizes to +0. (calculation_version 1.2.0)",
  "x-unit-contract": {
    "protocol": "calculatorx-field-unit-contract-v1",
    "capability_id": "math.percentage",
    "registry_version": "0.3.0-preview.3",
    "declaration_scope": "Field/branch declarations only; inactive fields are not asserted to exist. No conversion-engine migration or new numerical certification.",
    "path_format": "Paths relative to inputs or result_detail.value; dot separates properties, * denotes array items, $ denotes a scalar result.",
    "inputs": {
      "p": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "pInput": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "P": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "percent": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      }
    },
    "outputs": {
      "P": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "percent_change": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      },
      "percent_difference": {
        "unit": "%",
        "reference": {
          "unit_id": "cx:percent",
          "revision": "1.0.0",
          "content_digest": "f73c887f011a6f997b183701a1b03417b3c89a863747910a54ae79c6a6b9f963",
          "dependency_digest": "58d9bc109880e0c8ea6d45264fbba933f64a17cf17586d2a8dbbf7cbea14566d",
          "quantity_kind": "ratio",
          "dimension": [
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "registry_version": "0.3.0-preview.3",
          "digest_contract": "calculatorx-unit-definition-digests-v2",
          "registry_status": "preview",
          "definition_lifecycle": "candidate",
          "role": "scalar"
        }
      }
    },
    "scalar_result_policy": "result.value is percent only in percentage-solving modes; in amount-solving modes it inherits the amount unit. Follow the selected mode and result.unit."
  }
}
