{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "SurveyJS Library json schema",
    "type": "object",
    "properties": {
        "matrixDragHandleArea": {
            "type": "string",
            "enum": [
                "entireItem",
                "icon"
            ]
        },
        "sjsVersion": {
            "type": "string"
        },
        "$schema": {
            "type": "string"
        },
        "pages": {
            "type": "array",
            "items": {
                "$href": "#page"
            }
        },
        "fitToContainer": {
            "type": "boolean"
        },
        "headerView": {
            "type": [
                "boolean",
                "string"
            ],
            "enum": [
                "basic",
                "advanced"
            ]
        },
        "showBrandInfo": {
            "type": "boolean"
        },
        "triggers": {
            "type": "array",
            "items": [
                {
                    "$href": "#visibletrigger"
                },
                {
                    "$href": "#completetrigger"
                },
                {
                    "$href": "#setvaluetrigger"
                },
                {
                    "$href": "#skiptrigger"
                },
                {
                    "$href": "#runexpressiontrigger"
                },
                {
                    "$href": "#copyvaluetrigger"
                }
            ]
        },
        "calculatedValues": {
            "type": "array",
            "items": {
                "$href": "#calculatedvalue"
            }
        },
        "surveyId": {
            "type": "string"
        },
        "surveyPostId": {
            "type": "string"
        },
        "cookieName": {
            "type": "string"
        },
        "partialSendEnabled": {
            "type": "boolean"
        },
        "sendResultOnPageNext": {
            "type": "boolean"
        },
        "surveyShowDataSaving": {
            "type": "boolean"
        },
        "autoFocusFirstQuestion": {
            "type": "boolean"
        },
        "focusFirstQuestionAutomatic": {
            "type": "boolean"
        },
        "autoFocusFirstError": {
            "type": "boolean"
        },
        "focusOnFirstError": {
            "type": "boolean"
        },
        "showNavigationButtons": {
            "type": [
                "string",
                "numeric",
                "boolean"
            ]
        },
        "navigationButtonsLocation": {
            "type": [
                "string",
                "numeric",
                "boolean"
            ],
            "enum": [
                "top",
                "bottom",
                "topBottom"
            ]
        },
        "showPrevButton": {
            "type": "boolean"
        },
        "showTOC": {
            "type": "boolean"
        },
        "tocLocation": {
            "type": [
                "boolean",
                "string"
            ],
            "enum": [
                "left",
                "right"
            ]
        },
        "showTitle": {
            "type": "boolean"
        },
        "showPageTitles": {
            "type": "boolean"
        },
        "showCompletePage": {
            "type": "boolean"
        },
        "showCompletedPage": {
            "type": "boolean"
        },
        "navigateToUrl": {
            "type": "string"
        },
        "navigateToUrlOnCondition": {
            "type": "array",
            "items": {
                "$href": "#urlconditionitem"
            }
        },
        "requiredMark": {
            "type": "string"
        },
        "requiredText": {
            "type": "string"
        },
        "questionStartIndex": {
            "type": "string"
        },
        "storeOthersAsComment": {
            "type": "boolean"
        },
        "maxTextLength": {
            "type": "number"
        },
        "maxCommentLength": {
            "type": "number"
        },
        "maxOthersLength": {
            "type": "number"
        },
        "autoAdvanceEnabled": {
            "type": "boolean"
        },
        "goNextPageAutomatic": {
            "type": "boolean"
        },
        "autoAdvanceAllowComplete": {
            "type": "boolean"
        },
        "allowCompleteSurveyAutomatic": {
            "type": "boolean"
        },
        "checkErrorsMode": {
            "type": "string",
            "enum": [
                "onNextPage",
                "onValueChanged",
                "onComplete"
            ]
        },
        "validateVisitedEmptyFields": {
            "type": "boolean"
        },
        "autoGrowComment": {
            "type": "boolean"
        },
        "allowResizeComment": {
            "type": "boolean"
        },
        "commentAreaRows": {
            "type": "number"
        },
        "textUpdateMode": {
            "type": "string",
            "enum": [
                "onBlur",
                "onTyping"
            ]
        },
        "clearInvisibleValues": {
            "type": [
                "string",
                "numeric",
                "boolean"
            ],
            "enum": [
                "none",
                "onComplete",
                "onHidden",
                "onHiddenContainer"
            ]
        },
        "locale": {
            "type": "string"
        },
        "logo": {
            "type": "string"
        },
        "logoWidth": {
            "type": [
                "string",
                "numeric",
                "boolean"
            ]
        },
        "logoHeight": {
            "type": [
                "string",
                "numeric",
                "boolean"
            ]
        },
        "logoPosition": {
            "type": "string",
            "enum": [
                "none",
                "left",
                "right",
                "top",
                "bottom"
            ]
        },
        "logoFit": {
            "type": "string",
            "enum": [
                "none",
                "contain",
                "cover",
                "fill"
            ]
        },
        "backgroundImage": {
            "type": "string"
        },
        "backgroundImageFit": {
            "type": [
                "boolean",
                "string"
            ],
            "enum": [
                "auto",
                "contain",
                "cover"
            ]
        },
        "backgroundImageAttachment": {
            "type": [
                "boolean",
                "string"
            ],
            "enum": [
                "scroll",
                "fixed"
            ]
        },
        "backgroundOpacity": {
            "type": "number"
        },
        "completedHtml": {
            "type": "string"
        },
        "completedHtmlOnCondition": {
            "type": "array",
            "items": {
                "$href": "#htmlconditionitem"
            }
        },
        "completedBeforeHtml": {
            "type": "string"
        },
        "loadingHtml": {
            "type": "string"
        },
        "startSurveyText": {
            "type": "string"
        },
        "pagePrevText": {
            "type": "string"
        },
        "pageNextText": {
            "type": "string"
        },
        "completeText": {
            "type": "string"
        },
        "previewText": {
            "type": "string"
        },
        "editText": {
            "type": "string"
        },
        "questionTitlePattern": {
            "type": "string"
        },
        "showPageNumbers": {
            "type": "boolean"
        },
        "showQuestionNumbers": {
            "type": [
                "boolean",
                "string"
            ],
            "enum": [
                "on",
                "onPage",
                "recursive",
                "off"
            ]
        },
        "showProgressBar": {
            "type": "boolean"
        },
        "progressBarLocation": {
            "type": "string",
            "enum": [
                "auto",
                "aboveheader",
                "belowheader",
                "bottom",
                "topbottom"
            ]
        },
        "progressBarType": {
            "type": "string",
            "enum": [
                "pages",
                "questions",
                "requiredQuestions",
                "correctQuestions"
            ]
        },
        "progressBarShowPageTitles": {
            "type": "boolean"
        },
        "progressBarShowPageNumbers": {
            "type": "boolean"
        },
        "progressBarInheritWidthFrom": {
            "type": [
                "boolean",
                "string"
            ],
            "enum": [
                "container",
                "survey"
            ]
        },
        "questionTitleLocation": {
            "type": "string",
            "enum": [
                "top",
                "bottom",
                "left"
            ]
        },
        "questionErrorLocation": {
            "type": "string",
            "enum": [
                "top",
                "bottom"
            ]
        },
        "questionDescriptionLocation": {
            "type": "string",
            "enum": [
                "underInput",
                "underTitle",
                "hidden"
            ]
        },
        "readOnly": {
            "type": "boolean"
        },
        "questionOrder": {
            "type": "string",
            "enum": [
                "initial",
                "random"
            ]
        },
        "questionsOrder": {
            "type": "string",
            "enum": [
                "initial",
                "random"
            ]
        },
        "questionsOnPageMode": {
            "type": "string",
            "enum": [
                "standard",
                "singlePage",
                "questionPerPage",
                "inputPerPage"
            ]
        },
        "firstPageIsStartPage": {
            "type": "boolean"
        },
        "firstPageIsStarted": {
            "type": "boolean"
        },
        "showPreviewBeforeComplete": {
            "type": [
                "string",
                "numeric",
                "boolean"
            ]
        },
        "previewMode": {
            "type": "string",
            "enum": [
                "allQuestions",
                "answeredQuestions"
            ]
        },
        "showTimer": {
            "type": "boolean"
        },
        "timerLocation": {
            "type": "string",
            "enum": [
                "top",
                "bottom"
            ]
        },
        "timerInfoMode": {
            "type": "string",
            "enum": [
                "page",
                "survey",
                "combined"
            ]
        },
        "showTimerPanelMode": {
            "type": "string",
            "enum": [
                "page",
                "survey",
                "combined"
            ]
        },
        "gridLayoutEnabled": {
            "type": "boolean"
        },
        "widthMode": {
            "type": "string",
            "enum": [
                "auto",
                "static",
                "responsive"
            ]
        },
        "width": {
            "type": "string"
        },
        "timeLimit": {
            "type": "number"
        },
        "maxTimeToFinish": {
            "type": "number"
        },
        "timeLimitPerPage": {
            "type": "number"
        },
        "maxTimeToFinishPage": {
            "type": "number"
        }
    },
    "definitions": {
        "page": {
            "$id": "#page",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#panel"
                },
                {
                    "properties": {
                        "navigationTitle": {
                            "type": "string"
                        },
                        "navigationDescription": {
                            "type": "string"
                        },
                        "navigationButtonsVisibility": {
                            "type": "string"
                        },
                        "showNavigationButtons": {
                            "type": [
                                "boolean",
                                "string"
                            ]
                        },
                        "timeLimit": {
                            "type": "number"
                        },
                        "maxTimeToFinish": {
                            "type": "number"
                        },
                        "showNumber": {
                            "type": "boolean"
                        },
                        "showQuestionNumbers": {
                            "type": "string",
                            "enum": [
                                "default",
                                "onpanel",
                                "recursive",
                                "off"
                            ]
                        },
                        "innerIndent": {
                            "type": "number",
                            "enum": [
                                0,
                                1,
                                2,
                                3
                            ]
                        },
                        "startWithNewLine": {
                            "type": "boolean"
                        }
                    }
                }
            ]
        },
        "panel": {
            "$id": "#panel",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#panelbase"
                },
                {
                    "properties": {
                        "showNumber": {
                            "type": "boolean"
                        },
                        "showQuestionNumbers": {
                            "type": "string",
                            "enum": [
                                "default",
                                "onpanel",
                                "recursive",
                                "off"
                            ]
                        },
                        "innerIndent": {
                            "type": "number",
                            "enum": [
                                0,
                                1,
                                2,
                                3
                            ]
                        },
                        "startWithNewLine": {
                            "type": "boolean"
                        },
                        "allowAdaptiveActions": {
                            "type": "boolean"
                        }
                    }
                }
            ]
        },
        "panelbase": {
            "$id": "#panelbase",
            "type": "object",
            "properties": {
                "gridLayoutColumns": {
                    "type": "array",
                    "items": "PanelLayoutColumnModel"
                },
                "questionOrder": {
                    "type": "string",
                    "enum": [
                        "default",
                        "initial",
                        "random"
                    ]
                },
                "questionsOrder": {
                    "type": "string",
                    "enum": [
                        "default",
                        "initial",
                        "random"
                    ]
                },
                "visibleIf": {
                    "type": "string"
                },
                "questions": {
                    "type": "array",
                    "items": [
                        {
                            "$href": "#tagbox"
                        },
                        {
                            "$href": "#ranking"
                        },
                        {
                            "$href": "#imagepicker"
                        },
                        {
                            "$href": "#radiogroup"
                        },
                        {
                            "$href": "#buttongroup"
                        },
                        {
                            "$href": "#dropdown"
                        },
                        {
                            "$href": "#paneldynamic"
                        },
                        {
                            "$href": "#file"
                        },
                        {
                            "$href": "#signaturepad"
                        },
                        {
                            "$href": "#expression"
                        },
                        {
                            "$href": "#text"
                        },
                        {
                            "$href": "#comment"
                        },
                        {
                            "$href": "#multipletext"
                        },
                        {
                            "$href": "#matrixdynamic"
                        },
                        {
                            "$href": "#matrixdropdown"
                        },
                        {
                            "$href": "#matrix"
                        },
                        {
                            "$href": "#html"
                        },
                        {
                            "$href": "#image"
                        },
                        {
                            "$href": "#empty"
                        },
                        {
                            "$href": "#rating"
                        },
                        {
                            "$href": "#slider"
                        },
                        {
                            "$href": "#boolean"
                        }
                    ]
                },
                "elements": {
                    "type": "array",
                    "items": [
                        {
                            "$href": "#page"
                        },
                        {
                            "$href": "#flowpanel"
                        },
                        {
                            "$href": "#tagbox"
                        },
                        {
                            "$href": "#ranking"
                        },
                        {
                            "$href": "#imagepicker"
                        },
                        {
                            "$href": "#radiogroup"
                        },
                        {
                            "$href": "#buttongroup"
                        },
                        {
                            "$href": "#dropdown"
                        },
                        {
                            "$href": "#paneldynamic"
                        },
                        {
                            "$href": "#file"
                        },
                        {
                            "$href": "#signaturepad"
                        },
                        {
                            "$href": "#expression"
                        },
                        {
                            "$href": "#text"
                        },
                        {
                            "$href": "#comment"
                        },
                        {
                            "$href": "#multipletext"
                        },
                        {
                            "$href": "#matrixdynamic"
                        },
                        {
                            "$href": "#matrixdropdown"
                        },
                        {
                            "$href": "#matrix"
                        },
                        {
                            "$href": "#html"
                        },
                        {
                            "$href": "#image"
                        },
                        {
                            "$href": "#empty"
                        },
                        {
                            "$href": "#rating"
                        },
                        {
                            "$href": "#slider"
                        },
                        {
                            "$href": "#boolean"
                        }
                    ]
                },
                "requiredIf": {
                    "type": "string"
                },
                "questionTitleLocation": {
                    "type": "string",
                    "enum": [
                        "default",
                        "top",
                        "bottom",
                        "left",
                        "hidden"
                    ]
                },
                "questionTitleWidth": {
                    "type": "string"
                },
                "visible": {
                    "type": "boolean"
                },
                "enableIf": {
                    "type": "string"
                },
                "questionErrorLocation": {
                    "type": "string",
                    "enum": [
                        "default",
                        "top",
                        "bottom"
                    ]
                }
            }
        },
        "question": {
            "$id": "#question",
            "type": "object",
            "properties": {
                "valueName": {
                    "type": "string"
                },
                "visible": {
                    "type": "boolean"
                },
                "useDisplayValuesInDynamicTexts": {
                    "type": "boolean"
                },
                "visibleIf": {
                    "type": "string"
                },
                "showNumber": {
                    "type": "boolean"
                },
                "titleLocation": {
                    "type": "string",
                    "enum": [
                        "default",
                        "top",
                        "bottom",
                        "left",
                        "hidden"
                    ]
                },
                "errorLocation": {
                    "type": "string",
                    "enum": [
                        "default",
                        "top",
                        "bottom"
                    ]
                },
                "descriptionLocation": {
                    "type": "string",
                    "enum": [
                        "default",
                        "underInput",
                        "underTitle",
                        "hidden"
                    ]
                },
                "requiredErrorText": {
                    "type": "string"
                },
                "commentText": {
                    "type": "string"
                },
                "commentPlaceholder": {
                    "type": "string"
                },
                "commentPlaceHolder": {
                    "type": "string"
                },
                "defaultDisplayValue": {
                    "type": "string"
                },
                "startWithNewLine": {
                    "type": "boolean"
                },
                "isRequired": {
                    "type": "boolean"
                },
                "requiredIf": {
                    "type": "string"
                },
                "showCommentArea": {
                    "type": "boolean"
                },
                "hasComment": {
                    "type": "boolean"
                },
                "enableIf": {
                    "type": "string"
                },
                "clearIfInvisible": {
                    "type": "string",
                    "enum": [
                        "default",
                        "none",
                        "onComplete",
                        "onHidden",
                        "onHiddenContainer"
                    ]
                },
                "defaultValue": {
                    "type": [
                        "string",
                        "numeric",
                        "boolean"
                    ]
                },
                "defaultValueExpression": {
                    "type": [
                        "string",
                        "numeric",
                        "boolean"
                    ]
                },
                "resetValueIf": {
                    "type": "string"
                },
                "setValueIf": {
                    "type": "string"
                },
                "setValueExpression": {
                    "type": "string"
                },
                "correctAnswer": {
                    "type": [
                        "string",
                        "numeric",
                        "boolean"
                    ]
                },
                "validators": {
                    "type": "array",
                    "items": [
                        {
                            "$href": "#numericvalidator"
                        },
                        {
                            "$href": "#textvalidator"
                        },
                        {
                            "$href": "#answercountvalidator"
                        },
                        {
                            "$href": "#regexvalidator"
                        },
                        {
                            "$href": "#emailvalidator"
                        },
                        {
                            "$href": "#expressionvalidator"
                        }
                    ]
                },
                "renderAs": {
                    "type": "string"
                },
                "randomize": {
                    "type": "boolean"
                },
                "randomizeCategory": {
                    "type": "string"
                }
            }
        },
        "numericvalidator": {
            "$id": "#numericvalidator",
            "type": "object",
            "properties": {
                "minValue": {
                    "type": "number"
                },
                "maxValue": {
                    "type": "number"
                }
            }
        },
        "textvalidator": {
            "$id": "#textvalidator",
            "type": "object",
            "properties": {
                "minLength": {
                    "type": "number"
                },
                "maxLength": {
                    "type": "number"
                },
                "allowDigits": {
                    "type": "boolean"
                }
            }
        },
        "answercountvalidator": {
            "$id": "#answercountvalidator",
            "type": "object",
            "properties": {
                "minCount": {
                    "type": "number"
                },
                "maxCount": {
                    "type": "number"
                }
            }
        },
        "regexvalidator": {
            "$id": "#regexvalidator",
            "type": "object",
            "properties": {
                "regex": {
                    "type": "string"
                },
                "caseInsensitive": {
                    "type": "boolean"
                },
                "insensitive": {
                    "type": "boolean"
                }
            }
        },
        "expressionvalidator": {
            "$id": "#expressionvalidator",
            "type": "object",
            "properties": {
                "expression": {
                    "type": "string"
                }
            }
        },
        "selectbase": {
            "$id": "#selectbase",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "showNoneItem": {
                            "type": "boolean"
                        },
                        "hasNone": {
                            "type": "boolean"
                        },
                        "noneText": {
                            "type": "string"
                        },
                        "showRefuseItem": {
                            "type": "boolean"
                        },
                        "refuseText": {
                            "type": "string"
                        },
                        "showDontKnowItem": {
                            "type": "boolean"
                        },
                        "dontKnowText": {
                            "type": "string"
                        },
                        "choicesVisibleIf": {
                            "type": "string"
                        },
                        "choicesEnableIf": {
                            "type": "string"
                        },
                        "choicesByUrl": {
                            "type": {
                                "$href": "#choicesByUrl"
                            }
                        },
                        "choices": {
                            "type": "array",
                            "items": "any"
                        },
                        "choicesFromQuestion": {
                            "type": "string"
                        },
                        "choicesFromQuestionMode": {
                            "type": "string",
                            "enum": [
                                "all",
                                "selected",
                                "unselected"
                            ]
                        },
                        "choiceValuesFromQuestion": {
                            "type": "string"
                        },
                        "choiceTextsFromQuestion": {
                            "type": "string"
                        },
                        "hideIfChoicesEmpty": {
                            "type": "boolean"
                        },
                        "storeOthersAsComment": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ],
                            "enum": [
                                "default",
                                true,
                                false
                            ]
                        },
                        "choicesOrder": {
                            "type": "string",
                            "enum": [
                                "none",
                                "asc",
                                "desc",
                                "random"
                            ]
                        },
                        "otherText": {
                            "type": "string"
                        },
                        "separateSpecialChoices": {
                            "type": "boolean"
                        },
                        "otherPlaceholder": {
                            "type": "string"
                        },
                        "otherPlaceHolder": {
                            "type": "string"
                        },
                        "otherErrorText": {
                            "type": "string"
                        },
                        "showOtherItem": {
                            "type": "boolean"
                        },
                        "hasOther": {
                            "type": "boolean"
                        }
                    }
                }
            ]
        },
        "choicesByUrl": {
            "$id": "#choicesByUrl",
            "type": "object",
            "properties": {
                "url": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "valueName": {
                    "type": "string"
                },
                "titleName": {
                    "type": "string"
                },
                "imageLinkName": {
                    "type": "string"
                },
                "allowEmptyResponse": {
                    "type": "boolean"
                },
                "attachOriginalItems": {
                    "type": "boolean"
                },
                "attachData": {
                    "type": "boolean"
                }
            }
        },
        "visibletrigger": {
            "$id": "#visibletrigger",
            "type": "object",
            "properties": {
                "pages": {
                    "type": "array",
                    "items": "string"
                },
                "questions": {
                    "type": "array",
                    "items": "string"
                }
            }
        },
        "setvaluetrigger": {
            "$id": "#setvaluetrigger",
            "type": "object",
            "properties": {
                "setToName": {
                    "type": "string"
                },
                "setValue": {
                    "type": [
                        "string",
                        "numeric",
                        "boolean"
                    ]
                },
                "isVariable": {
                    "type": "boolean"
                }
            }
        },
        "skiptrigger": {
            "$id": "#skiptrigger",
            "type": "object",
            "properties": {
                "gotoName": {
                    "type": "string"
                }
            }
        },
        "runexpressiontrigger": {
            "$id": "#runexpressiontrigger",
            "type": "object",
            "properties": {
                "setToName": {
                    "type": "string"
                },
                "runExpression": {
                    "type": "string"
                }
            }
        },
        "copyvaluetrigger": {
            "$id": "#copyvaluetrigger",
            "type": "object",
            "properties": {
                "setToName": {
                    "type": "string"
                },
                "fromName": {
                    "type": "string"
                },
                "copyDisplayValue": {
                    "type": "boolean"
                }
            }
        },
        "calculatedvalue": {
            "$id": "#calculatedvalue",
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "includeIntoResult": {
                    "type": "boolean"
                },
                "expression": {
                    "type": "string"
                }
            }
        },
        "expressionitem": {
            "$id": "#expressionitem",
            "type": "object",
            "properties": {
                "expression": {
                    "type": "string"
                }
            }
        },
        "htmlconditionitem": {
            "$id": "#htmlconditionitem",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#expressionitem"
                },
                {
                    "properties": {
                        "html": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "urlconditionitem": {
            "$id": "#urlconditionitem",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#expressionitem"
                },
                {
                    "properties": {
                        "url": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "matrixdropdowncolumn": {
            "$id": "#matrixdropdowncolumn",
            "type": "object",
            "properties": {
                "cellType": {
                    "type": "string",
                    "enum": [
                        "default",
                        "dropdown",
                        "checkbox",
                        "radiogroup",
                        "tagbox",
                        "text",
                        "comment",
                        "boolean",
                        "expression",
                        "rating",
                        "slider"
                    ]
                },
                "visible": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "title": {
                    "type": "string"
                },
                "defaultDisplayValue": {
                    "type": "string"
                },
                "isRequired": {
                    "type": "boolean"
                },
                "requiredErrorText": {
                    "type": "string"
                },
                "readOnly": {
                    "type": "boolean"
                },
                "visibleIf": {
                    "type": "string"
                },
                "enableIf": {
                    "type": "string"
                },
                "requiredIf": {
                    "type": "string"
                },
                "resetValueIf": {
                    "type": "string"
                },
                "setValueIf": {
                    "type": "string"
                },
                "setValueExpression": {
                    "type": "string"
                },
                "isUnique": {
                    "type": "boolean"
                },
                "showInMultipleColumns": {
                    "type": "boolean"
                },
                "validators": {
                    "type": "array",
                    "items": [
                        {
                            "$href": "#numericvalidator"
                        },
                        {
                            "$href": "#textvalidator"
                        },
                        {
                            "$href": "#answercountvalidator"
                        },
                        {
                            "$href": "#regexvalidator"
                        },
                        {
                            "$href": "#emailvalidator"
                        },
                        {
                            "$href": "#expressionvalidator"
                        }
                    ]
                },
                "totalType": {
                    "type": "string",
                    "enum": [
                        "none",
                        "sum",
                        "count",
                        "min",
                        "max",
                        "avg"
                    ]
                },
                "totalExpression": {
                    "type": "string"
                },
                "totalFormat": {
                    "type": "string"
                },
                "cellHint": {
                    "type": "string"
                },
                "renderAs": {
                    "type": "string"
                },
                "totalMaximumFractionDigits": {
                    "type": "number"
                },
                "totalMinimumFractionDigits": {
                    "type": "number"
                },
                "totalDisplayStyle": {
                    "type": "string",
                    "enum": [
                        "none",
                        "decimal",
                        "currency",
                        "percent"
                    ]
                },
                "totalAlignment": {
                    "type": "string",
                    "enum": [
                        "auto",
                        "left",
                        "center",
                        "right"
                    ]
                },
                "totalCurrency": {
                    "type": "string",
                    "enum": [
                        "AED",
                        "AFN",
                        "ALL",
                        "AMD",
                        "ANG",
                        "AOA",
                        "ARS",
                        "AUD",
                        "AWG",
                        "AZN",
                        "BAM",
                        "BBD",
                        "BDT",
                        "BGN",
                        "BHD",
                        "BIF",
                        "BMD",
                        "BND",
                        "BOB",
                        "BOV",
                        "BRL",
                        "BSD",
                        "BTN",
                        "BWP",
                        "BYN",
                        "BZD",
                        "CAD",
                        "CDF",
                        "CHE",
                        "CHF",
                        "CHW",
                        "CLF",
                        "CLP",
                        "CNY",
                        "COP",
                        "COU",
                        "CRC",
                        "CUC",
                        "CUP",
                        "CVE",
                        "CZK",
                        "DJF",
                        "DKK",
                        "DOP",
                        "DZD",
                        "EGP",
                        "ERN",
                        "ETB",
                        "EUR",
                        "FJD",
                        "FKP",
                        "GBP",
                        "GEL",
                        "GHS",
                        "GIP",
                        "GMD",
                        "GNF",
                        "GTQ",
                        "GYD",
                        "HKD",
                        "HNL",
                        "HRK",
                        "HTG",
                        "HUF",
                        "IDR",
                        "ILS",
                        "INR",
                        "IQD",
                        "IRR",
                        "ISK",
                        "JMD",
                        "JOD",
                        "JPY",
                        "KES",
                        "KGS",
                        "KHR",
                        "KMF",
                        "KPW",
                        "KRW",
                        "KWD",
                        "KYD",
                        "KZT",
                        "LAK",
                        "LBP",
                        "LKR",
                        "LRD",
                        "LSL",
                        "LYD",
                        "MAD",
                        "MDL",
                        "MGA",
                        "MKD",
                        "MMK",
                        "MNT",
                        "MOP",
                        "MRO",
                        "MUR",
                        "MVR",
                        "MWK",
                        "MXN",
                        "MXV",
                        "MYR",
                        "MZN",
                        "NAD",
                        "NGN",
                        "NIO",
                        "NOK",
                        "NPR",
                        "NZD",
                        "OMR",
                        "PAB",
                        "PEN",
                        "PGK",
                        "PHP",
                        "PKR",
                        "PLN",
                        "PYG",
                        "QAR",
                        "RON",
                        "RSD",
                        "RUB",
                        "RWF",
                        "SAR",
                        "SBD",
                        "SCR",
                        "SDG",
                        "SEK",
                        "SGD",
                        "SHP",
                        "SLL",
                        "SOS",
                        "SRD",
                        "SSP",
                        "STD",
                        "SVC",
                        "SYP",
                        "SZL",
                        "THB",
                        "TJS",
                        "TMT",
                        "TND",
                        "TOP",
                        "TRY",
                        "TTD",
                        "TWD",
                        "TZS",
                        "UAH",
                        "UGX",
                        "USD",
                        "USN",
                        "UYI",
                        "UYU",
                        "UZS",
                        "VEF",
                        "VND",
                        "VUV",
                        "WST",
                        "XAF",
                        "XAG",
                        "XAU",
                        "XBA",
                        "XBB",
                        "XBC",
                        "XBD",
                        "XCD",
                        "XDR",
                        "XOF",
                        "XPD",
                        "XPF",
                        "XPT",
                        "XSU",
                        "XTS",
                        "XUA",
                        "XXX",
                        "YER",
                        "ZAR",
                        "ZMW",
                        "ZWL"
                    ]
                },
                "minWidth": {
                    "type": "string"
                },
                "width": {
                    "type": "string"
                },
                "colCount": {
                    "type": "number",
                    "enum": [
                        -1,
                        0,
                        1,
                        2,
                        3,
                        4
                    ]
                }
            }
        },
        "masksettings": {
            "$id": "#masksettings",
            "type": "object",
            "properties": {
                "saveMaskedValue": {
                    "type": "boolean"
                }
            }
        },
        "patternmask": {
            "$id": "#patternmask",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#masksettings"
                },
                {
                    "properties": {
                        "pattern": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "datetimemask": {
            "$id": "#datetimemask",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#patternmask"
                },
                {
                    "properties": {
                        "min": {
                            "type": "string"
                        },
                        "max": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "numericmask": {
            "$id": "#numericmask",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#masksettings"
                },
                {
                    "properties": {
                        "allowNegativeValues": {
                            "type": "boolean"
                        },
                        "decimalSeparator": {
                            "type": "string"
                        },
                        "precision": {
                            "type": "number"
                        },
                        "thousandsSeparator": {
                            "type": "string"
                        },
                        "min": {
                            "type": "number"
                        },
                        "max": {
                            "type": "number"
                        }
                    }
                }
            ]
        },
        "currencymask": {
            "$id": "#currencymask",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#numericmask"
                },
                {
                    "properties": {
                        "prefix": {
                            "type": "string"
                        },
                        "suffix": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "multipletextitem": {
            "$id": "#multipletextitem",
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "isRequired": {
                    "type": "boolean"
                },
                "inputType": {
                    "type": "string",
                    "enum": [
                        "color",
                        "date",
                        "datetime-local",
                        "email",
                        "month",
                        "number",
                        "password",
                        "range",
                        "tel",
                        "text",
                        "time",
                        "url",
                        "week"
                    ]
                },
                "title": {
                    "type": "string"
                },
                "maxLength": {
                    "type": "number"
                },
                "placeholder": {
                    "type": "string"
                },
                "placeHolder": {
                    "type": "string"
                },
                "requiredErrorText": {
                    "type": "string"
                },
                "inputSize": {
                    "type": "number"
                },
                "size": {
                    "type": "number"
                },
                "defaultValueExpression": {
                    "type": "string"
                },
                "minValueExpression": {
                    "type": "string"
                },
                "maxValueExpression": {
                    "type": "string"
                },
                "validators": {
                    "type": "array",
                    "items": [
                        {
                            "$href": "#numericvalidator"
                        },
                        {
                            "$href": "#textvalidator"
                        },
                        {
                            "$href": "#answercountvalidator"
                        },
                        {
                            "$href": "#regexvalidator"
                        },
                        {
                            "$href": "#emailvalidator"
                        },
                        {
                            "$href": "#expressionvalidator"
                        }
                    ]
                },
                "maskType": {
                    "type": "string",
                    "enum": [
                        "none",
                        "pattern",
                        "datetime",
                        "numeric",
                        "currency"
                    ]
                },
                "maskSettings": {
                    "type": [
                        {
                            "$href": "#datetimemask"
                        },
                        {
                            "$href": "#currencymask"
                        }
                    ]
                },
                "inputTextAlignment": {
                    "type": [
                        "boolean",
                        "string"
                    ],
                    "enum": [
                        "left",
                        "right",
                        "auto"
                    ]
                }
            }
        },
        "checkbox": {
            "$id": "#checkbox",
            "type": "object",
            "properties": {
                "valuePropertyName": {
                    "type": "string"
                },
                "selectAllText": {
                    "type": "string"
                },
                "showSelectAllItem": {
                    "type": "boolean"
                },
                "hasSelectAll": {
                    "type": "boolean"
                },
                "maxSelectedChoices": {
                    "type": "number"
                },
                "minSelectedChoices": {
                    "type": "number"
                }
            }
        },
        "tagbox": {
            "$id": "#tagbox",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#checkbox"
                },
                {
                    "properties": {
                        "searchMode": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "contains",
                                "startsWith"
                            ]
                        },
                        "allowCustomChoices": {
                            "type": "boolean"
                        },
                        "createCustomChoiceText": {
                            "type": "string"
                        },
                        "allowClear": {
                            "type": "boolean"
                        },
                        "searchEnabled": {
                            "type": "boolean"
                        },
                        "hideSelectedItems": {
                            "type": "boolean"
                        },
                        "choicesLazyLoadEnabled": {
                            "type": "boolean"
                        },
                        "choicesLazyLoadPageSize": {
                            "type": "number"
                        },
                        "closeOnSelect": {
                            "type": "number"
                        },
                        "textWrapEnabled": {
                            "type": "boolean"
                        },
                        "placeholder": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "ranking": {
            "$id": "#ranking",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#checkbox"
                },
                {
                    "properties": {
                        "selectToRankEnabled": {
                            "type": "boolean"
                        },
                        "selectToRankSwapAreas": {
                            "type": "boolean"
                        },
                        "selectToRankAreasLayout": {
                            "type": "string",
                            "enum": [
                                "horizontal",
                                "vertical"
                            ]
                        },
                        "selectToRankEmptyRankedAreaText": {
                            "type": "string"
                        },
                        "selectToRankEmptyUnrankedAreaText": {
                            "type": "string"
                        },
                        "showNoneItem": {
                            "type": "boolean"
                        },
                        "noneText": {
                            "type": "string"
                        },
                        "otherText": {
                            "type": "string"
                        },
                        "separateSpecialChoices": {
                            "type": "boolean"
                        },
                        "otherErrorText": {
                            "type": "string"
                        },
                        "showOtherItem": {
                            "type": "boolean"
                        },
                        "selectAllText": {
                            "type": "string"
                        },
                        "showSelectAllItem": {
                            "type": "boolean"
                        }
                    }
                }
            ]
        },
        "imagepicker": {
            "$id": "#imagepicker",
            "type": "object",
            "properties": {
                "multiSelect": {
                    "type": "boolean"
                },
                "showLabel": {
                    "type": "boolean"
                },
                "imageHeight": {
                    "type": "number"
                },
                "imageWidth": {
                    "type": "number"
                },
                "imageFit": {
                    "type": "string",
                    "enum": [
                        "none",
                        "contain",
                        "cover",
                        "fill"
                    ]
                },
                "contentMode": {
                    "type": "string",
                    "enum": [
                        "image",
                        "video"
                    ]
                },
                "maxImageWidth": {
                    "type": "number"
                },
                "minImageWidth": {
                    "type": "number"
                },
                "maxImageHeight": {
                    "type": "number"
                },
                "minImageHeight": {
                    "type": "number"
                },
                "showNoneItem": {
                    "type": "boolean"
                },
                "noneText": {
                    "type": "string"
                },
                "otherText": {
                    "type": "string"
                },
                "otherErrorText": {
                    "type": "string"
                },
                "showOtherItem": {
                    "type": "boolean"
                }
            }
        },
        "radiogroup": {
            "$id": "#radiogroup",
            "type": "object",
            "properties": {
                "allowClear": {
                    "type": "boolean"
                },
                "showClearButton": {
                    "type": "boolean"
                }
            }
        },
        "dropdown": {
            "$id": "#dropdown",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#selectbase"
                },
                {
                    "properties": {
                        "showOptionsCaption": {
                            "type": "boolean"
                        },
                        "optionsCaption": {
                            "type": "string"
                        },
                        "placeholder": {
                            "type": "string"
                        },
                        "choicesMin": {
                            "type": "number"
                        },
                        "choicesMax": {
                            "type": "number"
                        },
                        "choicesStep": {
                            "type": "number"
                        },
                        "autocomplete": {
                            "type": "string",
                            "enum": [
                                "",
                                "name",
                                "honorific-prefix",
                                "given-name",
                                "additional-name",
                                "family-name",
                                "honorific-suffix",
                                "nickname",
                                "organization-title",
                                "username",
                                "new-password",
                                "current-password",
                                "organization",
                                "street-address",
                                "address-line1",
                                "address-line2",
                                "address-line3",
                                "address-level4",
                                "address-level3",
                                "address-level2",
                                "address-level1",
                                "country",
                                "country-name",
                                "postal-code",
                                "cc-name",
                                "cc-given-name",
                                "cc-additional-name",
                                "cc-family-name",
                                "cc-number",
                                "cc-exp",
                                "cc-exp-month",
                                "cc-exp-year",
                                "cc-csc",
                                "cc-type",
                                "transaction-currency",
                                "transaction-amount",
                                "language",
                                "bday",
                                "bday-day",
                                "bday-month",
                                "bday-year",
                                "sex",
                                "url",
                                "photo",
                                "tel",
                                "tel-country-code",
                                "tel-national",
                                "tel-area-code",
                                "tel-local",
                                "tel-local-prefix",
                                "tel-local-suffix",
                                "tel-extension",
                                "email",
                                "impp"
                            ]
                        },
                        "allowClear": {
                            "type": "boolean"
                        },
                        "searchEnabled": {
                            "type": "boolean"
                        },
                        "searchMode": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "contains",
                                "startsWith"
                            ]
                        },
                        "allowCustomChoices": {
                            "type": "boolean"
                        },
                        "createCustomChoiceText": {
                            "type": "string"
                        },
                        "textWrapEnabled": {
                            "type": "boolean"
                        },
                        "choicesLazyLoadEnabled": {
                            "type": "boolean"
                        },
                        "choicesLazyLoadPageSize": {
                            "type": "number"
                        }
                    }
                }
            ]
        },
        "paneldynamic": {
            "$id": "#paneldynamic",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "templateElements": {
                            "type": "array",
                            "items": [
                                {
                                    "$href": "#page"
                                },
                                {
                                    "$href": "#flowpanel"
                                },
                                {
                                    "$href": "#tagbox"
                                },
                                {
                                    "$href": "#ranking"
                                },
                                {
                                    "$href": "#imagepicker"
                                },
                                {
                                    "$href": "#radiogroup"
                                },
                                {
                                    "$href": "#buttongroup"
                                },
                                {
                                    "$href": "#dropdown"
                                },
                                {
                                    "$href": "#paneldynamic"
                                },
                                {
                                    "$href": "#file"
                                },
                                {
                                    "$href": "#signaturepad"
                                },
                                {
                                    "$href": "#expression"
                                },
                                {
                                    "$href": "#text"
                                },
                                {
                                    "$href": "#comment"
                                },
                                {
                                    "$href": "#multipletext"
                                },
                                {
                                    "$href": "#matrixdynamic"
                                },
                                {
                                    "$href": "#matrixdropdown"
                                },
                                {
                                    "$href": "#matrix"
                                },
                                {
                                    "$href": "#html"
                                },
                                {
                                    "$href": "#image"
                                },
                                {
                                    "$href": "#empty"
                                },
                                {
                                    "$href": "#rating"
                                },
                                {
                                    "$href": "#slider"
                                },
                                {
                                    "$href": "#boolean"
                                }
                            ]
                        },
                        "templateTitle": {
                            "type": "string"
                        },
                        "templateTabTitle": {
                            "type": "string"
                        },
                        "tabTitlePlaceholder": {
                            "type": "string"
                        },
                        "templateDescription": {
                            "type": "string"
                        },
                        "templateVisibleIf": {
                            "type": "string"
                        },
                        "questionStartIndex": {
                            "type": "string"
                        },
                        "confirmDelete": {
                            "type": "boolean"
                        },
                        "keyName": {
                            "type": "string"
                        },
                        "confirmDeleteText": {
                            "type": "string"
                        },
                        "keyDuplicationError": {
                            "type": "string"
                        },
                        "prevPanelText": {
                            "type": "string"
                        },
                        "panelPrevText": {
                            "type": "string"
                        },
                        "nextPanelText": {
                            "type": "string"
                        },
                        "panelNextText": {
                            "type": "string"
                        },
                        "addPanelText": {
                            "type": "string"
                        },
                        "panelAddText": {
                            "type": "string"
                        },
                        "removePanelText": {
                            "type": "string"
                        },
                        "panelRemoveText": {
                            "type": "string"
                        },
                        "panelCount": {
                            "type": "number",
                            "enum": [
                                0,
                                1,
                                2,
                                3,
                                4,
                                5,
                                6,
                                7,
                                8,
                                9,
                                10
                            ]
                        },
                        "panelsState": {
                            "type": "string",
                            "enum": [
                                "default",
                                "collapsed",
                                "expanded",
                                "firstExpanded"
                            ]
                        },
                        "minPanelCount": {
                            "type": "number"
                        },
                        "maxPanelCount": {
                            "type": "number"
                        },
                        "allowAddPanel": {
                            "type": "boolean"
                        },
                        "newPanelPosition": {
                            "type": "string",
                            "enum": [
                                "next",
                                "last"
                            ]
                        },
                        "allowRemovePanel": {
                            "type": "boolean"
                        },
                        "templateQuestionTitleLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom",
                                "left"
                            ]
                        },
                        "templateTitleLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom",
                                "left"
                            ]
                        },
                        "templateQuestionTitleWidth": {
                            "type": "string"
                        },
                        "templateErrorLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom"
                            ]
                        },
                        "showQuestionNumbers": {
                            "type": "string",
                            "enum": [
                                "default",
                                "onpanel",
                                "recursive",
                                "off"
                            ]
                        },
                        "removePanelButtonLocation": {
                            "type": "string",
                            "enum": [
                                "bottom",
                                "right"
                            ]
                        },
                        "panelRemoveButtonLocation": {
                            "type": "string",
                            "enum": [
                                "bottom",
                                "right"
                            ]
                        },
                        "showRangeInProgress": {
                            "type": "boolean"
                        },
                        "displayMode": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "list",
                                "carousel",
                                "tab"
                            ]
                        },
                        "showProgressBar": {
                            "type": "boolean"
                        },
                        "progressBarLocation": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "top",
                                "bottom",
                                "topBottom"
                            ]
                        },
                        "tabAlign": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "left",
                                "center",
                                "right"
                            ]
                        },
                        "defaultPanelValue": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "copyDefaultValueFromLastEntry": {
                            "type": "boolean"
                        },
                        "defaultValueFromLastPanel": {
                            "type": "boolean"
                        },
                        "noEntriesText": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "file": {
            "$id": "#file",
            "type": "object",
            "properties": {
                "allowCameraAccess": {
                    "type": "boolean"
                },
                "sourceType": {
                    "type": "string",
                    "enum": [
                        "file",
                        "camera",
                        "file-camera"
                    ]
                },
                "showPreview": {
                    "type": "boolean"
                },
                "allowMultiple": {
                    "type": "boolean"
                },
                "imageHeight": {
                    "type": "string"
                },
                "imageWidth": {
                    "type": "string"
                },
                "acceptedCategories": {
                    "type": "array",
                    "items": "string",
                    "enum": [
                        "image",
                        "video",
                        "audio",
                        "document",
                        "archive",
                        "custom"
                    ]
                },
                "acceptedTypes": {
                    "type": "string"
                },
                "allowImagesPreview": {
                    "type": "boolean"
                },
                "maxSize": {
                    "type": "number"
                },
                "maxFiles": {
                    "type": "number"
                },
                "needConfirmRemoveFile": {
                    "type": "boolean"
                },
                "fileOrPhotoPlaceholder": {
                    "type": "string"
                },
                "photoPlaceholder": {
                    "type": "string"
                },
                "filePlaceholder": {
                    "type": "string"
                }
            }
        },
        "signaturepad": {
            "$id": "#signaturepad",
            "type": "object",
            "properties": {
                "dataFormat": {
                    "type": "string",
                    "enum": [
                        {
                            "value": "png",
                            "text": "PNG"
                        },
                        {
                            "value": "jpeg",
                            "text": "JPEG"
                        },
                        {
                            "value": "svg",
                            "text": "SVG"
                        }
                    ]
                },
                "signatureWidth": {
                    "type": "number"
                },
                "signatureHeight": {
                    "type": "number"
                },
                "signatureAutoScaleEnabled": {
                    "type": "boolean"
                },
                "penMinWidth": {
                    "type": "number"
                },
                "penMaxWidth": {
                    "type": "number"
                },
                "height": {
                    "type": "number"
                },
                "allowClear": {
                    "type": "boolean"
                },
                "penColor": {
                    "type": "string"
                },
                "backgroundColor": {
                    "type": "string"
                },
                "backgroundImage": {
                    "type": "string"
                },
                "showPlaceholder": {
                    "type": "boolean"
                },
                "placeholder": {
                    "type": "string"
                },
                "placeholderReadOnly": {
                    "type": "string"
                }
            }
        },
        "expression": {
            "$id": "#expression",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "format": {
                            "type": "string"
                        },
                        "expression": {
                            "type": "string"
                        },
                        "maximumFractionDigits": {
                            "type": "number"
                        },
                        "minimumFractionDigits": {
                            "type": "number"
                        },
                        "displayStyle": {
                            "type": "string",
                            "enum": [
                                "none",
                                "decimal",
                                "currency",
                                "percent",
                                "date"
                            ]
                        },
                        "currency": {
                            "type": "string",
                            "enum": [
                                "AED",
                                "AFN",
                                "ALL",
                                "AMD",
                                "ANG",
                                "AOA",
                                "ARS",
                                "AUD",
                                "AWG",
                                "AZN",
                                "BAM",
                                "BBD",
                                "BDT",
                                "BGN",
                                "BHD",
                                "BIF",
                                "BMD",
                                "BND",
                                "BOB",
                                "BOV",
                                "BRL",
                                "BSD",
                                "BTN",
                                "BWP",
                                "BYN",
                                "BZD",
                                "CAD",
                                "CDF",
                                "CHE",
                                "CHF",
                                "CHW",
                                "CLF",
                                "CLP",
                                "CNY",
                                "COP",
                                "COU",
                                "CRC",
                                "CUC",
                                "CUP",
                                "CVE",
                                "CZK",
                                "DJF",
                                "DKK",
                                "DOP",
                                "DZD",
                                "EGP",
                                "ERN",
                                "ETB",
                                "EUR",
                                "FJD",
                                "FKP",
                                "GBP",
                                "GEL",
                                "GHS",
                                "GIP",
                                "GMD",
                                "GNF",
                                "GTQ",
                                "GYD",
                                "HKD",
                                "HNL",
                                "HRK",
                                "HTG",
                                "HUF",
                                "IDR",
                                "ILS",
                                "INR",
                                "IQD",
                                "IRR",
                                "ISK",
                                "JMD",
                                "JOD",
                                "JPY",
                                "KES",
                                "KGS",
                                "KHR",
                                "KMF",
                                "KPW",
                                "KRW",
                                "KWD",
                                "KYD",
                                "KZT",
                                "LAK",
                                "LBP",
                                "LKR",
                                "LRD",
                                "LSL",
                                "LYD",
                                "MAD",
                                "MDL",
                                "MGA",
                                "MKD",
                                "MMK",
                                "MNT",
                                "MOP",
                                "MRO",
                                "MUR",
                                "MVR",
                                "MWK",
                                "MXN",
                                "MXV",
                                "MYR",
                                "MZN",
                                "NAD",
                                "NGN",
                                "NIO",
                                "NOK",
                                "NPR",
                                "NZD",
                                "OMR",
                                "PAB",
                                "PEN",
                                "PGK",
                                "PHP",
                                "PKR",
                                "PLN",
                                "PYG",
                                "QAR",
                                "RON",
                                "RSD",
                                "RUB",
                                "RWF",
                                "SAR",
                                "SBD",
                                "SCR",
                                "SDG",
                                "SEK",
                                "SGD",
                                "SHP",
                                "SLL",
                                "SOS",
                                "SRD",
                                "SSP",
                                "STD",
                                "SVC",
                                "SYP",
                                "SZL",
                                "THB",
                                "TJS",
                                "TMT",
                                "TND",
                                "TOP",
                                "TRY",
                                "TTD",
                                "TWD",
                                "TZS",
                                "UAH",
                                "UGX",
                                "USD",
                                "USN",
                                "UYI",
                                "UYU",
                                "UZS",
                                "VEF",
                                "VND",
                                "VUV",
                                "WST",
                                "XAF",
                                "XAG",
                                "XAU",
                                "XBA",
                                "XBB",
                                "XBC",
                                "XBD",
                                "XCD",
                                "XDR",
                                "XOF",
                                "XPD",
                                "XPF",
                                "XPT",
                                "XSU",
                                "XTS",
                                "XUA",
                                "XXX",
                                "YER",
                                "ZAR",
                                "ZMW",
                                "ZWL"
                            ]
                        },
                        "useGrouping": {
                            "type": "boolean"
                        },
                        "precision": {
                            "type": "number"
                        }
                    }
                }
            ]
        },
        "text": {
            "$id": "#text",
            "type": "object",
            "properties": {
                "maskType": {
                    "type": "string",
                    "enum": [
                        "none",
                        "pattern",
                        "datetime",
                        "numeric",
                        "currency"
                    ]
                },
                "inputTextAlignment": {
                    "type": [
                        "boolean",
                        "string"
                    ],
                    "enum": [
                        "left",
                        "right",
                        "auto"
                    ]
                },
                "maskSettings": {
                    "type": [
                        {
                            "$href": "#datetimemask"
                        },
                        {
                            "$href": "#currencymask"
                        }
                    ]
                },
                "inputType": {
                    "type": "string",
                    "enum": [
                        "color",
                        "date",
                        "datetime-local",
                        "email",
                        "month",
                        "number",
                        "password",
                        "range",
                        "tel",
                        "text",
                        "time",
                        "url",
                        "week"
                    ]
                },
                "inputSize": {
                    "type": "number"
                },
                "size": {
                    "type": "number"
                },
                "autocomplete": {
                    "type": "string",
                    "enum": [
                        "",
                        "name",
                        "honorific-prefix",
                        "given-name",
                        "additional-name",
                        "family-name",
                        "honorific-suffix",
                        "nickname",
                        "organization-title",
                        "username",
                        "new-password",
                        "current-password",
                        "organization",
                        "street-address",
                        "address-line1",
                        "address-line2",
                        "address-line3",
                        "address-level4",
                        "address-level3",
                        "address-level2",
                        "address-level1",
                        "country",
                        "country-name",
                        "postal-code",
                        "cc-name",
                        "cc-given-name",
                        "cc-additional-name",
                        "cc-family-name",
                        "cc-number",
                        "cc-exp",
                        "cc-exp-month",
                        "cc-exp-year",
                        "cc-csc",
                        "cc-type",
                        "transaction-currency",
                        "transaction-amount",
                        "language",
                        "bday",
                        "bday-day",
                        "bday-month",
                        "bday-year",
                        "sex",
                        "url",
                        "photo",
                        "tel",
                        "tel-country-code",
                        "tel-national",
                        "tel-area-code",
                        "tel-local",
                        "tel-local-prefix",
                        "tel-local-suffix",
                        "tel-extension",
                        "email",
                        "impp"
                    ]
                },
                "min": {
                    "type": "string"
                },
                "max": {
                    "type": "string"
                },
                "minValueExpression": {
                    "type": "string"
                },
                "maxValueExpression": {
                    "type": "string"
                },
                "minErrorText": {
                    "type": "string"
                },
                "maxErrorText": {
                    "type": "string"
                },
                "stepErrorText": {
                    "type": "string"
                },
                "step": {
                    "type": "string"
                },
                "dataList": {
                    "type": "array",
                    "items": "string"
                }
            }
        },
        "comment": {
            "$id": "#comment",
            "type": "object",
            "properties": {
                "rows": {
                    "type": "number"
                },
                "acceptCarriageReturn": {
                    "type": "boolean"
                },
                "autoGrow": {
                    "type": "boolean"
                },
                "allowResize": {
                    "type": "boolean"
                }
            }
        },
        "multipletext": {
            "$id": "#multipletext",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "items": {
                            "type": "array",
                            "items": {
                                "$href": "#multipletextitem"
                            }
                        },
                        "itemErrorLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom"
                            ]
                        },
                        "colCount": {
                            "type": "number",
                            "enum": [
                                1,
                                2,
                                3,
                                4,
                                5
                            ]
                        },
                        "inputSize": {
                            "type": "number"
                        },
                        "itemSize": {
                            "type": "number"
                        },
                        "itemTitleWidth": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "matrixbase": {
            "$id": "#matrixbase",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "showHeader": {
                            "type": "boolean"
                        },
                        "rowsVisibleIf": {
                            "type": "string"
                        },
                        "columnsVisibleIf": {
                            "type": "string"
                        },
                        "verticalAlign": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "top",
                                "middle"
                            ]
                        },
                        "alternateRows": {
                            "type": "boolean"
                        },
                        "columnMinWidth": {
                            "type": "string"
                        },
                        "displayMode": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "auto",
                                "table",
                                "list"
                            ]
                        }
                    }
                }
            ]
        },
        "matrixdropdownbase": {
            "$id": "#matrixdropdownbase",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#matrixbase"
                },
                {
                    "properties": {
                        "transposeData": {
                            "type": "boolean"
                        },
                        "detailErrorLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom"
                            ]
                        },
                        "cellErrorLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom"
                            ]
                        },
                        "detailPanelMode": {
                            "type": "string",
                            "enum": [
                                "none",
                                "underRow",
                                "underRowSingle"
                            ]
                        },
                        "detailElements": {
                            "type": "array",
                            "items": [
                                {
                                    "$href": "#page"
                                },
                                {
                                    "$href": "#flowpanel"
                                },
                                {
                                    "$href": "#tagbox"
                                },
                                {
                                    "$href": "#ranking"
                                },
                                {
                                    "$href": "#imagepicker"
                                },
                                {
                                    "$href": "#radiogroup"
                                },
                                {
                                    "$href": "#buttongroup"
                                },
                                {
                                    "$href": "#dropdown"
                                },
                                {
                                    "$href": "#paneldynamic"
                                },
                                {
                                    "$href": "#file"
                                },
                                {
                                    "$href": "#signaturepad"
                                },
                                {
                                    "$href": "#expression"
                                },
                                {
                                    "$href": "#text"
                                },
                                {
                                    "$href": "#comment"
                                },
                                {
                                    "$href": "#multipletext"
                                },
                                {
                                    "$href": "#matrixdynamic"
                                },
                                {
                                    "$href": "#matrixdropdown"
                                },
                                {
                                    "$href": "#matrix"
                                },
                                {
                                    "$href": "#html"
                                },
                                {
                                    "$href": "#image"
                                },
                                {
                                    "$href": "#empty"
                                },
                                {
                                    "$href": "#rating"
                                },
                                {
                                    "$href": "#slider"
                                },
                                {
                                    "$href": "#boolean"
                                }
                            ]
                        },
                        "cellType": {
                            "type": "string",
                            "enum": [
                                "dropdown",
                                "checkbox",
                                "radiogroup",
                                "tagbox",
                                "text",
                                "comment",
                                "boolean",
                                "expression",
                                "rating",
                                "slider"
                            ]
                        },
                        "columnColCount": {
                            "type": "number",
                            "enum": [
                                0,
                                1,
                                2,
                                3,
                                4
                            ]
                        },
                        "horizontalScroll": {
                            "type": "boolean"
                        },
                        "allowAdaptiveActions": {
                            "type": "boolean"
                        },
                        "choices": {
                            "type": "array",
                            "items": "any"
                        },
                        "placeholder": {
                            "type": "string"
                        },
                        "optionsCaption": {
                            "type": "string"
                        },
                        "keyDuplicationError": {
                            "type": "string"
                        },
                        "singleInputTitleTemplate": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "matrixdynamic": {
            "$id": "#matrixdynamic",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#matrixdropdownbase"
                },
                {
                    "properties": {
                        "confirmDelete": {
                            "type": "boolean"
                        },
                        "keyName": {
                            "type": "string"
                        },
                        "defaultRowValue": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "copyDefaultValueFromLastEntry": {
                            "type": "boolean"
                        },
                        "defaultValueFromLastRow": {
                            "type": "boolean"
                        },
                        "rowCount": {
                            "type": "number"
                        },
                        "allowRowReorder": {
                            "type": "boolean"
                        },
                        "allowRowsDragAndDrop": {
                            "type": "boolean"
                        },
                        "minRowCount": {
                            "type": "number"
                        },
                        "maxRowCount": {
                            "type": "number"
                        },
                        "allowAddRows": {
                            "type": "boolean"
                        },
                        "allowRemoveRows": {
                            "type": "boolean"
                        },
                        "detailPanelShowOnAdding": {
                            "type": "boolean"
                        },
                        "confirmDeleteText": {
                            "type": "string"
                        },
                        "addRowText": {
                            "type": "string"
                        },
                        "addRowButtonLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom",
                                "topBottom"
                            ]
                        },
                        "addRowLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom",
                                "topBottom"
                            ]
                        },
                        "hideColumnsIfEmpty": {
                            "type": "boolean"
                        },
                        "removeRowText": {
                            "type": "string"
                        },
                        "noRowsText": {
                            "type": "string"
                        },
                        "emptyRowsText": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "matrixdropdown": {
            "$id": "#matrixdropdown",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#matrixdropdownbase"
                },
                {
                    "properties": {
                        "totalText": {
                            "type": "string"
                        },
                        "hideIfRowsEmpty": {
                            "type": "boolean"
                        },
                        "rowOrder": {
                            "type": "string",
                            "enum": [
                                "initial",
                                "random"
                            ]
                        }
                    }
                }
            ]
        },
        "matrix": {
            "$id": "#matrix",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#matrixbase"
                },
                {
                    "properties": {
                        "cellType": {
                            "type": "string",
                            "enum": [
                                "radio",
                                "checkbox"
                            ]
                        },
                        "cellComponent": {
                            "type": "string"
                        },
                        "eachRowRequired": {
                            "type": "boolean"
                        },
                        "isAllRowRequired": {
                            "type": "boolean"
                        },
                        "eachRowUnique": {
                            "type": "boolean"
                        },
                        "rowOrder": {
                            "type": "string",
                            "enum": [
                                "initial",
                                "random"
                            ]
                        },
                        "rowsOrder": {
                            "type": "string",
                            "enum": [
                                "initial",
                                "random"
                            ]
                        },
                        "hideIfRowsEmpty": {
                            "type": "boolean"
                        },
                        "cells": {
                            "type": "MatrixCells"
                        }
                    }
                }
            ]
        },
        "nonvalue": {
            "$id": "#nonvalue",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "hasComment": {
                            "type": "boolean"
                        },
                        "valueName": {
                            "type": "string"
                        },
                        "useDisplayValuesInDynamicTexts": {
                            "type": "boolean"
                        },
                        "titleLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom",
                                "left",
                                "hidden"
                            ]
                        },
                        "requiredErrorText": {
                            "type": "string"
                        },
                        "isRequired": {
                            "type": "boolean"
                        },
                        "requiredIf": {
                            "type": "string"
                        },
                        "enableIf": {
                            "type": "string"
                        },
                        "clearIfInvisible": {
                            "type": "string",
                            "enum": [
                                "default",
                                "none",
                                "onComplete",
                                "onHidden",
                                "onHiddenContainer"
                            ]
                        },
                        "defaultValue": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "correctAnswer": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "validators": {
                            "type": "array",
                            "items": [
                                {
                                    "$href": "#numericvalidator"
                                },
                                {
                                    "$href": "#textvalidator"
                                },
                                {
                                    "$href": "#answercountvalidator"
                                },
                                {
                                    "$href": "#regexvalidator"
                                },
                                {
                                    "$href": "#emailvalidator"
                                },
                                {
                                    "$href": "#expressionvalidator"
                                }
                            ]
                        }
                    }
                }
            ]
        },
        "html": {
            "$id": "#html",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#nonvalue"
                },
                {
                    "properties": {
                        "html": {
                            "type": "string"
                        },
                        "valueName": {
                            "type": "string"
                        },
                        "useDisplayValuesInDynamicTexts": {
                            "type": "boolean"
                        },
                        "showNumber": {
                            "type": "boolean"
                        },
                        "errorLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom"
                            ]
                        },
                        "descriptionLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "underInput",
                                "underTitle",
                                "hidden"
                            ]
                        },
                        "requiredErrorText": {
                            "type": "string"
                        },
                        "isRequired": {
                            "type": "boolean"
                        },
                        "requiredIf": {
                            "type": "string"
                        },
                        "enableIf": {
                            "type": "string"
                        },
                        "clearIfInvisible": {
                            "type": "string",
                            "enum": [
                                "default",
                                "none",
                                "onComplete",
                                "onHidden",
                                "onHiddenContainer"
                            ]
                        },
                        "defaultValue": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "correctAnswer": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "validators": {
                            "type": "array",
                            "items": [
                                {
                                    "$href": "#numericvalidator"
                                },
                                {
                                    "$href": "#textvalidator"
                                },
                                {
                                    "$href": "#answercountvalidator"
                                },
                                {
                                    "$href": "#regexvalidator"
                                },
                                {
                                    "$href": "#emailvalidator"
                                },
                                {
                                    "$href": "#expressionvalidator"
                                }
                            ]
                        }
                    }
                }
            ]
        },
        "image": {
            "$id": "#image",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#nonvalue"
                },
                {
                    "properties": {
                        "imageLink": {
                            "type": "string"
                        },
                        "altText": {
                            "type": "string"
                        },
                        "imageHeight": {
                            "type": "string"
                        },
                        "imageWidth": {
                            "type": "string"
                        },
                        "imageFit": {
                            "type": "string",
                            "enum": [
                                "none",
                                "contain",
                                "cover",
                                "fill"
                            ]
                        },
                        "contentMode": {
                            "type": "string",
                            "enum": [
                                "auto",
                                "image",
                                "video",
                                "youtube"
                            ]
                        },
                        "valueName": {
                            "type": "string"
                        },
                        "useDisplayValuesInDynamicTexts": {
                            "type": "boolean"
                        },
                        "titleLocation": {
                            "type": "string",
                            "enum": [
                                "default",
                                "top",
                                "bottom",
                                "left",
                                "hidden"
                            ]
                        },
                        "requiredErrorText": {
                            "type": "string"
                        },
                        "isRequired": {
                            "type": "boolean"
                        },
                        "requiredIf": {
                            "type": "string"
                        },
                        "enableIf": {
                            "type": "string"
                        },
                        "clearIfInvisible": {
                            "type": "string",
                            "enum": [
                                "default",
                                "none",
                                "onComplete",
                                "onHidden",
                                "onHiddenContainer"
                            ]
                        },
                        "defaultValue": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "correctAnswer": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "validators": {
                            "type": "array",
                            "items": [
                                {
                                    "$href": "#numericvalidator"
                                },
                                {
                                    "$href": "#textvalidator"
                                },
                                {
                                    "$href": "#answercountvalidator"
                                },
                                {
                                    "$href": "#regexvalidator"
                                },
                                {
                                    "$href": "#emailvalidator"
                                },
                                {
                                    "$href": "#expressionvalidator"
                                }
                            ]
                        }
                    }
                }
            ]
        },
        "rating": {
            "$id": "#rating",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "autoGenerate": {
                            "type": "boolean",
                            "enum": [
                                true,
                                false
                            ]
                        },
                        "rateValues": {
                            "type": "array",
                            "items": "any"
                        },
                        "rateMin": {
                            "type": "number"
                        },
                        "rateMax": {
                            "type": "number"
                        },
                        "rateStep": {
                            "type": "number"
                        },
                        "rateCount": {
                            "type": "number"
                        },
                        "minRateDescription": {
                            "type": "string"
                        },
                        "maxRateDescription": {
                            "type": "string"
                        },
                        "displayRateDescriptionsAsExtremeItems": {
                            "type": "boolean"
                        },
                        "displayMode": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "auto",
                                "buttons",
                                "dropdown"
                            ]
                        },
                        "rateDescriptionLocation": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "leftRight",
                                "top",
                                "bottom",
                                "topBottom"
                            ]
                        },
                        "rateType": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "labels",
                                "stars",
                                "smileys"
                            ]
                        },
                        "rateDisplayMode": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "labels",
                                "stars",
                                "smileys"
                            ]
                        },
                        "scaleColorMode": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "monochrome",
                                "colored"
                            ]
                        },
                        "rateColorMode": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "default",
                                "scale"
                            ]
                        },
                        "itemComponent": {
                            "type": "string"
                        }
                    }
                }
            ]
        },
        "slider": {
            "$id": "#slider",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "sliderType": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "single",
                                "range"
                            ]
                        },
                        "max": {
                            "type": "number"
                        },
                        "min": {
                            "type": "number"
                        },
                        "maxValueExpression": {
                            "type": "string"
                        },
                        "minValueExpression": {
                            "type": "string"
                        },
                        "maxRangeLength": {
                            "type": "number"
                        },
                        "minRangeLength": {
                            "type": "number"
                        },
                        "tooltipFormat": {
                            "type": "string"
                        },
                        "labelFormat": {
                            "type": "string"
                        },
                        "tooltipVisibility": {
                            "type": [
                                "boolean",
                                "string"
                            ],
                            "enum": [
                                "auto",
                                "always",
                                "never"
                            ]
                        },
                        "step": {
                            "type": "number"
                        },
                        "showLabels": {
                            "type": "boolean"
                        },
                        "labelCount": {
                            "type": "number"
                        },
                        "customLabels": {
                            "type": "array",
                            "items": "SliderLabelItemValue"
                        },
                        "allowDragRange": {
                            "type": "boolean"
                        },
                        "allowSwap": {
                            "type": "boolean"
                        },
                        "allowClear": {
                            "type": "boolean"
                        }
                    }
                }
            ]
        },
        "boolean": {
            "$id": "#boolean",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#question"
                },
                {
                    "properties": {
                        "defaultValue": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "useTitleAsLabel": {
                            "type": "boolean"
                        },
                        "labelTrue": {
                            "type": "string"
                        },
                        "swapOrder": {
                            "type": "boolean"
                        },
                        "labelFalse": {
                            "type": "string"
                        },
                        "valueTrue": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        },
                        "valueFalse": {
                            "type": [
                                "string",
                                "numeric",
                                "boolean"
                            ]
                        }
                    }
                }
            ]
        },
        "flowpanel": {
            "$id": "#flowpanel",
            "type": "object",
            "allOff": [
                {
                    "$ref": "#panel"
                },
                {
                    "properties": {
                        "content": {
                            "type": "string"
                        }
                    }
                }
            ]
        }
    }
}