// source --> https://www.striped-giraffe.com/wp-content/plugins/jquery-manager/assets/js/jquery-3.5.1.min.js 
/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
// source --> https://www.striped-giraffe.com/wp-content/plugins/jquery-manager/assets/js/jquery-migrate-3.3.0.min.js 
/*! jQuery Migrate v3.3.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,n){"use strict";function e(e){return 0<=function(e,t){var r,n=/^(\d+)\.(\d+)\.(\d+)/,i=n.exec(e)||[],o=n.exec(t)||[];for(r=1;r<=3;r++){if(+i[r]>+o[r])return 1;if(+i[r]<+o[r])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.3.0",n.console&&n.console.log&&(s&&e("3.0.0")||n.console.log("JQMIGRATE: jQuery 3.0.0+ REQUIRED"),s.migrateWarnings&&n.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),n.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion));var r={};function u(e){var t=n.console;s.migrateDeduplicateWarnings&&r[e]||(r[e]=!0,s.migrateWarnings.push(e),t&&t.warn&&!s.migrateMute&&(t.warn("JQMIGRATE: "+e),s.migrateTrace&&t.trace&&t.trace()))}function t(e,t,r,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return u(n),r},set:function(e){u(n),r=e}})}function i(e,t,r,n){e[t]=function(){return u(n),r.apply(this,arguments)}}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){r={},s.migrateWarnings.length=0},"BackCompat"===n.document.compatMode&&u("jQuery is not compatible with Quirks Mode");var o,a={},c=s.fn.init,d=s.find,l=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,p=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,f=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;for(o in s.fn.init=function(e){var t=Array.prototype.slice.call(arguments);return"string"==typeof e&&"#"===e&&(u("jQuery( '#' ) is not a valid selector"),t[0]=[]),c.apply(this,t)},s.fn.init.prototype=s.fn,s.find=function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&l.test(t))try{n.document.querySelector(t)}catch(e){t=t.replace(p,function(e,t,r,n){return"["+t+r+'"'+n+'"]'});try{n.document.querySelector(t),u("Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){u("Attribute selector with '#' was not fixed: "+r[0])}}return d.apply(this,r)},d)Object.prototype.hasOwnProperty.call(d,o)&&(s.find[o]=d[o]);if(i(s.fn,"size",function(){return this.length},"jQuery.fn.size() is deprecated and removed; use the .length property"),i(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"jQuery.parseJSON is deprecated; use JSON.parse"),i(s,"holdReady",s.holdReady,"jQuery.holdReady is deprecated"),i(s,"unique",s.uniqueSort,"jQuery.unique is deprecated; use jQuery.uniqueSort"),t(s.expr,"filters",s.expr.pseudos,"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),t(s.expr,":",s.expr.pseudos,"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.1.1")&&i(s,"trim",function(e){return null==e?"":(e+"").replace(f,"")},"jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&i(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"jQuery.nodeName is deprecated"),e("3.3.0")&&(i(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){a["[object "+t+"]"]=t.toLowerCase()}),i(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?a[Object.prototype.toString.call(e)]||"object":typeof e},"jQuery.type is deprecated"),i(s,"isFunction",function(e){return"function"==typeof e},"jQuery.isFunction() is deprecated"),i(s,"isWindow",function(e){return null!=e&&e===e.window},"jQuery.isWindow() is deprecated"),i(s,"isArray",Array.isArray,"jQuery.isArray is deprecated; use Array.isArray")),s.ajax){var y=s.ajax;s.ajax=function(){var e=y.apply(this,arguments);return e.promise&&(i(e,"success",e.done,"jQXHR.success is deprecated and removed"),i(e,"error",e.fail,"jQXHR.error is deprecated and removed"),i(e,"complete",e.always,"jQXHR.complete is deprecated and removed")),e}}var m=s.fn.removeAttr,g=s.fn.toggleClass,h=/\S+/g;function v(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})}s.fn.removeAttr=function(e){var r=this;return s.each(e.match(h),function(e,t){s.expr.match.bool.test(t)&&(u("jQuery.fn.removeAttr no longer sets boolean properties: "+t),r.prop(t,!1))}),m.apply(this,arguments)};var j,Q=!(s.fn.toggleClass=function(t){return void 0!==t&&"boolean"!=typeof t?g.apply(this,arguments):(u("jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var e=this.getAttribute&&this.getAttribute("class")||"";e&&s.data(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":s.data(this,"__className__")||"")}))}),b=/^[a-z]/,w=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;s.swap&&s.each(["height","width","reliableMarginRight"],function(e,t){var r=s.cssHooks[t]&&s.cssHooks[t].get;r&&(s.cssHooks[t].get=function(){var e;return Q=!0,e=r.apply(this,arguments),Q=!1,e})}),s.swap=function(e,t,r,n){var i,o,a={};for(o in Q||u("jQuery.swap() is undocumented and deprecated"),t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=r.apply(e,n||[]),t)e.style[o]=a[o];return i},e("3.4.0")&&"undefined"!=typeof Proxy&&(s.cssProps=new Proxy(s.cssProps||{},{set:function(){return u("JQMIGRATE: jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),s.cssNumber||(s.cssNumber={}),j=s.fn.css,s.fn.css=function(e,t){var r=this;return"string"!=typeof e&&s.each(e,function(e,t){s.fn.css.call(r,e,t)}),"number"!=typeof t||function(e){return b.test(e)&&w.test(e[0].toUpperCase()+e.slice(1))}(v(e))||u("Use of number-typed values is deprecated in jQuery.fn.css"),j.apply(this,arguments)};var x=s.data;if(s.data=function(e,t,r){var n,i,o;if(t&&"object"==typeof t&&2===arguments.length){for(o in n=s.hasData(e)&&x.call(this,e),i={},t)o!==v(o)?(u("jQuery.data() always sets/gets camelCased names: "+o),n[o]=t[o]):i[o]=t[o];return x.call(this,e,i),t}return t&&"string"==typeof t&&t!==v(t)&&(n=s.hasData(e)&&x.call(this,e))&&t in n?(u("jQuery.data() always sets/gets camelCased names: "+t),2<arguments.length&&(n[t]=r),n[t]):x.apply(this,arguments)},s.fx){var A,k,M=s.Tween.prototype.run,S=function(e){return e};s.Tween.prototype.run=function(){1<s.easing[this.easing].length&&(u("'jQuery.easing."+this.easing.toString()+"' should use only one argument"),s.easing[this.easing]=S),M.apply(this,arguments)},A=s.fx.interval||13,k="jQuery.fx.interval is deprecated",n.requestAnimationFrame&&Object.defineProperty(s.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return n.document.hidden||u(k),A},set:function(e){u(k),A=e}})}var H=s.fn.load,R=s.event.add,N=s.event.fix;s.event.props=[],s.event.fixHooks={},t(s.event.props,"concat",s.event.props.concat,"jQuery.event.props.concat() is deprecated and removed"),s.event.fix=function(e){var t,r=e.type,n=this.fixHooks[r],i=s.event.props;if(i.length){u("jQuery.event.props are deprecated and removed: "+i.join());while(i.length)s.event.addProp(i.pop())}if(n&&!n._migrated_&&(n._migrated_=!0,u("jQuery.event.fixHooks are deprecated and removed: "+r),(i=n.props)&&i.length))while(i.length)s.event.addProp(i.pop());return t=N.call(this,e),n&&n.filter?n.filter(t,e):t},s.event.add=function(e,t){return e===n&&"load"===t&&"complete"===n.document.readyState&&u("jQuery(window).on('load'...) called after load event occurred"),R.apply(this,arguments)},s.each(["load","unload","error"],function(e,t){s.fn[t]=function(){var e=Array.prototype.slice.call(arguments,0);return"load"===t&&"string"==typeof e[0]?H.apply(this,e):(u("jQuery.fn."+t+"() is deprecated"),e.splice(0,0,t),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))}}),s.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,r){s.fn[r]=function(e,t){return u("jQuery.fn."+r+"() event shorthand is deprecated"),0<arguments.length?this.on(r,null,e,t):this.trigger(r)}}),s(function(){s(n.document).triggerHandler("ready")}),s.event.special.ready={setup:function(){this===n.document&&u("'ready' event is deprecated")}},s.fn.extend({bind:function(e,t,r){return u("jQuery.fn.bind() is deprecated"),this.on(e,null,t,r)},unbind:function(e,t){return u("jQuery.fn.unbind() is deprecated"),this.off(e,null,t)},delegate:function(e,t,r,n){return u("jQuery.fn.delegate() is deprecated"),this.on(t,e,r,n)},undelegate:function(e,t,r){return u("jQuery.fn.undelegate() is deprecated"),1===arguments.length?this.off(e,"**"):this.off(t,e||"**",r)},hover:function(e,t){return u("jQuery.fn.hover() is deprecated"),this.on("mouseenter",e).on("mouseleave",t||e)}});function C(e){var t=n.document.implementation.createHTMLDocument("");return t.body.innerHTML=e,t.body&&t.body.innerHTML}function T(e){var t=e.replace(P,"<$1></$2>");t!==e&&C(e)!==C(t)&&u("HTML tags must be properly nested and closed: "+e)}var P=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,q=s.htmlPrefilter;s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.htmlPrefilter=function(e){return T(e),e.replace(P,"<$1></$2>")}},s.htmlPrefilter=function(e){return T(e),q(e)};var D=s.fn.offset;if(s.fn.offset=function(){var e,t=this[0];if(t&&t.nodeType)return e=(t.ownerDocument||n.document).documentElement,s.contains(e,t)?D.apply(this,arguments):(u("jQuery.fn.offset() requires an element connected to a document"),{top:0,left:0});u("jQuery.fn.offset() requires a valid DOM element")},s.ajax){var E=s.param;s.param=function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(u("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),E.call(this,e,t)}}var _=s.fn.andSelf||s.fn.addBack;if(s.fn.andSelf=function(){return u("jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),_.apply(this,arguments)},s.Deferred){var F=s.Deferred,O=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]];s.Deferred=function(e){var o=F(),a=o.promise();return o.pipe=a.pipe=function(){var i=arguments;return u("deferred.pipe() is deprecated"),s.Deferred(function(n){s.each(O,function(e,t){var r="function"==typeof i[e]&&i[e];o[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===a?n.promise():this,r?[e]:arguments)})}),i=null}).promise()},e&&e.call(o,o),o},s.Deferred.exceptionHook=F.exceptionHook}return s});
// source --> https://www.striped-giraffe.com/wp-content/plugins/surveyjs/libs/survey.jquery.min.js?ver=6.8.2 
/*!
 * surveyjs - Survey JavaScript library v1.9.68
 * Copyright (c) 2015-2023 Devsoft Baltic OÜ  - http://surveyjs.io/
 * License: MIT (http://www.opensource.org/licenses/mit-license.php)
 */
! function(e, t) {
    "object" == typeof exports && "object" == typeof module ? module.exports = t(require("jquery")) : "function" == typeof define && define.amd ? define("survey-jquery", ["jquery"], t) : "object" == typeof exports ? exports["survey-jquery"] = t(require("jquery")) : e.Survey = t(e.jQuery)
}(this, (function(e) {
    return function(e) {
        var t = {};

        function n(o) {
            if (t[o]) return t[o].exports;
            var r = t[o] = {
                i: o,
                l: !1,
                exports: {}
            };
            return e[o].call(r.exports, r, r.exports, n), r.l = !0, r.exports
        }
        return n.m = e, n.c = t, n.d = function(e, t, o) {
            n.o(e, t) || Object.defineProperty(e, t, {
                enumerable: !0,
                get: o
            })
        }, n.r = function(e) {
            "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
                value: "Module"
            }), Object.defineProperty(e, "__esModule", {
                value: !0
            })
        }, n.t = function(e, t) {
            if (1 & t && (e = n(e)), 8 & t) return e;
            if (4 & t && "object" == typeof e && e && e.__esModule) return e;
            var o = Object.create(null);
            if (n.r(o), Object.defineProperty(o, "default", {
                    enumerable: !0,
                    value: e
                }), 2 & t && "string" != typeof e)
                for (var r in e) n.d(o, r, function(t) {
                    return e[t]
                }.bind(null, r));
            return o
        }, n.n = function(e) {
            var t = e && e.__esModule ? function() {
                return e.default
            } : function() {
                return e
            };
            return n.d(t, "a", t), t
        }, n.o = function(e, t) {
            return Object.prototype.hasOwnProperty.call(e, t)
        }, n.p = "", n(n.s = 119)
    }([function(e, t, n) {
        var o, r, i;
        /*!
         * Knockout JavaScript library v3.5.1
         * (c) The Knockout.js team - http://knockoutjs.com/
         * License: MIT (http://www.opensource.org/licenses/mit-license.php)
         */
        ! function(s) {
            var a = this || (0, eval)("this"),
                l = a.document,
                u = a.navigator,
                c = a.jQuery,
                p = a.JSON;
            c || "undefined" == typeof jQuery || (c = jQuery),
                function(s) {
                    r = [t, n], void 0 === (i = "function" == typeof(o = s) ? o.apply(t, r) : o) || (e.exports = i)
                }((function(e, t) {
                    function n(e, t) {
                        return (null === e || typeof e in C) && e === t
                    }

                    function o(e, t) {
                        var n;
                        return function() {
                            n || (n = x.a.setTimeout((function() {
                                n = s, e()
                            }), t))
                        }
                    }

                    function r(e, t) {
                        var n;
                        return function() {
                            clearTimeout(n), n = x.a.setTimeout(e, t)
                        }
                    }

                    function i(e, t) {
                        t && "change" !== t ? "beforeChange" === t ? this.pc(e) : this.gb(e, t) : this.qc(e)
                    }

                    function d(e, t) {
                        null !== t && t.s && t.s()
                    }

                    function h(e, t) {
                        var n = this.qd,
                            o = n[k];
                        o.ra || (this.Qb && this.mb[t] ? (n.uc(t, e, this.mb[t]), this.mb[t] = null, --this.Qb) : o.I[t] || n.uc(t, e, o.J ? {
                            da: e
                        } : n.$c(e)), e.Ja && e.gd())
                    }
                    var f, m, g, y, v, b, x = void 0 !== e ? e : {};
                    x.b = function(e, t) {
                        for (var n = e.split("."), o = x, r = 0; r < n.length - 1; r++) o = o[n[r]];
                        o[n[n.length - 1]] = t
                    }, x.L = function(e, t, n) {
                        e[t] = n
                    }, x.version = "3.5.1", x.b("version", x.version), x.options = {
                        deferUpdates: !1,
                        useOnlyNativeEvents: !1,
                        foreachHidesDestroyed: !1
                    }, x.a = function() {
                        function e(e, t) {
                            for (var n in e) r.call(e, n) && t(n, e[n])
                        }

                        function t(e, t) {
                            if (t)
                                for (var n in t) r.call(t, n) && (e[n] = t[n]);
                            return e
                        }

                        function n(e, t) {
                            return e.__proto__ = t, e
                        }

                        function o(e, t, n, o) {
                            var r = e[t].match(v) || [];
                            x.a.D(n.match(v), (function(e) {
                                x.a.Na(r, e, o)
                            })), e[t] = r.join(" ")
                        }
                        var r = Object.prototype.hasOwnProperty,
                            i = {
                                __proto__: []
                            }
                        instanceof Array, d = "function" == typeof Symbol, h = {}, f = {};
                        h[u && /Firefox\/2/i.test(u.userAgent) ? "KeyboardEvent" : "UIEvents"] = ["keyup", "keydown", "keypress"], h.MouseEvents = "click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "), e(h, (function(e, t) {
                            if (t.length)
                                for (var n = 0, o = t.length; n < o; n++) f[t[n]] = e
                        }));
                        var m, g = {
                                propertychange: !0
                            },
                            y = l && function() {
                                for (var e = 3, t = l.createElement("div"), n = t.getElementsByTagName("i"); t.innerHTML = "\x3c!--[if gt IE " + ++e + "]><i></i><![endif]--\x3e", n[0];);
                                return 4 < e ? e : s
                            }(),
                            v = /\S+/g;
                        return {
                            Jc: ["authenticity_token", /^__RequestVerificationToken(_.*)?$/],
                            D: function(e, t, n) {
                                for (var o = 0, r = e.length; o < r; o++) t.call(n, e[o], o, e)
                            },
                            A: "function" == typeof Array.prototype.indexOf ? function(e, t) {
                                return Array.prototype.indexOf.call(e, t)
                            } : function(e, t) {
                                for (var n = 0, o = e.length; n < o; n++)
                                    if (e[n] === t) return n;
                                return -1
                            },
                            Lb: function(e, t, n) {
                                for (var o = 0, r = e.length; o < r; o++)
                                    if (t.call(n, e[o], o, e)) return e[o];
                                return s
                            },
                            Pa: function(e, t) {
                                var n = x.a.A(e, t);
                                0 < n ? e.splice(n, 1) : 0 === n && e.shift()
                            },
                            wc: function(e) {
                                var t = [];
                                return e && x.a.D(e, (function(e) {
                                    0 > x.a.A(t, e) && t.push(e)
                                })), t
                            },
                            Mb: function(e, t, n) {
                                var o = [];
                                if (e)
                                    for (var r = 0, i = e.length; r < i; r++) o.push(t.call(n, e[r], r));
                                return o
                            },
                            jb: function(e, t, n) {
                                var o = [];
                                if (e)
                                    for (var r = 0, i = e.length; r < i; r++) t.call(n, e[r], r) && o.push(e[r]);
                                return o
                            },
                            Nb: function(e, t) {
                                if (t instanceof Array) e.push.apply(e, t);
                                else
                                    for (var n = 0, o = t.length; n < o; n++) e.push(t[n]);
                                return e
                            },
                            Na: function(e, t, n) {
                                var o = x.a.A(x.a.bc(e), t);
                                0 > o ? n && e.push(t) : n || e.splice(o, 1)
                            },
                            Ba: i,
                            extend: t,
                            setPrototypeOf: n,
                            Ab: i ? n : t,
                            P: e,
                            Ga: function(e, t, n) {
                                if (!e) return e;
                                var o, i = {};
                                for (o in e) r.call(e, o) && (i[o] = t.call(n, e[o], o, e));
                                return i
                            },
                            Tb: function(e) {
                                for (; e.firstChild;) x.removeNode(e.firstChild)
                            },
                            Yb: function(e) {
                                for (var t = ((e = x.a.la(e))[0] && e[0].ownerDocument || l).createElement("div"), n = 0, o = e.length; n < o; n++) t.appendChild(x.oa(e[n]));
                                return t
                            },
                            Ca: function(e, t) {
                                for (var n = 0, o = e.length, r = []; n < o; n++) {
                                    var i = e[n].cloneNode(!0);
                                    r.push(t ? x.oa(i) : i)
                                }
                                return r
                            },
                            va: function(e, t) {
                                if (x.a.Tb(e), t)
                                    for (var n = 0, o = t.length; n < o; n++) e.appendChild(t[n])
                            },
                            Xc: function(e, t) {
                                var n = e.nodeType ? [e] : e;
                                if (0 < n.length) {
                                    for (var o = n[0], r = o.parentNode, i = 0, s = t.length; i < s; i++) r.insertBefore(t[i], o);
                                    for (i = 0, s = n.length; i < s; i++) x.removeNode(n[i])
                                }
                            },
                            Ua: function(e, t) {
                                if (e.length) {
                                    for (t = 8 === t.nodeType && t.parentNode || t; e.length && e[0].parentNode !== t;) e.splice(0, 1);
                                    for (; 1 < e.length && e[e.length - 1].parentNode !== t;) e.length--;
                                    if (1 < e.length) {
                                        var n = e[0],
                                            o = e[e.length - 1];
                                        for (e.length = 0; n !== o;) e.push(n), n = n.nextSibling;
                                        e.push(o)
                                    }
                                }
                                return e
                            },
                            Zc: function(e, t) {
                                7 > y ? e.setAttribute("selected", t) : e.selected = t
                            },
                            Db: function(e) {
                                return null === e || e === s ? "" : e.trim ? e.trim() : e.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")
                            },
                            Ud: function(e, t) {
                                return e = e || "", !(t.length > e.length) && e.substring(0, t.length) === t
                            },
                            vd: function(e, t) {
                                if (e === t) return !0;
                                if (11 === e.nodeType) return !1;
                                if (t.contains) return t.contains(1 !== e.nodeType ? e.parentNode : e);
                                if (t.compareDocumentPosition) return 16 == (16 & t.compareDocumentPosition(e));
                                for (; e && e != t;) e = e.parentNode;
                                return !!e
                            },
                            Sb: function(e) {
                                return x.a.vd(e, e.ownerDocument.documentElement)
                            },
                            kd: function(e) {
                                return !!x.a.Lb(e, x.a.Sb)
                            },
                            R: function(e) {
                                return e && e.tagName && e.tagName.toLowerCase()
                            },
                            Ac: function(e) {
                                return x.onError ? function() {
                                    try {
                                        return e.apply(this, arguments)
                                    } catch (e) {
                                        throw x.onError && x.onError(e), e
                                    }
                                } : e
                            },
                            setTimeout: function(e, t) {
                                return setTimeout(x.a.Ac(e), t)
                            },
                            Gc: function(e) {
                                setTimeout((function() {
                                    throw x.onError && x.onError(e), e
                                }), 0)
                            },
                            B: function(e, t, n) {
                                var o = x.a.Ac(n);
                                if (n = g[t], x.options.useOnlyNativeEvents || n || !c)
                                    if (n || "function" != typeof e.addEventListener) {
                                        if (void 0 === e.attachEvent) throw Error("Browser doesn't support addEventListener or attachEvent");
                                        var r = function(t) {
                                                o.call(e, t)
                                            },
                                            i = "on" + t;
                                        e.attachEvent(i, r), x.a.K.za(e, (function() {
                                            e.detachEvent(i, r)
                                        }))
                                    } else e.addEventListener(t, o, !1);
                                else m || (m = "function" == typeof c(e).on ? "on" : "bind"), c(e)[m](t, o)
                            },
                            Fb: function(e, t) {
                                if (!e || !e.nodeType) throw Error("element must be a DOM node when calling triggerEvent");
                                var n;
                                if (n = !("input" !== x.a.R(e) || !e.type || "click" != t.toLowerCase()) && ("checkbox" == (n = e.type) || "radio" == n), x.options.useOnlyNativeEvents || !c || n)
                                    if ("function" == typeof l.createEvent) {
                                        if ("function" != typeof e.dispatchEvent) throw Error("The supplied element doesn't support dispatchEvent");
                                        (n = l.createEvent(f[t] || "HTMLEvents")).initEvent(t, !0, !0, a, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, e), e.dispatchEvent(n)
                                    } else if (n && e.click) e.click();
                                else {
                                    if (void 0 === e.fireEvent) throw Error("Browser doesn't support triggering events");
                                    e.fireEvent("on" + t)
                                } else c(e).trigger(t)
                            },
                            f: function(e) {
                                return x.O(e) ? e() : e
                            },
                            bc: function(e) {
                                return x.O(e) ? e.v() : e
                            },
                            Eb: function(e, t, n) {
                                var r;
                                t && ("object" == typeof e.classList ? (r = e.classList[n ? "add" : "remove"], x.a.D(t.match(v), (function(t) {
                                    r.call(e.classList, t)
                                }))) : "string" == typeof e.className.baseVal ? o(e.className, "baseVal", t, n) : o(e, "className", t, n))
                            },
                            Bb: function(e, t) {
                                var n = x.a.f(t);
                                null !== n && n !== s || (n = "");
                                var o = x.h.firstChild(e);
                                !o || 3 != o.nodeType || x.h.nextSibling(o) ? x.h.va(e, [e.ownerDocument.createTextNode(n)]) : o.data = n, x.a.Ad(e)
                            },
                            Yc: function(e, t) {
                                if (e.name = t, 7 >= y) try {
                                    var n = e.name.replace(/[&<>'"]/g, (function(e) {
                                        return "&#" + e.charCodeAt(0) + ";"
                                    }));
                                    e.mergeAttributes(l.createElement("<input name='" + n + "'/>"), !1)
                                } catch (e) {}
                            },
                            Ad: function(e) {
                                9 <= y && (e = 1 == e.nodeType ? e : e.parentNode).style && (e.style.zoom = e.style.zoom)
                            },
                            wd: function(e) {
                                if (y) {
                                    var t = e.style.width;
                                    e.style.width = 0, e.style.width = t
                                }
                            },
                            Pd: function(e, t) {
                                e = x.a.f(e), t = x.a.f(t);
                                for (var n = [], o = e; o <= t; o++) n.push(o);
                                return n
                            },
                            la: function(e) {
                                for (var t = [], n = 0, o = e.length; n < o; n++) t.push(e[n]);
                                return t
                            },
                            Da: function(e) {
                                return d ? Symbol(e) : e
                            },
                            Zd: 6 === y,
                            $d: 7 === y,
                            W: y,
                            Lc: function(e, t) {
                                for (var n = x.a.la(e.getElementsByTagName("input")).concat(x.a.la(e.getElementsByTagName("textarea"))), o = "string" == typeof t ? function(e) {
                                        return e.name === t
                                    } : function(e) {
                                        return t.test(e.name)
                                    }, r = [], i = n.length - 1; 0 <= i; i--) o(n[i]) && r.push(n[i]);
                                return r
                            },
                            Nd: function(e) {
                                return "string" == typeof e && (e = x.a.Db(e)) ? p && p.parse ? p.parse(e) : new Function("return " + e)() : null
                            },
                            hc: function(e, t, n) {
                                if (!p || !p.stringify) throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
                                return p.stringify(x.a.f(e), t, n)
                            },
                            Od: function(t, n, o) {
                                var r = (o = o || {}).params || {},
                                    i = o.includeFields || this.Jc,
                                    s = t;
                                if ("object" == typeof t && "form" === x.a.R(t)) {
                                    s = t.action;
                                    for (var a = i.length - 1; 0 <= a; a--)
                                        for (var u = x.a.Lc(t, i[a]), c = u.length - 1; 0 <= c; c--) r[u[c].name] = u[c].value
                                }
                                n = x.a.f(n);
                                var p = l.createElement("form");
                                for (var d in p.style.display = "none", p.action = s, p.method = "post", n)(t = l.createElement("input")).type = "hidden", t.name = d, t.value = x.a.hc(x.a.f(n[d])), p.appendChild(t);
                                e(r, (function(e, t) {
                                    var n = l.createElement("input");
                                    n.type = "hidden", n.name = e, n.value = t, p.appendChild(n)
                                })), l.body.appendChild(p), o.submitter ? o.submitter(p) : p.submit(), setTimeout((function() {
                                    p.parentNode.removeChild(p)
                                }), 0)
                            }
                        }
                    }(), x.b("utils", x.a), x.b("utils.arrayForEach", x.a.D), x.b("utils.arrayFirst", x.a.Lb), x.b("utils.arrayFilter", x.a.jb), x.b("utils.arrayGetDistinctValues", x.a.wc), x.b("utils.arrayIndexOf", x.a.A), x.b("utils.arrayMap", x.a.Mb), x.b("utils.arrayPushAll", x.a.Nb), x.b("utils.arrayRemoveItem", x.a.Pa), x.b("utils.cloneNodes", x.a.Ca), x.b("utils.createSymbolOrString", x.a.Da), x.b("utils.extend", x.a.extend), x.b("utils.fieldsIncludedWithJsonPost", x.a.Jc), x.b("utils.getFormFields", x.a.Lc), x.b("utils.objectMap", x.a.Ga), x.b("utils.peekObservable", x.a.bc), x.b("utils.postJson", x.a.Od), x.b("utils.parseJson", x.a.Nd), x.b("utils.registerEventHandler", x.a.B), x.b("utils.stringifyJson", x.a.hc), x.b("utils.range", x.a.Pd), x.b("utils.toggleDomNodeCssClass", x.a.Eb), x.b("utils.triggerEvent", x.a.Fb), x.b("utils.unwrapObservable", x.a.f), x.b("utils.objectForEach", x.a.P), x.b("utils.addOrRemoveItem", x.a.Na), x.b("utils.setTextContent", x.a.Bb), x.b("unwrap", x.a.f), Function.prototype.bind || (Function.prototype.bind = function(e) {
                        var t = this;
                        if (1 === arguments.length) return function() {
                            return t.apply(e, arguments)
                        };
                        var n = Array.prototype.slice.call(arguments, 1);
                        return function() {
                            var o = n.slice(0);
                            return o.push.apply(o, arguments), t.apply(e, o)
                        }
                    }), x.a.g = new function() {
                        var e, t, n = 0,
                            o = "__ko__" + (new Date).getTime(),
                            r = {};
                        return x.a.W ? (e = function(e, t) {
                            var i = e[o];
                            if (!i || "null" === i || !r[i]) {
                                if (!t) return s;
                                i = e[o] = "ko" + n++, r[i] = {}
                            }
                            return r[i]
                        }, t = function(e) {
                            var t = e[o];
                            return !!t && (delete r[t], e[o] = null, !0)
                        }) : (e = function(e, t) {
                            var n = e[o];
                            return !n && t && (n = e[o] = {}), n
                        }, t = function(e) {
                            return !!e[o] && (delete e[o], !0)
                        }), {
                            get: function(t, n) {
                                var o = e(t, !1);
                                return o && o[n]
                            },
                            set: function(t, n, o) {
                                (t = e(t, o !== s)) && (t[n] = o)
                            },
                            Ub: function(t, n, o) {
                                return (t = e(t, !0))[n] || (t[n] = o)
                            },
                            clear: t,
                            Z: function() {
                                return n++ + o
                            }
                        }
                    }, x.b("utils.domData", x.a.g), x.b("utils.domData.clear", x.a.g.clear), x.a.K = new function() {
                        function e(e, t) {
                            var n = x.a.g.get(e, o);
                            return n === s && t && (n = [], x.a.g.set(e, o, n)), n
                        }

                        function t(t) {
                            if (o = e(t, !1))
                                for (var o = o.slice(0), r = 0; r < o.length; r++) o[r](t);
                            x.a.g.clear(t), x.a.K.cleanExternalData(t), i[t.nodeType] && n(t.childNodes, !0)
                        }

                        function n(e, n) {
                            for (var o, r = [], i = 0; i < e.length; i++)
                                if ((!n || 8 === e[i].nodeType) && (t(r[r.length] = o = e[i]), e[i] !== o))
                                    for (; i-- && -1 == x.a.A(r, e[i]););
                        }
                        var o = x.a.g.Z(),
                            r = {
                                1: !0,
                                8: !0,
                                9: !0
                            },
                            i = {
                                1: !0,
                                9: !0
                            };
                        return {
                            za: function(t, n) {
                                if ("function" != typeof n) throw Error("Callback must be a function");
                                e(t, !0).push(n)
                            },
                            yb: function(t, n) {
                                var r = e(t, !1);
                                r && (x.a.Pa(r, n), 0 == r.length && x.a.g.set(t, o, s))
                            },
                            oa: function(e) {
                                return x.u.G((function() {
                                    r[e.nodeType] && (t(e), i[e.nodeType] && n(e.getElementsByTagName("*")))
                                })), e
                            },
                            removeNode: function(e) {
                                x.oa(e), e.parentNode && e.parentNode.removeChild(e)
                            },
                            cleanExternalData: function(e) {
                                c && "function" == typeof c.cleanData && c.cleanData([e])
                            }
                        }
                    }, x.oa = x.a.K.oa, x.removeNode = x.a.K.removeNode, x.b("cleanNode", x.oa), x.b("removeNode", x.removeNode), x.b("utils.domNodeDisposal", x.a.K), x.b("utils.domNodeDisposal.addDisposeCallback", x.a.K.za), x.b("utils.domNodeDisposal.removeDisposeCallback", x.a.K.yb), f = [0, "", ""], v = {
                        thead: m = [1, "<table>", "</table>"],
                        tbody: m,
                        tfoot: m,
                        tr: [2, "<table><tbody>", "</tbody></table>"],
                        td: g = [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                        th: g,
                        option: y = [1, "<select multiple='multiple'>", "</select>"],
                        optgroup: y
                    }, b = 8 >= x.a.W, x.a.ua = function(e, t) {
                        var n;
                        if (c) {
                            if (c.parseHTML) n = c.parseHTML(e, t) || [];
                            else if ((n = c.clean([e], t)) && n[0]) {
                                for (var o = n[0]; o.parentNode && 11 !== o.parentNode.nodeType;) o = o.parentNode;
                                o.parentNode && o.parentNode.removeChild(o)
                            }
                        } else {
                            (n = t) || (n = l), o = n.parentWindow || n.defaultView || a;
                            var r, i = x.a.Db(e).toLowerCase(),
                                s = n.createElement("div");
                            for (r = (i = i.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/)) && v[i[1]] || f, i = r[0], r = "ignored<div>" + r[1] + e + r[2] + "</div>", "function" == typeof o.innerShiv ? s.appendChild(o.innerShiv(r)) : (b && n.body.appendChild(s), s.innerHTML = r, b && s.parentNode.removeChild(s)); i--;) s = s.lastChild;
                            n = x.a.la(s.lastChild.childNodes)
                        }
                        return n
                    }, x.a.Md = function(e, t) {
                        var n = x.a.ua(e, t);
                        return n.length && n[0].parentElement || x.a.Yb(n)
                    }, x.a.fc = function(e, t) {
                        if (x.a.Tb(e), null !== (t = x.a.f(t)) && t !== s)
                            if ("string" != typeof t && (t = t.toString()), c) c(e).html(t);
                            else
                                for (var n = x.a.ua(t, e.ownerDocument), o = 0; o < n.length; o++) e.appendChild(n[o])
                    }, x.b("utils.parseHtmlFragment", x.a.ua), x.b("utils.setHtml", x.a.fc), x.aa = function() {
                        var e = {};
                        return {
                            Xb: function(t) {
                                if ("function" != typeof t) throw Error("You can only pass a function to ko.memoization.memoize()");
                                var n = (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1) + (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1);
                                return e[n] = t, "\x3c!--[ko_memo:" + n + "]--\x3e"
                            },
                            bd: function(t, n) {
                                var o = e[t];
                                if (o === s) throw Error("Couldn't find any memo with ID " + t + ". Perhaps it's already been unmemoized.");
                                try {
                                    return o.apply(null, n || []), !0
                                } finally {
                                    delete e[t]
                                }
                            },
                            cd: function(e, t) {
                                var n = [];
                                ! function e(t, n) {
                                    if (t)
                                        if (8 == t.nodeType) null != (o = x.aa.Uc(t.nodeValue)) && n.push({
                                            ud: t,
                                            Kd: o
                                        });
                                        else if (1 == t.nodeType)
                                        for (var o = 0, r = t.childNodes, i = r.length; o < i; o++) e(r[o], n)
                                }(e, n);
                                for (var o = 0, r = n.length; o < r; o++) {
                                    var i = n[o].ud,
                                        s = [i];
                                    t && x.a.Nb(s, t), x.aa.bd(n[o].Kd, s), i.nodeValue = "", i.parentNode && i.parentNode.removeChild(i)
                                }
                            },
                            Uc: function(e) {
                                return (e = e.match(/^\[ko_memo\:(.*?)\]$/)) ? e[1] : null
                            }
                        }
                    }(), x.b("memoization", x.aa), x.b("memoization.memoize", x.aa.Xb), x.b("memoization.unmemoize", x.aa.bd), x.b("memoization.parseMemoText", x.aa.Uc), x.b("memoization.unmemoizeDomNodeAndDescendants", x.aa.cd), x.na = function() {
                        function e() {
                            if (o)
                                for (var e, t = o, r = 0; i < o;)
                                    if (e = n[i++]) {
                                        if (i > t) {
                                            if (5e3 <= ++r) {
                                                i = o, x.a.Gc(Error("'Too much recursion' after processing " + r + " task groups."));
                                                break
                                            }
                                            t = o
                                        }
                                        try {
                                            e()
                                        } catch (e) {
                                            x.a.Gc(e)
                                        }
                                    }
                        }

                        function t() {
                            e(), i = o = n.length = 0
                        }
                        var n = [],
                            o = 0,
                            r = 1,
                            i = 0;
                        return {
                            scheduler: a.MutationObserver ? function(e) {
                                var t = l.createElement("div");
                                return new MutationObserver(e).observe(t, {
                                        attributes: !0
                                    }),
                                    function() {
                                        t.classList.toggle("foo")
                                    }
                            }(t) : l && "onreadystatechange" in l.createElement("script") ? function(e) {
                                var t = l.createElement("script");
                                t.onreadystatechange = function() {
                                    t.onreadystatechange = null, l.documentElement.removeChild(t), t = null, e()
                                }, l.documentElement.appendChild(t)
                            } : function(e) {
                                setTimeout(e, 0)
                            },
                            zb: function(e) {
                                return o || x.na.scheduler(t), n[o++] = e, r++
                            },
                            cancel: function(e) {
                                (e -= r - o) >= i && e < o && (n[e] = null)
                            },
                            resetForTesting: function() {
                                var e = o - i;
                                return i = o = n.length = 0, e
                            },
                            Sd: e
                        }
                    }(), x.b("tasks", x.na), x.b("tasks.schedule", x.na.zb), x.b("tasks.runEarly", x.na.Sd), x.Ta = {
                        throttle: function(e, t) {
                            e.throttleEvaluation = t;
                            var n = null;
                            return x.$({
                                read: e,
                                write: function(o) {
                                    clearTimeout(n), n = x.a.setTimeout((function() {
                                        e(o)
                                    }), t)
                                }
                            })
                        },
                        rateLimit: function(e, t) {
                            var n, i, s;
                            "number" == typeof t ? n = t : (n = t.timeout, i = t.method), e.Hb = !1, s = "function" == typeof i ? i : "notifyWhenChangesStop" == i ? r : o, e.ub((function(e) {
                                return s(e, n, t)
                            }))
                        },
                        deferred: function(e, t) {
                            if (!0 !== t) throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");
                            e.Hb || (e.Hb = !0, e.ub((function(t) {
                                var n, o = !1;
                                return function() {
                                    if (!o) {
                                        x.na.cancel(n), n = x.na.zb(t);
                                        try {
                                            o = !0, e.notifySubscribers(s, "dirty")
                                        } finally {
                                            o = !1
                                        }
                                    }
                                }
                            })))
                        },
                        notify: function(e, t) {
                            e.equalityComparer = "always" == t ? null : n
                        }
                    };
                    var C = {
                        undefined: 1,
                        boolean: 1,
                        number: 1,
                        string: 1
                    };
                    x.b("extenders", x.Ta), x.ic = function(e, t, n) {
                        this.da = e, this.lc = t, this.mc = n, this.Ib = !1, this.fb = this.Jb = null, x.L(this, "dispose", this.s), x.L(this, "disposeWhenNodeIsRemoved", this.l)
                    }, x.ic.prototype.s = function() {
                        this.Ib || (this.fb && x.a.K.yb(this.Jb, this.fb), this.Ib = !0, this.mc(), this.da = this.lc = this.mc = this.Jb = this.fb = null)
                    }, x.ic.prototype.l = function(e) {
                        this.Jb = e, x.a.K.za(e, this.fb = this.s.bind(this))
                    }, x.T = function() {
                        x.a.Ab(this, w), w.qb(this)
                    };
                    var w = {
                        qb: function(e) {
                            e.U = {
                                change: []
                            }, e.sc = 1
                        },
                        subscribe: function(e, t, n) {
                            var o = this;
                            n = n || "change";
                            var r = new x.ic(o, t ? e.bind(t) : e, (function() {
                                x.a.Pa(o.U[n], r), o.hb && o.hb(n)
                            }));
                            return o.Qa && o.Qa(n), o.U[n] || (o.U[n] = []), o.U[n].push(r), r
                        },
                        notifySubscribers: function(e, t) {
                            if ("change" === (t = t || "change") && this.Gb(), this.Wa(t)) {
                                var n = "change" === t && this.ed || this.U[t].slice(0);
                                try {
                                    x.u.xc();
                                    for (var o, r = 0; o = n[r]; ++r) o.Ib || o.lc(e)
                                } finally {
                                    x.u.end()
                                }
                            }
                        },
                        ob: function() {
                            return this.sc
                        },
                        Dd: function(e) {
                            return this.ob() !== e
                        },
                        Gb: function() {
                            ++this.sc
                        },
                        ub: function(e) {
                            var t, n, o, r, s, a = this,
                                l = x.O(a);
                            a.gb || (a.gb = a.notifySubscribers, a.notifySubscribers = i);
                            var u = e((function() {
                                a.Ja = !1, l && r === a && (r = a.nc ? a.nc() : a());
                                var e = n || s && a.sb(o, r);
                                s = n = t = !1, e && a.gb(o = r)
                            }));
                            a.qc = function(e, n) {
                                n && a.Ja || (s = !n), a.ed = a.U.change.slice(0), a.Ja = t = !0, r = e, u()
                            }, a.pc = function(e) {
                                t || (o = e, a.gb(e, "beforeChange"))
                            }, a.rc = function() {
                                s = !0
                            }, a.gd = function() {
                                a.sb(o, a.v(!0)) && (n = !0)
                            }
                        },
                        Wa: function(e) {
                            return this.U[e] && this.U[e].length
                        },
                        Bd: function(e) {
                            if (e) return this.U[e] && this.U[e].length || 0;
                            var t = 0;
                            return x.a.P(this.U, (function(e, n) {
                                "dirty" !== e && (t += n.length)
                            })), t
                        },
                        sb: function(e, t) {
                            return !this.equalityComparer || !this.equalityComparer(e, t)
                        },
                        toString: function() {
                            return "[object Object]"
                        },
                        extend: function(e) {
                            var t = this;
                            return e && x.a.P(e, (function(e, n) {
                                var o = x.Ta[e];
                                "function" == typeof o && (t = o(t, n) || t)
                            })), t
                        }
                    };
                    x.L(w, "init", w.qb), x.L(w, "subscribe", w.subscribe), x.L(w, "extend", w.extend), x.L(w, "getSubscriptionsCount", w.Bd), x.a.Ba && x.a.setPrototypeOf(w, Function.prototype), x.T.fn = w, x.Qc = function(e) {
                        return null != e && "function" == typeof e.subscribe && "function" == typeof e.notifySubscribers
                    }, x.b("subscribable", x.T), x.b("isSubscribable", x.Qc), x.S = x.u = function() {
                        function e(e) {
                            o.push(n), n = e
                        }

                        function t() {
                            n = o.pop()
                        }
                        var n, o = [],
                            r = 0;
                        return {
                            xc: e,
                            end: t,
                            cc: function(e) {
                                if (n) {
                                    if (!x.Qc(e)) throw Error("Only subscribable things can act as dependencies");
                                    n.od.call(n.pd, e, e.fd || (e.fd = ++r))
                                }
                            },
                            G: function(n, o, r) {
                                try {
                                    return e(), n.apply(o, r || [])
                                } finally {
                                    t()
                                }
                            },
                            qa: function() {
                                if (n) return n.o.qa()
                            },
                            Va: function() {
                                if (n) return n.o.Va()
                            },
                            Ya: function() {
                                if (n) return n.Ya
                            },
                            o: function() {
                                if (n) return n.o
                            }
                        }
                    }(), x.b("computedContext", x.S), x.b("computedContext.getDependenciesCount", x.S.qa), x.b("computedContext.getDependencies", x.S.Va), x.b("computedContext.isInitial", x.S.Ya), x.b("computedContext.registerDependency", x.S.cc), x.b("ignoreDependencies", x.Yd = x.u.G);
                    var P = x.a.Da("_latestValue");
                    x.ta = function(e) {
                        function t() {
                            return 0 < arguments.length ? (t.sb(t[P], arguments[0]) && (t.ya(), t[P] = arguments[0], t.xa()), this) : (x.u.cc(t), t[P])
                        }
                        return t[P] = e, x.a.Ba || x.a.extend(t, x.T.fn), x.T.fn.qb(t), x.a.Ab(t, V), x.options.deferUpdates && x.Ta.deferred(t, !0), t
                    };
                    var V = {
                        equalityComparer: n,
                        v: function() {
                            return this[P]
                        },
                        xa: function() {
                            this.notifySubscribers(this[P], "spectate"), this.notifySubscribers(this[P])
                        },
                        ya: function() {
                            this.notifySubscribers(this[P], "beforeChange")
                        }
                    };
                    x.a.Ba && x.a.setPrototypeOf(V, x.T.fn);
                    var T = x.ta.Ma = "__ko_proto__";
                    V[T] = x.ta, x.O = function(e) {
                        if ((e = "function" == typeof e && e[T]) && e !== V[T] && e !== x.o.fn[T]) throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");
                        return !!e
                    }, x.Za = function(e) {
                        return "function" == typeof e && (e[T] === V[T] || e[T] === x.o.fn[T] && e.Nc)
                    }, x.b("observable", x.ta), x.b("isObservable", x.O), x.b("isWriteableObservable", x.Za), x.b("isWritableObservable", x.Za), x.b("observable.fn", V), x.L(V, "peek", V.v), x.L(V, "valueHasMutated", V.xa), x.L(V, "valueWillMutate", V.ya), x.Ha = function(e) {
                        if ("object" != typeof(e = e || []) || !("length" in e)) throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
                        return e = x.ta(e), x.a.Ab(e, x.Ha.fn), e.extend({
                            trackArrayChanges: !0
                        })
                    }, x.Ha.fn = {
                        remove: function(e) {
                            for (var t = this.v(), n = [], o = "function" != typeof e || x.O(e) ? function(t) {
                                    return t === e
                                } : e, r = 0; r < t.length; r++) {
                                var i = t[r];
                                if (o(i)) {
                                    if (0 === n.length && this.ya(), t[r] !== i) throw Error("Array modified during remove; cannot remove item");
                                    n.push(i), t.splice(r, 1), r--
                                }
                            }
                            return n.length && this.xa(), n
                        },
                        removeAll: function(e) {
                            if (e === s) {
                                var t = this.v(),
                                    n = t.slice(0);
                                return this.ya(), t.splice(0, t.length), this.xa(), n
                            }
                            return e ? this.remove((function(t) {
                                return 0 <= x.a.A(e, t)
                            })) : []
                        },
                        destroy: function(e) {
                            var t = this.v(),
                                n = "function" != typeof e || x.O(e) ? function(t) {
                                    return t === e
                                } : e;
                            this.ya();
                            for (var o = t.length - 1; 0 <= o; o--) {
                                var r = t[o];
                                n(r) && (r._destroy = !0)
                            }
                            this.xa()
                        },
                        destroyAll: function(e) {
                            return e === s ? this.destroy((function() {
                                return !0
                            })) : e ? this.destroy((function(t) {
                                return 0 <= x.a.A(e, t)
                            })) : []
                        },
                        indexOf: function(e) {
                            var t = this();
                            return x.a.A(t, e)
                        },
                        replace: function(e, t) {
                            var n = this.indexOf(e);
                            0 <= n && (this.ya(), this.v()[n] = t, this.xa())
                        },
                        sorted: function(e) {
                            var t = this().slice(0);
                            return e ? t.sort(e) : t.sort()
                        },
                        reversed: function() {
                            return this().slice(0).reverse()
                        }
                    }, x.a.Ba && x.a.setPrototypeOf(x.Ha.fn, x.ta.fn), x.a.D("pop push reverse shift sort splice unshift".split(" "), (function(e) {
                        x.Ha.fn[e] = function() {
                            var t = this.v();
                            this.ya(), this.zc(t, e, arguments);
                            var n = t[e].apply(t, arguments);
                            return this.xa(), n === t ? this : n
                        }
                    })), x.a.D(["slice"], (function(e) {
                        x.Ha.fn[e] = function() {
                            var t = this();
                            return t[e].apply(t, arguments)
                        }
                    })), x.Pc = function(e) {
                        return x.O(e) && "function" == typeof e.remove && "function" == typeof e.push
                    }, x.b("observableArray", x.Ha), x.b("isObservableArray", x.Pc), x.Ta.trackArrayChanges = function(e, t) {
                        function n() {
                            function t() {
                                if (u) {
                                    var t, n = [].concat(e.v() || []);
                                    e.Wa("arrayChange") && ((!l || 1 < u) && (l = x.a.Pb(i, n, e.Ob)), t = l), i = n, l = null, u = 0, t && t.length && e.notifySubscribers(t, "arrayChange")
                                }
                            }
                            a ? t() : (a = !0, r = e.subscribe((function() {
                                ++u
                            }), null, "spectate"), i = [].concat(e.v() || []), l = null, o = e.subscribe(t))
                        }
                        if (e.Ob = {}, t && "object" == typeof t && x.a.extend(e.Ob, t), e.Ob.sparse = !0, !e.zc) {
                            var o, r, i, a = !1,
                                l = null,
                                u = 0,
                                c = e.Qa,
                                p = e.hb;
                            e.Qa = function(t) {
                                c && c.call(e, t), "arrayChange" === t && n()
                            }, e.hb = function(t) {
                                p && p.call(e, t), "arrayChange" !== t || e.Wa("arrayChange") || (o && o.s(), r && r.s(), r = o = null, a = !1, i = s)
                            }, e.zc = function(e, t, n) {
                                function o(e, t, n) {
                                    return r[r.length] = {
                                        status: e,
                                        value: t,
                                        index: n
                                    }
                                }
                                if (a && !u) {
                                    var r = [],
                                        i = e.length,
                                        s = n.length,
                                        c = 0;
                                    switch (t) {
                                        case "push":
                                            c = i;
                                        case "unshift":
                                            for (t = 0; t < s; t++) o("added", n[t], c + t);
                                            break;
                                        case "pop":
                                            c = i - 1;
                                        case "shift":
                                            i && o("deleted", e[c], c);
                                            break;
                                        case "splice":
                                            t = Math.min(Math.max(0, 0 > n[0] ? i + n[0] : n[0]), i), i = 1 === s ? i : Math.min(t + (n[1] || 0), i), s = t + s - 2, c = Math.max(i, s);
                                            for (var p = [], d = [], h = 2; t < c; ++t, ++h) t < i && d.push(o("deleted", e[t], t)), t < s && p.push(o("added", n[h], t));
                                            x.a.Kc(d, p);
                                            break;
                                        default:
                                            return
                                    }
                                    l = r
                                }
                            }
                        }
                    };
                    var k = x.a.Da("_state");
                    x.o = x.$ = function(e, t, n) {
                        function o() {
                            if (0 < arguments.length) {
                                if ("function" != typeof r) throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
                                return r.apply(i.nb, arguments), this
                            }
                            return i.ra || x.u.cc(o), (i.ka || i.J && o.Xa()) && o.ha(), i.X
                        }
                        if ("object" == typeof e ? n = e : (n = n || {}, e && (n.read = e)), "function" != typeof n.read) throw Error("Pass a function that returns the value of the ko.computed");
                        var r = n.write,
                            i = {
                                X: s,
                                sa: !0,
                                ka: !0,
                                rb: !1,
                                jc: !1,
                                ra: !1,
                                wb: !1,
                                J: !1,
                                Wc: n.read,
                                nb: t || n.owner,
                                l: n.disposeWhenNodeIsRemoved || n.l || null,
                                Sa: n.disposeWhen || n.Sa,
                                Rb: null,
                                I: {},
                                V: 0,
                                Ic: null
                            };
                        return o[k] = i, o.Nc = "function" == typeof r, x.a.Ba || x.a.extend(o, x.T.fn), x.T.fn.qb(o), x.a.Ab(o, S), n.pure ? (i.wb = !0, i.J = !0, x.a.extend(o, O)) : n.deferEvaluation && x.a.extend(o, E), x.options.deferUpdates && x.Ta.deferred(o, !0), i.l && (i.jc = !0, i.l.nodeType || (i.l = null)), i.J || n.deferEvaluation || o.ha(), i.l && o.ja() && x.a.K.za(i.l, i.Rb = function() {
                            o.s()
                        }), o
                    };
                    var S = {
                            equalityComparer: n,
                            qa: function() {
                                return this[k].V
                            },
                            Va: function() {
                                var e = [];
                                return x.a.P(this[k].I, (function(t, n) {
                                    e[n.Ka] = n.da
                                })), e
                            },
                            Vb: function(e) {
                                if (!this[k].V) return !1;
                                var t = this.Va();
                                return -1 !== x.a.A(t, e) || !!x.a.Lb(t, (function(t) {
                                    return t.Vb && t.Vb(e)
                                }))
                            },
                            uc: function(e, t, n) {
                                if (this[k].wb && t === this) throw Error("A 'pure' computed must not be called recursively");
                                this[k].I[e] = n, n.Ka = this[k].V++, n.La = t.ob()
                            },
                            Xa: function() {
                                var e, t, n = this[k].I;
                                for (e in n)
                                    if (Object.prototype.hasOwnProperty.call(n, e) && (t = n[e], this.Ia && t.da.Ja || t.da.Dd(t.La))) return !0
                            },
                            Jd: function() {
                                this.Ia && !this[k].rb && this.Ia(!1)
                            },
                            ja: function() {
                                var e = this[k];
                                return e.ka || 0 < e.V
                            },
                            Rd: function() {
                                this.Ja ? this[k].ka && (this[k].sa = !0) : this.Hc()
                            },
                            $c: function(e) {
                                if (e.Hb) {
                                    var t = e.subscribe(this.Jd, this, "dirty"),
                                        n = e.subscribe(this.Rd, this);
                                    return {
                                        da: e,
                                        s: function() {
                                            t.s(), n.s()
                                        }
                                    }
                                }
                                return e.subscribe(this.Hc, this)
                            },
                            Hc: function() {
                                var e = this,
                                    t = e.throttleEvaluation;
                                t && 0 <= t ? (clearTimeout(this[k].Ic), this[k].Ic = x.a.setTimeout((function() {
                                    e.ha(!0)
                                }), t)) : e.Ia ? e.Ia(!0) : e.ha(!0)
                            },
                            ha: function(e) {
                                var t = this[k],
                                    n = t.Sa,
                                    o = !1;
                                if (!t.rb && !t.ra) {
                                    if (t.l && !x.a.Sb(t.l) || n && n()) {
                                        if (!t.jc) return void this.s()
                                    } else t.jc = !1;
                                    t.rb = !0;
                                    try {
                                        o = this.zd(e)
                                    } finally {
                                        t.rb = !1
                                    }
                                    return o
                                }
                            },
                            zd: function(e) {
                                var t = this[k],
                                    n = !1,
                                    o = t.wb ? s : !t.V;
                                n = {
                                    qd: this,
                                    mb: t.I,
                                    Qb: t.V
                                }, x.u.xc({
                                    pd: n,
                                    od: h,
                                    o: this,
                                    Ya: o
                                }), t.I = {}, t.V = 0;
                                var r = this.yd(t, n);
                                return t.V ? n = this.sb(t.X, r) : (this.s(), n = !0), n && (t.J ? this.Gb() : this.notifySubscribers(t.X, "beforeChange"), t.X = r, this.notifySubscribers(t.X, "spectate"), !t.J && e && this.notifySubscribers(t.X), this.rc && this.rc()), o && this.notifySubscribers(t.X, "awake"), n
                            },
                            yd: function(e, t) {
                                try {
                                    var n = e.Wc;
                                    return e.nb ? n.call(e.nb) : n()
                                } finally {
                                    x.u.end(), t.Qb && !e.J && x.a.P(t.mb, d), e.sa = e.ka = !1
                                }
                            },
                            v: function(e) {
                                var t = this[k];
                                return (t.ka && (e || !t.V) || t.J && this.Xa()) && this.ha(), t.X
                            },
                            ub: function(e) {
                                x.T.fn.ub.call(this, e), this.nc = function() {
                                    return this[k].J || (this[k].sa ? this.ha() : this[k].ka = !1), this[k].X
                                }, this.Ia = function(e) {
                                    this.pc(this[k].X), this[k].ka = !0, e && (this[k].sa = !0), this.qc(this, !e)
                                }
                            },
                            s: function() {
                                var e = this[k];
                                !e.J && e.I && x.a.P(e.I, (function(e, t) {
                                    t.s && t.s()
                                })), e.l && e.Rb && x.a.K.yb(e.l, e.Rb), e.I = s, e.V = 0, e.ra = !0, e.sa = !1, e.ka = !1, e.J = !1, e.l = s, e.Sa = s, e.Wc = s, this.Nc || (e.nb = s)
                            }
                        },
                        O = {
                            Qa: function(e) {
                                var t = this,
                                    n = t[k];
                                if (!n.ra && n.J && "change" == e) {
                                    if (n.J = !1, n.sa || t.Xa()) n.I = null, n.V = 0, t.ha() && t.Gb();
                                    else {
                                        var o = [];
                                        x.a.P(n.I, (function(e, t) {
                                            o[t.Ka] = e
                                        })), x.a.D(o, (function(e, o) {
                                            var r = n.I[e],
                                                i = t.$c(r.da);
                                            i.Ka = o, i.La = r.La, n.I[e] = i
                                        })), t.Xa() && t.ha() && t.Gb()
                                    }
                                    n.ra || t.notifySubscribers(n.X, "awake")
                                }
                            },
                            hb: function(e) {
                                var t = this[k];
                                t.ra || "change" != e || this.Wa("change") || (x.a.P(t.I, (function(e, n) {
                                    n.s && (t.I[e] = {
                                        da: n.da,
                                        Ka: n.Ka,
                                        La: n.La
                                    }, n.s())
                                })), t.J = !0, this.notifySubscribers(s, "asleep"))
                            },
                            ob: function() {
                                var e = this[k];
                                return e.J && (e.sa || this.Xa()) && this.ha(), x.T.fn.ob.call(this)
                            }
                        },
                        E = {
                            Qa: function(e) {
                                "change" != e && "beforeChange" != e || this.v()
                            }
                        };
                    x.a.Ba && x.a.setPrototypeOf(S, x.T.fn);
                    var R = x.ta.Ma;
                    S[R] = x.o, x.Oc = function(e) {
                            return "function" == typeof e && e[R] === S[R]
                        }, x.Fd = function(e) {
                            return x.Oc(e) && e[k] && e[k].wb
                        }, x.b("computed", x.o), x.b("dependentObservable", x.o), x.b("isComputed", x.Oc), x.b("isPureComputed", x.Fd), x.b("computed.fn", S), x.L(S, "peek", S.v), x.L(S, "dispose", S.s), x.L(S, "isActive", S.ja), x.L(S, "getDependenciesCount", S.qa), x.L(S, "getDependencies", S.Va), x.xb = function(e, t) {
                            return "function" == typeof e ? x.o(e, t, {
                                pure: !0
                            }) : ((e = x.a.extend({}, e)).pure = !0, x.o(e, t))
                        }, x.b("pureComputed", x.xb),
                        function() {
                            function e(n, o, r) {
                                if (r = r || new t, "object" != typeof(n = o(n)) || null === n || n === s || n instanceof RegExp || n instanceof Date || n instanceof String || n instanceof Number || n instanceof Boolean) return n;
                                var i = n instanceof Array ? [] : {};
                                return r.save(n, i),
                                    function(e, t) {
                                        if (e instanceof Array) {
                                            for (var n = 0; n < e.length; n++) t(n);
                                            "function" == typeof e.toJSON && t("toJSON")
                                        } else
                                            for (n in e) t(n)
                                    }(n, (function(t) {
                                        var a = o(n[t]);
                                        switch (typeof a) {
                                            case "boolean":
                                            case "number":
                                            case "string":
                                            case "function":
                                                i[t] = a;
                                                break;
                                            case "object":
                                            case "undefined":
                                                var l = r.get(a);
                                                i[t] = l !== s ? l : e(a, o, r)
                                        }
                                    })), i
                            }

                            function t() {
                                this.keys = [], this.values = []
                            }
                            x.ad = function(t) {
                                if (0 == arguments.length) throw Error("When calling ko.toJS, pass the object you want to convert.");
                                return e(t, (function(e) {
                                    for (var t = 0; x.O(e) && 10 > t; t++) e = e();
                                    return e
                                }))
                            }, x.toJSON = function(e, t, n) {
                                return e = x.ad(e), x.a.hc(e, t, n)
                            }, t.prototype = {
                                constructor: t,
                                save: function(e, t) {
                                    var n = x.a.A(this.keys, e);
                                    0 <= n ? this.values[n] = t : (this.keys.push(e), this.values.push(t))
                                },
                                get: function(e) {
                                    return 0 <= (e = x.a.A(this.keys, e)) ? this.values[e] : s
                                }
                            }
                        }(), x.b("toJS", x.ad), x.b("toJSON", x.toJSON), x.Wd = function(e, t, n) {
                            function o(t) {
                                var o = x.xb(e, n).extend({
                                        ma: "always"
                                    }),
                                    r = o.subscribe((function(e) {
                                        e && (r.s(), t(e))
                                    }));
                                return o.notifySubscribers(o.v()), r
                            }
                            return "function" != typeof Promise || t ? o(t.bind(n)) : new Promise(o)
                        }, x.b("when", x.Wd), x.w = {
                            M: function(e) {
                                switch (x.a.R(e)) {
                                    case "option":
                                        return !0 === e.__ko__hasDomDataOptionValue__ ? x.a.g.get(e, x.c.options.$b) : 7 >= x.a.W ? e.getAttributeNode("value") && e.getAttributeNode("value").specified ? e.value : e.text : e.value;
                                    case "select":
                                        return 0 <= e.selectedIndex ? x.w.M(e.options[e.selectedIndex]) : s;
                                    default:
                                        return e.value
                                }
                            },
                            cb: function(e, t, n) {
                                switch (x.a.R(e)) {
                                    case "option":
                                        "string" == typeof t ? (x.a.g.set(e, x.c.options.$b, s), "__ko__hasDomDataOptionValue__" in e && delete e.__ko__hasDomDataOptionValue__, e.value = t) : (x.a.g.set(e, x.c.options.$b, t), e.__ko__hasDomDataOptionValue__ = !0, e.value = "number" == typeof t ? t : "");
                                        break;
                                    case "select":
                                        "" !== t && null !== t || (t = s);
                                        for (var o, r = -1, i = 0, a = e.options.length; i < a; ++i)
                                            if ((o = x.w.M(e.options[i])) == t || "" === o && t === s) {
                                                r = i;
                                                break
                                            }(n || 0 <= r || t === s && 1 < e.size) && (e.selectedIndex = r, 6 === x.a.W && x.a.setTimeout((function() {
                                                e.selectedIndex = r
                                            }), 0));
                                        break;
                                    default:
                                        null !== t && t !== s || (t = ""), e.value = t
                                }
                            }
                        }, x.b("selectExtensions", x.w), x.b("selectExtensions.readValue", x.w.M), x.b("selectExtensions.writeValue", x.w.cb), x.m = function() {
                            function e(e) {
                                123 === (e = x.a.Db(e)).charCodeAt(0) && (e = e.slice(1, -1));
                                var t, n = [],
                                    s = (e += "\n,").match(o),
                                    a = [],
                                    l = 0;
                                if (1 < s.length) {
                                    for (var u, c = 0; u = s[c]; ++c) {
                                        var p = u.charCodeAt(0);
                                        if (44 === p) {
                                            if (0 >= l) {
                                                n.push(t && a.length ? {
                                                    key: t,
                                                    value: a.join("")
                                                } : {
                                                    unknown: t || a.join("")
                                                }), t = l = 0, a = [];
                                                continue
                                            }
                                        } else if (58 === p) {
                                            if (!l && !t && 1 === a.length) {
                                                t = a.pop();
                                                continue
                                            }
                                        } else {
                                            if (47 === p && 1 < u.length && (47 === u.charCodeAt(1) || 42 === u.charCodeAt(1))) continue;
                                            47 === p && c && 1 < u.length ? (p = s[c - 1].match(r)) && !i[p[0]] && (s = (e = e.substr(e.indexOf(u) + 1)).match(o), c = -1, u = "/") : 40 === p || 123 === p || 91 === p ? ++l : 41 === p || 125 === p || 93 === p ? --l : t || a.length || 34 !== p && 39 !== p || (u = u.slice(1, -1))
                                        }
                                        a.push(u)
                                    }
                                    if (0 < l) throw Error("Unbalanced parentheses, braces, or brackets")
                                }
                                return n
                            }
                            var t = ["true", "false", "null", "undefined"],
                                n = /^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,
                                o = RegExp("\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|`(?:\\\\.|[^`])*`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*\n|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,\"'`{}()/:[\\]]*[^\\s,\"'`{}()/:[\\]]|[^\\s]", "g"),
                                r = /[\])"'A-Za-z0-9_$]+$/,
                                i = {
                                    in: 1,
                                    return: 1,
                                    typeof: 1
                                },
                                s = {};
                            return {
                                Ra: [],
                                wa: s,
                                ac: e,
                                vb: function(o, r) {
                                    function i(e, o) {
                                        var r;
                                        if (!c) {
                                            var p = x.getBindingHandler(e);
                                            if (p && p.preprocess && !(o = p.preprocess(o, e, i))) return;
                                            (p = s[e]) && (r = o, 0 <= x.a.A(t, r) ? r = !1 : (p = r.match(n), r = null !== p && (p[1] ? "Object(" + p[1] + ")" + p[2] : r)), p = r), p && l.push("'" + ("string" == typeof s[e] ? s[e] : e) + "':function(_z){" + r + "=_z}")
                                        }
                                        u && (o = "function(){return " + o + " }"), a.push("'" + e + "':" + o)
                                    }
                                    var a = [],
                                        l = [],
                                        u = (r = r || {}).valueAccessors,
                                        c = r.bindingParams,
                                        p = "string" == typeof o ? e(o) : o;
                                    return x.a.D(p, (function(e) {
                                        i(e.key || e.unknown, e.value)
                                    })), l.length && i("_ko_property_writers", "{" + l.join(",") + " }"), a.join(",")
                                },
                                Id: function(e, t) {
                                    for (var n = 0; n < e.length; n++)
                                        if (e[n].key == t) return !0;
                                    return !1
                                },
                                eb: function(e, t, n, o, r) {
                                    e && x.O(e) ? !x.Za(e) || r && e.v() === o || e(o) : (e = t.get("_ko_property_writers")) && e[n] && e[n](o)
                                }
                            }
                        }(), x.b("expressionRewriting", x.m), x.b("expressionRewriting.bindingRewriteValidators", x.m.Ra), x.b("expressionRewriting.parseObjectLiteral", x.m.ac), x.b("expressionRewriting.preProcessBindings", x.m.vb), x.b("expressionRewriting._twoWayBindings", x.m.wa), x.b("jsonExpressionRewriting", x.m), x.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson", x.m.vb),
                        function() {
                            function e(e) {
                                return 8 == e.nodeType && i.test(r ? e.text : e.nodeValue)
                            }

                            function t(e) {
                                return 8 == e.nodeType && s.test(r ? e.text : e.nodeValue)
                            }

                            function n(n, o) {
                                for (var r = n, i = 1, s = []; r = r.nextSibling;) {
                                    if (t(r) && (x.a.g.set(r, u, !0), 0 == --i)) return s;
                                    s.push(r), e(r) && i++
                                }
                                if (!o) throw Error("Cannot find closing comment tag to match: " + n.nodeValue);
                                return null
                            }

                            function o(e, t) {
                                var o = n(e, t);
                                return o ? 0 < o.length ? o[o.length - 1].nextSibling : e.nextSibling : null
                            }
                            var r = l && "\x3c!--test--\x3e" === l.createComment("test").text,
                                i = r ? /^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/ : /^\s*ko(?:\s+([\s\S]+))?\s*$/,
                                s = r ? /^\x3c!--\s*\/ko\s*--\x3e$/ : /^\s*\/ko\s*$/,
                                a = {
                                    ul: !0,
                                    ol: !0
                                },
                                u = "__ko_matchedEndComment__";
                            x.h = {
                                ea: {},
                                childNodes: function(t) {
                                    return e(t) ? n(t) : t.childNodes
                                },
                                Ea: function(t) {
                                    if (e(t))
                                        for (var n = 0, o = (t = x.h.childNodes(t)).length; n < o; n++) x.removeNode(t[n]);
                                    else x.a.Tb(t)
                                },
                                va: function(t, n) {
                                    if (e(t)) {
                                        x.h.Ea(t);
                                        for (var o = t.nextSibling, r = 0, i = n.length; r < i; r++) o.parentNode.insertBefore(n[r], o)
                                    } else x.a.va(t, n)
                                },
                                Vc: function(t, n) {
                                    var o;
                                    e(t) ? (o = t.nextSibling, t = t.parentNode) : o = t.firstChild, o ? n !== o && t.insertBefore(n, o) : t.appendChild(n)
                                },
                                Wb: function(t, n, o) {
                                    o ? (o = o.nextSibling, e(t) && (t = t.parentNode), o ? n !== o && t.insertBefore(n, o) : t.appendChild(n)) : x.h.Vc(t, n)
                                },
                                firstChild: function(n) {
                                    if (e(n)) return !n.nextSibling || t(n.nextSibling) ? null : n.nextSibling;
                                    if (n.firstChild && t(n.firstChild)) throw Error("Found invalid end comment, as the first child of " + n);
                                    return n.firstChild
                                },
                                nextSibling: function(n) {
                                    if (e(n) && (n = o(n)), n.nextSibling && t(n.nextSibling)) {
                                        var r = n.nextSibling;
                                        if (t(r) && !x.a.g.get(r, u)) throw Error("Found end comment without a matching opening comment, as child of " + n);
                                        return null
                                    }
                                    return n.nextSibling
                                },
                                Cd: e,
                                Vd: function(e) {
                                    return (e = (r ? e.text : e.nodeValue).match(i)) ? e[1] : null
                                },
                                Sc: function(n) {
                                    if (a[x.a.R(n)]) {
                                        var r = n.firstChild;
                                        if (r)
                                            do {
                                                if (1 === r.nodeType) {
                                                    var i, s = null;
                                                    if (i = r.firstChild)
                                                        do {
                                                            if (s) s.push(i);
                                                            else if (e(i)) {
                                                                var l = o(i, !0);
                                                                l ? i = l : s = [i]
                                                            } else t(i) && (s = [i])
                                                        } while (i = i.nextSibling);
                                                    if (i = s)
                                                        for (s = r.nextSibling, l = 0; l < i.length; l++) s ? n.insertBefore(i[l], s) : n.appendChild(i[l])
                                                }
                                            } while (r = r.nextSibling)
                                    }
                                }
                            }
                        }(), x.b("virtualElements", x.h), x.b("virtualElements.allowedBindings", x.h.ea), x.b("virtualElements.emptyNode", x.h.Ea), x.b("virtualElements.insertAfter", x.h.Wb), x.b("virtualElements.prepend", x.h.Vc), x.b("virtualElements.setDomNodeChildren", x.h.va), x.ga = function() {
                            this.nd = {}
                        }, x.a.extend(x.ga.prototype, {
                            nodeHasBindings: function(e) {
                                switch (e.nodeType) {
                                    case 1:
                                        return null != e.getAttribute("data-bind") || x.j.getComponentNameForNode(e);
                                    case 8:
                                        return x.h.Cd(e);
                                    default:
                                        return !1
                                }
                            },
                            getBindings: function(e, t) {
                                var n = (n = this.getBindingsString(e, t)) ? this.parseBindingsString(n, t, e) : null;
                                return x.j.tc(n, e, t, !1)
                            },
                            getBindingAccessors: function(e, t) {
                                var n = (n = this.getBindingsString(e, t)) ? this.parseBindingsString(n, t, e, {
                                    valueAccessors: !0
                                }) : null;
                                return x.j.tc(n, e, t, !0)
                            },
                            getBindingsString: function(e) {
                                switch (e.nodeType) {
                                    case 1:
                                        return e.getAttribute("data-bind");
                                    case 8:
                                        return x.h.Vd(e);
                                    default:
                                        return null
                                }
                            },
                            parseBindingsString: function(e, t, n, o) {
                                try {
                                    var r, i = this.nd,
                                        s = e + (o && o.valueAccessors || "");
                                    if (!(r = i[s])) {
                                        var a, l = "with($context){with($data||{}){return{" + x.m.vb(e, o) + "}}}";
                                        a = new Function("$context", "$element", l), r = i[s] = a
                                    }
                                    return r(t, n)
                                } catch (t) {
                                    throw t.message = "Unable to parse bindings.\nBindings value: " + e + "\nMessage: " + t.message, t
                                }
                            }
                        }), x.ga.instance = new x.ga, x.b("bindingProvider", x.ga),
                        function() {
                            function e(e) {
                                var t = (e = x.a.g.get(e, C)) && e.N;
                                t && (e.N = null, t.Tc())
                            }

                            function t(t, n, o) {
                                this.node = t, this.yc = n, this.kb = [], this.H = !1, n.N || x.a.K.za(t, e), o && o.N && (o.N.kb.push(t), this.Kb = o)
                            }

                            function n(e) {
                                return function() {
                                    return e
                                }
                            }

                            function o(e) {
                                return e()
                            }

                            function r(e) {
                                return x.a.Ga(x.u.G(e), (function(t, n) {
                                    return function() {
                                        return e()[n]
                                    }
                                }))
                            }

                            function i(e, t, o) {
                                return "function" == typeof e ? r(e.bind(null, t, o)) : x.a.Ga(e, n)
                            }

                            function u(e, t) {
                                return r(this.getBindings.bind(this, e, t))
                            }

                            function p(e, t) {
                                var n = x.h.firstChild(t);
                                if (n) {
                                    var o, r = x.ga.instance,
                                        i = r.preprocessNode;
                                    if (i) {
                                        for (; o = n;) n = x.h.nextSibling(o), i.call(r, o);
                                        n = x.h.firstChild(t)
                                    }
                                    for (; o = n;) n = x.h.nextSibling(o), d(e, o)
                                }
                                x.i.ma(t, x.i.H)
                            }

                            function d(e, t) {
                                var n = e,
                                    o = 1 === t.nodeType;
                                o && x.h.Sc(t), (o || x.ga.instance.nodeHasBindings(t)) && (n = h(t, null, e).bindingContextForDescendants), n && !v[x.a.R(t)] && p(n, t)
                            }

                            function h(e, t, n) {
                                var r, i = x.a.g.Ub(e, C, {}),
                                    a = i.hd;
                                if (!t) {
                                    if (a) throw Error("You cannot apply bindings multiple times to the same element.");
                                    i.hd = !0
                                }
                                if (a || (i.context = n), i.Zb || (i.Zb = {}), t && "function" != typeof t) r = t;
                                else {
                                    var l = x.ga.instance,
                                        c = l.getBindingAccessors || u,
                                        p = x.$((function() {
                                            return (r = t ? t(n, e) : c.call(l, e, n)) && (n[m] && n[m](), n[y] && n[y]()), r
                                        }), null, {
                                            l: e
                                        });
                                    r && p.ja() || (p = null)
                                }
                                var d, h = n;
                                if (r) {
                                    var f = function() {
                                            return x.a.Ga(p ? p() : r, o)
                                        },
                                        g = p ? function(e) {
                                            return function() {
                                                return o(p()[e])
                                            }
                                        } : function(e) {
                                            return r[e]
                                        };
                                    f.get = function(e) {
                                        return r[e] && o(g(e))
                                    }, f.has = function(e) {
                                        return e in r
                                    }, x.i.H in r && x.i.subscribe(e, x.i.H, (function() {
                                        var t = (0, r[x.i.H])();
                                        if (t) {
                                            var n = x.h.childNodes(e);
                                            n.length && t(n, x.Ec(n[0]))
                                        }
                                    })), x.i.pa in r && (h = x.i.Cb(e, n), x.i.subscribe(e, x.i.pa, (function() {
                                        var t = (0, r[x.i.pa])();
                                        t && x.h.firstChild(e) && t(e)
                                    }))), i = function(e) {
                                        var t = [],
                                            n = {},
                                            o = [];
                                        return x.a.P(e, (function r(i) {
                                            if (!n[i]) {
                                                var s = x.getBindingHandler(i);
                                                s && (s.after && (o.push(i), x.a.D(s.after, (function(t) {
                                                    if (e[t]) {
                                                        if (-1 !== x.a.A(o, t)) throw Error("Cannot combine the following bindings, because they have a cyclic dependency: " + o.join(", "));
                                                        r(t)
                                                    }
                                                })), o.length--), t.push({
                                                    key: i,
                                                    Mc: s
                                                })), n[i] = !0
                                            }
                                        })), t
                                    }(r), x.a.D(i, (function(t) {
                                        var n = t.Mc.init,
                                            o = t.Mc.update,
                                            i = t.key;
                                        if (8 === e.nodeType && !x.h.ea[i]) throw Error("The binding '" + i + "' cannot be used with virtual elements");
                                        try {
                                            "function" == typeof n && x.u.G((function() {
                                                var t = n(e, g(i), f, h.$data, h);
                                                if (t && t.controlsDescendantBindings) {
                                                    if (d !== s) throw Error("Multiple bindings (" + d + " and " + i + ") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");
                                                    d = i
                                                }
                                            })), "function" == typeof o && x.$((function() {
                                                o(e, g(i), f, h.$data, h)
                                            }), null, {
                                                l: e
                                            })
                                        } catch (e) {
                                            throw e.message = 'Unable to process binding "' + i + ": " + r[i] + '"\nMessage: ' + e.message, e
                                        }
                                    }))
                                }
                                return {
                                    shouldBindDescendants: i = d === s,
                                    bindingContextForDescendants: i && h
                                }
                            }

                            function f(e, t) {
                                return e && e instanceof x.fa ? e : new x.fa(e, s, s, t)
                            }
                            var m = x.a.Da("_subscribable"),
                                g = x.a.Da("_ancestorBindingInfo"),
                                y = x.a.Da("_dataDependency");
                            x.c = {};
                            var v = {
                                script: !0,
                                textarea: !0,
                                template: !0
                            };
                            x.getBindingHandler = function(e) {
                                return x.c[e]
                            };
                            var b = {};
                            x.fa = function(e, t, n, o, r) {
                                function i() {
                                    var e = p ? c() : c,
                                        r = x.a.f(e);
                                    return t ? (x.a.extend(l, t), g in t && (l[g] = t[g])) : (l.$parents = [], l.$root = r, l.ko = x), l[m] = a, u ? r = l.$data : (l.$rawData = e, l.$data = r), n && (l[n] = r), o && o(l, t, r), t && t[m] && !x.S.o().Vb(t[m]) && t[m](), d && (l[y] = d), l.$data
                                }
                                var a, l = this,
                                    u = e === b,
                                    c = u ? s : e,
                                    p = "function" == typeof c && !x.O(c),
                                    d = r && r.dataDependency;
                                r && r.exportDependencies ? i() : ((a = x.xb(i)).v(), a.ja() ? a.equalityComparer = null : l[m] = s)
                            }, x.fa.prototype.createChildContext = function(e, t, n, o) {
                                if (!o && t && "object" == typeof t && (t = (o = t).as, n = o.extend), t && o && o.noChildContext) {
                                    var r = "function" == typeof e && !x.O(e);
                                    return new x.fa(b, this, null, (function(o) {
                                        n && n(o), o[t] = r ? e() : e
                                    }), o)
                                }
                                return new x.fa(e, this, t, (function(e, t) {
                                    e.$parentContext = t, e.$parent = t.$data, e.$parents = (t.$parents || []).slice(0), e.$parents.unshift(e.$parent), n && n(e)
                                }), o)
                            }, x.fa.prototype.extend = function(e, t) {
                                return new x.fa(b, this, null, (function(t) {
                                    x.a.extend(t, "function" == typeof e ? e(t) : e)
                                }), t)
                            };
                            var C = x.a.g.Z();
                            t.prototype.Tc = function() {
                                this.Kb && this.Kb.N && this.Kb.N.sd(this.node)
                            }, t.prototype.sd = function(e) {
                                x.a.Pa(this.kb, e), !this.kb.length && this.H && this.Cc()
                            }, t.prototype.Cc = function() {
                                this.H = !0, this.yc.N && !this.kb.length && (this.yc.N = null, x.a.K.yb(this.node, e), x.i.ma(this.node, x.i.pa), this.Tc())
                            }, x.i = {
                                H: "childrenComplete",
                                pa: "descendantsComplete",
                                subscribe: function(e, t, n, o, r) {
                                    var i = x.a.g.Ub(e, C, {});
                                    return i.Fa || (i.Fa = new x.T), r && r.notifyImmediately && i.Zb[t] && x.u.G(n, o, [e]), i.Fa.subscribe(n, o, t)
                                },
                                ma: function(e, t) {
                                    var n = x.a.g.get(e, C);
                                    if (n && (n.Zb[t] = !0, n.Fa && n.Fa.notifySubscribers(e, t), t == x.i.H))
                                        if (n.N) n.N.Cc();
                                        else if (n.N === s && n.Fa && n.Fa.Wa(x.i.pa)) throw Error("descendantsComplete event not supported for bindings on this node")
                                },
                                Cb: function(e, n) {
                                    var o = x.a.g.Ub(e, C, {});
                                    return o.N || (o.N = new t(e, o, n[g])), n[g] == o ? n : n.extend((function(e) {
                                        e[g] = o
                                    }))
                                }
                            }, x.Td = function(e) {
                                return (e = x.a.g.get(e, C)) && e.context
                            }, x.ib = function(e, t, n) {
                                return 1 === e.nodeType && x.h.Sc(e), h(e, t, f(n))
                            }, x.ld = function(e, t, n) {
                                return n = f(n), x.ib(e, i(t, n, e), n)
                            }, x.Oa = function(e, t) {
                                1 !== t.nodeType && 8 !== t.nodeType || p(f(e), t)
                            }, x.vc = function(e, t, n) {
                                if (!c && a.jQuery && (c = a.jQuery), 2 > arguments.length) {
                                    if (!(t = l.body)) throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")
                                } else if (!t || 1 !== t.nodeType && 8 !== t.nodeType) throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");
                                d(f(e, n), t)
                            }, x.Dc = function(e) {
                                return !e || 1 !== e.nodeType && 8 !== e.nodeType ? s : x.Td(e)
                            }, x.Ec = function(e) {
                                return (e = x.Dc(e)) ? e.$data : s
                            }, x.b("bindingHandlers", x.c), x.b("bindingEvent", x.i), x.b("bindingEvent.subscribe", x.i.subscribe), x.b("bindingEvent.startPossiblyAsyncContentBinding", x.i.Cb), x.b("applyBindings", x.vc), x.b("applyBindingsToDescendants", x.Oa), x.b("applyBindingAccessorsToNode", x.ib), x.b("applyBindingsToNode", x.ld), x.b("contextFor", x.Dc), x.b("dataFor", x.Ec)
                        }(),
                        function(e) {
                            function t(t, o) {
                                var s, a = Object.prototype.hasOwnProperty.call(r, t) ? r[t] : e;
                                a ? a.subscribe(o) : ((a = r[t] = new x.T).subscribe(o), n(t, (function(e, n) {
                                    var o = !(!n || !n.synchronous);
                                    i[t] = {
                                        definition: e,
                                        Gd: o
                                    }, delete r[t], s || o ? a.notifySubscribers(e) : x.na.zb((function() {
                                        a.notifySubscribers(e)
                                    }))
                                })), s = !0)
                            }

                            function n(e, t) {
                                o("getConfig", [e], (function(n) {
                                    n ? o("loadComponent", [e, n], (function(e) {
                                        t(e, n)
                                    })) : t(null, null)
                                }))
                            }

                            function o(t, n, r, i) {
                                i || (i = x.j.loaders.slice(0));
                                var s = i.shift();
                                if (s) {
                                    var a = s[t];
                                    if (a) {
                                        var l = !1;
                                        if (a.apply(s, n.concat((function(e) {
                                                l ? r(null) : null !== e ? r(e) : o(t, n, r, i)
                                            }))) !== e && (l = !0, !s.suppressLoaderExceptions)) throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")
                                    } else o(t, n, r, i)
                                } else r(null)
                            }
                            var r = {},
                                i = {};
                            x.j = {
                                get: function(n, o) {
                                    var r = Object.prototype.hasOwnProperty.call(i, n) ? i[n] : e;
                                    r ? r.Gd ? x.u.G((function() {
                                        o(r.definition)
                                    })) : x.na.zb((function() {
                                        o(r.definition)
                                    })) : t(n, o)
                                },
                                Bc: function(e) {
                                    delete i[e]
                                },
                                oc: o
                            }, x.j.loaders = [], x.b("components", x.j), x.b("components.get", x.j.get), x.b("components.clearCachedDefinition", x.j.Bc)
                        }(),
                        function() {
                            function e(e, t, n, o) {
                                function i() {
                                    0 == --a && o(s)
                                }
                                var s = {},
                                    a = 2,
                                    l = n.template;
                                n = n.viewModel, l ? r(t, l, (function(t) {
                                    x.j.oc("loadTemplate", [e, t], (function(e) {
                                        s.template = e, i()
                                    }))
                                })) : i(), n ? r(t, n, (function(t) {
                                    x.j.oc("loadViewModel", [e, t], (function(e) {
                                        s[u] = e, i()
                                    }))
                                })) : i()
                            }

                            function n(e) {
                                switch (x.a.R(e)) {
                                    case "script":
                                        return x.a.ua(e.text);
                                    case "textarea":
                                        return x.a.ua(e.value);
                                    case "template":
                                        if (o(e.content)) return x.a.Ca(e.content.childNodes)
                                }
                                return x.a.Ca(e.childNodes)
                            }

                            function o(e) {
                                return a.DocumentFragment ? e instanceof DocumentFragment : e && 11 === e.nodeType
                            }

                            function r(e, n, o) {
                                "string" == typeof n.require ? t || a.require ? (t || a.require)([n.require], (function(e) {
                                    e && "object" == typeof e && e.Xd && e.default && (e = e.default), o(e)
                                })) : e("Uses require, but no AMD loader is present") : o(n)
                            }

                            function i(e) {
                                return function(t) {
                                    throw Error("Component '" + e + "': " + t)
                                }
                            }
                            var s = {};
                            x.j.register = function(e, t) {
                                if (!t) throw Error("Invalid configuration for " + e);
                                if (x.j.tb(e)) throw Error("Component " + e + " is already registered");
                                s[e] = t
                            }, x.j.tb = function(e) {
                                return Object.prototype.hasOwnProperty.call(s, e)
                            }, x.j.unregister = function(e) {
                                delete s[e], x.j.Bc(e)
                            }, x.j.Fc = {
                                getConfig: function(e, t) {
                                    t(x.j.tb(e) ? s[e] : null)
                                },
                                loadComponent: function(t, n, o) {
                                    var s = i(t);
                                    r(s, n, (function(n) {
                                        e(t, s, n, o)
                                    }))
                                },
                                loadTemplate: function(e, t, r) {
                                    if (e = i(e), "string" == typeof t) r(x.a.ua(t));
                                    else if (t instanceof Array) r(t);
                                    else if (o(t)) r(x.a.la(t.childNodes));
                                    else if (t.element)
                                        if (t = t.element, a.HTMLElement ? t instanceof HTMLElement : t && t.tagName && 1 === t.nodeType) r(n(t));
                                        else if ("string" == typeof t) {
                                        var s = l.getElementById(t);
                                        s ? r(n(s)) : e("Cannot find element with ID " + t)
                                    } else e("Unknown element type: " + t);
                                    else e("Unknown template value: " + t)
                                },
                                loadViewModel: function(e, t, n) {
                                    ! function e(t, n, o) {
                                        if ("function" == typeof n) o((function(e) {
                                            return new n(e)
                                        }));
                                        else if ("function" == typeof n[u]) o(n[u]);
                                        else if ("instance" in n) {
                                            var r = n.instance;
                                            o((function() {
                                                return r
                                            }))
                                        } else "viewModel" in n ? e(t, n.viewModel, o) : t("Unknown viewModel value: " + n)
                                    }(i(e), t, n)
                                }
                            };
                            var u = "createViewModel";
                            x.b("components.register", x.j.register), x.b("components.isRegistered", x.j.tb), x.b("components.unregister", x.j.unregister), x.b("components.defaultLoader", x.j.Fc), x.j.loaders.push(x.j.Fc), x.j.dd = s
                        }(),
                        function() {
                            function e(e, n) {
                                if (o = e.getAttribute("params")) {
                                    var o = t.parseBindingsString(o, n, e, {
                                            valueAccessors: !0,
                                            bindingParams: !0
                                        }),
                                        r = (o = x.a.Ga(o, (function(t) {
                                            return x.o(t, null, {
                                                l: e
                                            })
                                        })), x.a.Ga(o, (function(t) {
                                            var n = t.v();
                                            return t.ja() ? x.o({
                                                read: function() {
                                                    return x.a.f(t())
                                                },
                                                write: x.Za(n) && function(e) {
                                                    t()(e)
                                                },
                                                l: e
                                            }) : n
                                        })));
                                    return Object.prototype.hasOwnProperty.call(r, "$raw") || (r.$raw = o), r
                                }
                                return {
                                    $raw: {}
                                }
                            }
                            x.j.getComponentNameForNode = function(e) {
                                var t = x.a.R(e);
                                if (x.j.tb(t) && (-1 != t.indexOf("-") || "[object HTMLUnknownElement]" == "" + e || 8 >= x.a.W && e.tagName === t)) return t
                            }, x.j.tc = function(t, n, o, r) {
                                if (1 === n.nodeType) {
                                    var i = x.j.getComponentNameForNode(n);
                                    if (i) {
                                        if ((t = t || {}).component) throw Error('Cannot use the "component" binding on a custom element matching a component');
                                        var s = {
                                            name: i,
                                            params: e(n, o)
                                        };
                                        t.component = r ? function() {
                                            return s
                                        } : s
                                    }
                                }
                                return t
                            };
                            var t = new x.ga;
                            9 > x.a.W && (x.j.register = function(e) {
                                return function(t) {
                                    return e.apply(this, arguments)
                                }
                            }(x.j.register), l.createDocumentFragment = function(e) {
                                return function() {
                                    var t, n = e(),
                                        o = x.j.dd;
                                    for (t in o);
                                    return n
                                }
                            }(l.createDocumentFragment))
                        }(),
                        function() {
                            var e = 0;
                            x.c.component = {
                                init: function(t, n, o, r, i) {
                                    function s() {
                                        var e = a && a.dispose;
                                        "function" == typeof e && e.call(a), u && u.s(), l = a = u = null
                                    }
                                    var a, l, u, c = x.a.la(x.h.childNodes(t));
                                    return x.h.Ea(t), x.a.K.za(t, s), x.o((function() {
                                        var o, r, p = x.a.f(n());
                                        if ("string" == typeof p ? o = p : (o = x.a.f(p.name), r = x.a.f(p.params)), !o) throw Error("No component name specified");
                                        var d = x.i.Cb(t, i),
                                            h = l = ++e;
                                        x.j.get(o, (function(e) {
                                            if (l === h) {
                                                if (s(), !e) throw Error("Unknown component '" + o + "'");
                                                ! function(e, t, n) {
                                                    if (!(t = t.template)) throw Error("Component '" + e + "' has no template");
                                                    e = x.a.Ca(t), x.h.va(n, e)
                                                }(o, e, t);
                                                var n = function(e, t, n) {
                                                    var o = e.createViewModel;
                                                    return o ? o.call(e, t, n) : t
                                                }(e, r, {
                                                    element: t,
                                                    templateNodes: c
                                                });
                                                e = d.createChildContext(n, {
                                                    extend: function(e) {
                                                        e.$component = n, e.$componentTemplateNodes = c
                                                    }
                                                }), n && n.koDescendantsComplete && (u = x.i.subscribe(t, x.i.pa, n.koDescendantsComplete, n)), a = n, x.Oa(e, t)
                                            }
                                        }))
                                    }), null, {
                                        l: t
                                    }), {
                                        controlsDescendantBindings: !0
                                    }
                                }
                            }, x.h.ea.component = !0
                        }();
                    var I = {
                        class: "className",
                        for: "htmlFor"
                    };
                    x.c.attr = {
                            update: function(e, t) {
                                var n = x.a.f(t()) || {};
                                x.a.P(n, (function(t, n) {
                                    n = x.a.f(n);
                                    var o = t.indexOf(":"),
                                        r = (o = "lookupNamespaceURI" in e && 0 < o && e.lookupNamespaceURI(t.substr(0, o)), !1 === n || null === n || n === s);
                                    r ? o ? e.removeAttributeNS(o, t) : e.removeAttribute(t) : n = n.toString(), 8 >= x.a.W && t in I ? (t = I[t], r ? e.removeAttribute(t) : e[t] = n) : r || (o ? e.setAttributeNS(o, t, n) : e.setAttribute(t, n)), "name" === t && x.a.Yc(e, r ? "" : n)
                                }))
                            }
                        }, x.c.checked = {
                            after: ["value", "attr"],
                            init: function(e, t, n) {
                                function o() {
                                    var o = e.checked,
                                        l = r();
                                    if (!x.S.Ya() && (o || !a && !x.S.qa())) {
                                        var p = x.u.G(t);
                                        if (u) {
                                            var h = c ? p.v() : p,
                                                f = d;
                                            d = l, f !== l ? o && (x.a.Na(h, l, !0), x.a.Na(h, f, !1)) : x.a.Na(h, l, o), c && x.Za(p) && p(h)
                                        } else i && (l === s ? l = o : o || (l = s)), x.m.eb(p, n, "checked", l, !0)
                                    }
                                }
                                var r = x.xb((function() {
                                        return n.has("checkedValue") ? x.a.f(n.get("checkedValue")) : p ? n.has("value") ? x.a.f(n.get("value")) : e.value : void 0
                                    })),
                                    i = "checkbox" == e.type,
                                    a = "radio" == e.type;
                                if (i || a) {
                                    var l = t(),
                                        u = i && x.a.f(l) instanceof Array,
                                        c = !(u && l.push && l.splice),
                                        p = a || u,
                                        d = u ? r() : s;
                                    a && !e.name && x.c.uniqueName.init(e, (function() {
                                        return !0
                                    })), x.o(o, null, {
                                        l: e
                                    }), x.a.B(e, "click", o), x.o((function() {
                                        var n = x.a.f(t()),
                                            o = r();
                                        u ? (e.checked = 0 <= x.a.A(n, o), d = o) : e.checked = i && o === s ? !!n : r() === n
                                    }), null, {
                                        l: e
                                    }), l = s
                                }
                            }
                        }, x.m.wa.checked = !0, x.c.checkedValue = {
                            update: function(e, t) {
                                e.value = x.a.f(t())
                            }
                        }, x.c.class = {
                            update: function(e, t) {
                                var n = x.a.Db(x.a.f(t()));
                                x.a.Eb(e, e.__ko__cssValue, !1), e.__ko__cssValue = n, x.a.Eb(e, n, !0)
                            }
                        }, x.c.css = {
                            update: function(e, t) {
                                var n = x.a.f(t());
                                null !== n && "object" == typeof n ? x.a.P(n, (function(t, n) {
                                    n = x.a.f(n), x.a.Eb(e, t, n)
                                })) : x.c.class.update(e, t)
                            }
                        }, x.c.enable = {
                            update: function(e, t) {
                                var n = x.a.f(t());
                                n && e.disabled ? e.removeAttribute("disabled") : n || e.disabled || (e.disabled = !0)
                            }
                        }, x.c.disable = {
                            update: function(e, t) {
                                x.c.enable.update(e, (function() {
                                    return !x.a.f(t())
                                }))
                            }
                        }, x.c.event = {
                            init: function(e, t, n, o, r) {
                                var i = t() || {};
                                x.a.P(i, (function(i) {
                                    "string" == typeof i && x.a.B(e, i, (function(e) {
                                        var s, a = t()[i];
                                        if (a) {
                                            try {
                                                var l = x.a.la(arguments);
                                                o = r.$data, l.unshift(o), s = a.apply(o, l)
                                            } finally {
                                                !0 !== s && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
                                            }!1 === n.get(i + "Bubble") && (e.cancelBubble = !0, e.stopPropagation && e.stopPropagation())
                                        }
                                    }))
                                }))
                            }
                        }, x.c.foreach = {
                            Rc: function(e) {
                                return function() {
                                    var t = e(),
                                        n = x.a.bc(t);
                                    return n && "number" != typeof n.length ? (x.a.f(t), {
                                        foreach: n.data,
                                        as: n.as,
                                        noChildContext: n.noChildContext,
                                        includeDestroyed: n.includeDestroyed,
                                        afterAdd: n.afterAdd,
                                        beforeRemove: n.beforeRemove,
                                        afterRender: n.afterRender,
                                        beforeMove: n.beforeMove,
                                        afterMove: n.afterMove,
                                        templateEngine: x.ba.Ma
                                    }) : {
                                        foreach: t,
                                        templateEngine: x.ba.Ma
                                    }
                                }
                            },
                            init: function(e, t) {
                                return x.c.template.init(e, x.c.foreach.Rc(t))
                            },
                            update: function(e, t, n, o, r) {
                                return x.c.template.update(e, x.c.foreach.Rc(t), n, o, r)
                            }
                        }, x.m.Ra.foreach = !1, x.h.ea.foreach = !0, x.c.hasfocus = {
                            init: function(e, t, n) {
                                function o(o) {
                                    e.__ko_hasfocusUpdating = !0;
                                    var r = e.ownerDocument;
                                    if ("activeElement" in r) {
                                        var i;
                                        try {
                                            i = r.activeElement
                                        } catch (e) {
                                            i = r.body
                                        }
                                        o = i === e
                                    }
                                    r = t(), x.m.eb(r, n, "hasfocus", o, !0), e.__ko_hasfocusLastValue = o, e.__ko_hasfocusUpdating = !1
                                }
                                var r = o.bind(null, !0),
                                    i = o.bind(null, !1);
                                x.a.B(e, "focus", r), x.a.B(e, "focusin", r), x.a.B(e, "blur", i), x.a.B(e, "focusout", i), e.__ko_hasfocusLastValue = !1
                            },
                            update: function(e, t) {
                                var n = !!x.a.f(t());
                                e.__ko_hasfocusUpdating || e.__ko_hasfocusLastValue === n || (n ? e.focus() : e.blur(), !n && e.__ko_hasfocusLastValue && e.ownerDocument.body.focus(), x.u.G(x.a.Fb, null, [e, n ? "focusin" : "focusout"]))
                            }
                        }, x.m.wa.hasfocus = !0, x.c.hasFocus = x.c.hasfocus, x.m.wa.hasFocus = "hasfocus", x.c.html = {
                            init: function() {
                                return {
                                    controlsDescendantBindings: !0
                                }
                            },
                            update: function(e, t) {
                                x.a.fc(e, t())
                            }
                        },
                        function() {
                            function e(e, t, n) {
                                x.c[e] = {
                                    init: function(e, o, r, i, s) {
                                        var a, l, u, c, p, d = {};
                                        if (t) {
                                            i = r.get("as");
                                            var h = r.get("noChildContext");
                                            d = {
                                                as: i,
                                                noChildContext: h,
                                                exportDependencies: p = !(i && h)
                                            }
                                        }
                                        return c = (u = "render" == r.get("completeOn")) || r.has(x.i.pa), x.o((function() {
                                            var r, i = x.a.f(o()),
                                                h = !n != !i,
                                                f = !l;
                                            (p || h !== a) && (c && (s = x.i.Cb(e, s)), h && (t && !p || (d.dataDependency = x.S.o()), r = t ? s.createChildContext("function" == typeof i ? i : o, d) : x.S.qa() ? s.extend(null, d) : s), f && x.S.qa() && (l = x.a.Ca(x.h.childNodes(e), !0)), h ? (f || x.h.va(e, x.a.Ca(l)), x.Oa(r, e)) : (x.h.Ea(e), u || x.i.ma(e, x.i.H)), a = h)
                                        }), null, {
                                            l: e
                                        }), {
                                            controlsDescendantBindings: !0
                                        }
                                    }
                                }, x.m.Ra[e] = !1, x.h.ea[e] = !0
                            }
                            e("if"), e("ifnot", !1, !0), e("with", !0)
                        }(), x.c.let = {
                            init: function(e, t, n, o, r) {
                                return t = r.extend(t), x.Oa(t, e), {
                                    controlsDescendantBindings: !0
                                }
                            }
                        }, x.h.ea.let = !0;
                    var _ = {};
                    x.c.options = {
                            init: function(e) {
                                if ("select" !== x.a.R(e)) throw Error("options binding applies only to SELECT elements");
                                for (; 0 < e.length;) e.remove(0);
                                return {
                                    controlsDescendantBindings: !0
                                }
                            },
                            update: function(e, t, n) {
                                function o() {
                                    return x.a.jb(e.options, (function(e) {
                                        return e.selected
                                    }))
                                }

                                function r(e, t, n) {
                                    var o = typeof t;
                                    return "function" == o ? t(e) : "string" == o ? e[t] : n
                                }

                                function i(t, n) {
                                    if (f && c) x.i.ma(e, x.i.H);
                                    else if (h.length) {
                                        var o = 0 <= x.a.A(h, x.w.M(n[0]));
                                        x.a.Zc(n[0], o), f && !o && x.u.G(x.a.Fb, null, [e, "change"])
                                    }
                                }
                                var a = e.multiple,
                                    l = 0 != e.length && a ? e.scrollTop : null,
                                    u = x.a.f(t()),
                                    c = n.get("valueAllowUnset") && n.has("value"),
                                    p = n.get("optionsIncludeDestroyed");
                                t = {};
                                var d, h = [];
                                c || (a ? h = x.a.Mb(o(), x.w.M) : 0 <= e.selectedIndex && h.push(x.w.M(e.options[e.selectedIndex]))), u && (void 0 === u.length && (u = [u]), d = x.a.jb(u, (function(e) {
                                    return p || e === s || null === e || !x.a.f(e._destroy)
                                })), n.has("optionsCaption") && null !== (u = x.a.f(n.get("optionsCaption"))) && u !== s && d.unshift(_));
                                var f = !1;
                                t.beforeRemove = function(t) {
                                    e.removeChild(t)
                                }, u = i, n.has("optionsAfterRender") && "function" == typeof n.get("optionsAfterRender") && (u = function(e, t) {
                                    i(0, t), x.u.G(n.get("optionsAfterRender"), null, [t[0], e !== _ ? e : s])
                                }), x.a.ec(e, d, (function(t, o, i) {
                                    return i.length && (h = !c && i[0].selected ? [x.w.M(i[0])] : [], f = !0), o = e.ownerDocument.createElement("option"), t === _ ? (x.a.Bb(o, n.get("optionsCaption")), x.w.cb(o, s)) : (i = r(t, n.get("optionsValue"), t), x.w.cb(o, x.a.f(i)), t = r(t, n.get("optionsText"), i), x.a.Bb(o, t)), [o]
                                }), t, u), c || (a ? h.length && o().length < h.length : h.length && 0 <= e.selectedIndex ? x.w.M(e.options[e.selectedIndex]) !== h[0] : h.length || 0 <= e.selectedIndex) && x.u.G(x.a.Fb, null, [e, "change"]), (c || x.S.Ya()) && x.i.ma(e, x.i.H), x.a.wd(e), l && 20 < Math.abs(l - e.scrollTop) && (e.scrollTop = l)
                            }
                        }, x.c.options.$b = x.a.g.Z(), x.c.selectedOptions = {
                            init: function(e, t, n) {
                                function o() {
                                    var o = t(),
                                        r = [];
                                    x.a.D(e.getElementsByTagName("option"), (function(e) {
                                        e.selected && r.push(x.w.M(e))
                                    })), x.m.eb(o, n, "selectedOptions", r)
                                }

                                function r() {
                                    var n = x.a.f(t()),
                                        o = e.scrollTop;
                                    n && "number" == typeof n.length && x.a.D(e.getElementsByTagName("option"), (function(e) {
                                        var t = 0 <= x.a.A(n, x.w.M(e));
                                        e.selected != t && x.a.Zc(e, t)
                                    })), e.scrollTop = o
                                }
                                if ("select" != x.a.R(e)) throw Error("selectedOptions binding applies only to SELECT elements");
                                var i;
                                x.i.subscribe(e, x.i.H, (function() {
                                    i ? o() : (x.a.B(e, "change", o), i = x.o(r, null, {
                                        l: e
                                    }))
                                }), null, {
                                    notifyImmediately: !0
                                })
                            },
                            update: function() {}
                        }, x.m.wa.selectedOptions = !0, x.c.style = {
                            update: function(e, t) {
                                var n = x.a.f(t() || {});
                                x.a.P(n, (function(t, n) {
                                    if (null !== (n = x.a.f(n)) && n !== s && !1 !== n || (n = ""), c) c(e).css(t, n);
                                    else if (/^--/.test(t)) e.style.setProperty(t, n);
                                    else {
                                        t = t.replace(/-(\w)/g, (function(e, t) {
                                            return t.toUpperCase()
                                        }));
                                        var o = e.style[t];
                                        e.style[t] = n, n === o || e.style[t] != o || isNaN(n) || (e.style[t] = n + "px")
                                    }
                                }))
                            }
                        }, x.c.submit = {
                            init: function(e, t, n, o, r) {
                                if ("function" != typeof t()) throw Error("The value for a submit binding must be a function");
                                x.a.B(e, "submit", (function(n) {
                                    var o, i = t();
                                    try {
                                        o = i.call(r.$data, e)
                                    } finally {
                                        !0 !== o && (n.preventDefault ? n.preventDefault() : n.returnValue = !1)
                                    }
                                }))
                            }
                        }, x.c.text = {
                            init: function() {
                                return {
                                    controlsDescendantBindings: !0
                                }
                            },
                            update: function(e, t) {
                                x.a.Bb(e, t())
                            }
                        }, x.h.ea.text = !0,
                        function() {
                            if (a && a.navigator) {
                                var e, t, n, o, r, i = function(e) {
                                        if (e) return parseFloat(e[1])
                                    },
                                    l = a.navigator.userAgent;
                                (e = a.opera && a.opera.version && parseInt(a.opera.version())) || (r = i(l.match(/Edge\/([^ ]+)$/))) || i(l.match(/Chrome\/([^ ]+)/)) || (t = i(l.match(/Version\/([^ ]+) Safari/))) || (n = i(l.match(/Firefox\/([^ ]+)/))) || (o = x.a.W || i(l.match(/MSIE ([^ ]+)/))) || (o = i(l.match(/rv:([^ )]+)/)))
                            }
                            if (8 <= o && 10 > o) var u = x.a.g.Z(),
                                c = x.a.g.Z(),
                                p = function(e) {
                                    var t = this.activeElement;
                                    (t = t && x.a.g.get(t, c)) && t(e)
                                },
                                d = function(e, t) {
                                    var n = e.ownerDocument;
                                    x.a.g.get(n, u) || (x.a.g.set(n, u, !0), x.a.B(n, "selectionchange", p)), x.a.g.set(e, c, t)
                                };
                            x.c.textInput = {
                                init: function(i, a, l) {
                                    function u(e, t) {
                                        x.a.B(i, e, t)
                                    }

                                    function c() {
                                        h || (f = i.value, h = x.a.setTimeout(p, 4))
                                    }

                                    function p() {
                                        clearTimeout(h), f = h = s;
                                        var e = i.value;
                                        m !== e && (m = e, x.m.eb(a(), l, "textInput", e))
                                    }
                                    var h, f, m = i.value,
                                        g = 9 == x.a.W ? c : p,
                                        y = !1;
                                    o && u("keypress", p), 11 > o && u("propertychange", (function(e) {
                                        y || "value" !== e.propertyName || g(e)
                                    })), 8 == o && (u("keyup", p), u("keydown", p)), d && (d(i, g), u("dragend", c)), (!o || 9 <= o) && u("input", g), 5 > t && "textarea" === x.a.R(i) ? (u("keydown", c), u("paste", c), u("cut", c)) : 11 > e ? u("keydown", c) : 4 > n ? (u("DOMAutoComplete", p), u("dragdrop", p), u("drop", p)) : r && "number" === i.type && u("keydown", c), u("change", p), u("blur", p), x.o((function e() {
                                        var t = x.a.f(a());
                                        null !== t && t !== s || (t = ""), f !== s && t === f ? x.a.setTimeout(e, 4) : i.value !== t && (y = !0, i.value = t, y = !1, m = i.value)
                                    }), null, {
                                        l: i
                                    })
                                }
                            }, x.m.wa.textInput = !0, x.c.textinput = {
                                preprocess: function(e, t, n) {
                                    n("textInput", e)
                                }
                            }
                        }(), x.c.uniqueName = {
                            init: function(e, t) {
                                if (t()) {
                                    var n = "ko_unique_" + ++x.c.uniqueName.rd;
                                    x.a.Yc(e, n)
                                }
                            }
                        }, x.c.uniqueName.rd = 0, x.c.using = {
                            init: function(e, t, n, o, r) {
                                var i;
                                return n.has("as") && (i = {
                                    as: n.get("as"),
                                    noChildContext: n.get("noChildContext")
                                }), t = r.createChildContext(t, i), x.Oa(t, e), {
                                    controlsDescendantBindings: !0
                                }
                            }
                        }, x.h.ea.using = !0, x.c.value = {
                            init: function(e, t, n) {
                                var o = x.a.R(e),
                                    r = "input" == o;
                                if (!r || "checkbox" != e.type && "radio" != e.type) {
                                    var i = [],
                                        a = n.get("valueUpdate"),
                                        l = !1,
                                        u = null;
                                    a && (i = "string" == typeof a ? [a] : x.a.wc(a), x.a.Pa(i, "change"));
                                    var c, p, d = function() {
                                        u = null, l = !1;
                                        var o = t(),
                                            r = x.w.M(e);
                                        x.m.eb(o, n, "value", r)
                                    };
                                    !x.a.W || !r || "text" != e.type || "off" == e.autocomplete || e.form && "off" == e.form.autocomplete || -1 != x.a.A(i, "propertychange") || (x.a.B(e, "propertychange", (function() {
                                        l = !0
                                    })), x.a.B(e, "focus", (function() {
                                        l = !1
                                    })), x.a.B(e, "blur", (function() {
                                        l && d()
                                    }))), x.a.D(i, (function(t) {
                                        var n = d;
                                        x.a.Ud(t, "after") && (n = function() {
                                            u = x.w.M(e), x.a.setTimeout(d, 0)
                                        }, t = t.substring(5)), x.a.B(e, t, n)
                                    })), c = r && "file" == e.type ? function() {
                                        var n = x.a.f(t());
                                        null === n || n === s || "" === n ? e.value = "" : x.u.G(d)
                                    } : function() {
                                        var r = x.a.f(t()),
                                            i = x.w.M(e);
                                        null !== u && r === u ? x.a.setTimeout(c, 0) : r === i && i !== s || ("select" === o ? (i = n.get("valueAllowUnset"), x.w.cb(e, r, i), i || r === x.w.M(e) || x.u.G(d)) : x.w.cb(e, r))
                                    }, "select" === o ? x.i.subscribe(e, x.i.H, (function() {
                                        p ? n.get("valueAllowUnset") ? c() : d() : (x.a.B(e, "change", d), p = x.o(c, null, {
                                            l: e
                                        }))
                                    }), null, {
                                        notifyImmediately: !0
                                    }) : (x.a.B(e, "change", d), x.o(c, null, {
                                        l: e
                                    }))
                                } else x.ib(e, {
                                    checkedValue: t
                                })
                            },
                            update: function() {}
                        }, x.m.wa.value = !0, x.c.visible = {
                            update: function(e, t) {
                                var n = x.a.f(t()),
                                    o = "none" != e.style.display;
                                n && !o ? e.style.display = "" : !n && o && (e.style.display = "none")
                            }
                        }, x.c.hidden = {
                            update: function(e, t) {
                                x.c.visible.update(e, (function() {
                                    return !x.a.f(t())
                                }))
                            }
                        },
                        function(e) {
                            x.c[e] = {
                                init: function(t, n, o, r, i) {
                                    return x.c.event.init.call(this, t, (function() {
                                        var t = {};
                                        return t[e] = n(), t
                                    }), o, r, i)
                                }
                            }
                        }("click"), x.ca = function() {}, x.ca.prototype.renderTemplateSource = function() {
                            throw Error("Override renderTemplateSource")
                        }, x.ca.prototype.createJavaScriptEvaluatorBlock = function() {
                            throw Error("Override createJavaScriptEvaluatorBlock")
                        }, x.ca.prototype.makeTemplateSource = function(e, t) {
                            if ("string" == typeof e) {
                                var n = (t = t || l).getElementById(e);
                                if (!n) throw Error("Cannot find template with ID " + e);
                                return new x.C.F(n)
                            }
                            if (1 == e.nodeType || 8 == e.nodeType) return new x.C.ia(e);
                            throw Error("Unknown template type: " + e)
                        }, x.ca.prototype.renderTemplate = function(e, t, n, o) {
                            return e = this.makeTemplateSource(e, o), this.renderTemplateSource(e, t, n, o)
                        }, x.ca.prototype.isTemplateRewritten = function(e, t) {
                            return !1 === this.allowTemplateRewriting || this.makeTemplateSource(e, t).data("isRewritten")
                        }, x.ca.prototype.rewriteTemplate = function(e, t, n) {
                            t = t((e = this.makeTemplateSource(e, n)).text()), e.text(t), e.data("isRewritten", !0)
                        }, x.b("templateEngine", x.ca), x.kc = function() {
                            function e(e, t, n, o) {
                                e = x.m.ac(e);
                                for (var r = x.m.Ra, i = 0; i < e.length; i++) {
                                    var s = e[i].key;
                                    if (Object.prototype.hasOwnProperty.call(r, s)) {
                                        var a = r[s];
                                        if ("function" == typeof a) {
                                            if (s = a(e[i].value)) throw Error(s)
                                        } else if (!a) throw Error("This template engine does not support the '" + s + "' binding within its templates")
                                    }
                                }
                                return n = "ko.__tr_ambtns(function($context,$element){return(function(){return{ " + x.m.vb(e, {
                                    valueAccessors: !0
                                }) + " } })()},'" + n.toLowerCase() + "')", o.createJavaScriptEvaluatorBlock(n) + t
                            }
                            var t = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,
                                n = /\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;
                            return {
                                xd: function(e, t, n) {
                                    t.isTemplateRewritten(e, n) || t.rewriteTemplate(e, (function(e) {
                                        return x.kc.Ld(e, t)
                                    }), n)
                                },
                                Ld: function(o, r) {
                                    return o.replace(t, (function(t, n, o, i, s) {
                                        return e(s, n, o, r)
                                    })).replace(n, (function(t, n) {
                                        return e(n, "\x3c!-- ko --\x3e", "#comment", r)
                                    }))
                                },
                                md: function(e, t) {
                                    return x.aa.Xb((function(n, o) {
                                        var r = n.nextSibling;
                                        r && r.nodeName.toLowerCase() === t && x.ib(r, e, o)
                                    }))
                                }
                            }
                        }(), x.b("__tr_ambtns", x.kc.md),
                        function() {
                            x.C = {}, x.C.F = function(e) {
                                if (this.F = e) {
                                    var t = x.a.R(e);
                                    this.ab = "script" === t ? 1 : "textarea" === t ? 2 : "template" == t && e.content && 11 === e.content.nodeType ? 3 : 4
                                }
                            }, x.C.F.prototype.text = function() {
                                var e = 1 === this.ab ? "text" : 2 === this.ab ? "value" : "innerHTML";
                                if (0 == arguments.length) return this.F[e];
                                var t = arguments[0];
                                "innerHTML" === e ? x.a.fc(this.F, t) : this.F[e] = t
                            };
                            var e = x.a.g.Z() + "_";
                            x.C.F.prototype.data = function(t) {
                                if (1 === arguments.length) return x.a.g.get(this.F, e + t);
                                x.a.g.set(this.F, e + t, arguments[1])
                            };
                            var t = x.a.g.Z();
                            x.C.F.prototype.nodes = function() {
                                var e = this.F;
                                if (0 == arguments.length) {
                                    var n = x.a.g.get(e, t) || {},
                                        o = n.lb || (3 === this.ab ? e.content : 4 === this.ab ? e : s);
                                    if (!o || n.jd) {
                                        var r = this.text();
                                        r && r !== n.bb && (o = x.a.Md(r, e.ownerDocument), x.a.g.set(e, t, {
                                            lb: o,
                                            bb: r,
                                            jd: !0
                                        }))
                                    }
                                    return o
                                }
                                n = arguments[0], this.ab !== s && this.text(""), x.a.g.set(e, t, {
                                    lb: n
                                })
                            }, x.C.ia = function(e) {
                                this.F = e
                            }, x.C.ia.prototype = new x.C.F, x.C.ia.prototype.constructor = x.C.ia, x.C.ia.prototype.text = function() {
                                if (0 == arguments.length) {
                                    var e = x.a.g.get(this.F, t) || {};
                                    return e.bb === s && e.lb && (e.bb = e.lb.innerHTML), e.bb
                                }
                                x.a.g.set(this.F, t, {
                                    bb: arguments[0]
                                })
                            }, x.b("templateSources", x.C), x.b("templateSources.domElement", x.C.F), x.b("templateSources.anonymousTemplate", x.C.ia)
                        }(),
                        function() {
                            function e(e, t, n) {
                                var o;
                                for (t = x.h.nextSibling(t); e && (o = e) !== t;) n(o, e = x.h.nextSibling(o))
                            }

                            function t(t, n) {
                                if (t.length) {
                                    var o = t[0],
                                        r = t[t.length - 1],
                                        i = o.parentNode,
                                        s = x.ga.instance,
                                        a = s.preprocessNode;
                                    if (a) {
                                        if (e(o, r, (function(e, t) {
                                                var n = e.previousSibling,
                                                    i = a.call(s, e);
                                                i && (e === o && (o = i[0] || t), e === r && (r = i[i.length - 1] || n))
                                            })), t.length = 0, !o) return;
                                        o === r ? t.push(o) : (t.push(o, r), x.a.Ua(t, i))
                                    }
                                    e(o, r, (function(e) {
                                        1 !== e.nodeType && 8 !== e.nodeType || x.vc(n, e)
                                    })), e(o, r, (function(e) {
                                        1 !== e.nodeType && 8 !== e.nodeType || x.aa.cd(e, [n])
                                    })), x.a.Ua(t, i)
                                }
                            }

                            function n(e) {
                                return e.nodeType ? e : 0 < e.length ? e[0] : null
                            }

                            function o(e, o, r, s, a) {
                                a = a || {};
                                var l = (e && n(e) || r || {}).ownerDocument,
                                    u = a.templateEngine || i;
                                if (x.kc.xd(r, u, l), "number" != typeof(r = u.renderTemplate(r, s, a, l)).length || 0 < r.length && "number" != typeof r[0].nodeType) throw Error("Template engine must return an array of DOM nodes");
                                switch (l = !1, o) {
                                    case "replaceChildren":
                                        x.h.va(e, r), l = !0;
                                        break;
                                    case "replaceNode":
                                        x.a.Xc(e, r), l = !0;
                                        break;
                                    case "ignoreTargetNode":
                                        break;
                                    default:
                                        throw Error("Unknown renderMode: " + o)
                                }
                                return l && (t(r, s), a.afterRender && x.u.G(a.afterRender, null, [r, s[a.as || "$data"]]), "replaceChildren" == o && x.i.ma(e, x.i.H)), r
                            }

                            function r(e, t, n) {
                                return x.O(e) ? e() : "function" == typeof e ? e(t, n) : e
                            }
                            var i;
                            x.gc = function(e) {
                                if (e != s && !(e instanceof x.ca)) throw Error("templateEngine must inherit from ko.templateEngine");
                                i = e
                            }, x.dc = function(e, t, a, l, u) {
                                if (((a = a || {}).templateEngine || i) == s) throw Error("Set a template engine before calling renderTemplate");
                                if (u = u || "replaceChildren", l) {
                                    var c = n(l);
                                    return x.$((function() {
                                        var i = t && t instanceof x.fa ? t : new x.fa(t, null, null, null, {
                                                exportDependencies: !0
                                            }),
                                            s = r(e, i.$data, i);
                                        i = o(l, u, s, i, a), "replaceNode" == u && (c = n(l = i))
                                    }), null, {
                                        Sa: function() {
                                            return !c || !x.a.Sb(c)
                                        },
                                        l: c && "replaceNode" == u ? c.parentNode : c
                                    })
                                }
                                return x.aa.Xb((function(n) {
                                    x.dc(e, t, a, n, "replaceNode")
                                }))
                            }, x.Qd = function(e, n, i, a, l) {
                                function u(e, t) {
                                    x.u.G(x.a.ec, null, [a, e, p, i, c, t]), x.i.ma(a, x.i.H)
                                }

                                function c(e, n) {
                                    t(n, d), i.afterRender && i.afterRender(n, e), d = null
                                }

                                function p(t, n) {
                                    d = l.createChildContext(t, {
                                        as: h,
                                        noChildContext: i.noChildContext,
                                        extend: function(e) {
                                            e.$index = n, h && (e[h + "Index"] = n)
                                        }
                                    });
                                    var s = r(e, t, d);
                                    return o(a, "ignoreTargetNode", s, d, i)
                                }
                                var d, h = i.as,
                                    f = !1 === i.includeDestroyed || x.options.foreachHidesDestroyed && !i.includeDestroyed;
                                if (f || i.beforeRemove || !x.Pc(n)) return x.$((function() {
                                    var e = x.a.f(n) || [];
                                    void 0 === e.length && (e = [e]), f && (e = x.a.jb(e, (function(e) {
                                        return e === s || null === e || !x.a.f(e._destroy)
                                    }))), u(e)
                                }), null, {
                                    l: a
                                });
                                u(n.v());
                                var m = n.subscribe((function(e) {
                                    u(n(), e)
                                }), null, "arrayChange");
                                return m.l(a), m
                            };
                            var a = x.a.g.Z(),
                                l = x.a.g.Z();
                            x.c.template = {
                                init: function(e, t) {
                                    var n = x.a.f(t());
                                    if ("string" == typeof n || "name" in n) x.h.Ea(e);
                                    else if ("nodes" in n) {
                                        if (n = n.nodes || [], x.O(n)) throw Error('The "nodes" option must be a plain, non-observable array.');
                                        var o = n[0] && n[0].parentNode;
                                        o && x.a.g.get(o, l) || (o = x.a.Yb(n), x.a.g.set(o, l, !0)), new x.C.ia(e).nodes(o)
                                    } else {
                                        if (!(0 < (n = x.h.childNodes(e)).length)) throw Error("Anonymous template defined, but no template content was provided");
                                        o = x.a.Yb(n), new x.C.ia(e).nodes(o)
                                    }
                                    return {
                                        controlsDescendantBindings: !0
                                    }
                                },
                                update: function(e, t, n, o, r) {
                                    var i = t();
                                    n = !0, o = null, "string" == typeof(t = x.a.f(i)) ? t = {} : (i = "name" in t ? t.name : e, "if" in t && (n = x.a.f(t.if)), n && "ifnot" in t && (n = !x.a.f(t.ifnot)), n && !i && (n = !1)), "foreach" in t ? o = x.Qd(i, n && t.foreach || [], t, e, r) : n ? (n = r, "data" in t && (n = r.createChildContext(t.data, {
                                        as: t.as,
                                        noChildContext: t.noChildContext,
                                        exportDependencies: !0
                                    })), o = x.dc(i, n, t, e)) : x.h.Ea(e), r = o, (t = x.a.g.get(e, a)) && "function" == typeof t.s && t.s(), x.a.g.set(e, a, !r || r.ja && !r.ja() ? s : r)
                                }
                            }, x.m.Ra.template = function(e) {
                                return 1 == (e = x.m.ac(e)).length && e[0].unknown || x.m.Id(e, "name") ? null : "This template engine does not support anonymous templates nested within its templates"
                            }, x.h.ea.template = !0
                        }(), x.b("setTemplateEngine", x.gc), x.b("renderTemplate", x.dc), x.a.Kc = function(e, t, n) {
                            var o, r, i, s, a;
                            if (e.length && t.length)
                                for (o = r = 0;
                                    (!n || o < n) && (s = e[r]); ++r) {
                                    for (i = 0; a = t[i]; ++i)
                                        if (s.value === a.value) {
                                            s.moved = a.index, a.moved = s.index, t.splice(i, 1), o = i = 0;
                                            break
                                        } o += i
                                }
                        }, x.a.Pb = function() {
                            function e(e, t, n, o, r) {
                                var i, s, a, l, u, c = Math.min,
                                    p = Math.max,
                                    d = [],
                                    h = e.length,
                                    f = t.length,
                                    m = f - h || 1,
                                    g = h + f + 1;
                                for (i = 0; i <= h; i++)
                                    for (l = a, d.push(a = []), u = c(f, i + m), s = p(0, i - 1); s <= u; s++) a[s] = s ? i ? e[i - 1] === t[s - 1] ? l[s - 1] : c(l[s] || g, a[s - 1] || g) + 1 : s + 1 : i + 1;
                                for (c = [], p = [], m = [], i = h, s = f; i || s;) f = d[i][s] - 1, s && f === d[i][s - 1] ? p.push(c[c.length] = {
                                    status: n,
                                    value: t[--s],
                                    index: s
                                }) : i && f === d[i - 1][s] ? m.push(c[c.length] = {
                                    status: o,
                                    value: e[--i],
                                    index: i
                                }) : (--s, --i, r.sparse || c.push({
                                    status: "retained",
                                    value: t[s]
                                }));
                                return x.a.Kc(m, p, !r.dontLimitMoves && 10 * h), c.reverse()
                            }
                            return function(t, n, o) {
                                return o = "boolean" == typeof o ? {
                                    dontLimitMoves: o
                                } : o || {}, n = n || [], (t = t || []).length < n.length ? e(t, n, "added", "deleted", o) : e(n, t, "deleted", "added", o)
                            }
                        }(), x.b("utils.compareArrays", x.a.Pb),
                        function() {
                            function e(e, t, n, o, r) {
                                var i = [],
                                    a = x.$((function() {
                                        var s = t(n, r, x.a.Ua(i, e)) || [];
                                        0 < i.length && (x.a.Xc(i, s), o && x.u.G(o, null, [n, s, r])), i.length = 0, x.a.Nb(i, s)
                                    }), null, {
                                        l: e,
                                        Sa: function() {
                                            return !x.a.kd(i)
                                        }
                                    });
                                return {
                                    Y: i,
                                    $: a.ja() ? a : s
                                }
                            }
                            var t = x.a.g.Z(),
                                n = x.a.g.Z();
                            x.a.ec = function(o, r, i, a, l, u) {
                                function c(e) {
                                    h = {
                                        Aa: e,
                                        pb: x.ta(w++)
                                    }, b.push(h), v || S.push(h)
                                }

                                function p(e) {
                                    h = y[e], w !== h.pb.v() && k.push(h), h.pb(w++), x.a.Ua(h.Y, o), b.push(h)
                                }

                                function d(e, t) {
                                    if (e)
                                        for (var n = 0, o = t.length; n < o; n++) x.a.D(t[n].Y, (function(o) {
                                            e(o, n, t[n].Aa)
                                        }))
                                }
                                void 0 === (r = r || []).length && (r = [r]), a = a || {};
                                var h, f, m, g, y = x.a.g.get(o, t),
                                    v = !y,
                                    b = [],
                                    C = 0,
                                    w = 0,
                                    P = [],
                                    V = [],
                                    T = [],
                                    k = [],
                                    S = [],
                                    O = 0;
                                if (v) x.a.D(r, c);
                                else {
                                    if (!u || y && y._countWaitingForRemove) {
                                        var E = x.a.Mb(y, (function(e) {
                                            return e.Aa
                                        }));
                                        u = x.a.Pb(E, r, {
                                            dontLimitMoves: a.dontLimitMoves,
                                            sparse: !0
                                        })
                                    }
                                    var R, I, _;
                                    for (E = 0; R = u[E]; E++) switch (I = R.moved, _ = R.index, R.status) {
                                        case "deleted":
                                            for (; C < _;) p(C++);
                                            I === s && ((h = y[C]).$ && (h.$.s(), h.$ = s), x.a.Ua(h.Y, o).length && (a.beforeRemove && (b.push(h), O++, h.Aa === n ? h = null : T.push(h)), h && P.push.apply(P, h.Y))), C++;
                                            break;
                                        case "added":
                                            for (; w < _;) p(C++);
                                            I !== s ? (V.push(b.length), p(I)) : c(R.value)
                                    }
                                    for (; w < r.length;) p(C++);
                                    b._countWaitingForRemove = O
                                }
                                x.a.g.set(o, t, b), d(a.beforeMove, k), x.a.D(P, a.beforeRemove ? x.oa : x.removeNode);
                                try {
                                    g = o.ownerDocument.activeElement
                                } catch (e) {}
                                if (V.length)
                                    for (;
                                        (E = V.shift()) != s;) {
                                        for (h = b[E], f = s; E;)
                                            if ((m = b[--E].Y) && m.length) {
                                                f = m[m.length - 1];
                                                break
                                            } for (r = 0; C = h.Y[r]; f = C, r++) x.h.Wb(o, C, f)
                                    }
                                for (E = 0; h = b[E]; E++) {
                                    for (h.Y || x.a.extend(h, e(o, i, h.Aa, l, h.pb)), r = 0; C = h.Y[r]; f = C, r++) x.h.Wb(o, C, f);
                                    !h.Ed && l && (l(h.Aa, h.Y, h.pb), h.Ed = !0, f = h.Y[h.Y.length - 1])
                                }
                                for (g && o.ownerDocument.activeElement != g && g.focus(), d(a.beforeRemove, T), E = 0; E < T.length; ++E) T[E].Aa = n;
                                d(a.afterMove, k), d(a.afterAdd, S)
                            }
                        }(), x.b("utils.setDomNodeChildrenFromArrayMapping", x.a.ec), x.ba = function() {
                            this.allowTemplateRewriting = !1
                        }, x.ba.prototype = new x.ca, x.ba.prototype.constructor = x.ba, x.ba.prototype.renderTemplateSource = function(e, t, n, o) {
                            return (t = 9 > x.a.W || !e.nodes ? null : e.nodes()) ? x.a.la(t.cloneNode(!0).childNodes) : (e = e.text(), x.a.ua(e, o))
                        }, x.ba.Ma = new x.ba, x.gc(x.ba.Ma), x.b("nativeTemplateEngine", x.ba),
                        function() {
                            x.$a = function() {
                                var e = this.Hd = function() {
                                    if (!c || !c.tmpl) return 0;
                                    try {
                                        if (0 <= c.tmpl.tag.tmpl.open.toString().indexOf("__")) return 2
                                    } catch (e) {}
                                    return 1
                                }();
                                this.renderTemplateSource = function(t, n, o, r) {
                                    if (r = r || l, o = o || {}, 2 > e) throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");
                                    var i = t.data("precompiled");
                                    return i || (i = t.text() || "", i = c.template(null, "{{ko_with $item.koBindingContext}}" + i + "{{/ko_with}}"), t.data("precompiled", i)), t = [n.$data], n = c.extend({
                                        koBindingContext: n
                                    }, o.templateOptions), (n = c.tmpl(i, t, n)).appendTo(r.createElement("div")), c.fragments = {}, n
                                }, this.createJavaScriptEvaluatorBlock = function(e) {
                                    return "{{ko_code ((function() { return " + e + " })()) }}"
                                }, this.addTemplate = function(e, t) {
                                    l.write("<script type='text/html' id='" + e + "'>" + t + "<\/script>")
                                }, 0 < e && (c.tmpl.tag.ko_code = {
                                    open: "__.push($1 || '');"
                                }, c.tmpl.tag.ko_with = {
                                    open: "with($1) {",
                                    close: "} "
                                })
                            }, x.$a.prototype = new x.ca, x.$a.prototype.constructor = x.$a;
                            var e = new x.$a;
                            0 < e.Hd && x.gc(e), x.b("jqueryTmplTemplateEngine", x.$a)
                        }()
                }))
        }()
    }, function(e, t) {
        var n;
        n = function() {
            return this
        }();
        try {
            n = n || new Function("return this")()
        } catch (e) {
            "object" == typeof window && (n = window)
        }
        e.exports = n
    }, function(t, n) {
        t.exports = e
    }, function(e, t, n) {
        (function(e) {
            var o = void 0 !== e && e || "undefined" != typeof self && self || window,
                r = Function.prototype.apply;

            function i(e, t) {
                this._id = e, this._clearFn = t
            }
            t.setTimeout = function() {
                return new i(r.call(setTimeout, o, arguments), clearTimeout)
            }, t.setInterval = function() {
                return new i(r.call(setInterval, o, arguments), clearInterval)
            }, t.clearTimeout = t.clearInterval = function(e) {
                e && e.close()
            }, i.prototype.unref = i.prototype.ref = function() {}, i.prototype.close = function() {
                this._clearFn.call(o, this._id)
            }, t.enroll = function(e, t) {
                clearTimeout(e._idleTimeoutId), e._idleTimeout = t
            }, t.unenroll = function(e) {
                clearTimeout(e._idleTimeoutId), e._idleTimeout = -1
            }, t._unrefActive = t.active = function(e) {
                clearTimeout(e._idleTimeoutId);
                var t = e._idleTimeout;
                t >= 0 && (e._idleTimeoutId = setTimeout((function() {
                    e._onTimeout && e._onTimeout()
                }), t))
            }, n(4), t.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== e && e.setImmediate || this && this.setImmediate, t.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== e && e.clearImmediate || this && this.clearImmediate
        }).call(this, n(1))
    }, function(e, t, n) {
        (function(e, t) {
            ! function(e, n) {
                "use strict";
                if (!e.setImmediate) {
                    var o, r, i, s, a, l = 1,
                        u = {},
                        c = !1,
                        p = e.document,
                        d = Object.getPrototypeOf && Object.getPrototypeOf(e);
                    d = d && d.setTimeout ? d : e, "[object process]" === {}.toString.call(e.process) ? o = function(e) {
                        t.nextTick((function() {
                            f(e)
                        }))
                    } : ! function() {
                        if (e.postMessage && !e.importScripts) {
                            var t = !0,
                                n = e.onmessage;
                            return e.onmessage = function() {
                                t = !1
                            }, e.postMessage("", "*"), e.onmessage = n, t
                        }
                    }() ? e.MessageChannel ? ((i = new MessageChannel).port1.onmessage = function(e) {
                        f(e.data)
                    }, o = function(e) {
                        i.port2.postMessage(e)
                    }) : p && "onreadystatechange" in p.createElement("script") ? (r = p.documentElement, o = function(e) {
                        var t = p.createElement("script");
                        t.onreadystatechange = function() {
                            f(e), t.onreadystatechange = null, r.removeChild(t), t = null
                        }, r.appendChild(t)
                    }) : o = function(e) {
                        setTimeout(f, 0, e)
                    } : (s = "setImmediate$" + Math.random() + "$", a = function(t) {
                        t.source === e && "string" == typeof t.data && 0 === t.data.indexOf(s) && f(+t.data.slice(s.length))
                    }, e.addEventListener ? e.addEventListener("message", a, !1) : e.attachEvent("onmessage", a), o = function(t) {
                        e.postMessage(s + t, "*")
                    }), d.setImmediate = function(e) {
                        "function" != typeof e && (e = new Function("" + e));
                        for (var t = new Array(arguments.length - 1), n = 0; n < t.length; n++) t[n] = arguments[n + 1];
                        var r = {
                            callback: e,
                            args: t
                        };
                        return u[l] = r, o(l), l++
                    }, d.clearImmediate = h
                }

                function h(e) {
                    delete u[e]
                }

                function f(e) {
                    if (c) setTimeout(f, 0, e);
                    else {
                        var t = u[e];
                        if (t) {
                            c = !0;
                            try {
                                ! function(e) {
                                    var t = e.callback,
                                        n = e.args;
                                    switch (n.length) {
                                        case 0:
                                            t();
                                            break;
                                        case 1:
                                            t(n[0]);
                                            break;
                                        case 2:
                                            t(n[0], n[1]);
                                            break;
                                        case 3:
                                            t(n[0], n[1], n[2]);
                                            break;
                                        default:
                                            t.apply(void 0, n)
                                    }
                                }(t)
                            } finally {
                                h(e), c = !1
                            }
                        }
                    }
                }
            }("undefined" == typeof self ? void 0 === e ? this : e : self)
        }).call(this, n(1), n(5))
    }, function(e, t) {
        var n, o, r = e.exports = {};

        function i() {
            throw new Error("setTimeout has not been defined")
        }

        function s() {
            throw new Error("clearTimeout has not been defined")
        }

        function a(e) {
            if (n === setTimeout) return setTimeout(e, 0);
            if ((n === i || !n) && setTimeout) return n = setTimeout, setTimeout(e, 0);
            try {
                return n(e, 0)
            } catch (t) {
                try {
                    return n.call(null, e, 0)
                } catch (t) {
                    return n.call(this, e, 0)
                }
            }
        }! function() {
            try {
                n = "function" == typeof setTimeout ? setTimeout : i
            } catch (e) {
                n = i
            }
            try {
                o = "function" == typeof clearTimeout ? clearTimeout : s
            } catch (e) {
                o = s
            }
        }();
        var l, u = [],
            c = !1,
            p = -1;

        function d() {
            c && l && (c = !1, l.length ? u = l.concat(u) : p = -1, u.length && h())
        }

        function h() {
            if (!c) {
                var e = a(d);
                c = !0;
                for (var t = u.length; t;) {
                    for (l = u, u = []; ++p < t;) l && l[p].run();
                    p = -1, t = u.length
                }
                l = null, c = !1,
                    function(e) {
                        if (o === clearTimeout) return clearTimeout(e);
                        if ((o === s || !o) && clearTimeout) return o = clearTimeout, clearTimeout(e);
                        try {
                            o(e)
                        } catch (t) {
                            try {
                                return o.call(null, e)
                            } catch (t) {
                                return o.call(this, e)
                            }
                        }
                    }(e)
            }
        }

        function f(e, t) {
            this.fun = e, this.array = t
        }

        function m() {}
        r.nextTick = function(e) {
            var t = new Array(arguments.length - 1);
            if (arguments.length > 1)
                for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
            u.push(new f(e, t)), 1 !== u.length || c || a(h)
        }, f.prototype.run = function() {
            this.fun.apply(null, this.array)
        }, r.title = "browser", r.browser = !0, r.env = {}, r.argv = [], r.version = "", r.versions = {}, r.on = m, r.addListener = m, r.once = m, r.off = m, r.removeListener = m, r.removeAllListeners = m, r.emit = m, r.prependListener = m, r.prependOnceListener = m, r.listeners = function(e) {
            return []
        }, r.binding = function(e) {
            throw new Error("process.binding is not supported")
        }, r.cwd = function() {
            return "/"
        }, r.chdir = function(e) {
            throw new Error("process.chdir is not supported")
        }, r.umask = function() {
            return 0
        }
    }, function(e, t, n) {
        var o = {
            "./ArrowDown_34x34.svg": 7,
            "./ArrowLeft.svg": 8,
            "./ArrowRight.svg": 9,
            "./Arrow_downGREY_10x10.svg": 10,
            "./ChooseFile.svg": 11,
            "./Clear.svg": 12,
            "./DefaultFile.svg": 13,
            "./Delete.svg": 14,
            "./Down_34x34.svg": 15,
            "./Left.svg": 16,
            "./ModernBooleanCheckChecked.svg": 17,
            "./ModernBooleanCheckInd.svg": 18,
            "./ModernBooleanCheckUnchecked.svg": 19,
            "./ModernCheck.svg": 20,
            "./ModernRadio.svg": 21,
            "./More.svg": 22,
            "./ProgressButton.svg": 23,
            "./ProgressButtonV2.svg": 24,
            "./RemoveFile.svg": 25,
            "./Right.svg": 26,
            "./TimerCircle.svg": 27,
            "./V2Check.svg": 28,
            "./V2Check_24x24.svg": 29,
            "./V2DragElement_16x16.svg": 30,
            "./clear_16x16.svg": 31,
            "./collapseDetail.svg": 32,
            "./expandDetail.svg": 33,
            "./no-image.svg": 34,
            "./search.svg": 35
        };

        function r(e) {
            var t = i(e);
            return n(t)
        }

        function i(e) {
            if (!n.o(o, e)) {
                var t = new Error("Cannot find module '" + e + "'");
                throw t.code = "MODULE_NOT_FOUND", t
            }
            return o[e]
        }
        r.keys = function() {
            return Object.keys(o)
        }, r.resolve = i, e.exports = r, r.id = 6
    }, function(e, t) {
        e.exports = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 34 34" xml:space="preserve"><polygon class="st0" points="12,16 14,14 17,17 20,14 22,16 17,21 "></polygon></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M15 8.99999H4.39998L8.69998 13.3L7.29998 14.7L0.599976 7.99999L7.29998 1.29999L8.69998 2.69999L4.39998 6.99999H15V8.99999Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M1 6.99999H11.6L7.3 2.69999L8.7 1.29999L15.4 7.99999L8.7 14.7L7.3 13.3L11.6 8.99999H1V6.99999Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 10 10" xml:space="preserve"><polygon class="st0" points="2,2 0,4 5,9 10,4 8,2 5,5 "></polygon></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M22 9V7C22 5.9 21.1 5 20 5H12L10 3H4C2.9 3 2 3.9 2 5V9V10V21H22L24 9H22ZM4 5H9.2L10.6 6.4L11.2 7H12H20V9H4V5ZM20.3 19H4V11H21.6L20.3 19Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M22.6 8.6L16.4 2.4C16 2 15.5 1.8 15 1.8C14.5 1.8 14 2 13.6 2.4L1.4 14.6C0.600003 15.4 0.600003 16.6 1.4 17.4L6 22H12L22.6 11.4C23.3 10.6 23.3 9.3 22.6 8.6ZM11.1 20H6.8L2.8 16L6.2 12.6L12.4 18.8L11.1 20ZM13.8 17.4L7.6 11.2L15 3.8L21.2 10L13.8 17.4ZM16 20H23V22H14L16 20Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 56 68" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_9011_41219)"><path d="M54.83 10.83L45.17 1.17C44.7982 0.798664 44.357 0.504208 43.8714 0.303455C43.3858 0.102703 42.8654 -0.000411943 42.34 1.2368e-06H6C4.4087 1.2368e-06 2.88257 0.632142 1.75735 1.75736C0.632136 2.88258 0 4.4087 0 6V62C0 63.5913 0.632136 65.1174 1.75735 66.2426C2.88257 67.3679 4.4087 68 6 68H50C51.5913 68 53.1174 67.3679 54.2426 66.2426C55.3679 65.1174 56 63.5913 56 62V13.66C56.0004 13.1346 55.8973 12.6142 55.6965 12.1286C55.4958 11.643 55.2013 11.2018 54.83 10.83ZM44 2.83L53.17 12H48C46.9391 12 45.9217 11.5786 45.1716 10.8284C44.4214 10.0783 44 9.06087 44 8V2.83ZM54 62C54 63.0609 53.5786 64.0783 52.8284 64.8284C52.0783 65.5786 51.0609 66 50 66H6C4.93913 66 3.92172 65.5786 3.17157 64.8284C2.42142 64.0783 2 63.0609 2 62V6C2 4.93914 2.42142 3.92172 3.17157 3.17157C3.92172 2.42143 4.93913 2 6 2H42V8C42 9.5913 42.6321 11.1174 43.7574 12.2426C44.8826 13.3679 46.4087 14 48 14H54V62ZM14 24H42V26H14V24ZM14 30H42V32H14V30ZM14 36H42V38H14V36ZM14 42H42V44H14V42Z" fill="#909090"></path></g><defs><clipPath id="clip0_9011_41219"><rect width="56" height="68" fill="white"></rect></clipPath></defs></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M22 4H20H16V2C16 0.9 15.1 0 14 0H10C8.9 0 8 0.9 8 2V4H4H2V6H4V20C4 21.1 4.9 22 6 22H18C19.1 22 20 21.1 20 20V6H22V4ZM10 2H14V4H10V2ZM18 20H6V6H8H16H18V20ZM14 8H16V18H14V8ZM11 8H13V18H11V8ZM8 8H10V18H8V8Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 34 34" xml:space="preserve"><g><path class="st0" d="M33,34H0V0h33c0.6,0,1,0.4,1,1v32C34,33.6,33.6,34,33,34z"></path><polygon class="st1" points="12,16 14,14 17,17 20,14 22,16 17,21 "></polygon></g></svg>'
    }, function(e, t) {
        e.exports = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 16 16" xml:space="preserve"><polygon points="11,12 9,14 3,8 9,2 11,4 7,8 "></polygon></svg>'
    }, function(e, t) {
        e.exports = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><polygon points="19,10 14,10 14,5 10,5 10,10 5,10 5,14 10,14 10,19 14,19 14,14 19,14 "></polygon></svg>'
    }, function(e, t) {
        e.exports = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><path d="M22,0H2C0.9,0,0,0.9,0,2v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V2C24,0.9,23.1,0,22,0z M21,18L6,3h15V18z M3,6l15,15H3V6z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><rect x="5" y="10" width="14" height="4"></rect></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 24 24"><path d="M5,13l2-2l3,3l7-7l2,2l-9,9L5,13z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="-12 -12 24 24"><circle r="6" cx="0" cy="0"></circle></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 12C6 13.1 5.1 14 4 14C2.9 14 2 13.1 2 12C2 10.9 2.9 10 4 10C5.1 10 6 10.9 6 12ZM12 10C10.9 10 10 10.9 10 12C10 13.1 10.9 14 12 14C13.1 14 14 13.1 14 12C14 10.9 13.1 10 12 10ZM20 10C18.9 10 18 10.9 18 12C18 13.1 18.9 14 20 14C21.1 14 22 13.1 22 12C22 10.9 21.1 10 20 10Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 10 10"><polygon points="2,2 0,4 5,9 10,4 8,2 5,5 "></polygon></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 16 16"><path d="M15 8.99999H4.39998L8.69998 13.3L7.29998 14.7L0.599976 7.99999L7.29998 1.29999L8.69998 2.69999L4.39998 6.99999H15V8.99999Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 16 16"><path d="M8,2C4.7,2,2,4.7,2,8s2.7,6,6,6s6-2.7,6-6S11.3,2,8,2z M11,10l-1,1L8,9l-2,2l-1-1l2-2L5,6l1-1l2,2l2-2l1,1L9,8 L11,10z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 16 16" xml:space="preserve"><polygon points="5,4 7,2 13,8 7,14 5,12 9,8 "></polygon></svg>'
    }, function(e, t) {
        e.exports = '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 160 160"><circle cx="80" cy="80" r="70" style="stroke: var(--sd-timer-stroke-background-color); stroke-width: var(--sd-timer-stroke-background-width)" stroke-dasharray="none" stroke-dashoffset="none"></circle><circle cx="80" cy="80" r="70"></circle></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.00001 15.8L2.60001 10.4L4.00001 9L8.00001 13L16 5L17.4 6.4L8.00001 15.8Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9 20.1L1 12L3.1 9.9L9 15.9L20.9 4L23 6.1L9 20.1Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M2 4C2 3.73478 2.10536 3.48043 2.29289 3.29289C2.48043 3.10536 2.73478 3 3 3H13C13.2652 3 13.5196 3.10536 13.7071 3.29289C13.8946 3.48043 14 3.73478 14 4C14 4.26522 13.8946 4.51957 13.7071 4.70711C13.5196 4.89464 13.2652 5 13 5H3C2.73478 5 2.48043 4.89464 2.29289 4.70711C2.10536 4.51957 2 4.26522 2 4ZM13 7H3C2.73478 7 2.48043 7.10536 2.29289 7.29289C2.10536 7.48043 2 7.73478 2 8C2 8.26522 2.10536 8.51957 2.29289 8.70711C2.48043 8.89464 2.73478 9 3 9H13C13.2652 9 13.5196 8.89464 13.7071 8.70711C13.8946 8.51957 14 8.26522 14 8C14 7.73478 13.8946 7.48043 13.7071 7.29289C13.5196 7.10536 13.2652 7 13 7ZM13 11H3C2.73478 11 2.48043 11.1054 2.29289 11.2929C2.10536 11.4804 2 11.7348 2 12C2 12.2652 2.10536 12.5196 2.29289 12.7071C2.48043 12.8946 2.73478 13 3 13H13C13.2652 13 13.5196 12.8946 13.7071 12.7071C13.8946 12.5196 14 12.2652 14 12C14 11.7348 13.8946 11.4804 13.7071 11.2929C13.5196 11.1054 13.2652 11 13 11Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M13.35 3.34999L12.65 2.64999L8.05002 7.24999L3.35002 2.64999L2.65002 3.34999L7.25002 8.04999L2.65002 12.65L3.35002 13.35L8.05002 8.74999L12.65 13.35L13.35 12.65L8.75002 8.04999L13.35 3.34999Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M13 7H3V9H13V7Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M13 7H9V3H7V7H3V9H7V13H9V9H13V7Z"></path></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 48 48"><g opacity="0.5"><path d="M14 17.01C14 16.4167 14.1759 15.8366 14.5056 15.3433C14.8352 14.8499 15.3038 14.4654 15.8519 14.2384C16.4001 14.0113 17.0033 13.9519 17.5853 14.0676C18.1672 14.1834 18.7018 14.4691 19.1213 14.8887C19.5409 15.3082 19.8266 15.8428 19.9424 16.4247C20.0581 17.0067 19.9987 17.6099 19.7716 18.1581C19.5446 18.7062 19.1601 19.1748 18.6667 19.5044C18.1734 19.8341 17.5933 20.01 17 20.01C16.2044 20.01 15.4413 19.6939 14.8787 19.1313C14.3161 18.5687 14 17.8056 14 17.01ZM27.09 24.14L20 36.01H36L27.09 24.14ZM36.72 8.14L35.57 10.01H36C36.5304 10.01 37.0391 10.2207 37.4142 10.5958C37.7893 10.9709 38 11.4796 38 12.01V36.01C38 36.5404 37.7893 37.0491 37.4142 37.4242C37.0391 37.7993 36.5304 38.01 36 38.01H18.77L17.57 40.01H36C37.0609 40.01 38.0783 39.5886 38.8284 38.8384C39.5786 38.0883 40 37.0709 40 36.01V12.01C39.9966 11.0765 39.6668 10.1737 39.0678 9.45778C38.4688 8.74188 37.6382 8.25802 36.72 8.09V8.14ZM36.86 4.5L12.86 44.5L11.14 43.5L13.23 40.01H12C10.9391 40.01 9.92172 39.5886 9.17157 38.8384C8.42143 38.0883 8 37.0709 8 36.01V12.01C8 10.9491 8.42143 9.93172 9.17157 9.18157C9.92172 8.43143 10.9391 8.01 12 8.01H32.43L35.14 3.5L36.86 4.5ZM14.43 38.01L15.63 36.01H12L19 27.01L20.56 27.8L31.23 10.01H12C11.4696 10.01 10.9609 10.2207 10.5858 10.5958C10.2107 10.9709 10 11.4796 10 12.01V36.01C10 36.5404 10.2107 37.0491 10.5858 37.4242C10.9609 37.7993 11.4696 38.01 12 38.01H14.43Z"></path></g></svg>'
    }, function(e, t) {
        e.exports = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M14 2C9.6 2 6 5.6 6 10C6 11.8 6.6 13.5 7.7 14.9L2.3 20.3C1.9 20.7 1.9 21.3 2.3 21.7C2.5 21.9 2.7 22 3 22C3.3 22 3.5 21.9 3.7 21.7L9.1 16.3C10.5 17.4 12.2 18 14 18C18.4 18 22 14.4 22 10C22 5.6 18.4 2 14 2ZM14 16C10.7 16 8 13.3 8 10C8 6.7 10.7 4 14 4C17.3 4 20 6.7 20 10C20 13.3 17.3 16 14 16Z"></path></svg>'
    }, function(e, t, n) {
        e.exports = n(37) + "\n" + n(38) + "\n" + n(39) + "\n" + n(40) + "\n" + n(41) + "\n" + n(42) + "\n" + n(43) + "\n" + n(44) + "\n" + n(45) + "\n" + n(46) + "\n" + n(47) + "\n" + n(48) + "\n" + n(49) + "\n" + n(50) + "\n" + n(51) + "\n" + n(52) + "\n" + n(53) + "\n" + n(54) + "\n" + n(55) + "\n" + n(56) + "\n" + n(57) + "\n" + n(58) + "\n" + n(59) + "\n" + n(60) + "\n" + n(61) + "\n" + n(62) + "\n" + n(63) + "\n" + n(64) + "\n" + n(65) + "\n" + n(66) + "\n" + n(67) + "\n" + n(68) + "\n" + n(69) + "\n" + n(70) + "\n" + n(71) + "\n" + n(72) + "\n" + n(73) + "\n" + n(74) + "\n" + n(75)
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-comment">\n  \x3c!--ko if: !question.isReadOnlyRenderDiv() --\x3e\n<textarea data-bind="attr: { id: question.commentId, maxLength: question.getOthersMaxLength(), \'aria-required\': question.ariaRequired, \'aria-label\': question.ariaLabel, placeholder: question.commentPlaceholder }, \n        event: { input: function(s, e) { $data.question.onCommentInput(s, e); } }, \n        value: $data.question.comment, \n        visible: $data.visible,\n        disable: $data.question.isInputReadOnly,\n        style: { resize: question.resizeStyle },\n        css: $data.question.koCss().other"></textarea>\n\x3c!--/ko--\x3e\n\n\x3c!--ko if: question.isReadOnlyRenderDiv() --\x3e\n<div data-bind="text: question.comment"></div>\n\x3c!--/ko--\x3e\n<\/script>\n<script type="text/html" id="survey-other">\n  \x3c!--ko if: !question.isReadOnlyRenderDiv() --\x3e\n<textarea data-bind="attr: { id: question.otherId, maxLength: question.getOthersMaxLength(), \'aria-required\': question.ariaRequired, \'aria-label\': question.ariaLabel, placeholder: question.otherPlaceholder }, \n        event: { input: function(s, e) { $data.question.onOtherValueInput(s, e); } }, \n        value: $data.question.otherValue, \n        visible: $data.visible,\n        disable: $data.question.isInputReadOnly,\n        style: { resize: question.resizeStyle },\n        css: $data.question.koCss().other"></textarea>\n\x3c!--/ko--\x3e\n\n\x3c!--ko if: question.isReadOnlyRenderDiv() --\x3e\n<div data-bind="text: question.otherValue"></div>\n\x3c!--/ko--\x3e\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-flowpanel">\n  <div data-bind="style: { flexBasis: renderWidth, flexGrow: 1, flexShrink: 1, width: renderWidth, minWidth: $data.minWidth, maxWidth: $data.maxWidth }, attr: { id: id }, css: cssClasses.panel.container">\n      <h4 data-bind="visible: (processedTitle.length > 0), css: question.cssTitle">\n          \x3c!-- ko template: { name: \'survey-string\', data: locTitle } --\x3e\n          \x3c!-- /ko --\x3e\n      </h4>\n      <div data-bind="css: cssClasses.panel.description">\n          \x3c!-- ko template: { name: \'survey-string\', data: locDescription } --\x3e\n          \x3c!-- /ko --\x3e\n      </div>\n      <div data-bind="style: { paddingLeft: innerPaddingLeft }"></div>\n      <f-panel params="question: question" data-bind="attr: { contenteditable : question.isDesignMode, placeHolder: question.placeHolder }"></f-panel>\n  </div>\n<\/script>\n<script type="text/html" id="survey-flowpanel-question">\n  \x3c!-- ko with: $parent.question.getQuestionByName($data) --\x3e\n    \x3c!-- ko template: { name: koElementType(), data: $data, as: \'question\', afterRender: parent.koElementAfterRender } --\x3e\x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n<\/script>\n'
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-header\">\n  \x3c!-- ko if: renderedHasHeader --\x3e\n<div data-bind=\"css: css.header\">\n  \x3c!-- ko if: isLogoBefore --\x3e\n  \x3c!-- ko component: { name: getElementWrapperComponentName($data, 'logo-image'), params: getElementWrapperComponentData($data, 'logo-image') } --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n\n  \x3c!-- ko if: renderedHasTitle --\x3e\n  <div data-bind=\"css: css.headerText, style: { maxWidth: titleMaxWidth }\">\n    \x3c!-- ko component: { name: 'survey-element-title', params: {element: $data } } --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: renderedHasDescription --\x3e\n    <h5 data-bind=\"css: css.description\">\n      \x3c!-- ko template: { name: 'survey-string', data: locDescription } --\x3e\n      \x3c!-- /ko --\x3e\n    </h5>\n    \x3c!-- /ko --\x3e\n  </div>\n  \x3c!-- /ko --\x3e\n\n  \x3c!-- ko if: isLogoAfter --\x3e\n  \x3c!-- ko component: { name: getElementWrapperComponentName($data, 'logo-image'), params: getElementWrapperComponentData($data, 'logo-image') } --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  <div data-bind=\"css: css.headerClose\"></div>\n</div>\n\x3c!-- /ko --\x3e\n<\/script>"
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-content">\n    \x3c!-- ko template: { name: "survey-content-template", afterRender: $data.implementor.koEventAfterRender } --\x3e\n    \x3c!-- /ko --\x3e\n<\/script>\n\n<script type="text/html" id="survey-content-template">\n  <div data-bind="css: rootCss">\n      <form onsubmit="return false;">\n          <div class="sv_custom_header" data-bind="visible: !hasLogo"></div>\n          <div data-bind="css: containerCss">\n              \x3c!-- ko template: { name: koTitleTemplate, afterRender: koAfterRenderHeader } --\x3e\n              \x3c!-- /ko --\x3e\n              \x3c!-- ko if: isShowingPage --\x3e\n              \x3c!-- ko if: isTimerPanelShowingOnTop && !isShowStartingPage --\x3e\n              \x3c!-- ko template: { name: \'survey-timerpanel\' } --\x3e\n              \x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n              \x3c!-- ko if: isShowProgressBarOnTop && !isShowStartingPage --\x3e\n              \x3c!-- ko component: { name: \'sv-progress-\' + progressBarType, params: { model: $data } } --\x3e\n              \x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n              <div data-bind="css: bodyCss, style:{maxWidth: renderedWidth}">\n                  \x3c!-- ko if: isNavigationButtonsShowingOnTop --\x3e\n                    \x3c!-- ko component: { name: \'sv-action-bar\', params: { model: navigationBar } } --\x3e\x3c!-- /ko --\x3e\n                  \x3c!-- /ko --\x3e\n                  \x3c!-- ko if: activePage --\x3e\n                    <div data-bind="attr: { id: activePage.id }, template: { name: \'survey-page\', data: activePage, afterRender: koAfterRenderPage }"></div>\n                    \x3c!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate --\x3e\n                    \x3c!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } --\x3e\n                    \x3c!-- /ko --\x3e\n                    \x3c!-- /ko --\x3e\n                  \x3c!-- /ko --\x3e\n                  \x3c!-- ko if: isShowProgressBarOnBottom && !isShowStartingPage --\x3e\n                  \x3c!-- ko component: { name: \'sv-progress-\' + progressBarType, params: { model: $data } } --\x3e\n                  \x3c!-- /ko --\x3e\n                  \x3c!-- /ko --\x3e\n                  \x3c!-- ko if: isNavigationButtonsShowingOnBottom --\x3e\n                    \x3c!-- ko component: { name: \'sv-action-bar\', params: { model: navigationBar } } --\x3e\x3c!-- /ko --\x3e\n                  \x3c!-- /ko --\x3e\n              </div>\n              \x3c!-- ko if: isTimerPanelShowingOnBottom && !isShowStartingPage --\x3e\n              \x3c!-- ko template: { name: \'survey-timerpanel\' } --\x3e\n              \x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n              \x3c!-- ko if: state == "completed" && showCompletedPage --\x3e\n              <div data-bind="html: processedCompletedHtml, css: completedCss"></div>\n              <div data-bind="visible: completedState != \'\', css: css.saveData.root">\n                  <div data-bind="css: completedStateCss">\n                      <span data-bind="text:completedStateText"></span>\n                      <input type="button" data-bind="visible: completedState == \'error\', value: getLocalizationString(\'saveAgainButton\'), click: doComplete, css: css.saveData.saveAgainButton"/>\n                  </div>\n              </div>\n              \x3c!-- /ko --\x3e\n              \x3c!-- ko if: state == "completedbefore" --\x3e\n              <div data-bind="html: processedCompletedBeforeHtml, css: css.body"></div>\n              \x3c!-- /ko --\x3e\n              \x3c!-- ko if: state == "loading" --\x3e\n              <div data-bind="html: processedLoadingHtml, css: css.body"></div>\n              \x3c!-- /ko --\x3e\n              \x3c!-- ko if: state == "empty" --\x3e\n              <div data-bind="text:emptySurveyText, css: css.bodyEmpty"></div>\n              \x3c!-- /ko --\x3e\n          </div>\n      </form>\n      \x3c!-- ko if: showBrandInfo --\x3e\n      <sv-brand-info></sv-brand-info>\n      \x3c!-- /ko --\x3e\n  </div>\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-page">\n  <div data-bind="css: cssRoot">\n    \x3c!-- ko component: { name: \'survey-element-title\', params: {element: $data } } --\x3e\x3c!-- /ko --\x3e\n    \x3c!-- ko if: _showDescription--\x3e\n    <div\n      data-bind="visible: data.showPageTitles, css: cssClasses.page.description"\n    >\n      \x3c!-- ko template: { name: \'survey-string\', data: locDescription } --\x3e\n      \x3c!-- /ko --\x3e\n    </div>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko template: { name: \'survey-rows\', data: $data} --\x3e\n    \x3c!-- /ko --\x3e\n  </div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-panel">\n  \x3c!-- ko if: $data.isVisible --\x3e\n  <div\n    data-bind="attr: { id: id }, css: $data.getContainerCss(), event: {focusin: focusIn}"\n  >\n    \x3c!-- ko if: hasDescription || hasTitle  --\x3e\n        \x3c!--ko template: { name: \'survey-question-title\', data: $data  } --\x3e\x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko template: { name: \'survey-question-errors\', data: $data } --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: state != "collapsed" --\x3e\n    <div\n      data-bind="style: { paddingLeft: innerPaddingLeft }, css: cssClasses.panel.content, attr: {id:contentId}"\n    >\n      \x3c!-- ko template: { name: \'survey-rows\', data: $data} --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko component: { name: \'sv-action-bar\', params: { model: getFooterToolbar() } } --\x3e\n      \x3c!-- /ko --\x3e\n    </div>\n    \x3c!-- /ko --\x3e\n  </div>\n  \x3c!-- /ko --\x3e\n<\/script>\n'
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-rows\">\n  \x3c!-- ko foreach: { data: rows, as: 'row'} --\x3e\n    \x3c!-- ko if: row.visible --\x3e\n      \x3c!-- ko component: { name: $parent.survey.getRowWrapperComponentName(row), params: { componentData:  $parent.survey.getRowWrapperComponentData(row), templateData: { name: 'survey-row', data: row } } } --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n<\/script>"
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-row">\n  <div data-bind="css: row.getRowCss()">\n    \x3c!-- ko template: { name: "survey-row-content", afterRender: row.rowAfterRender } --\x3e\n    \x3c!-- /ko --\x3e\n  </div>\n<\/script>\n<script type="text/html" id="survey-row-content">\n\x3c!-- ko foreach: { data: row.visibleElements, as: \'question\', afterRender: row.koAfterRender } --\x3e\n  <div data-bind="css: question.koCss().questionWrapper, style: $data.rootStyle, event: {focusin: question.focusIn }">\n  \x3c!-- ko if: row.isNeedRender --\x3e\n    \x3c!-- ko component: { name: row.panel.survey.getElementWrapperComponentName(question), params: { componentData:  row.panel.survey.getElementWrapperComponentData(question), templateData: { name: question.koElementType, data: question, afterRender: $parent.koElementAfterRender } } } --\x3e\n    \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: !row.isNeedRender && question.skeletonComponentName --\x3e\n    \x3c!-- ko component: { name: question.skeletonComponentName, params: { element: question } } --\x3e\n    \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  </div>\n\x3c!-- /ko --\x3e\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-string">\n    \x3c!-- ko component: { name: renderAs, params: { locString: renderAsData } } --\x3e\n    \x3c!-- /ko --\x3e\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-timerpanel">\n    \x3c!-- ko if: timerModel.showTimerAsClock --\x3e\n    <div data-bind="css: timerModel.rootCss">\n        \x3c!-- ko if: timerModel.showProgress --\x3e\n        <svg data-bind="css: timerModel.getProgressCss(), style: { strokeDasharray: 440, strokeDashoffset: -440 * timerModel.progress }">\n            <use data-bind="attr:{\'xlink:href\': \'#icon-timercircle\'}" xlink:href=\'\'></use>\n        </svg>\n        \x3c!-- /ko --\x3e\n        <div data-bind="css: timerModel.textContainerCss">\n            <span data-bind="css: timerModel.majorTextCss, text: timerModel.clockMajorText"></span>\n            \x3c!-- ko if: !!timerModel.minorTextCss --\x3e\n            <span data-bind="css: timerModel.minorTextCss, text: timerModel.clockMinorText"></span>\n            \x3c!-- /ko --\x3e\n        </div>\n    </div>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: !timerModel.showTimerAsClock --\x3e\n    <div data-bind="css: timerModel.survey.getCss().timerRoot, text: timerModel.text"></div>\n    \x3c!--/ko --\x3e\n<\/script>\n'
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-question\">\n<div data-bind=\"css: question.koRootCss(), style: { paddingLeft: question.paddingLeft, paddingRight: question.paddingRight }, attr: { id: question.id, 'data-name': question.name, role: question.ariaRole, 'aria-required': question.ariaRequired, 'aria-invalid': question.ariaInvalid, 'aria-labelledby': question.ariaLabelledBy}\">\n  \x3c!-- ko if: question.showErrorsAboveQuestion --\x3e\n    \x3c!-- ko template: { name: 'survey-question-errors', data: question } --\x3e\n    \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: question.hasTitleOnLeftTop --\x3e\n    \x3c!--ko template: { name: 'survey-question-title', data: question  } --\x3e\n    \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko component: { name: question.survey.getQuestionContentWrapperComponentName(question), params: { componentData:  question.survey.getElementWrapperComponentData(question), templateData: { name: 'survey-question-content', data: question } } } --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: question.showErrorsBelowQuestion --\x3e\n    \x3c!-- ko template: { name: 'survey-question-errors', data: question } --\x3e\n    \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  <\/script>\n"
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-question-content\">\n<div data-bind=\"visible: !question.isCollapsed, css: question.cssContent\" role=\"presentation\">\n    \x3c!-- ko if: question.showErrorOnTop --\x3e\n      \x3c!-- ko template: { name: 'survey-question-errors', data: question } --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.isDefaultRendering() --\x3e\n      \x3c!-- ko template: { name: question.koTemplateName(), data: question, afterRender: question.koQuestionAfterRender } --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko ifnot: question.isDefaultRendering() --\x3e\n      \x3c!-- ko component: { name: getComponentName(), params: { question: question } } --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.hasComment --\x3e\n    <div data-bind=\"css: question.koCss().formGroup\">\n      \x3c!-- ko template: { name: 'survey-string', data: question.locCommentText } --\x3e\n      \x3c!-- /ko --\x3e\n      <div data-bind=\"template: { name: 'survey-comment', data: {'question': question, 'visible': true } }\"></div>\n    </div>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.showErrorOnBottom --\x3e\n      \x3c!-- ko template: { name: 'survey-question-errors', data: question } --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.isErrorsModeTooltip --\x3e\n      \x3c!-- ko component: { name: 'sv-tooltip-error', params: {question: question} } --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.hasDescriptionUnderInput --\x3e\n    <div data-bind=\"css: koCss().descriptionUnderInput\">\n      \x3c!-- ko template: { name: 'survey-string', data: locDescription } --\x3e\n      \x3c!-- /ko --\x3e\n    </div>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.hasTitleOnBottom --\x3e\n      \x3c!--ko template: { name: 'survey-question-title', data: question  } --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n  </div>\n<\/script>"
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-title">\n  <div data-bind="css: question.cssHeader, click: question.clickTitleFunction">\n    \x3c!-- ko component: { name: \'survey-element-title\', params: { element: $data } } --\x3e\x3c!-- /ko --\x3e\n    \x3c!-- ko v-if: $data.hasDescriptionUnderTitle --\x3e\n    <div\n      data-bind="visible: question.hasDescriptionUnderTitle, css: $data.cssDescription"\n    >\n      \x3c!-- ko template: { name: \'survey-string\', data: $data.locDescription } --\x3e\x3c!-- /ko --\x3e\n    </div>\n    \x3c!-- /ko --\x3e\n  </div>\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-boolean">\n  <div data-bind="css: question.koCss().root, event: { keydown: question.onKeyDown}">\n    <label data-bind="css: question.getItemCss()">\n      <input\n        type="checkbox"\n        data-bind="value: question.booleanValue, css: question.koCss().control, attr: {name: question.name, id: question.inputId, \'aria-required\': question.ariaRequired, \'aria-label\': question.ariaLabel, \'aria-invalid\': question.ariaInvalid, \'aria-describedby\': question.ariaDescribedBy}, checked: question.booleanValue, surveyProp: {indeterminate: question.isIndeterminate}, enable: !question.isInputReadOnly"\n      />\n      <span\n        data-bind="css: question.getLabelCss(false), click: onFalseLabelClick"\n        >\x3c!-- ko template: { name: \'survey-string\', data: locLabelFalse } --\x3e\x3c!-- /ko --\x3e</span\n      >\n      <div data-bind="css: question.koCss().switch, click: onSwitchClick">\n        <span data-bind="css: question.koCss().slider">\n            \x3c!-- ko if: question.koCss().sliderText && question.isDeterminated --\x3e\n            <span data-bind="css: question.koCss().sliderText">\n              \x3c!-- ko template: { name: \'survey-string\', data: question.getCheckedLabel() } --\x3e\x3c!-- /ko --\x3e\n            </span>\n            \x3c!-- /ko --\x3e\n        </span>\n      </div>\n      <span\n        data-bind="css: question.getLabelCss(true), click: onTrueLabelClick"\n        >\x3c!-- ko template: { name: \'survey-string\', data: locLabelTrue } --\x3e\x3c!-- /ko --\x3e</span\n      >\n    </label>\n  </div>\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-checkbox">\n  <fieldset data-bind="css: question.getSelectBaseRootCss()" role="presentation">\n      <legend role="presentation" class="sv-hidden"></legend>\n      \x3c!-- ko if: question.hasHeadItems  --\x3e\n        \x3c!-- ko foreach: { data: question.headItems, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n          \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n          \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko ifnot: question.hasColumns  --\x3e\n        \x3c!-- ko if: question.blockedRow --\x3e\n        <div data-bind="css: question.koCss().rootRow">\n          \x3c!-- ko foreach: { data: question.dataChoices, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n          \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n          \x3c!-- /ko --\x3e\n          \x3c!-- /ko --\x3e\n        </div>\n        \x3c!-- /ko --\x3e\n        \x3c!-- ko ifnot: question.blockedRow --\x3e\n        \x3c!-- ko foreach: { data: question.bodyItems, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n          \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n          \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: question.hasColumns  --\x3e\n        <div data-bind="css: question.koCss().rootMultiColumn">\n        \x3c!-- ko foreach: question.columns --\x3e\n            <div data-bind="css: question.getColumnClass()" role="presentation">\n            \x3c!-- ko foreach: { data: $data, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n              \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n              \x3c!-- /ko --\x3e\n            \x3c!-- /ko --\x3e\n            </div>\n        \x3c!-- /ko --\x3e\n        </div>\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: question.hasFootItems  --\x3e\n        \x3c!-- ko foreach: { data: question.footItems, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n          \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n          \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: question.hasOther && question.isOtherSelected --\x3e\n      <div class="form-group" data-bind="template: { name: \'survey-other\', data: {\'question\': question, \'visible\': question.isOtherSelected } }"></div>\n      \x3c!-- /ko --\x3e\n    </fieldset>\n<\/script>\n<script type="text/html" id="survey-checkbox-item">\n  <div role="presentation" data-bind="css: question.getItemClass(item)">\n      <label data-bind="css: question.getLabelClass(item), attr: { \'aria-label\': question.getAriaItemLabel(item) }">\n          \x3c!-- ko if: item == question.selectAllItem --\x3e\n          <input role="option" type="checkbox" value="" data-bind="attr: {name: question.name, id: question.getItemId(item), \'aria-describedby\': question.ariaDescribedBy }, checked: question.koAllSelected, enable: question.getItemEnabled(item), css: question.koCss().itemControl"/>\n          \x3c!-- /ko --\x3e\n          \x3c!-- ko if: item != question.selectAllItem --\x3e\n          <input role="option" type="checkbox" data-bind="attr: {name: question.name, id: question.getItemId(item), \'aria-describedby\': question.ariaDescribedBy }, checkedValue: item.value, checked: question.koValue, enable: question.getItemEnabled(item), css: question.koCss().itemControl"/>\n          \x3c!-- /ko --\x3e\n              \x3c!-- ko if: question.koCss().materialDecorator --\x3e\n              <span data-bind="css: question.koCss().materialDecorator">\n                \x3c!-- ko if: question.itemSvgIcon --\x3e\n                <svg data-bind="css:question.koCss().itemDecorator">\n                  <use data-bind="attr:{\'xlink:href\':question.itemSvgIcon}" xlink:href=\'\'></use>\n                </svg>\n                \x3c!-- /ko --\x3e\n              </span>\n              \x3c!-- /ko --\x3e\n              <span data-bind="visible: !item.hideCaption, css: question.koCss().controlLabel">\n              \x3c!-- ko template: { name: \'survey-string\', data: item.locText } --\x3e\n              \x3c!-- /ko --\x3e\n          </span>\n      </label>\n  </div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-question-tagbox\">\n  <div data-bind=\"css: question.renderCssRoot\">\n    \x3c!-- ko component: { name: 'sv-tagbox', params: { question: question } } --\x3e\n    \x3c!-- /ko --\x3e\n  \x3c!-- ko if: question.isOtherSelected --\x3e\n  <div class=\"form-group\"\n    data-bind=\"template: { name: 'survey-other', data: {'question': question, 'visible': question.isOtherSelected } }, style: {display: question.isFlowLayout ? 'inline': ''}\">\n  </div>\n  \x3c!-- /ko --\x3e\n  </div>\n<\/script>"
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-ranking">\n  <div data-bind="css: question.rootClass">\n    \x3c!-- ko foreach: { data: question.rankingChoices, as: \'item\', afterRender: question.koAfterRender } --\x3e\n      \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: \'survey-ranking-item\', data: item } } } --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n  </div>\n<\/script>\n\n<script type="text/html" id="survey-ranking-item">\n  <div\n    data-bind="event: { keydown: question.koHandleKeydown, pointerdown: question.koHandlePointerDown}, css: question.getItemClass($data), attr: {tabindex: question.getItemTabIndex($data), \'data-sv-drop-target-ranking-item\': $index() }"\n  >\n    <div tabindex="-1" style="outline: none;">\n      <div data-bind="css: question.cssClasses.itemGhostNode"></div>\n      <div data-bind="css: question.cssClasses.itemContent">\n        <div data-bind="css: question.cssClasses.itemIconContainer">\n          <svg\n            width="10"\n            height="16"\n            viewBox="0 0 10 16"\n            data-bind="css: question.getIconHoverCss()"\n            xmlns="http://www.w3.org/2000/svg"\n          >\n            <path\n              d="M6 2C6 0.9 6.9 0 8 0C9.1 0 10 0.9 10 2C10 3.1 9.1 4 8 4C6.9 4 6 3.1 6 2ZM2 0C0.9 0 0 0.9 0 2C0 3.1 0.9 4 2 4C3.1 4 4 3.1 4 2C4 0.9 3.1 0 2 0ZM8 6C6.9 6 6 6.9 6 8C6 9.1 6.9 10 8 10C9.1 10 10 9.1 10 8C10 6.9 9.1 6 8 6ZM2 6C0.9 6 0 6.9 0 8C0 9.1 0.9 10 2 10C3.1 10 4 9.1 4 8C4 6.9 3.1 6 2 6ZM8 12C6.9 12 6 12.9 6 14C6 15.1 6.9 16 8 16C9.1 16 10 15.1 10 14C10 12.9 9.1 12 8 12ZM2 12C0.9 12 0 12.9 0 14C0 15.1 0.9 16 2 16C3.1 16 4 15.1 4 14C4 12.9 3.1 12 2 12Z"\n            />\n          </svg>\n          <svg\n            width="10"\n            height="24"\n            viewBox="0 0 10 24"\n            data-bind="css: question.getIconFocusCss()"\n            xmlns="http://www.w3.org/2000/svg"\n          >\n            <path d="M10 5L5 0L0 5H4V9H6V5H10Z" />\n            <path d="M6 19V15H4V19H0L5 24L10 19H6Z" />\n          </svg>\n        </div>\n        <div\n          data-bind="css: question.cssClasses.itemIndex, text: question.getNumberByIndex($index())"\n        ></div>\n        <div data-bind="css: question.cssClasses.controlLabel">\n          \x3c!-- ko template: { name: \'survey-string\', data: $data.locText } --\x3e\n          \x3c!-- /ko --\x3e\n        </div>\n      </div>\n    </div>\n  </div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-question-comment\">\n  \x3c!--ko if: !question.isReadOnlyRenderDiv() --\x3e\n<textarea data-bind=\"attr: {'readonly': question.renderedInputReadOnly, 'disabled': question.renderedInputDisabled, maxLength: question.getMaxLength(), cols: question.cols, rows: question.rows, id: question.inputId, placeholder: question.renderedPlaceholder, 'aria-required': question.ariaRequired, 'aria-label': question.ariaLabel, 'aria-invalid': question.ariaInvalid, 'aria-describedby': question.ariaDescribedBy}, \n  event: { input: function(s, e) { question.onInput(e); }, keydown: function(s, e) { question.onKeyDown(e); return true; } }, \n  value: question.value, \n  style: { resize: question.resizeStyle },\n  css: question.className\"></textarea>\n\x3c!--/ko--\x3e\n\n\x3c!--ko if: question.isReadOnlyRenderDiv() --\x3e\n<div data-bind=\"text: question.value\"></div>\n\x3c!--/ko--\x3e\n<\/script>"
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-question-composite\">\n  \x3c!-- ko template: { name: 'survey-panel', data: question.contentPanel, as: 'question', afterRender: question.contentPanel.koPanelAfterRender } --\x3e\n  \x3c!-- /ko --\x3e\n<\/script>\n"
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-custom">\n  \x3c!-- ko template: { name: question.contentQuestion.koTemplateName(), data: question.contentQuestion, as: \'question\', afterRender: question.contentQuestion.koQuestionAfterRender } --\x3e\n  \x3c!-- /ko --\x3e\n<\/script>\n'
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-question-dropdown\">\n  <div data-bind=\"css: question.renderCssRoot\">\n    \x3c!-- ko component: { name: 'sv-dropdown', params: { question: question } } --\x3e\n    \x3c!-- /ko --\x3e\n  \x3c!-- ko if: question.isOtherSelected --\x3e\n  <div class=\"form-group\"\n    data-bind=\"template: { name: 'survey-other', data: {'question': question, 'visible': question.isOtherSelected } }, style: {display: question.isFlowLayout ? 'inline': ''}\">\n  </div>\n  \x3c!-- /ko --\x3e\n  </div>\n<\/script>\n"
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-empty">\n    <div></div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-errors">\n        \x3c!-- ko if: hasVisibleErrors --\x3e\n            <div role="alert" aria-live="polite" data-bind="visible: hasVisibleErrors, foreach: { data: errors, as: \'error\' }, css: koErrorClass(), attr: { id: question.id + \'_errors\' }">\n            \x3c!-- ko if: error.visible --\x3e\n            <div>   \n                <span aria-hidden="true" data-bind="css: question.koCss().error.icon"></span>\n                <span data-bind="css: question.koCss().error.item">\n                    \x3c!-- ko template: { name: \'survey-string\', data: error.locText } --\x3e\x3c!-- /ko --\x3e\n                </span>\n            </div>\n            \x3c!-- /ko --\x3e\n        </div>\n        \x3c!-- /ko --\x3e\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-expression">\n  <div data-bind="text:question.formatedValue, css: question.koCss().root"></div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-file">\n  <div data-bind="css: question.fileRootCss">\n      \x3c!-- ko ifnot: question.isInputReadOnly --\x3e\n      <input type="file" tabindex="-1" data-bind="css: question.cssClasses.fileInput, attr: { id: question.inputId, \'aria-required\': question.ariaRequired, \'aria-label\': question.ariaLabel, \'aria-invalid\': question.ariaInvalid, \'aria-describedby\': question.ariaDescribedBy, multiple: question.allowMultiple ? \'multiple\' : undefined, title: koInputTitle, accept: question.acceptedTypes }, event: { change: question.dochange }">\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: question.isReadOnly --\x3e\n      <input type="file" disabled data-bind="css: question.getReadOnlyFileCss(), attr: { id: question.inputId, placeholder: question.title, multiple: question.allowMultiple ? \'multiple\' : undefined }" style="color: transparent;"/>\n      \x3c!-- /ko --\x3e\n      <div data-bind="css: question.cssClasses.dragArea, event: { dragenter: question.ondragenter, dragover: question.ondragover, drop: question.ondrop, dragleave: question.ondragleave }">     \n        <div data-bind="css: question.getFileDecoratorCss()">\n          <span data-bind="css: question.koCss().dragAreaPlaceholder, text: question.dragAreaPlaceholder"></span>\n          <div data-bind="css: question.koCss().wrapper">\n            <label tabindex="0" role="button" data-bind="css: question.koChooseFileCss, attr: { for: question.inputId, \'aria-label\': question.chooseButtonCaption }">\n              <span data-bind="text: question.chooseButtonCaption"></span>\n              \x3c!-- ko if: question.cssClasses.chooseFileIconId --\x3e\n                  \x3c!-- ko component: { name: \'sv-svg-icon\', params: { title: question.chooseButtonCaption, iconName: question.cssClasses.chooseFileIconId, size: \'auto\' } } --\x3e\x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n            </label>\n            \x3c!-- ko if: !question.koHasValue() --\x3e\n            <span data-bind="css: question.koCss().noFileChosen, text: question.noFileChosenCaption"></span>\n            \x3c!-- /ko --\x3e\n          </div>\n        </div>\n        \x3c!-- ko template: { name: \'survey-question-file-clean-button\', data: {question: question, showRemoveButton: question.showRemoveButton} } --\x3e\x3c!-- /ko --\x3e\n        \x3c!-- ko if: question.showPreview --\x3e\n        \x3c!-- ko if: question.koHasValue --\x3e\n        <div data-bind="css: question.cssClasses.fileList, foreach: question.koData, visible: question.koHasValue">\n            <span data-bind="visible: question.isPreviewVisible($index()), css: question.cssClasses.preview">\n              \x3c!-- ko template: { name: \'survey-question-file-sign\', data: {question: question, item: $data, fileSignCss: question.cssClasses.fileSign} } --\x3e\x3c!-- /ko --\x3e\n              <div data-bind="css: question.cssClasses.imageWrapper">\n                \x3c!-- ko if: question.canPreviewImage($data) --\x3e\n                <img data-bind="attr: { src: $data.content }, style : { height: question.imageHeight, width: question.imageWidth }" alt="File preview">\n                \x3c!-- /ko --\x3e\n                \x3c!-- ko if: question.defaultImage($data) --\x3e\n                \x3c!-- ko component: { name: \'sv-svg-icon\', params: { css: question.cssClasses.defaultImage, iconName: question.cssClasses.defaultImageIconId, size: \'auto\' } } --\x3e\x3c!-- /ko --\x3e\n                \x3c!-- /ko --\x3e\n                \x3c!-- ko if: $data.name --\x3e\n                \x3c!-- ko ifnot: question.isReadOnly --\x3e\n                <div data-bind="click: question.doremovefile, css: question.cssClasses.removeFileButton">\n                    <span data-bind="css: question.cssClasses.removeFile, text: question.removeFileCaption"></span>\n                    \x3c!-- ko if: question.cssClasses.removeFileSvgIconId --\x3e\n                      \x3c!-- ko component: { name: \'sv-svg-icon\', params: { css: question.cssClasses.removeFileSvg, title: question.removeFileCaption, iconName: question.cssClasses.removeFileSvgIconId, size: \'auto\' } } --\x3e\x3c!-- /ko --\x3e\n                    \x3c!-- /ko --\x3e\n                </div>\n                \x3c!-- /ko --\x3e\n                \x3c!-- /ko --\x3e\n              </div>\n              \x3c!-- ko template: { name: \'survey-question-file-sign\', data: {question: question, item: $data, fileSignCss: question.cssClasses.fileSignBottom} } --\x3e\x3c!-- /ko --\x3e\n            </span>\n        </div>\n        \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- ko template: { name: \'survey-question-file-clean-button\', data: {question: question, showRemoveButton: question.showRemoveButtonBottom} } --\x3e\x3c!-- /ko --\x3e\n        \x3c!-- ko if: question.mobileFileNavigatorVisible --\x3e\n        \x3c!-- ko component: { name: \'sv-action-bar\', params: { model: question.mobileFileNavigator } } --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n      </div>\n  </div>\n<\/script>\n<script type="text/html" id="survey-question-file-clean-button">\n  \x3c!-- ko if: question.koHasValue() && !question.isReadOnly && $data.showRemoveButton--\x3e\n  <button type="button" data-bind="css: showRemoveButton, enabled: !question.isInputReadOnly, click: question.doclean">\n      <span data-bind="text: question.clearButtonCaption"></span>\n      \x3c!-- ko if: question.cssClasses.removeButtonIconId --\x3e\n        \x3c!-- ko component: { name: \'sv-svg-icon\', params: { iconName: question.cssClasses.removeButtonIconId, size: \'auto\', title: question.clearButtonCaption } } --\x3e\x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n  </button>\n  \x3c!-- /ko --\x3e\n<\/script>\n<script type="text/html" id="survey-question-file-sign">\n  \x3c!-- ko if: item.name && fileSignCss --\x3e\n  <div data-bind="css: fileSignCss">\n    <a data-bind="style: { width: question.imageWidth }, click: question.dodownload, text: item.name, attr: { href: item.content, title: item.name, download: item.name }"></a>\n  </div>\n  \x3c!-- /ko --\x3e\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-html">\n  <div data-bind="html: question.locHtml.koRenderedHtml, css: question.koCss().root"></div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-image">\n  <div data-bind="css: question.koCss().root">\n    \x3c!-- ko if: question.renderedMode === "image" --\x3e\n    <img data-bind="css: question.getImageCss(), attr: { src: $data.locImageLink.koRenderedHtml(), width: question.renderedWidth, height: question.renderedHeight, alt: question.altText || question.title }, style: { objectFit: question.imageFit }"/>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.renderedMode === "video" --\x3e\n    <video controls data-bind="css: question.getImageCss(), attr: { src: $data.locImageLink.koRenderedHtml(), width: question.renderedWidth, height: question.renderedHeight }, style: { objectFit: question.imageFit }"></video>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.renderedMode === "youtube" --\x3e\n    <iframe data-bind="css: question.getImageCss(), attr: { src: $data.locImageLink.koRenderedHtml(), width: question.renderedWidth, height: question.renderedHeight }, style: { objectFit: question.imageFit }"></iframe>\n    \x3c!-- /ko --\x3e\n  </div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-imagepicker">\n    <fieldset data-bind="css: question.getSelectBaseRootCss()">\n        <legend data-bind="attr: { \'aria-label\': question.locTitle.renderedHtml }" role="radio"></legend>\n        \x3c!-- ko ifnot: question.hasColumns --\x3e\n        \x3c!-- ko foreach: { data: question.visibleChoices, as: \'item\', afterRender: question.koAfterRender}  --\x3e\n        \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: \'survey-imagepicker-item\', data: item } } } --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- ko if: question.hasColumns --\x3e\n        \x3c!-- ko foreach: question.columns --\x3e\n        <div data-bind="css: question.getColumnClass()" role="presentation">\n            \x3c!-- ko foreach: { data: $data, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n            \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: \'survey-imagepicker-item\', data: item } } } --\x3e\n            \x3c!-- /ko --\x3e\n            \x3c!-- /ko --\x3e\n        </div>\n        \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n    </fieldset>\n<\/script>\n<script type="text/html" id="survey-imagepicker-item">\n    <div data-bind="css: question.getItemClass(item)">\n        <label data-bind="css: question.koCss().label">\n            <input data-bind="attr: {type: question.inputType, name: question.questionName, value: item.value, id: question.getItemId(item), \'aria-required\': question.ariaRequired, \'aria-label\': question.ariaLabel, \'aria-invalid\': question.ariaInvalid, \'aria-describedby\': question.ariaDescribedBy}, checked: question.koValue, enable: question.getItemEnabled(item), css: question.koCss().itemControl"\n            />\n            <div data-bind="css: question.koCss().itemDecorator">\n                <div data-bind="css: question.koCss().imageContainer">\n                  \x3c!-- ko if: question.cssClasses.checkedItemDecorator --\x3e\n                  <span data-bind="css: question.cssClasses.checkedItemDecorator">\n                    \x3c!-- ko if: question.cssClasses.checkedItemSvgIconId --\x3e\n                    \x3c!-- ko component: { name: \'sv-svg-icon\', params: { css: question.cssClasses.checkedItemSvgIcon, iconName: question.cssClasses.checkedItemSvgIconId, size: \'auto\' } } --\x3e\n                    \x3c!-- /ko --\x3e\n                    \x3c!-- /ko --\x3e\n                   </span>\n                  \x3c!-- /ko --\x3e\n                  \x3c!-- ko if: $data.locImageLink.koRenderedHtml() && question.contentMode === "image" --\x3e\n                  <img data-bind="css: question.koCss().image, attr: { src: $data.locImageLink.koRenderedHtml, width: question.renderedImageWidth, height: question.renderedImageHeight, alt: item.locText.koRenderedHtml }, style: { objectFit: question.imageFit }, event: { load: question.onContentLoaded }"/>\n                  \x3c!-- /ko --\x3e\n                  \x3c!-- ko if: $data.locImageLink.koRenderedHtml() && question.contentMode === "video" --\x3e\n                  <video controls data-bind="css: question.koCss().image, attr: { src: $data.locImageLink.koRenderedHtml, width: question.renderedImageWidth, height: question.renderedImageHeight }, style: { objectFit: question.imageFit }, event: { loadedmetadata: question.onContentLoaded }"></video>\n                  \x3c!-- /ko --\x3e\n                  \x3c!-- ko ifnot: $data.locImageLink.koRenderedHtml() --\x3e\n                  <div data-bind="css: question.koCss().itemNoImage, style: { width: question.renderedImageWidth, height: question.renderedImageHeight, objectFit: question.imageFit}">\n                    \x3c!-- ko if: question.koCss().itemNoImageSvgIconId --\x3e\n                    <svg data-bind="css:question.koCss().itemNoImageSvgIcon">\n                      <use data-bind="attr:{\'xlink:href\':question.koCss().itemNoImageSvgIconId}" xlink:href=\'\'></use>\n                    </svg>\n                    \x3c!-- /ko --\x3e\n                  </div>\n                  \x3c!-- /ko --\x3e\n                  \n                </div>\n                \x3c!-- ko if: question.showLabel --\x3e\n                <span data-bind="css: question.koCss().itemText">\n                  \x3c!-- ko template: { name: \'survey-string\', data: item.locText } --\x3e\n                  \x3c!-- /ko --\x3e\n                </span>\n                \x3c!-- /ko --\x3e\n            </div>\n        </label>\n    </div>\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-matrix">\n  <div data-bind="css: question.koCss().tableWrapper">\n    <fieldset>\n      <legend\n        data-bind="attr: { \'aria-label\': question.locTitle.renderedHtml }"\n      ></legend>\n      <table data-bind="css: question.getTableCss()">\n        \x3c!-- ko if: question.showHeader --\x3e\n        <thead>\n          <tr>\n            <td data-bind="visible: question.hasRows"></td>\n            \x3c!-- ko foreach: question.koVisibleColumns --\x3e\n            <th data-bind="css: question.koCss().headerCell, style: { minWidth: question.columnMinWidth, width: question.columnMinWidth }">\n              \x3c!-- ko component: { name: question.getColumnHeaderWrapperComponentName($data), params: { componentData:  question.getColumnHeaderWrapperComponentData($data), templateData: { data: $data } } } --\x3e\n                \x3c!-- ko template: { name: \'survey-string\', data: $data.locText } --\x3e\x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n            </th>\n            \x3c!-- /ko --\x3e\n          </tr>\n        </thead>\n        \x3c!-- /ko --\x3e\n        <tbody>\n          \x3c!-- ko foreach: { data: question.koVisibleRows, as: \'row\' } --\x3e\n          <tr data-bind="css: row.rowClasses">\n            <td\n              data-bind="visible: question.hasRows, css: question.koCss().rowTextCell, style: {  minWidth: question.rowTitleWidth, width: question.rowTitleWidth }"\n            >\n              \x3c!-- ko component: { name: question.getRowHeaderWrapperComponentName($data), params: { componentData:  question.getRowHeaderWrapperComponentData($data), templateData: { data: $data } } } --\x3e\n                \x3c!-- ko template: { name: \'survey-string\', data: row.locText } --\x3e\n                \x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n            </td>\n            \x3c!-- ko foreach: question.koVisibleColumns --\x3e\n            \x3c!-- ko if: question.hasCellText --\x3e\n            <td\n              data-bind="css: question.getItemClass(row, $data), click: function() { if (!question.isInputReadOnly) { row.cellClick($data); } }"\n            >\n              \x3c!-- ko template: { name: \'survey-string\', data: question.getCellDisplayLocText(row.name, $data) } --\x3e\n              \x3c!-- /ko --\x3e\n            </td>\n            \x3c!-- /ko --\x3e\n            \x3c!-- ko if: !question.hasCellText --\x3e\n            <td\n              data-bind="attr: { \'data-responsive-title\': $data.locText.renderedHtml }, css: question.koCss().cell"\n            >\n              <label data-bind="css: question.getItemClass(row, $data)">\n                <input\n                  type="radio"\n                  data-bind="css: question.koCss().itemValue, attr: { name: row.fullName, \'aria-required\': question.ariaRequired, \'aria-label\': $data.locText.renderedHtml, \'aria-invalid\': question.ariaInvalid, \'aria-describedby\': question.ariaDescribedBy, id: question.inputId + \'_\' + row.name + \'_\' + $index() }, checkedValue: $data.value, checked: row.value, enable: !question.isInputReadOnly"\n                />\n                <span data-bind="css: question.koCss().materialDecorator">\n                    \x3c!-- ko if: question.itemSvgIcon --\x3e\n                      <svg data-bind="css:question.koCss().itemDecorator">\n                        <use data-bind="attr:{\'xlink:href\':question.itemSvgIcon}" xlink:href=\'\'></use>\n                      </svg>  \n                    \x3c!-- /ko --\x3e\n                </span>\n                <span data-bind="visible: question.isMobile, css: question.koCss().cellResponsiveTitle">\n                  \x3c!-- ko template: { name: \'survey-string\', data: $data.locText } --\x3e\x3c!-- /ko --\x3e\n                </span>\n              </label>\n            </td>\n            \x3c!-- /ko --\x3e\n            \x3c!-- /ko --\x3e\n          </tr>\n          \x3c!-- /ko --\x3e\n        </tbody>\n      </table>\n    </fieldset>\n  </div>\n<\/script>\n<script type="text/html" id="survey-text">\n  <span data-bind="text:$data.renderedHtml"></span>\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-matrixdynamic">\n    <div>\n    \x3c!-- ko if: question.koTable().showAddRowOnTop --\x3e\n    <div\n      data-bind="css: question.koCss().footer"\n    >\n      <button\n        type="button"\n        data-bind="click: question.isDesignMode ? undefined : question.koAddRowClick, css: question.getAddRowButtonCss(), disable: question.isInputReadOnly"\n      >\n        \x3c!-- ko template: { name: \'survey-string\', data: question.locAddRowText } --\x3e\x3c!-- /ko --\x3e\n        <span data-bind="css: question.koCss().iconAdd"></span>\n      </button>\n    </div>\n    \x3c!-- /ko --\x3e\n    <div\n      data-bind="visible: question.koTable().showTable, css: question.koCss().tableWrapper, style: { overflowX: question.showHorizontalScroll ? \'scroll\': \'\' }"\n    >\n      <table data-bind="css: question.getTableCss()">\n        \x3c!-- ko if: question.koTable().showHeader --\x3e\n        <thead>\n          <tr>\n            \x3c!-- ko foreach: question.koTable().headerRow.cells --\x3e\n              \x3c!-- ko if: $data.hasTitle --\x3e\n                <th\n                  data-bind="style: { minWidth: $data.minWidth, width: $data.width }, css: $data.className"\n                >\n                  \x3c!-- ko component: { name: question.getColumnHeaderWrapperComponentName($data), params: { componentData:  question.getColumnHeaderWrapperComponentData($data), templateData: { data: $data } } } --\x3e\n                    \x3c!-- ko template: { name: \'survey-string\', data: $data.locTitle } --\x3e\x3c!-- /ko --\x3e\n                    \x3c!-- ko if: $data.column && $data.column.isRenderedRequired --\x3e\n                    <span data-bind="css: question.koCss().cellRequiredText, text: $data.column.requiredText"></span>\n                    \x3c!-- /ko --\x3e\n                  \x3c!-- /ko --\x3e\n                </th>\n              \x3c!-- /ko --\x3e\n              \x3c!-- ko ifnot: $data.hasTitle --\x3e\n                <td data-bind="style: { minWidth: $data.minWidth, width: $data.width }, css: $data.className"></td>\n              \x3c!-- /ko --\x3e\n            \x3c!-- /ko --\x3e\n          </tr>\n        </thead>\n        \x3c!-- /ko --\x3e\n        <tbody>\n          \x3c!-- ko foreach: question.koTable().rows --\x3e\n          \x3c!-- ko ifnot: $parent.detailPanelMode === "popup" && $data.isDetailRow --\x3e\n          <tr data-bind="css: $data.className, attr: attributes, event: { pointerdown: function (model, event) { question.onPointerDown(event, row); return true;} }">\n            \x3c!-- ko foreach: $data.cells --\x3e\n            \x3c!-- ko if: $data.isDragHandlerCell --\x3e\n            <td data-bind="css:$data.className, attr: {colspan: $data.colSpans}">\n              \x3c!-- ko component: { name: \'sv-matrix-drag-drop-icon\', params: { item: { data: { row: row, question: question } } }} --\x3e\n              \x3c!-- /ko --\x3e\n            </td>\n            \x3c!-- /ko --\x3e\n            \x3c!-- ko if: $data.isActionsCell --\x3e\n            <td data-bind="css: $data.className, attr: { colspan: $data.colSpans, \'data-responsive-title\': headers, title: $data.getTitle() }">\n              \x3c!-- ko component: { name: \'sv-action-bar\', params: { model: $data.item.getData(), handleClick: false } } --\x3e\n              \x3c!-- /ko --\x3e\n            </td>\n            \x3c!-- /ko --\x3e\n            \x3c!-- ko if: $data.isEmpty --\x3e\n            <td data-bind="attr: { colspan: $data.colSpans }"></td>\n            \x3c!-- /ko --\x3e\n            \x3c!-- ko if: $data.hasPanel --\x3e\n            <td data-bind="css: $data.className, attr: { colspan: $data.colSpans }">\n              \x3c!-- ko component: { name: $data.panel.survey.getElementWrapperComponentName($data.panel), \n                params: { componentData:  $data.panel.survey.getElementWrapperComponentData($data.panel), \n                templateData: { name: $data.panel.koElementType, data: $data.panel, afterRender: question.koElementAfterRender } } } \n              --\x3e\n              \x3c!-- /ko --\x3e\n            </td>\n            \x3c!-- /ko --\x3e\n            \x3c!-- ko if: $data.hasQuestion --\x3e\n            \x3c!-- ko template: { name: \'survey-matrixcell\', afterRender: function(els) { $data.matrix.koCellAfterRender(els, $data); } } --\x3e\x3c!-- /ko --\x3e\n            \x3c!-- /ko --\x3e\n            \x3c!-- ko if: $data.hasTitle --\x3e\n            <td\n              data-bind="css: $data.className, style: { minWidth: $data.minWidth, width: $data.width }"\n            >\n              \x3c!-- ko component: { name: question.getRowHeaderWrapperComponentName($data), params: { componentData:  question.getRowHeaderWrapperComponentData($data), templateData: { data: $data } } } --\x3e\n              \x3c!-- ko template: { name: \'survey-string\', data: $data.locTitle } --\x3e\x3c!-- /ko --\x3e\n              \x3c!-- ko if: $data.requiredText --\x3e\n              <span data-bind="css: question.koCss().cellRequiredText, text: $data.requiredText"></span>\n              \x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n            </td>\n            \x3c!-- /ko --\x3e\n            \x3c!-- /ko --\x3e\n          </tr>\n\n          \x3c!-- /ko --\x3e\n          \x3c!-- /ko --\x3e\n        </tbody>\n        \x3c!-- ko if:question.koTable().hasFooter --\x3e\n        <tfoot>\n          <tr>\n            \x3c!-- ko foreach: question.koTable().footerRow.cells --\x3e\n              \x3c!-- ko if: $data.hasQuestion --\x3e\n                \x3c!-- ko template: { name: \'survey-matrixcell\', afterRender: function(els) { $data.matrix.koCellAfterRender(els, $data); } } --\x3e\x3c!-- /ko --\x3e\n              \x3c!-- /ko --\x3e\n              \x3c!-- ko if: $data.hasTitle --\x3e\n              <td>\n                \x3c!-- ko template: { name: \'survey-string\', data: $data.locTitle } --\x3e\x3c!-- /ko --\x3e\n              </td>\n              \x3c!-- /ko --\x3e\n            \x3c!-- /ko --\x3e\n          </tr>\n        </tfoot>\n        \x3c!-- /ko --\x3e\n      </table>\n    </div>\n    \x3c!-- ko ifnot: question.koTable().showTable --\x3e\n    <div data-bind="css: question.koCss().emptyRowsSection">\n      <div data-bind="css: question.koCss().emptyRowsText">\n        \x3c!-- ko template: { name: \'survey-string\', data: question.locEmptyRowsText } --\x3e\x3c!-- /ko --\x3e\n      </div>\n      <button\n        type="button"\n        data-bind="click:question.koAddRowClick, css: question.getAddRowButtonCss(true), disable: question.isInputReadOnly"\n      >\n        \x3c!-- ko template: { name: \'survey-string\', data: question.locAddRowText } --\x3e\x3c!-- /ko --\x3e\n        <span data-bind="css: question.koCss().iconAdd"></span>\n      </button>\n    </div>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.koTable().showAddRowOnBottom --\x3e\n    <div\n      data-bind="css: question.koCss().footer"\n    >\n      <button\n        type="button"\n        data-bind="click: question.koAddRowClick, css: question.getAddRowButtonCss(), disable: question.isInputReadOnly"\n      >\n        \x3c!-- ko template: { name: \'survey-string\', data: question.locAddRowText } --\x3e\x3c!-- /ko --\x3e\n        <span data-bind="css: question.koCss().iconAdd"></span>\n      </button>\n    </div>\n    \x3c!-- /ko --\x3e\n  </div>\n<\/script>\n<script type="text/html" id="survey-matrixcell">\n  <td\n    data-bind="css: $data.className, style: { minWidth: $data.minWidth, width: $data.width }, attr: { \'data-responsive-title\': headers, title: $data.getTitle(), colspan: $data.colSpans }"\n  >\n    <div data-bind="visible: question.isVisible, css: $parentContext.question.cssClasses.cellQuestionWrapper">\n      \x3c!-- ko if: $data.showErrorOnTop--\x3e\n      \x3c!-- ko template: { name: \'survey-question-errors\', data: question, as: \'question\' } --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: $data.isOtherChoice --\x3e\n        <div class="form-group" data-bind="template: { name: \'survey-other\', data: {\'question\': question, \'visible\': true } }"></div>\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: $data.isCheckbox --\x3e\n        \x3c!-- ko template: {name: \'survey-checkbox-item\', templateOptions: {hideCaption: true} }  --\x3e\x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: $data.isRadio --\x3e\n        \x3c!-- ko template: {name: \'survey-radiogroup-item\', templateOptions: {hideCaption: true} }  --\x3e\x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko ifnot: $data.isChoice --\x3e\n      \x3c!-- ko if: question.isDefaultRendering() --\x3e\n        \x3c!-- ko let: { question: $data.matrix.getCellTemplateData($data) } --\x3e\n        \x3c!-- ko component: { name: $data.matrix.getCellWrapperComponentName($data), params: { componentData:  $data.matrix.getCellWrapperComponentData($data), templateData: { name: question.koTemplateName(), data: question, afterRender: function(el) { $data.matrix.koCellQuestionAfterRender(el, $data); } } } } --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko ifnot: question.isDefaultRendering() --\x3e\n        \x3c!-- ko component: { name: question.getComponentName(), params: { question: question } } --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: $data.showErrorOnBottom--\x3e\n      \x3c!-- ko template: { name: \'survey-question-errors\', data: question, as: \'question\' } --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: $data.hasQuestion && $data.question.isErrorsModeTooltip--\x3e\n        \x3c!-- ko component: { name: \'sv-tooltip-error\', params: { question: question } } --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n    </div>\n  </td>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-multipletext">\n  <table data-bind="css: question.koCss().root">\n    <tbody data-bind="foreach: { data:  question.koRows, as: \'row\' }">\n      <tr data-bind="foreach: { data: row, as: \'item\' }, css: question.koCss().row">\n        <td data-bind="css: question.cssClasses.cell">  \n          <label data-bind="css: question.getItemLabelCss(item)">\n              <span data-bind="css: question.koItemTitleCss">\n                \x3c!-- ko component: { name: \'survey-element-title-content\', params: {element: item.editor} } --\x3e\x3c!-- /ko --\x3e\n              </span>\n              <div data-bind="css: question.koItemCss">\n                \x3c!-- ko if: item.editor.showErrorOnTop --\x3e\n                  \x3c!-- ko template: { name: \'survey-question-errors\', data: item.editor } --\x3e\n                  \x3c!-- /ko --\x3e\n                \x3c!-- /ko --\x3e\n                \x3c!-- ko template: { name: item.editor.koTemplateName(), data: item.editor, as: \'question\', afterRender: item.editor.koQuestionAfterRender } --\x3e\n                \x3c!-- /ko --\x3e\n                \x3c!-- ko if: item.editor.showErrorOnBottom --\x3e\n                  \x3c!-- ko template: { name: \'survey-question-errors\', data: item.editor } --\x3e\n                  \x3c!-- /ko --\x3e\n                \x3c!-- /ko --\x3e\n              </div>\n                \x3c!-- ko if: item.editor.isErrorsModeTooltip --\x3e\n                  \x3c!-- ko component: { name: "sv-tooltip-error", params: { question: item.editor } } --\x3e\n                  \x3c!-- /ko --\x3e\n                \x3c!-- /ko --\x3e\n            </label>\n          </td>\n        </tr>\n    </tbody>\n  </table>\n<\/script>\n'
    }, function(e, t) {
        e.exports = "<script type=\"text/html\" id=\"survey-question-paneldynamic\">\n  <div data-bind=\"css: question.koCss().root\">\n    \x3c!-- ko if: question.getShowNoEntriesPlaceholder() --\x3e\n      <div data-bind=\"css: question.koCss().noEntriesPlaceholder\">\n        <span>\n          \x3c!-- ko template: { name: 'survey-string', data: locNoEntriesText } --\x3e\x3c!-- /ko --\x3e\n        </span>\n          \x3c!-- ko component: { name: 'sv-paneldynamic-add-btn', params: { question: question }} --\x3e\n          \x3c!-- /ko --\x3e\n        </div>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.koIsList() --\x3e\n      \x3c!-- ko foreach: { data: question.panels } --\x3e\n        <div data-bind=\"css: question.getPanelWrapperCss()\">\n          \x3c!-- ko let: { question: $data } --\x3e\n            \x3c!-- ko component: { name: survey.getElementWrapperComponentName(question), params: { componentData:  survey.getElementWrapperComponentData(question), templateData: { name: question.koElementType, data: question, afterRender: $parent.koPanelAfterRender } } } --\x3e\n            \x3c!-- /ko --\x3e\n          \x3c!-- /ko --\x3e\n          \x3c!-- ko if: question.panelRemoveButtonLocation === 'right' && question.koCanRemovePanel() && $data.state != 'collapsed'--\x3e\n            \x3c!-- ko component: { name: 'sv-paneldynamic-remove-btn', params: { question: question, panel: $data } } --\x3e\n            \x3c!-- /ko --\x3e\n          \x3c!-- /ko --\x3e\n          \n        </div>\n        \x3c!-- ko if: $index() < question.panelCount - 1 --\x3e\n        <hr data-bind=\"css: question.koCss().separator\"/>\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: question.showLegacyNavigation --\x3e\n        \x3c!-- ko component: { name: 'sv-paneldynamic-add-btn', params: { question: question }} --\x3e\x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko ifnot: question.koIsList()  --\x3e\n      \x3c!-- ko if: question.koIsProgressTop--\x3e\n        \x3c!-- ko if: !question.showLegacyNavigation && question.koIsRange --\x3e\n          \x3c!-- ko template: { name: 'survey-question-paneldynamic-progress', data: question, as: 'question'} --\x3e\n          \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- ko if: question.showLegacyNavigation --\x3e\n        <div data-bind=\"css: question.koCss().progressTop\">\n          \x3c!-- ko template: { name: 'survey-question-paneldynamic-navigator', data: question, as: 'question'} --\x3e\n          \x3c!-- /ko --\x3e\n        </div>\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: question.koPanel() --\x3e\n      <div data-bind=\"css: question.getPanelWrapperCss()\">\n        \x3c!-- ko let: { question: question.koPanel() } --\x3e\n          \x3c!-- ko component: { name: question.survey.getElementWrapperComponentName(question), params: { componentData:  question.survey.getElementWrapperComponentData(question), templateData: { name: question.koElementType, data: question, afterRender: $parent.koPanelAfterRender } } } --\x3e\n          \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- ko if: question.panelRemoveButtonLocation === 'right'--\x3e\n          \x3c!-- ko template: { name: 'survey-question-paneldynamic-remove-btn', data: { question: question, panel: question.koPanel() }, as: 'question'} --\x3e\n          \x3c!-- /ko --\x3e\n        \x3c!-- /ko--\x3e\n      </div>\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: question.showLegacyNavigation && question.koIsProgressBottom--\x3e \n      <div data-bind=\"css: question.koCss().progressBottom\">\n        \x3c!-- ko template: { name: 'survey-question-paneldynamic-navigator', data: question, as: 'question'} --\x3e\n        \x3c!-- /ko --\x3e\n      </div>\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: !question.showLegacyNavigation && !!question.panelCount != 0 --\x3e\n    <div data-bind=\"css: question.koCss().footer\">\n      <hr data-bind=\"css: question.koCss().separator\"/>\n      \x3c!-- ko if: question.koIsRange() && question.koIsProgressBottom --\x3e\n         \x3c!-- ko template: { name: 'survey-question-paneldynamic-progress', data: question, as: 'question'} --\x3e\n         \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      <div data-bind=\"css: question.koCss().footerButtonsContainer\">\n        \x3c!-- ko component: { name: \"sv-action-bar\", params: { model: question.footerToolbar } } --\x3e\n        \x3c!-- /ko --\x3e\n      </div>\n    </div>\n    \x3c!-- /ko --\x3e\n  </div>\n<\/script>"
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-paneldynamic-navigator">\n  <div style="clear: both;">\n        <div data-bind="css: question.koCss().progressContainer">\n          \x3c!-- ko component: { name: \'sv-paneldynamic-prev-btn\', params: { question: question }} --\x3e\x3c!-- /ko --\x3e\n          \x3c!-- ko if: question.koIsRange --\x3e\n            \x3c!-- ko template: { name: \'survey-question-paneldynamic-progress\', data: question, as: \'question\'} --\x3e\x3c!-- /ko --\x3e\n          \x3c!-- /ko --\x3e\n          \x3c!-- ko component: { name: \'sv-paneldynamic-next-btn\', params: { question: question }} --\x3e\x3c!-- /ko --\x3e\n        </div>\n          \x3c!-- ko component: { name: \'sv-paneldynamic-add-btn\', params: { question: question }} --\x3e\x3c!-- /ko --\x3e\n        <div data-bind="text: question.koProgressText, css: question.koCss().progressText"></div>\n      </div>\n<\/script>\n<script type="text/html" id="survey-question-paneldynamic-progress">\n  <div data-bind="css: question.koCss().progress">\n    <div\n      data-bind="css: question.koCss().progressBar, style: { width: question.koProgress }"\n      role="progressbar"\n    ></div>\n  </div>\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-radiogroup">\n\n  <fieldset data-bind="css: question.getSelectBaseRootCss()" role="presentation">\n    \x3c!-- ko ifnot: question.hasColumns --\x3e\n      \x3c!-- ko if: question.blockedRow --\x3e\n      <div data-bind="css: question.koCss().rootRow">\n        \x3c!-- ko foreach: { data: question.dataChoices, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n        \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n        \x3c!-- /ko --\x3e\n        \x3c!-- /ko --\x3e\n      </div>\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko ifnot: question.blockedRow --\x3e\n      \x3c!-- ko foreach: { data: question.bodyItems, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n        \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.hasColumns --\x3e\n      <div data-bind="css: question.koCss().rootMultiColumn">\n\n        \x3c!-- ko foreach: question.columns --\x3e\n        <div data-bind="css: question.getColumnClass()" role="presentation">\n          \x3c!-- ko foreach: { data: $data, as: \'item\', afterRender: question.koAfterRender } --\x3e\n            \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n            \x3c!-- /ko --\x3e\n          \x3c!-- /ko --\x3e\n        </div>\n        \x3c!-- /ko --\x3e\n      </div>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.hasFootItems  --\x3e\n      \x3c!-- ko foreach: { data: question.footItems, as: \'item\', afterRender: question.koAfterRender }  --\x3e\n        \x3c!-- ko component: { name: question.getItemValueWrapperComponentName(item), params: { componentData:  question.getItemValueWrapperComponentData(item), templateData: { name: question.itemComponent, data: item } } } --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n\n    \x3c!-- ko if: question.hasOther && question.isOtherSelected --\x3e\n      <div class="form-group" data-bind="template: { name: \'survey-other\', data: {\'question\': question, \'visible\': question.isOtherSelected } }"></div>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.showClearButtonInContent --\x3e\n    <div>\n      <input\n        type="button"\n        data-bind="click:question.clearValue, css: question.koCss().clearButton, value: question.clearButtonCaption"\n      />\n    </div>\n    \x3c!-- /ko --\x3e\n  </fieldset>\n<\/script>\n<script type="text/html" id="survey-radiogroup-item">\n  <div role="presentation" data-bind="css: question.getItemClass(item)">\n    <label data-bind="css: question.getLabelClass(item), attr: { \'aria-label\': question.getAriaItemLabel(item) }">\n      <input\n        type="radio"\n        data-bind="attr: { name: question.questionName, id: question.getItemId(item), \'aria-describedby\': question.ariaDescribedBy }, checkedValue: item.value, checked: question.renderedValue, enable: question.getItemEnabled(item), css: question.koCss().itemControl"\n      />\n      \x3c!-- ko if: question.koCss().materialDecorator --\x3e\n      <span data-bind="css: question.koCss().materialDecorator">\n        \x3c!-- ko if: question.itemSvgIcon --\x3e\n        <svg data-bind="css:question.koCss().itemDecorator">\n          <use data-bind="attr:{\'xlink:href\':question.itemSvgIcon}" xlink:href=\'\'></use>\n        </svg>\n        \x3c!-- /ko --\x3e\n      </span>\n      \x3c!-- /ko --\x3e\n      <span\n        data-bind="visible: !item.hideCaption, css: question.getControlLabelClass(item)"\n      >\n        \x3c!-- ko template: { name: \'survey-string\', data: item.locText } --\x3e\n        \x3c!-- /ko --\x3e\n      </span>\n    </label>\n  </div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-rating">\n    <div data-bind="css: question.ratingRootCss">\n        <fieldset role="radiogroup">\n            <legend role="presentation" class="sv-hidden"></legend>\n            \x3c!-- ko if: question.hasMinLabel--\x3e\n            <span data-bind="css: question.koCss().minText">\n              \x3c!-- ko template: { name: \'survey-string\', data: question.locMinRateDescription } --\x3e\n              \x3c!-- /ko --\x3e\n              </span>\n            \x3c!-- /ko --\x3e\n            \x3c!-- ko foreach: question.renderedRateItems --\x3e\n            <label data-bind="css: question.getItemClass($data.itemValue)">\n                <input\n                type="radio"\n                class="sv-visuallyhidden"\n                data-bind="attr: { name: question.name, id: question.getInputId($index()), value: $data.value, \'aria-required\': question.ariaRequired, \'aria-label\': question.ariaLabel, \'aria-invalid\': question.ariaInvalid, \'aria-describedby\': question.ariaDescribedBy }, checkedValue: $data.value, enable: !question.isInputReadOnly, event: { click: function(data, event) { question.setValueFromClick(event.target.value); return true; } }"\n                />\n                <span data-bind="css: question.koCss().itemText">\n                \x3c!-- ko template: { name: \'survey-string\', data: $data.locText } --\x3e\n                \x3c!-- /ko --\x3e\n                </span>\n            </label>\n            \x3c!-- /ko --\x3e\n            \x3c!-- ko if: question.hasMaxLabel--\x3e\n            <span data-bind="css: question.koCss().maxText">\n              \x3c!-- ko template: { name: \'survey-string\', data: question.locMaxRateDescription } --\x3e\n              \x3c!-- /ko --\x3e\n              </span>\n            \x3c!-- /ko --\x3e\n\n        </fieldset>\n    </div>\n  </fieldset>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-signaturepad">\n    <div data-bind="css: question.koCss().root, style: { height: signatureHeight, width: signatureWidth }">\n        <div \n            data-bind="text: placeHolderText, css: question.koCss().placeholder, visible: $data.needShowPlaceholder()">\n        </div>\n        <div>\n            <canvas tabindex=\'0\'></canvas>\n        </div>\n        \x3c!-- ko if: question.canShowClearButton --\x3e\n        <div data-bind="css: question.koCss().controls">\n            <button type=\'button\'\n                data-bind="click: question.clearValue, css: question.koCss().clearButton, attr: { title: question.clearButtonCaption }">\n                    \x3c!-- ko ifnot: question.koCss().clearButtonIconId --\x3e\n                        <span>✖</span>\n                    \x3c!-- /ko --\x3e\n                    \x3c!-- ko if: question.koCss().clearButtonIconId --\x3e\n                        <sv-svg-icon params="iconName: question.koCss().clearButtonIconId, size: \'auto\'"></sv-svg-icon>\n                    \x3c!-- /ko --\x3e\n            </button>\n        </div>\n        \x3c!-- /ko --\x3e\n    </div>\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-text">\n  \x3c!--ko if: !question.dataListId && !question.isReadOnlyRenderDiv()--\x3e\n    \x3c!-- ko template: { name: \'survey-question-text-input\' } --\x3e\x3c!-- /ko --\x3e\n  \x3c!--/ko--\x3e\n  \x3c!--ko if: question.dataListId && !question.isReadOnlyRenderDiv()--\x3e\n  <div>\n    \x3c!-- ko template: { name: \'survey-question-text-input\' } --\x3e\x3c!-- /ko --\x3e\n    <datalist data-bind="attr: {id: question.dataListId}">\n    \x3c!-- ko foreach: question.dataList --\x3e\n      <option data-bind="value:$data"></option>\n    \x3c!--/ko--\x3e\n    </datalist>\n  </div>\n  \x3c!--/ko--\x3e\n  \x3c!--ko if: question.isReadOnlyRenderDiv() --\x3e\n  <div data-bind="text: question.value"></div>\n  \x3c!--/ko--\x3e\n<\/script>\n<script type="text/html" id="survey-question-text-input">\n  <input\n  data-bind="disable: question.isInputReadOnly, \n    style: question.inputStyle, \n    attr: { type: question.inputType, size: question.renderedInputSize, id: question.inputId, placeholder: question.renderedPlaceholder, maxLength: question.getMaxLength(), min: question.renderedMin, max: question.renderedMax, step: question.renderedStep, \'aria-required\': question.ariaRequired, \'aria-label\': question.ariaLabel, \'aria-invalid\': question.ariaInvalid, \'aria-describedby\': question.ariaDescribedBy, autocomplete: question.autocomplete, list:question.dataListId }, \n    event: { keydown: koOnKeyDown, keyup: koOnKeyUp, change: koOnChange, compositionupdate: koOnCompositeUpdate, blur: koOnBlur },\n    value: question.koReadOnlyValue,\n    css: question.getControlClass()"/>\n<\/script>'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="survey-question-buttongroup">\n  <div role="group" data-bind="css: question.koCss().root">\n      \x3c!-- ko foreach: question.visibleChoices --\x3e\n        \x3c!-- ko component: { name: \'sv-button-group-item\', params: { question: question, item: $data, index: $index } } --\x3e\n        \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n    </div>\n<\/script>\n'
    }, function(e, t) {
        e.exports = '<script type="text/html" id="popup-pointer">\n  <span class="sv-popup__pointer" data-bind="style: { left: pointerTarget.left, top: pointerTarget.top }"></span>\n<\/script>'
    }, function(e, t) {
        e.exports = '<div style="position: fixed; bottom: 3px; right: 10px;" data-bind="css: cssRoot, style:{width: renderedWidth, maxWidth: renderedWidth}">\n    <div data-bind="css: cssHeaderRoot">\n        <span data-bind="click:doExpand" style="width: 100%; cursor: pointer;">\n            <span style="padding-right:10px" data-bind="css: cssHeaderTitle, text: locTitle.koRenderedHtml"></span>\n            <span aria-hidden="true" data-bind="css: cssButton"></span>\n        </span>\n        <span data-bind="visible:isExpanded, click:doExpand" style="float: right; cursor: pointer;">\n            <span style="padding-right:10px" data-bind="css: cssHeaderTitle">X</span>\n        </span>\n    </div>\n    <div data-bind="visible:isExpanded, css: cssBody">\n        <survey params="survey: survey"></survey>\n    </div>\n</div>'
    }, function(e, t) {
        e.exports = "\x3c!-- ko if: model.hasActions --\x3e\n<div\n  data-bind=\"css: model.getRootCss(), click: handleClick ? function() { return true; } : undefined, clickBubble: handleClick ? false : undefined\"\n>\n  \x3c!-- ko foreach: model.renderedActions --\x3e\n  \x3c!-- ko component: { name: 'sv-action', params: { item: $data } } --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!--/ko--\x3e\n</div>\n\x3c!--/ko--\x3e\n"
    }, function(e, t) {
        e.exports = '\x3c!-- ko with: $data.item --\x3e\r\n<div data-bind="class: $data.getActionRootCss(), attr: { id: $data.id }">\r\n    \x3c!-- ko ifnot: $data.isEmpty --\x3e\r\n    <div class="sv-action__content">\r\n        \x3c!-- ko if: $data.needSeparator --\x3e\r\n        <sv-action-bar-separator></sv-action-bar-separator>\r\n        \x3c!-- /ko --\x3e\r\n        \x3c!-- ko ifnot: $data.template--\x3e\r\n        \x3c!-- ko component: { name: $data.component || \'sv-action-bar-item\', params: { item: $data } } --\x3e\r\n        \x3c!-- /ko --\x3e\r\n        \x3c!-- /ko --\x3e\r\n        \x3c!-- ko if: $data.template  --\x3e\r\n        \x3c!-- ko template: { name: $data.template, data: $data.data || $data } --\x3e\r\n        \x3c!-- /ko --\x3e\r\n        \x3c!-- /ko --\x3e\r\n    </div>\r\n    \x3c!-- /ko --\x3e\r\n</div>\r\n\x3c!-- /ko --\x3e'
    }, function(e, t) {
        e.exports = "\x3c!-- ko with: $data.item --\x3e\n<button\n  type=\"button\"\n  data-bind=\"click: action, key2click: { processEsc: false }, disable: $data.disabled, css: getActionBarItemCss(), attr: { title: $data.tooltip || $data.title, 'aria-checked': $data.ariaChecked, 'role': $data.ariaRole }\"\n>\n  \x3c!-- ko if: $data.iconName --\x3e\n  \x3c!-- ko component: { name: 'sv-svg-icon', params: { css: $data.cssClasses.itemIcon, iconName: iconName, size: iconSize, title: $data.tooltip || $data.title } } --\x3e\x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: $data.hasTitle --\x3e\n  <span\n    data-bind=\"text: title, css: getActionBarItemTitleCss()\"\n  ></span>\n  \x3c!-- /ko --\x3e\n</button>\n\x3c!-- /ko --\x3e"
    }, function(e, t) {
        e.exports = '\x3c!-- ko with: $data.item --\x3e\n<button type="button"\n  data-bind="click: action, key2click: { processEsc: false }, css: getActionBarItemCss(), attr: { disabled: $data.enabled !== undefined && !ko.unwrap($data.enabled), title: $data.tooltip || $data.title }">\n  \x3c!-- ko if: $data.iconName --\x3e\n  <sv-svg-icon data-bind="css: $data.cssClasses.itemIcon" params="iconName: iconName, size: iconSize, title: $data.tooltip || $data.title"></sv-svg-icon>\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: $data.hasTitle --\x3e\n  <span data-bind="text: title, css: getActionBarItemTitleCss()"></span>\n  \x3c!-- /ko --\x3e\n  <sv-popup params="model: popupModel"></sv-popup>\n</button>\n\x3c!-- /ko --\x3e'
    }, function(e, t) {
        e.exports = '<div class="sv-action-bar-separator" data-bind="css: $data.css"></div>'
    }, function(e, t) {
        e.exports = '<div data-bind="css: question.koCss().rootCheckbox">\n  <div data-bind="css: question.getCheckboxItemCss()">\n    <label data-bind="css: question.koCss().checkboxLabel">\n      <input\n        type="checkbox"\n        data-bind="value: question.booleanValue, css: question.koCss().controlCheckbox, attr: {name: question.name, id: question.inputId, \'aria-required\': question.ariaRequired, \'aria-label\': question.ariaLabel, \'aria-invalid\': question.ariaInvalid, \'aria-describedby\': question.ariaDescribedBy}, checked: question.booleanValue, surveyProp: {indeterminate: question.isIndeterminate}, enable: !question.isInputReadOnly"\n      />\n      <span data-bind="css: question.koCss().checkboxMaterialDecorator">\n        \x3c!-- ko if: question.svgIcon --\x3e\n        <svg data-bind="css:question.koCss().checkboxItemDecorator">\n          <use data-bind="attr:{\'xlink:href\':question.svgIcon}" xlink:href=\'\'></use>\n        </svg>\n        \x3c!-- /ko --\x3e\n        <span class="check"></span>\n      </span>\n      <span\n        data-bind="if: question.isLabelRendered, css: question.koCss().checkboxControlLabel, attr: {id: question.labelRenderedAriaID}"\n      >\n        \x3c!-- ko component: { name: \'sv-title-actions\', params: {element: question } } --\x3e\x3c!-- /ko --\x3e\n      </span>\n    </label>\n    \x3c!-- ko if: question.canRenderLabelDescription --\x3e\n    <div data-bind="css: question.cssDescription">\n      \x3c!-- ko template: { name: \'survey-string\', data: question.locDescription } --\x3e\n      \x3c!-- /ko --\x3e\n    </div>\n    \x3c!-- /ko --\x3e\n  </div>\n</div>\n'
    }, function(e, t) {
        e.exports = '  <div role="presentation" data-bind="class: question.getRadioItemClass(question.koCss(), $data.value)">\n    <label data-bind="css: question.koCss().radioLabel">\n      <input\n        type="radio"\n        data-bind="event: { change: handleChange }, attr: { name: question.name, \'aria-describedby\': question.ariaDescribedBy, value: \'\'+$data.value, checked: $data.value === question.value }, enable: !question.isInputReadOnly, css: question.koCss().itemRadioControl"\n      />\n      \x3c!-- ko if: question.koCss().materialRadioDecorator --\x3e\n      <span data-bind="css: question.koCss().materialRadioDecorator">\n        \x3c!-- ko if: question.itemSvgIcon --\x3e\n        <svg data-bind="css:question.koCss().itemRadioDecorator">\n          <use data-bind="attr:{\'xlink:href\':question.itemSvgIcon}" xlink:href=\'\'></use>\n        </svg>\n        \x3c!-- /ko --\x3e\n      </span>\n      \x3c!-- /ko --\x3e\n      <span data-bind="css: question.koCss().radioControlLabel">\n        \x3c!-- ko template: { name: \'survey-string\', data: $data.locText } --\x3e\n        \x3c!-- /ko --\x3e\n      </span>\n    </label>\n  </div>\n\n'
    }, function(e, t) {
        e.exports = '<div data-bind="css: question.koCss().rootRadio">\n  <fieldset role="presentation" data-bind="css: question.koCss().radioFieldset">\n    \x3c!-- ko component: { name: \'sv-boolean-radio-item\', params: { value: question.getValueFalse(), locText: question.locLabelFalse, question: question } } --\x3e\x3c!-- /ko --\x3e\n    \x3c!-- ko component: { name: \'sv-boolean-radio-item\', params: { value: question.getValueTrue(), locText: question.locLabelTrue, question: question } } --\x3e\x3c!-- /ko --\x3e  \n  </fieldset>\n</div>\n'
    }, function(e, t) {
        e.exports = "\x3c!-- ko template: { name: 'survey-panel', data: question, as: 'question', afterRender: question.koPanelAfterRender } --\x3e\x3c!-- /ko --\x3e"
    }, function(e, t) {
        e.exports = '<div class="sv-popup" tabindex="-1"\n  data-bind="visible: isVisible, click: clickOutside, class: styleClass, event: { keydown: function(data, event) { onKeyDown(event); return true; } }">\n  <div class="sv-popup__container"\n    data-bind="style: { left: left, top: top, height: height, minWidth: minWidth, width: width }, click: function() { return true; }, clickBubble: false">\n    <div class="sv-popup__shadow">\n      \x3c!-- ko if: $data.showHeader --\x3e\n      \x3c!-- ko template: { name: $data.popupHeaderTemplate, data: $data } --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      <div class="sv-popup__body-content">\n        \x3c!-- ko if: !!title  --\x3e\n        <div class="sv-popup__body-header" data-bind="text: title"></div>\n        \x3c!-- /ko --\x3e\n        <div class="sv-popup__scrolling-content">\n          <div class="sv-popup__content"\n            data-bind="component: { name: contentComponentName, params: contentComponentData }"></div>\n        </div>\n        \x3c!-- ko if: showFooter  --\x3e\n        <div class="sv-popup__body-footer">\n          \x3c!-- ko component: { name: "sv-action-bar", params: { model: $data.footerToolbar } } --\x3e\n          \x3c!-- /ko --\x3e\n        </div>\n        \x3c!-- /ko --\x3e\n      </div>\n    </div>\n  </div>\n</div>'
    }, function(e, t) {
        e.exports = '<div data-bind="css: survey.css.progressButtonsContainerCenter">\n    <div data-bind="css: survey.css.progressButtonsContainer">\n        <div data-bind="css: getScrollButtonCss(true), click: clickScrollButton.bind($data, $element.nextElementSibling, true)" role="button"></div>\n        <div data-bind="css: survey.css.progressButtonsListContainer">\n            <ul data-bind="foreach: survey.visiblePages, css: survey.css.progressButtonsList">\n                <li data-bind="css: $parent.getListElementCss($index), click: $parent.isListElementClickable($index) ? $parent.clickListElement.bind($parent, $index) : null">\n                    <div data-bind="css: css.progressButtonsPageTitle, text: locNavigationTitle.koRenderedHtml() || name, attr: { title: locNavigationTitle.koRenderedHtml() || name }"></div>\n                    <div data-bind="css: css.progressButtonsPageDescription, text: locNavigationDescription.koRenderedHtml(), attr: { title: locNavigationDescription.koRenderedHtml() }"></div>\n                </li>\n            </ul>\n        </div>\n        <div data-bind="css: getScrollButtonCss(false), click: clickScrollButton.bind($data, $element.previousElementSibling, false)" role="button"></div>\n    </div>\n</div>'
    }, function(e, t) {
        e.exports = '<div data-bind="css: model.getProgressCssClasses()">\n    <div data-bind="css: model.css.progressBar, style: { width: model.progressValue + \'%\' }"\n        role="progressbar" aria-valuemin="0" aria-valuemax="100">\n        <span data-bind="text: model.progressText, css: getProgressTextInBarCss(model.css)"></span>\n    </div>\n    <span data-bind="text: model.progressText, css: getProgressTextUnderBarCss(model.css)"></span>\n</div>'
    }, function(e, t) {
        e.exports = "\x3c!-- ko if: templateData.name --\x3e\n  \x3c!-- ko template: { name: templateData.name, data: templateData.data, afterRender: templateData.afterRender } --\x3e\n  \x3c!-- /ko --\x3e\n\x3c!-- /ko --\x3e\n\x3c!-- ko ifnot: templateData.name --\x3e\n  \x3c!-- ko template: { nodes: templateData.nodes || $componentTemplateNodes, data: templateData.data, afterRender: templateData.afterRender } --\x3e\n  \x3c!-- /ko --\x3e\n\x3c!-- /ko --\x3e\n"
    }, function(e, t) {
        e.exports = "\x3c!-- ko if: element.isTitleRenderedAsString --\x3e\n  \x3c!-- ko template: { name: 'survey-string', data: element.locTitle } --\x3e\x3c!-- /ko --\x3e\n\x3c!-- /ko --\x3e\n\x3c!-- ko ifnot: element.isTitleRenderedAsString --\x3e\n  \x3c!-- ko if: element.isRequireTextOnStart --\x3e\n  <span\n    data-bind=\"css: element.koCss().requiredText || (element.koCss().panel && element.koCss().panel.requiredText), text: element.requiredText, attr: { 'aria-hidden': true }\"\n  ></span>\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: element.no --\x3e\n  <span\n    style=\"position: static;\"\n    data-bind=\"css: element.koCss().number, text: element.no, attr: { 'aria-hidden': true }\"\n  ></span>\n  <span>&nbsp</span>\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: element.isRequireTextBeforeTitle --\x3e\n  <span\n    data-bind=\"css: element.koCss().requiredText || (element.koCss().panel && element.koCss().panel.requiredText), text: element.requiredText, attr: { 'aria-hidden': true }\"\n  ></span>\n  <span>&nbsp</span>\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko template: { name: 'survey-string', data: element.locTitle } --\x3e\x3c!-- /ko --\x3e\n  \x3c!-- ko if: element.isRequireTextAfterTitle --\x3e\n  <span>&nbsp</span>\n  <span\n    data-bind=\"css: element.koCss().requiredText || (element.koCss().panel && element.koCss().panel.requiredText), text: element.requiredText, attr: { 'aria-hidden': true }\"\n  ></span>\n  \x3c!-- /ko --\x3e\n\x3c!-- /ko --\x3e"
    }, function(e, t) {
        e.exports = "\x3c!-- ko ifnot: element.hasTitleActions --\x3e\n  \x3c!-- ko component: { name: 'survey-element-title-content', params: {element: element } } --\x3e\x3c!-- /ko --\x3e\n\x3c!-- /ko --\x3e\n\x3c!-- ko if: element.hasTitleActions --\x3e\n<div class=\"sv-title-actions\">\n  <span class=\"sv-title-actions__title\">\n    \x3c!-- ko component: { name: 'survey-element-title-content', params: {element: element } } --\x3e\x3c!-- /ko --\x3e\n  </span>\n  \x3c!-- ko component: { name: 'sv-action-bar', params: { model: toolbar } } --\x3e\n  \x3c!-- /ko --\x3e\n</div>\n\x3c!-- /ko --\x3e"
    }, function(e, t) {
        e.exports = '\x3c!-- <input class="sv-string-editor" data-bind="value: editValue" /> --\x3e\n\n\x3c!-- ko ifnot: koHasHtml --\x3e\n<span class="sv-string-editor" data-bind="text: editValue, event: { blur: onInput, click: onClick, clickBubble: false }" contenteditable="true"></span>\n\x3c!-- /ko --\x3e\n\x3c!-- ko if: koHasHtml --\x3e\n<span class="sv-string-editor" data-bind="html: editValue, event: { blur: onInput, click: onClick, clickBubble: false }" contenteditable="true"></span>\n\x3c!-- /ko --\x3e'
    }, function(e, t) {
        e.exports = '\x3c!-- ko ifnot: locString.koHasHtml --\x3e\n<span class="sv-string-viewer" data-bind="text: locString.koRenderedHtml"></span>\n\x3c!-- /ko --\x3e\n\x3c!-- ko if: locString.koHasHtml --\x3e\n<span class="sv-string-viewer" data-bind="html: locString.koRenderedHtml"></span>\n\x3c!-- /ko --\x3e'
    }, function(e, t) {
        e.exports = '\x3c!-- ko with: survey --\x3e\n<div data-bind="css: logoClassNames">\n  <img data-bind="css: css.logoImage, attr: { src: locLogo.koRenderedHtml, width: logoWidth ? logoWidth : undefined, height: logoHeight ? logoHeight : undefined, alt: locTitle.renderedHtml }, style: { objectFit: logoFit }">\n</div>\n\x3c!-- /ko --\x3e'
    }, function(e, t) {
        e.exports = '<div class="sv-skeleton-element" data-bind="attr: { id: element.id }">\n</div>'
    }, function(e, t) {
        e.exports = "<div data-bind=\"css: question.cssClasses.rootDropdown\">\n  \x3c!-- ko component: { name: 'sv-dropdown', params: { question: question } } --\x3e\n  \x3c!-- /ko --\x3e\n</div>\n"
    }, function(e, t) {
        e.exports = '<div data-bind="css: question.koCss().selectWrapper">\n  \x3c!-- ko ifnot: question.isReadOnly --\x3e\n  <div data-bind="css: question.getControlClass(),\n    click: click, \n    event: { keydown: keyhandler, blur: blur },\n    attr: { \n      id: question.inputId, \n      required: question.isRequired, \n      tabindex: model.inputReadOnly ? undefined : 0,\n      disabled: question.isInputReadOnly,\n      role: question.ariaRole,\n      \'aria-required\': question.ariaRequired, \n      \'aria-label\': question.ariaLabel, \n      \'aria-invalid\': question.ariaInvalid, \n      \'aria-describedby\': question.ariaDescribedBy \n    },">\n    <div data-bind="css: question.koCss().controlValue">\n      \x3c!-- ko if: question.showInputFieldComponent --\x3e\n      \x3c!-- ko component: { name: question.inputFieldComponentName, params: { item: model.getSelectedAction(), question: question } } --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- ko if: question.showSelectedItemLocText --\x3e\n      \x3c!-- ko template: { name: \'survey-string\', data: question.selectedItemLocText } --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      <input type="text" autocomplete="off" data-bind="\n      textInput: model.filterString, \n      css: question.cssClasses.filterStringInput, \n      attr: { \n        \'aria-label\': question.placeholder, \n        placeholder: question.readOnlyText, \n        readonly: !model.searchEnabled, \n        role: model.filterStringEnabled ? question.ariaRole : undefined,\n        tabindex: model.inputReadOnly ? undefined : -1,\n        disabled: question.isInputReadOnly,\n        id: question.getInputId() \n      },\n      event: { blur: blur }"></input>\n    </div>\n    \x3c!-- ko if: (question.allowClear && question.cssClasses.cleanButtonIconId) --\x3e\n    <div data-bind="css: question.koCss().cleanButton, click: clear, visible: !question.isEmpty() ">\n      \x3c!-- ko component: { name: \'sv-svg-icon\', params: { css: question.cssClasses.cleanButtonSvg, iconName: question.cssClasses.cleanButtonIconId, size: \'auto\', title: question.clearCaption } } --\x3e\n      \x3c!-- /ko --\x3e\n    </div>\n    \x3c!-- /ko --\x3e\n  </div>\n  \x3c!-- ko component: { name: "sv-popup", params: { model: model.popupModel }} --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: question.isReadOnly --\x3e\n  <div disabled data-bind="css: question.getControlClass(), attr: { id: question.inputId }, ">\n    \x3c!-- ko if: question.selectedItemLocText --\x3e\n    \x3c!-- ko template: { name: \'survey-string\', data: question.selectedItemLocText } --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n    <div data-bind="text: question.readOnlyText"></div>\n  </div>\n  \x3c!-- /ko --\x3e\n</div>'
    }, function(e, t) {
        e.exports = "<div data-bind=\"css: question.renderCssRoot\">\n  <div data-bind=\"css: question.koCss().selectWrapper\">\n    \x3c!-- ko ifnot: question.isReadOnly --\x3e\n    <select data-bind=\"options: question.visibleChoices, \n    optionsValue: 'value', \n    optionsText: 'koText', \n    optionsCaption: question.allowClear ? question.locPlaceholder.koRenderedHtml : undefined, \n    optionsAfterRender: question.koDisableOption, \n    attr: {id: question.inputId, autocomplete: question.autocomplete, required: question.isRequired, 'aria-required': question.ariaRequired, 'aria-label': question.ariaLabel, 'aria-invalid': question.ariaInvalid, 'aria-describedby': question.ariaDescribedBy},\n    click: click,\n    event: { keyup: keyup },\n    disable: question.isInputReadOnly, \n    value: question.renderedValue, \n    valueAllowUnset: true, \n    css: question.getControlClass()\">\n    </select>\n    \x3c!-- /ko --\x3e\n    \x3c!-- ko if: question.isReadOnly --\x3e\n    <div disabled\n      data-bind=\"attr: {id: question.inputId}, text: question.readOnlyText, css: question.getControlClass()\">\n    </div>\n    \x3c!-- /ko --\x3e\n  </div>\n  \x3c!-- ko if: question.isOtherSelected --\x3e\n  <div class=\"form-group\"\n    data-bind=\"template: { name: 'survey-other', data: {'question': question, 'visible': question.isOtherSelected } }, style: {display: question.isFlowLayout ? 'inline': ''}\">\n  </div>\n  \x3c!-- /ko --\x3e\n</div>"
    }, function(e, t) {
        e.exports = '<div class="sv-tagbox__item">\n  <div class="sv-tagbox__item-text">\n    \x3c!-- ko template: { name: \'survey-string\', data: item.locText } --\x3e\n    \x3c!-- /ko --\x3e\n  </div>\n  <div data-bind="css: question.cssClasses.cleanItemButton, click: removeItem">\n    <sv-svg-icon params="iconName: question.cssClasses.cleanItemButtonIconId, css: question.cssClasses.cleanItemButtonSvg, size:\'auto\' "></sv-svg-icon>\n  </div>\n</div>'
    }, function(e, t) {
        e.exports = '<div data-bind="css: question.koCss().selectWrapper">\n  \x3c!-- ko ifnot: question.isReadOnly --\x3e\n  <div data-bind="css: question.getControlClass(),\n    click: click, \n    event: { keydown: keyhandler, blur: blur },\n    attr: { \n      id: question.inputId, \n      required: question.isRequired, \n      tabindex: model.inputReadOnly ? undefined : 0,\n      disabled: question.isInputReadOnly,\n      role: question.ariaRole,\n      \'aria-required\': question.ariaRequired, \n      \'aria-label\': question.ariaLabel, \n      \'aria-invalid\': question.ariaInvalid, \n      \'aria-describedby\': question.ariaDescribedBy \n    },">\n    <div data-bind="css: question.cssClasses.controlValue">\n      \x3c!-- ko foreach: question.selectedChoices --\x3e\n      \x3c!-- ko component: { name: \'sv-tagbox-item\', params: { item: $data, question: question } } --\x3e\n      \x3c!-- /ko --\x3e\n      \x3c!-- /ko --\x3e\n      <input type="text" autocomplete="off" data-bind="textInput: model.filterString, \n       css: question.cssClasses.filterStringInput, \n       attr: { \n        size: !model.filterString ? 1 : null, \n        id: question.getInputId(), \n        role: model.filterStringEnabled ? question.ariaRole : undefined,\n        \'aria-label\': question.placeholder,\n        placeholder: model.filterStringPlaceholder, \n        disabled: question.isInputReadOnly,\n        readonly: !model.searchEnabled \n      },\n       event: { keydown: inputKeyHandler, blur: blur }"></input>\n    </div>\n    \x3c!-- ko if: (question.allowClear && question.cssClasses.cleanButtonIconId) --\x3e\n    <div data-bind="css: question.koCss().cleanButton, click: clear, visible: !question.isEmpty() ">\n      \x3c!-- ko component: { name: \'sv-svg-icon\', params: { css: question.cssClasses.cleanButtonSvg, iconName: question.cssClasses.cleanButtonIconId, size: \'auto\', title: question.clearCaption } } --\x3e\n      \x3c!-- /ko --\x3e\n    </div>\n    \x3c!-- /ko --\x3e\n  </div>\n  \x3c!-- ko component: { name: "sv-popup", params: { model: model.popupModel }} --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- /ko --\x3e\n  \x3c!-- ko if: question.isReadOnly --\x3e\n  <div disabled data-bind="css: question.getControlClass(), attr: { id: question.inputId }, ">\n    <div data-bind="text: question.readOnlyText"></div>\n  </div>\n  \x3c!-- /ko --\x3e\n</div>'
    }, function(e, t) {
        e.exports = '<div data-bind="css: model.cssClasses.root">\n  \x3c!-- ko if: $data.model.showFilter --\x3e\n  <div data-bind="css: model.cssClasses.filter">\n    <div data-bind="css: model.cssClasses.filterIcon">\n      <sv-svg-icon params="iconName: \'icon-search\', size: 24"></sv-svg-icon>\n    </div>\n    <input type="text" \n      data-bind="css: model.cssClasses.filterInput, textInput: model.filterString, attr: { placeholder: model.filterStringPlaceholder, \'aria-label\': model.filterStringPlaceholder }, event: { keyup: function (model, event) { $data.model.goToItems(event); } }"></input>\n  </div>\n  \x3c!-- /ko --\x3e\n  <div data-bind="css: model.cssClasses.emptyContainer, visible: $data.model.isEmpty">\n    <div data-bind="css: model.cssClasses.emptyText, text: model.emptyMessage, attr: { \'aria-label\': model.emptyMessage }"></div>\n  </div>\n  <ul role="listbox"\n    data-bind="css: model.cssClasses.itemsContainer, event: { mousedown: function (data, e) { e.preventDefault(); }, keydown: function(data, e) { $data.model.onKeyDown(event); return true; }, mousemove: function(data, e) { $data.model.onMouseMove(event); return true; } }">\n    \x3c!-- ko template: { foreach: model.renderedActions, afterRender: $data.afterItemRender } --\x3e\n    \x3c!-- ko component: { name: \'sv-list-item\', params: { item: $data, model: $parent.model } } --\x3e\n    \x3c!-- /ko --\x3e\n    \x3c!-- /ko --\x3e\n  </ul>\n</div>'
    }, function(e, t) {
        e.exports = '\r\n<li role="option"\r\ndata-bind="css: $data.model.getItemClass($data.item), attr: { \'aria-selected\': $data.model.isItemSelected($data.item) }, click: itemClick, key2click, visible: $data.model.isItemVisible($data.item), event: { pointerdown: function (model, event) { $data.model.onPointerDown(event, $data.item); } }">  \x3c!-- ko if: $data.item.needSeparator --\x3e\r\n  <div data-bind="css: $data.model.cssClasses.itemSeparator"></div>\r\n  \x3c!-- /ko --\x3e\r\n  <div data-bind="style: { paddingInlineStart: $data.model.getItemIndent($data.item) }, css: $data.model.cssClasses.itemBody">\r\n  \x3c!-- ko ifnot: $data.item.component --\x3e\r\n  \x3c!-- ko if: $data.item.iconName --\x3e\r\n  <sv-svg-icon data-bind="css: $data.model.cssClasses.itemIcon" params="iconName: $data.item.iconName, size: 24"></sv-svg-icon>\r\n  \x3c!-- /ko --\x3e\r\n  \x3c!-- ko template: { name: \'survey-string\', data: $data.item.locTitle } --\x3e\x3c!-- /ko --\x3e\r\n  \x3c!-- /ko --\x3e\r\n  \x3c!-- ko if: $data.item.component --\x3e\r\n  \x3c!-- ko component: { name: $data.item.component, params: { item: $data.item } } --\x3e\r\n  \x3c!-- /ko --\x3e\r\n  \x3c!-- /ko --\x3e\r\n  </div>\r\n</li>'
    }, function(e, t) {
        e.exports = '\x3c!-- ko if: hasIcon --\x3e\n<svg class="sv-svg-icon" data-bind="css: css, attr: { \'aria-label\': title }" role="img"><use></use></svg>\n\x3c!-- /ko --\x3e\n'
    }, function(e, t) {
        e.exports = '<button\n  type="button"\n  data-bind="click: question.koRemoveRowClick, disable: question.isInputReadOnly, css: question.getRemoveRowButtonCss()"\n>\n  \x3c!-- ko template: { name: \'survey-string\', data: question.locRemoveRowText } --\x3e\x3c!-- /ko --\x3e\n  <span data-bind="css: question.koCss().iconRemove"></span>\n</button>\n'
    }, function(e, t) {
        e.exports = "<button\ntype=\"button\"\ndata-bind=\"css:question.getDetailPanelButtonCss(row), click:row.showHideDetailPanelClick, attr:{ 'aria-expanded': question.getIsDetailPanelShowing($data.row) ? 'true': 'false', 'aria-controls': question.getIsDetailPanelShowing($data.row) ? row.detailPanelId: false}\"\n>\n<span\n  data-bind=\"css: question.getDetailPanelIconCss(row), component: { name: 'sv-svg-icon', params: {iconName: question.getDetailPanelIconId(row)} }\"\n>\n</span>\n</button>\n\x3c!-- ko if: question.detailPanelMode === \"popup\" && question.getKoPopupIsVisible(row) --\x3e\n<sv-popup\nparams=\"contentComponentName: 'sv-panel', contentComponentData: { question: row.detailPanel, onItemSelect: function(){} }, isVisible: question.getKoPopupIsVisible(row), isModal: true, onHide: function() { row.hideDetailPanel() }, verticalPosition: 'top', horizontalPosition: 'right'\"\n></sv-popup>\n\x3c!-- /ko --\x3e"
    }, function(e, t) {
        e.exports = '\x3c!-- ko if: question.iconDragElement --\x3e\n<svg data-bind="css: question.koCss().dragElementDecorator">\n  <use data-bind="attr: { \'xlink:href\': question.iconDragElement }" xlink:href=\'\'></use>\n</svg>\n\x3c!-- /ko --\x3e\n\x3c!-- ko ifnot: question.iconDragElement --\x3e\n<span data-bind="css: question.koCss().iconDrag"></span>\n\x3c!-- /ko --\x3e'
    }, function(e, t) {
        e.exports = '<label role="radio" data-bind="css: model.css.label, attr: { title: model.caption.koRenderedHtml }">\r\n  <input type="radio"\r\n    data-bind="attr: { name: model.name, id: model.id, \'aria-required\': model.isRequired, \'aria-label\': model.caption.koRenderedHtml, role: \'radio\', \'aria-invalid\': model.hasErrors, \'aria-describedby\': model.describeBy}, checkedValue: model.value, checked: model.question.renderedValue, disable: model.readOnly, css: model.css.control" />\r\n  <div data-bind="css: model.css.decorator">\r\n    \x3c!-- ko if: !!model.iconName--\x3e\r\n    <sv-svg-icon data-bind="css: model.css.icon" params="iconName: model.iconName, size: model.iconSize"></sv-svg-icon>\r\n    \x3c!-- /ko --\x3e\r\n    \x3c!-- ko if: model.showCaption --\x3e\r\n    <span data-bind="css: model.css.caption, attr: { title: model.caption.koRenderedHtml }">\r\n      \x3c!-- ko template: { name: \'survey-string\', data: model.caption } --\x3e\r\n      \x3c!-- /ko --\x3e\r\n    </span>\r\n    \x3c!-- /ko --\x3e\r\n  </div>\r\n</label>'
    }, function(e, t) {
        e.exports = "\x3c!-- ko if: question.hasVisibleErrors --\x3e\n  \x3c!-- ko template: { name: 'survey-question-errors', data: question, afterRender: afterRender } --\x3e\n  \x3c!-- /ko --\x3e\n\x3c!-- /ko --\x3e"
    }, function(e, t) {
        e.exports = '\x3c!-- ko with: $data.item  --\x3e\n  <input type="button" data-bind="event: { mousedown: $data.data && $data.data.mouseDown }, value: $data.title, click: $data.action, visible: $data.visible, css: $data.innerCss, disable: $data.disabled"/>\n\x3c!-- /ko --\x3e'
    }, function(e, t) {
        e.exports = '\x3c!-- ko if: question.koCanAddPanel --\x3e\n<button type="button" data-bind="click: question.koAddPanelClick, css: question.koAddButtonCss, visible: question.koCanAddPanel">\n  <span data-bind="css: question.koCss().buttonAddText, text: question.panelAddText"></span>\n</button>\n\x3c!-- /ko --\x3e'
    }, function(e, t) {
        e.exports = "<div data-bind=\"attr: { title: question.panelNextText }, click: question.koNextPanelClick, css: question.koNextButtonCss\">\n    \x3c!-- ko component: { name: 'sv-svg-icon', params: { iconName: question.koCss().progressBtnIcon, size: 'auto' } } --\x3e\x3c!-- /ko --\x3e\n</div>"
    }, function(e, t) {
        e.exports = "<div data-bind=\"attr: { title: question.panelPrevText }, click: question.koPrevPanelClick, css: question.koPrevButtonCss\">\n    \x3c!-- ko component: { name: 'sv-svg-icon', params: { iconName: question.koCss().progressBtnIcon, size: 'auto' } } --\x3e\x3c!-- /ko --\x3e\n</div>"
    }, function(e, t) {
        e.exports = '<div data-bind="text: question.koProgressText, css: question.koCss().progressText"></div>'
    }, function(e, t) {
        e.exports = '<button type="button" data-bind="click: function() { question.koRemovePanelClick(panel); }, css: question.getPanelRemoveButtonCss()">\n  <span data-bind="css: question.koCss().buttonRemoveText, text: question.panelRemoveText"></span>\n  <span data-bind="css: question.koCss().iconRemove"></span>\n</button>'
    }, function(e, t) {
        e.exports = '<div class="sv-brand-info">\n  <a class="sv-brand-info__logo" href="https://surveyjs.io/?utm_source=built-in_links&utm_medium=online_survey_tool&utm_campaign=landing_page"><img src="https://surveyjs.io/Content/Images/poweredby.svg"/></a>\n  <div class="sv-brand-info__text">Try and see how easy it is to <a href="https://surveyjs.io/create-survey?utm_source=built-in_links&utm_medium=online_survey_tool&utm_campaign=create_survey">create a survey</a></div>\n  <div class="sv-brand-info__terms"><a href="https://surveyjs.io/TermsOfUse">Terms of Use & Privacy Statement</a></div>\n</div>\n'
    }, , , , function(e, t, n) {
        "use strict";
        n.r(t), n.d(t, "Model", (function() {
            return ls
        })), n.d(t, "Version", (function() {
            return Wi
        })), n.d(t, "checkLibraryVersion", (function() {
            return Ki
        })), n.d(t, "settings", (function() {
            return s
        })), n.d(t, "Helpers", (function() {
            return a
        })), n.d(t, "AnswerCountValidator", (function() {
            return Le
        })), n.d(t, "EmailValidator", (function() {
            return Ne
        })), n.d(t, "NumericValidator", (function() {
            return Ae
        })), n.d(t, "RegexValidator", (function() {
            return Me
        })), n.d(t, "SurveyValidator", (function() {
            return qe
        })), n.d(t, "TextValidator", (function() {
            return je
        })), n.d(t, "ValidatorResult", (function() {
            return _e
        })), n.d(t, "ExpressionValidator", (function() {
            return Fe
        })), n.d(t, "ValidatorRunner", (function() {
            return De
        })), n.d(t, "ItemValue", (function() {
            return ze
        })), n.d(t, "Base", (function() {
            return he
        })), n.d(t, "Event", (function() {
            return me
        })), n.d(t, "EventBase", (function() {
            return ge
        })), n.d(t, "ArrayChanges", (function() {
            return fe
        })), n.d(t, "ComputedUpdater", (function() {
            return de
        })), n.d(t, "SurveyError", (function() {
            return ye
        })), n.d(t, "SurveyElementCore", (function() {
            return At
        })), n.d(t, "SurveyElement", (function() {
            return jt
        })), n.d(t, "DragTypeOverMeEnum", (function() {
            return Ot
        })), n.d(t, "CalculatedValue", (function() {
            return Mt
        })), n.d(t, "CustomError", (function() {
            return Re
        })), n.d(t, "AnswerRequiredError", (function() {
            return be
        })), n.d(t, "OneAnswerRequiredError", (function() {
            return xe
        })), n.d(t, "RequreNumericError", (function() {
            return Ce
        })), n.d(t, "ExceedSizeError", (function() {
            return we
        })), n.d(t, "LocalizableString", (function() {
            return d
        })), n.d(t, "LocalizableStrings", (function() {
            return h
        })), n.d(t, "HtmlConditionItem", (function() {
            return Bt
        })), n.d(t, "UrlConditionItem", (function() {
            return zt
        })), n.d(t, "ChoicesRestful", (function() {
            return Ut
        })), n.d(t, "ChoicesRestfull", (function() {
            return Wt
        })), n.d(t, "FunctionFactory", (function() {
            return q
        })), n.d(t, "registerFunction", (function() {
            return D
        })), n.d(t, "ConditionRunner", (function() {
            return se
        })), n.d(t, "ExpressionRunner", (function() {
            return ae
        })), n.d(t, "ExpressionExecutor", (function() {
            return re
        })), n.d(t, "Operand", (function() {
            return Q
        })), n.d(t, "Const", (function() {
            return G
        })), n.d(t, "BinaryOperand", (function() {
            return U
        })), n.d(t, "Variable", (function() {
            return J
        })), n.d(t, "FunctionOperand", (function() {
            return K
        })), n.d(t, "ArrayOperand", (function() {
            return $
        })), n.d(t, "UnaryOperand", (function() {
            return W
        })), n.d(t, "ConditionsParser", (function() {
            return ne
        })), n.d(t, "ProcessValue", (function() {
            return _
        })), n.d(t, "JsonError", (function() {
            return V
        })), n.d(t, "JsonIncorrectTypeError", (function() {
            return O
        })), n.d(t, "JsonMetadata", (function() {
            return P
        })), n.d(t, "JsonMetadataClass", (function() {
            return w
        })), n.d(t, "JsonMissingTypeError", (function() {
            return S
        })), n.d(t, "JsonMissingTypeErrorBase", (function() {
            return k
        })), n.d(t, "JsonObject", (function() {
            return R
        })), n.d(t, "JsonObjectProperty", (function() {
            return x
        })), n.d(t, "JsonRequiredPropertyError", (function() {
            return E
        })), n.d(t, "JsonUnknownPropertyError", (function() {
            return T
        })), n.d(t, "Serializer", (function() {
            return I
        })), n.d(t, "property", (function() {
            return y
        })), n.d(t, "propertyArray", (function() {
            return b
        })), n.d(t, "MatrixDropdownCell", (function() {
            return wn
        })), n.d(t, "MatrixDropdownRowModelBase", (function() {
            return Tn
        })), n.d(t, "QuestionMatrixDropdownModelBase", (function() {
            return Sn
        })), n.d(t, "MatrixDropdownColumn", (function() {
            return mn
        })), n.d(t, "matrixDropdownColumnTypes", (function() {
            return fn
        })), n.d(t, "QuestionMatrixDropdownRenderedCell", (function() {
            return vn
        })), n.d(t, "QuestionMatrixDropdownRenderedRow", (function() {
            return bn
        })), n.d(t, "QuestionMatrixDropdownRenderedTable", (function() {
            return xn
        })), n.d(t, "MatrixDropdownRowModel", (function() {
            return En
        })), n.d(t, "QuestionMatrixDropdownModel", (function() {
            return Rn
        })), n.d(t, "MatrixDynamicRowModel", (function() {
            return Qn
        })), n.d(t, "QuestionMatrixDynamicModel", (function() {
            return Un
        })), n.d(t, "MatrixRowModel", (function() {
            return So
        })), n.d(t, "MatrixCells", (function() {
            return Oo
        })), n.d(t, "QuestionMatrixModel", (function() {
            return Eo
        })), n.d(t, "QuestionMatrixBaseModel", (function() {
            return nn
        })), n.d(t, "MultipleTextItemModel", (function() {
            return Fo
        })), n.d(t, "QuestionMultipleTextModel", (function() {
            return Bo
        })), n.d(t, "PanelModel", (function() {
            return $o
        })), n.d(t, "PanelModelBase", (function() {
            return Wo
        })), n.d(t, "QuestionRowModel", (function() {
            return Uo
        })), n.d(t, "FlowPanelModel", (function() {
            return Jo
        })), n.d(t, "PageModel", (function() {
            return Xo
        })), n.d(t, "DefaultTitleModel", (function() {
            return Yo
        })), n.d(t, "Question", (function() {
            return Xt
        })), n.d(t, "QuestionNonValue", (function() {
            return tr
        })), n.d(t, "QuestionEmptyModel", (function() {
            return or
        })), n.d(t, "QuestionCheckboxBase", (function() {
            return bo
        })), n.d(t, "QuestionSelectBase", (function() {
            return vo
        })), n.d(t, "QuestionCheckboxModel", (function() {
            return ir
        })), n.d(t, "QuestionTagboxModel", (function() {
            return fr
        })), n.d(t, "QuestionRankingModel", (function() {
            return Cr
        })), n.d(t, "QuestionCommentModel", (function() {
            return Pr
        })), n.d(t, "QuestionDropdownModel", (function() {
            return To
        })), n.d(t, "QuestionFactory", (function() {
            return ln
        })), n.d(t, "ElementFactory", (function() {
            return un
        })), n.d(t, "QuestionFileModel", (function() {
            return kr
        })), n.d(t, "QuestionHtmlModel", (function() {
            return Er
        })), n.d(t, "QuestionRadiogroupModel", (function() {
            return Ir
        })), n.d(t, "QuestionRatingModel", (function() {
            return Ar
        })), n.d(t, "RenderedRatingItem", (function() {
            return Dr
        })), n.d(t, "QuestionExpressionModel", (function() {
            return pn
        })), n.d(t, "QuestionTextBase", (function() {
            return _o
        })), n.d(t, "QuestionTextModel", (function() {
            return Do
        })), n.d(t, "QuestionBooleanModel", (function() {
            return Mr
        })), n.d(t, "QuestionImagePickerModel", (function() {
            return zr
        })), n.d(t, "ImageItemValue", (function() {
            return Br
        })), n.d(t, "QuestionImageModel", (function() {
            return $r
        })), n.d(t, "QuestionSignaturePadModel", (function() {
            return ei
        })), n.d(t, "QuestionPanelDynamicModel", (function() {
            return ai
        })), n.d(t, "QuestionPanelDynamicItem", (function() {
            return ii
        })), n.d(t, "SurveyTimer", (function() {
            return lo
        })), n.d(t, "SurveyTimerModel", (function() {
            return po
        })), n.d(t, "SurveyProgressModel", (function() {
            return li
        })), n.d(t, "SurveyProgressButtonsModel", (function() {
            return ui
        })), n.d(t, "SurveyModel", (function() {
            return mo
        })), n.d(t, "SurveyTrigger", (function() {
            return di
        })), n.d(t, "SurveyTriggerComplete", (function() {
            return fi
        })), n.d(t, "SurveyTriggerSetValue", (function() {
            return mi
        })), n.d(t, "SurveyTriggerVisible", (function() {
            return hi
        })), n.d(t, "SurveyTriggerCopyValue", (function() {
            return vi
        })), n.d(t, "SurveyTriggerRunExpression", (function() {
            return yi
        })), n.d(t, "Trigger", (function() {
            return pi
        })), n.d(t, "PopupSurveyModel", (function() {
            return Ci
        })), n.d(t, "SurveyWindowModel", (function() {
            return wi
        })), n.d(t, "TextPreProcessor", (function() {
            return sn
        })), n.d(t, "dxSurveyService", (function() {
            return Kn
        })), n.d(t, "englishStrings", (function() {
            return l
        })), n.d(t, "surveyLocalization", (function() {
            return u
        })), n.d(t, "surveyStrings", (function() {
            return c
        })), n.d(t, "QuestionCustomWidget", (function() {
            return $t
        })), n.d(t, "CustomWidgetCollection", (function() {
            return Gt
        })), n.d(t, "QuestionCustomModel", (function() {
            return Si
        })), n.d(t, "QuestionCompositeModel", (function() {
            return Ei
        })), n.d(t, "ComponentQuestionJSON", (function() {
            return Vi
        })), n.d(t, "ComponentCollection", (function() {
            return Ti
        })), n.d(t, "StylesManager", (function() {
            return io
        })), n.d(t, "ListModel", (function() {
            return bt
        })), n.d(t, "MultiSelectListModel", (function() {
            return lr
        })), n.d(t, "PopupModel", (function() {
            return wt
        })), n.d(t, "createDialogOptions", (function() {
            return Pt
        })), n.d(t, "PopupBaseViewModel", (function() {
            return qi
        })), n.d(t, "PopupDropdownViewModel", (function() {
            return Li
        })), n.d(t, "PopupModalViewModel", (function() {
            return Ni
        })), n.d(t, "createPopupViewModel", (function() {
            return Bi
        })), n.d(t, "createPopupModalViewModel", (function() {
            return Fi
        })), n.d(t, "DropdownListModel", (function() {
            return wo
        })), n.d(t, "DropdownMultiSelectListModel", (function() {
            return pr
        })), n.d(t, "QuestionButtonGroupModel", (function() {
            return Ui
        })), n.d(t, "ButtonGroupItemModel", (function() {
            return $i
        })), n.d(t, "ButtonGroupItemValue", (function() {
            return Qi
        })), n.d(t, "IsMobile", (function() {
            return Dn
        })), n.d(t, "IsTouch", (function() {
            return jn
        })), n.d(t, "confirmAction", (function() {
            return Qe
        })), n.d(t, "detectIEOrEdge", (function() {
            return Ue
        })), n.d(t, "doKey2ClickUp", (function() {
            return Xe
        })), n.d(t, "doKey2ClickDown", (function() {
            return Ye
        })), n.d(t, "doKey2ClickBlur", (function() {
            return Ze
        })), n.d(t, "loadFileFromBase64", (function() {
            return We
        })), n.d(t, "increaseHeightByContent", (function() {
            return et
        })), n.d(t, "createSvg", (function() {
            return Ge
        })), n.d(t, "sanitizeEditableContent", (function() {
            return it
        })), n.d(t, "CssClassBuilder", (function() {
            return ct
        })), n.d(t, "surveyCss", (function() {
            return $n
        })), n.d(t, "defaultV2Css", (function() {
            return Gn
        })), n.d(t, "defaultV2ThemeName", (function() {
            return Jn
        })), n.d(t, "DragDropSurveyElements", (function() {
            return Ji
        })), n.d(t, "DragDropChoices", (function() {
            return gr
        })), n.d(t, "defaultStandardCss", (function() {
            return Zi
        })), n.d(t, "modernCss", (function() {
            return Xi
        })), n.d(t, "SvgIconRegistry", (function() {
            return Yi
        })), n.d(t, "SvgRegistry", (function() {
            return es
        })), n.d(t, "SvgBundleViewModel", (function() {})), n.d(t, "RendererFactory", (function() {
            return Jt
        })), n.d(t, "ResponsivityManager", (function() {
            return lt
        })), n.d(t, "VerticalResponsivityManager", (function() {
            return ut
        })), n.d(t, "unwrap", (function() {
            return Je
        })), n.d(t, "getOriginalEvent", (function() {
            return tt
        })), n.d(t, "createDropdownActionModel", (function() {
            return kt
        })), n.d(t, "createDropdownActionModelAdvanced", (function() {
            return St
        })), n.d(t, "Action", (function() {
            return Et
        })), n.d(t, "ActionDropdownViewModel", (function() {
            return Rt
        })), n.d(t, "AdaptiveActionContainer", (function() {
            return _t
        })), n.d(t, "defaultActionBarCss", (function() {
            return ht
        })), n.d(t, "ActionContainer", (function() {
            return ft
        })), n.d(t, "TooltipManager", (function() {
            return ns
        })), n.d(t, "DragOrClickHelper", (function() {
            return zn
        })), n.d(t, "ko", (function() {
            return Sl
        }));
        var o = n(0),
            r = n(2),
            i = n.n(r),
            s = {
                comparator: {
                    trimStrings: !0,
                    caseSensitive: !1
                },
                expressionDisableConversionChar: "#",
                useLocalTimeZone: !0,
                get commentPrefix() {
                    return s.commentSuffix
                },
                set commentPrefix(e) {
                    s.commentSuffix = e
                },
                commentSuffix: "-Comment",
                webserviceEncodeParameters: !0,
                useCachingForChoicesRestful: !0,
                get useCachingForChoicesRestfull() {
                    return s.useCachingForChoicesRestful
                },
                set useCachingForChoicesRestfull(e) {
                    s.useCachingForChoicesRestful = e
                },
                surveyServiceUrl: "https://api.surveyjs.io/public/v1/Survey",
                itemValueSeparator: "|",
                itemValueAlwaysSerializeAsObject: !1,
                itemValueAlwaysSerializeText: !1,
                defaultLocaleName: "default",
                storeDuplicatedTranslations: !1,
                matrixDefaultRowName: "default",
                matrixDefaultCellType: "dropdown",
                matrixTotalValuePostFix: "-total",
                matrixMaximumRowCount: 1e3,
                matrixMaxRowCountInCondition: 1,
                matrixRenderRemoveAsIcon: !0,
                panelMaximumPanelCount: 100,
                ratingMaximumRateValueCount: 20,
                disableOnGettingChoicesFromWeb: !1,
                serializeLocalizableStringAsObject: !1,
                allowShowEmptyTitleInDesignMode: !0,
                allowShowEmptyDescriptionInDesignMode: !0,
                executeCompleteTriggerOnValueChanged: !1,
                changeNavigationButtonsOnCompleteTrigger: !0,
                executeSkipTriggerOnValueChanged: !0,
                readOnlyCommentRenderMode: "textarea",
                readOnlyTextRenderMode: "input",
                confirmActionFunc: function(e) {
                    return confirm(e)
                },
                minWidth: "300px",
                maxWidth: "100%",
                maximumConditionRunCountOnValueChanged: 10,
                setQuestionVisibleIndexForHiddenTitle: !1,
                setQuestionVisibleIndexForHiddenNumber: !1,
                lazyRowsRendering: !1,
                lazyRowsRenderingStartRow: 3,
                showItemsInOrder: "default",
                noneItemValue: "none",
                supportedValidators: {
                    question: ["expression"],
                    comment: ["text", "regex"],
                    text: ["numeric", "text", "regex", "email"],
                    checkbox: ["answercount"],
                    imagepicker: ["answercount"]
                },
                minDate: "",
                maxDate: "",
                showModal: void 0,
                supportCreatorV2: !1,
                showDefaultItemsInCreatorV2: !0,
                customIcons: {},
                titleTags: {
                    survey: "h3",
                    page: "h4",
                    panel: "h4",
                    question: "h5"
                },
                questions: {
                    inputTypes: ["color", "date", "datetime", "datetime-local", "email", "month", "number", "password", "range", "tel", "text", "time", "url", "week"],
                    dataList: ["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"]
                }
            },
            a = function() {
                function e() {}
                return e.isValueEmpty = function(t) {
                    if (Array.isArray(t) && 0 === t.length) return !0;
                    if (t && "object" == typeof t && t.constructor === Object) {
                        for (var n in t)
                            if (!e.isValueEmpty(t[n])) return !1;
                        return !0
                    }
                    return !t && 0 !== t && !1 !== t
                }, e.isArrayContainsEqual = function(t, n) {
                    if (!Array.isArray(t) || !Array.isArray(n)) return !1;
                    if (t.length !== n.length) return !1;
                    for (var o = 0; o < t.length; o++) {
                        for (var r = 0; r < n.length && !e.isTwoValueEquals(t[o], n[r]); r++);
                        if (r === n.length) return !1
                    }
                    return !0
                }, e.isArraysEqual = function(t, n, o, r, i) {
                    if (void 0 === o && (o = !1), !Array.isArray(t) || !Array.isArray(n)) return !1;
                    if (t.length !== n.length) return !1;
                    if (o) {
                        for (var s = [], a = [], l = 0; l < t.length; l++) s.push(t[l]), a.push(n[l]);
                        s.sort(), a.sort(), t = s, n = a
                    }
                    for (l = 0; l < t.length; l++)
                        if (!e.isTwoValueEquals(t[l], n[l], o, r, i)) return !1;
                    return !0
                }, e.isTwoValueEquals = function(t, n, o, r, i) {
                    if (void 0 === o && (o = !1), t === n) return !0;
                    if (Array.isArray(t) && 0 === t.length && void 0 === n) return !0;
                    if (Array.isArray(n) && 0 === n.length && void 0 === t) return !0;
                    if (null == t && "" === n) return !0;
                    if (null == n && "" === t) return !0;
                    if (void 0 === i && (i = s.comparator.trimStrings), void 0 === r && (r = s.comparator.caseSensitive), "string" == typeof t && "string" == typeof n) return i && (t = t.trim(), n = n.trim()), r || (t = t.toLowerCase(), n = n.toLowerCase()), t === n;
                    if (t instanceof Date && n instanceof Date) return t.getTime() == n.getTime();
                    if (e.isConvertibleToNumber(t) && e.isConvertibleToNumber(n) && parseInt(t) === parseInt(n) && parseFloat(t) === parseFloat(n)) return !0;
                    if (!e.isValueEmpty(t) && e.isValueEmpty(n) || e.isValueEmpty(t) && !e.isValueEmpty(n)) return !1;
                    if ((!0 === t || !1 === t) && "string" == typeof n) return t.toString() === n.toLocaleLowerCase();
                    if ((!0 === n || !1 === n) && "string" == typeof t) return n.toString() === t.toLocaleLowerCase();
                    if (!(t instanceof Object || n instanceof Object)) return t == n;
                    if (!(t instanceof Object && n instanceof Object)) return !1;
                    if (t.equals) return t.equals(n);
                    if (t.toJSON && n.toJSON && t.getType && n.getType) return !t.isDiposed && !n.isDiposed && (t.getType() === n.getType() && ((!t.name || t.name === n.name) && this.isTwoValueEquals(t.toJSON(), n.toJSON(), o, r, i)));
                    if (Array.isArray(t) && Array.isArray(n)) return e.isArraysEqual(t, n, o, r, i);
                    if (t.equalsTo && n.equalsTo) return t.equalsTo(n);
                    for (var a in t)
                        if (t.hasOwnProperty(a)) {
                            if (!n.hasOwnProperty(a)) return !1;
                            if (!this.isTwoValueEquals(t[a], n[a], o, r, i)) return !1
                        } for (a in n)
                        if (n.hasOwnProperty(a) && !t.hasOwnProperty(a)) return !1;
                    return !0
                }, e.randomizeArray = function(e) {
                    for (var t = e.length - 1; t > 0; t--) {
                        var n = Math.floor(Math.random() * (t + 1)),
                            o = e[t];
                        e[t] = e[n], e[n] = o
                    }
                    return e
                }, e.getUnbindValue = function(e) {
                    return e && e instanceof Object && !(e instanceof Date) ? JSON.parse(JSON.stringify(e)) : e
                }, e.createCopy = function(e) {
                    var t = {};
                    if (!e) return t;
                    for (var n in e) t[n] = e[n];
                    return t
                }, e.isConvertibleToNumber = function(e) {
                    return null != e && !Array.isArray(e) && !isNaN(e)
                }, e.isNumber = function(e) {
                    return !("string" == typeof e && e && 0 == e.indexOf("0x") && e.length > 32) && (!isNaN(parseFloat(e)) && isFinite(e))
                }, e.getMaxLength = function(e, t) {
                    return e < 0 && (e = t), e > 0 ? e : null
                }, e.getNumberByIndex = function(t, n) {
                    if (t < 0) return "";
                    var o = 1,
                        r = "",
                        i = ".",
                        s = !0,
                        a = "A",
                        l = "";
                    if (n) {
                        for (var u = (l = n).length - 1, c = !1, p = 0; p < l.length; p++)
                            if (e.isCharDigit(l[p])) {
                                c = !0;
                                break
                            } for (var d = function() {
                                return c && !e.isCharDigit(l[u]) || e.isCharNotLetterAndDigit(l[u])
                            }; u >= 0 && d();) u--;
                        var h = "";
                        for (u < l.length - 1 && (h = l.substring(u + 1), l = l.substring(0, u + 1)), u = l.length - 1; u >= 0 && !d() && (u--, c););
                        a = l.substring(u + 1), r = l.substring(0, u + 1), parseInt(a) ? o = parseInt(a) : 1 == a.length && (s = !1), (h || r) && (i = h)
                    }
                    return s ? r + (t + o).toString() + i : r + String.fromCharCode(a.charCodeAt(0) + t) + i
                }, e.isCharNotLetterAndDigit = function(t) {
                    return t.toUpperCase() == t.toLowerCase() && !e.isCharDigit(t)
                }, e.isCharDigit = function(e) {
                    return e >= "0" && e <= "9"
                }, e.countDecimals = function(t) {
                    if (e.isNumber(t) && Math.floor(t) !== t) {
                        var n = t.toString().split(".");
                        return n.length > 1 && n[1].length || 0
                    }
                    return 0
                }, e.correctAfterPlusMinis = function(t, n, o) {
                    var r = e.countDecimals(t),
                        i = e.countDecimals(n);
                    if (r > 0 || i > 0) {
                        var s = Math.max(r, i);
                        o = parseFloat(o.toFixed(s))
                    }
                    return o
                }, e.correctAfterMultiple = function(t, n, o) {
                    var r = e.countDecimals(t) + e.countDecimals(n);
                    return r > 0 && (o = parseFloat(o.toFixed(r))), o
                }, e.convertArrayValueToObject = function(t, n, o) {
                    void 0 === o && (o = void 0);
                    var r = new Array;
                    if (!t || !Array.isArray(t)) return r;
                    for (var i = 0; i < t.length; i++) {
                        var s = void 0;
                        Array.isArray(o) && (s = e.findObjByPropValue(o, n, t[i])), s || ((s = {})[n] = t[i]), r.push(s)
                    }
                    return r
                }, e.findObjByPropValue = function(t, n, o) {
                    for (var r = 0; r < t.length; r++)
                        if (e.isTwoValueEquals(t[r][n], o)) return t[r]
                }, e.convertArrayObjectToValue = function(t, n) {
                    var o = new Array;
                    if (!t || !Array.isArray(t)) return o;
                    for (var r = 0; r < t.length; r++) {
                        var i = t[r] ? t[r][n] : void 0;
                        e.isValueEmpty(i) || o.push(i)
                    }
                    return o
                }, e.convertDateToString = function(e) {
                    var t = function(e) {
                        return e < 10 ? "0" + e.toString() : e.toString()
                    };
                    return e.getFullYear() + "-" + t(e.getMonth() + 1) + "-" + t(e.getDate())
                }, e.convertDateTimeToString = function(e) {
                    var t = function(e) {
                        return e < 10 ? "0" + e.toString() : e.toString()
                    };
                    return this.convertDateToString(e) + " " + t(e.getHours()) + ":" + t(e.getMinutes())
                }, e.convertValToQuestionVal = function(t, n) {
                    return t instanceof Date ? "datetime" === n ? e.convertDateTimeToString(t) : e.convertDateToString(t) : t
                }, e
            }();
        String.prototype.format || (String.prototype.format = function() {
            var e = arguments;
            return this.replace(/{(\d+)}/g, (function(t, n) {
                return void 0 !== e[n] ? e[n] : t
            }))
        });
        var l = {
                pagePrevText: "Previous",
                pageNextText: "Next",
                completeText: "Complete",
                previewText: "Preview",
                editText: "Edit",
                startSurveyText: "Start",
                otherItemText: "Other (describe)",
                noneItemText: "None",
                selectAllItemText: "Select All",
                progressText: "Page {0} of {1}",
                indexText: "{0} of {1}",
                panelDynamicProgressText: "{0} of {1}",
                questionsProgressText: "You answered {0}% of all questions",
                emptySurvey: "The survey doesn't contain visible pages or questions.",
                completingSurvey: "Thank you for completing the survey",
                completingSurveyBefore: "Our records show that you have already completed this survey.",
                loadingSurvey: "Loading Survey...",
                placeholder: "Select...",
                ratingOptionsCaption: "Tap to rate here...",
                value: "value",
                requiredError: "Response required.",
                requiredErrorInPanel: "Response required: answer at least one question.",
                requiredInAllRowsError: "Response required: answer questions in all rows.",
                numericError: "The value should be numeric.",
                minError: "The value should not be less than {0}",
                maxError: "The value should not be greater than {0}",
                textMinLength: "Please enter at least {0} character(s).",
                textMaxLength: "Please enter no more than {0} character(s).",
                textMinMaxLength: "Please enter at least {0} and no more than {1} characters.",
                minRowCountError: "Please fill in at least {0} row(s).",
                minSelectError: "Please select at least {0} variant(s).",
                maxSelectError: "Please select no more than {0} variant(s).",
                numericMinMax: "The '{0}' should be at least {1} and at most {2}",
                numericMin: "The '{0}' should be at least {1}",
                numericMax: "The '{0}' should be at most {1}",
                invalidEmail: "Please enter a valid e-mail address.",
                invalidExpression: "The expression: {0} should return 'true'.",
                urlRequestError: "The request returned error '{0}'. {1}",
                urlGetChoicesError: "The request returned empty data or the 'path' property is incorrect",
                exceedMaxSize: "The file size should not exceed {0}.",
                otherRequiredError: "Response required: enter another value.",
                uploadingFile: "Your file is uploading. Please wait several seconds and try again.",
                loadingFile: "Loading...",
                chooseFile: "Choose file(s)...",
                noFileChosen: "No file chosen",
                fileDragAreaPlaceholder: "Drop a file here or click the button below to load the file.",
                confirmDelete: "Do you want to delete the record?",
                keyDuplicationError: "This value should be unique.",
                addColumn: "Add Column",
                addRow: "Add Row",
                removeRow: "Remove",
                emptyRowsText: "There are no rows.",
                addPanel: "Add new",
                removePanel: "Remove",
                choices_Item: "item",
                matrix_column: "Column",
                matrix_row: "Row",
                multipletext_itemname: "text",
                savingData: "The results are being saved on the server...",
                savingDataError: "An error occurred and we could not save the results.",
                savingDataSuccess: "The results were saved successfully!",
                saveAgainButton: "Try again",
                timerMin: "min",
                timerSec: "sec",
                timerSpentAll: "You have spent {0} on this page and {1} in total.",
                timerSpentPage: "You have spent {0} on this page.",
                timerSpentSurvey: "You have spent {0} in total.",
                timerLimitAll: "You have spent {0} of {1} on this page and {2} of {3} in total.",
                timerLimitPage: "You have spent {0} of {1} on this page.",
                timerLimitSurvey: "You have spent {0} of {1} in total.",
                clearCaption: "Clear",
                signaturePlaceHolder: "Sign here",
                chooseFileCaption: "Choose file",
                removeFileCaption: "Remove this file",
                booleanCheckedLabel: "Yes",
                booleanUncheckedLabel: "No",
                confirmRemoveFile: "Are you sure that you want to remove this file: {0}?",
                confirmRemoveAllFiles: "Are you sure that you want to remove all files?",
                questionTitlePatternText: "Question Title",
                modalCancelButtonText: "Cancel",
                modalApplyButtonText: "Apply",
                filterStringPlaceholder: "Type to search...",
                emptyMessage: "No data to display",
                noEntriesText: "There are no entries yet.\nClick the button below to add a new entry.",
                more: "More"
            },
            u = {
                currentLocaleValue: "",
                defaultLocaleValue: "en",
                locales: {},
                localeNames: {},
                supportedLocales: [],
                get currentLocale() {
                    return this.currentLocaleValue === this.defaultLocaleValue ? "" : this.currentLocaleValue
                },
                set currentLocale(e) {
                    "cz" === e && (e = "cs"), this.currentLocaleValue = e
                },
                get defaultLocale() {
                    return this.defaultLocaleValue
                },
                set defaultLocale(e) {
                    "cz" === e && (e = "cs"), this.defaultLocaleValue = e
                },
                getLocaleStrings: function(e) {
                    return this.locales[e]
                },
                getCurrentStrings: function(e) {
                    var t = e && this.locales[e];
                    return t || (t = this.currentLocale ? this.locales[this.currentLocale] : this.locales[this.defaultLocale]), t || (t = this.locales[this.defaultLocale]), t || (t = this.locales.en), t
                },
                getString: function(e, t) {
                    void 0 === t && (t = null);
                    var n = t;
                    t = t || this.currentLocale || this.defaultLocale;
                    var o = this.getCurrentStrings(t);
                    if (o[e]) return o[e];
                    var r = t ? t.indexOf("-") : -1;
                    if (r > -1) return this.getString(e, t.substring(0, r));
                    var i = (o = this.locales[this.defaultLocale])[e];
                    return void 0 === i && (i = this.locales.en[e]), void 0 === i ? this.onGetExternalString(e, n) : i
                },
                getLocales: function(e) {
                    void 0 === e && (e = !1);
                    var t = [];
                    t.push("");
                    var n = this.locales;
                    if (this.supportedLocales && this.supportedLocales.length > 0) {
                        n = {};
                        for (var o = 0; o < this.supportedLocales.length; o++) n[this.supportedLocales[o]] = !0
                    }
                    for (var r in n) e && r == this.defaultLocale || t.push(r);
                    var i = function(e) {
                        if (!e) return "";
                        var t = u.localeNames[e];
                        return t || (t = e), t.toLowerCase()
                    };
                    return t.sort((function(e, t) {
                        var n = i(e),
                            o = i(t);
                        return n === o ? 0 : n < o ? -1 : 1
                    })), t
                },
                onGetExternalString: function(e, t) {}
            },
            c = l;
        u.locales.en = l, u.localeNames.en = "english";
        var p, d = function() {
                function e(e, t, n) {
                    void 0 === t && (t = !1), this.owner = e, this.useMarkdown = t, this.name = n, this.values = {}, this.htmlValues = {}, this.onStringChanged = new ge, this.onCreating()
                }
                return Object.defineProperty(e, "defaultLocale", {
                    get: function() {
                        return s.defaultLocaleName
                    },
                    set: function(e) {
                        s.defaultLocaleName = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getIsMultiple = function() {
                    return !1
                }, Object.defineProperty(e.prototype, "locale", {
                    get: function() {
                        if (this.owner && this.owner.getLocale) {
                            var e = this.owner.getLocale();
                            if (e || !this.sharedData) return e
                        }
                        return this.sharedData ? this.sharedData.locale : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.strChanged = function() {
                    this.searchableText = void 0, void 0 !== this.renderedText && (this.calculatedTextValue = this.calcText(), this.renderedText !== this.calculatedTextValue && (this.renderedText = void 0, this.calculatedTextValue = void 0), this.htmlValues = {}, this.onChanged(), this.onStringChanged.fire(this, {}))
                }, Object.defineProperty(e.prototype, "text", {
                    get: function() {
                        return this.pureText
                    },
                    set: function(e) {
                        this.setLocaleText(this.locale, e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "calculatedText", {
                    get: function() {
                        return this.renderedText = void 0 !== this.calculatedTextValue ? this.calculatedTextValue : this.calcText(), this.calculatedTextValue = void 0, this.renderedText
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.calcText = function() {
                    var e = this.pureText;
                    return e && this.owner && this.owner.getProcessedText && e.indexOf("{") > -1 && (e = this.owner.getProcessedText(e)), this.onGetTextCallback && (e = this.onGetTextCallback(e)), e
                }, Object.defineProperty(e.prototype, "pureText", {
                    get: function() {
                        var e = this.locale;
                        e || (e = this.defaultLoc);
                        var t = this.getValue(e);
                        if (t || e !== this.defaultLoc || (t = this.getValue(u.defaultLocale)), !t) {
                            var n = this.getRootDialect(e);
                            n && (t = this.getValue(n))
                        }
                        return t || e === this.defaultLoc || (t = this.getValue(this.defaultLoc)), !t && this.getLocalizationName() && (t = this.getLocalizationStr(), this.onGetLocalizationTextCallback && (t = this.onGetLocalizationTextCallback(t))), t || (t = ""), t
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getRootDialect = function(e) {
                    if (!e) return e;
                    var t = e.indexOf("-");
                    return t > -1 ? e.substring(0, t) : ""
                }, e.prototype.getLocalizationName = function() {
                    return this.sharedData ? this.sharedData.localizationName : this.localizationName
                }, e.prototype.getLocalizationStr = function() {
                    var e = this.getLocalizationName();
                    return e ? u.getString(e, this.locale) : ""
                }, Object.defineProperty(e.prototype, "hasHtml", {
                    get: function() {
                        return this.hasHtmlValue()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "html", {
                    get: function() {
                        return this.hasHtml ? this.getHtmlValue() : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isEmpty", {
                    get: function() {
                        return 0 == this.getValuesKeys().length
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "textOrHtml", {
                    get: function() {
                        return this.hasHtml ? this.getHtmlValue() : this.calculatedText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "renderedHtml", {
                    get: function() {
                        return this.textOrHtml
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getLocaleText = function(e) {
                    e || (e = this.defaultLoc);
                    var t = this.getValue(e);
                    return t || ""
                }, e.prototype.getLocaleTextWithDefault = function(e) {
                    var t = this.getLocaleText(e);
                    return !t && this.onGetDefaultTextCallback ? this.onGetDefaultTextCallback() : t
                }, e.prototype.setLocaleText = function(e, t) {
                    if (this.storeDefaultText || t != this.getLocaleTextWithDefault(e)) {
                        if (s.storeDuplicatedTranslations || !t || !e || e == this.defaultLoc || this.getValue(e) || t != this.getLocaleText(this.defaultLoc)) {
                            var n = this.locale;
                            e || (e = this.defaultLoc), n || (n = this.defaultLoc);
                            var o = this.onStrChanged && e === n ? this.pureText : void 0;
                            delete this.htmlValues[e], t ? "string" == typeof t && (this.canRemoveLocValue(e, t) ? this.setLocaleText(e, null) : (this.setValue(e, t), e == this.defaultLoc && this.deleteValuesEqualsToDefault(t))) : this.getValue(e) && this.deleteValue(e), this.fireStrChanged(o, t)
                        }
                    } else {
                        if (t || e && e !== this.defaultLoc) return;
                        var r = u.defaultLocale,
                            i = this.getValue(r);
                        r && i && (this.setValue(r, t), this.fireStrChanged(i, t))
                    }
                }, e.prototype.canRemoveLocValue = function(e, t) {
                    if (s.storeDuplicatedTranslations) return !1;
                    if (e === this.defaultLoc) return !1;
                    var n = this.getRootDialect(e);
                    if (n) {
                        var o = this.getLocaleText(n);
                        return o ? o == t : this.canRemoveLocValue(n, t)
                    }
                    return t == this.getLocaleText(this.defaultLoc)
                }, e.prototype.fireStrChanged = function(e, t) {
                    this.strChanged(), this.onStrChanged && e !== t && this.onStrChanged(e, t)
                }, e.prototype.hasNonDefaultText = function() {
                    var e = this.getValuesKeys();
                    return 0 != e.length && (e.length > 1 || e[0] != this.defaultLoc)
                }, e.prototype.getLocales = function() {
                    var e = this.getValuesKeys();
                    return 0 == e.length ? [] : e
                }, e.prototype.getJson = function() {
                    if (this.sharedData) return this.sharedData.getJson();
                    var e = this.getValuesKeys();
                    return 0 == e.length ? null : 1 != e.length || e[0] != s.defaultLocaleName || s.serializeLocalizableStringAsObject ? this.values : this.values[e[0]]
                }, e.prototype.setJson = function(e) {
                    if (this.sharedData) this.sharedData.setJson(e);
                    else if (this.values = {}, this.htmlValues = {}, e) {
                        if ("string" == typeof e) this.setLocaleText(null, e);
                        else
                            for (var t in e) this.setLocaleText(t, e[t]);
                        this.strChanged()
                    }
                }, Object.defineProperty(e.prototype, "renderAs", {
                    get: function() {
                        return this.owner && "function" == typeof this.owner.getRenderer && this.owner.getRenderer(this.name) || e.defaultRenderer
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "renderAsData", {
                    get: function() {
                        return this.owner && "function" == typeof this.owner.getRendererContext && this.owner.getRendererContext(this) || this
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.equals = function(e) {
                    return this.sharedData ? this.sharedData.equals(e) : !(!e || !e.values) && a.isTwoValueEquals(this.values, e.values, !1, !0, !1)
                }, e.prototype.setFindText = function(e) {
                    if (this.searchText != e) {
                        if (this.searchText = e, !this.searchableText) {
                            var t = this.textOrHtml;
                            this.searchableText = t ? t.toLowerCase() : ""
                        }
                        var n = this.searchableText,
                            o = n && e ? n.indexOf(e) : void 0;
                        return o < 0 && (o = void 0), null == o && this.searchIndex == o || (this.searchIndex = o, this.onSearchChanged && this.onSearchChanged()), null != this.searchIndex
                    }
                }, e.prototype.onChanged = function() {}, e.prototype.onCreating = function() {}, e.prototype.hasHtmlValue = function() {
                    if (!this.owner || !this.useMarkdown) return !1;
                    var e = this.locale;
                    if (e || (e = this.defaultLoc), void 0 !== this.htmlValues[e]) return !!this.htmlValues[e];
                    var t = this.calculatedText;
                    if (!t) return !1;
                    if (this.getLocalizationName() && t === this.getLocalizationStr()) return !1;
                    var n = this.owner.getMarkdownHtml(t, this.name);
                    return this.htmlValues[e] = n, !!n
                }, e.prototype.getHtmlValue = function() {
                    var e = this.locale;
                    return e || (e = this.defaultLoc), this.htmlValues[e]
                }, e.prototype.deleteValuesEqualsToDefault = function(e) {
                    for (var t = this.getValuesKeys(), n = 0; n < t.length; n++) t[n] != this.defaultLoc && this.getValue(t[n]) == e && this.deleteValue(t[n])
                }, e.prototype.getValue = function(e) {
                    return this.sharedData ? this.sharedData.getValue(e) : this.values[e]
                }, e.prototype.setValue = function(e, t) {
                    this.sharedData ? this.sharedData.setValue(e, t) : this.values[e] = t
                }, e.prototype.deleteValue = function(e) {
                    this.sharedData ? this.sharedData.deleteValue(e) : delete this.values[e]
                }, e.prototype.getValuesKeys = function() {
                    return this.sharedData ? this.sharedData.getValuesKeys() : Object.keys(this.values)
                }, Object.defineProperty(e.prototype, "defaultLoc", {
                    get: function() {
                        return s.defaultLocaleName
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.SerializeAsObject = !1, e.defaultRenderer = "sv-string-viewer", e.editableRenderer = "sv-string-editor", e
            }(),
            h = function() {
                function e(e) {
                    this.owner = e, this.values = {}
                }
                return e.prototype.getIsMultiple = function() {
                    return !0
                }, Object.defineProperty(e.prototype, "locale", {
                    get: function() {
                        return this.owner && this.owner.getLocale ? this.owner.getLocale() : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "value", {
                    get: function() {
                        return this.getValue("")
                    },
                    set: function(e) {
                        this.setValue("", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "text", {
                    get: function() {
                        return Array.isArray(this.value) ? this.value.join("\n") : ""
                    },
                    set: function(e) {
                        this.value = e ? e.split("\n") : []
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getLocaleText = function(e) {
                    var t = this.getValueCore(e, !e || e === this.locale);
                    return t && Array.isArray(t) && 0 != t.length ? t.join("\n") : ""
                }, e.prototype.setLocaleText = function(e, t) {
                    var n = t ? t.split("\n") : null;
                    this.setValue(e, n)
                }, e.prototype.getValue = function(e) {
                    return this.getValueCore(e)
                }, e.prototype.getValueCore = function(e, t) {
                    if (void 0 === t && (t = !0), e = this.getLocale(e), this.values[e]) return this.values[e];
                    if (t) {
                        var n = s.defaultLocaleName;
                        if (e !== n && this.values[n]) return this.values[n]
                    }
                    return []
                }, e.prototype.setValue = function(e, t) {
                    e = this.getLocale(e);
                    var n = a.createCopy(this.values);
                    t && 0 != t.length ? this.values[e] = t : delete this.values[e], this.onValueChanged && this.onValueChanged(n, this.values)
                }, e.prototype.hasValue = function(e) {
                    return void 0 === e && (e = ""), !this.isEmpty && this.getValue(e).length > 0
                }, Object.defineProperty(e.prototype, "isEmpty", {
                    get: function() {
                        return 0 == this.getValuesKeys().length
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getLocale = function(e) {
                    return e || ((e = this.locale) || s.defaultLocaleName)
                }, e.prototype.getLocales = function() {
                    var e = this.getValuesKeys();
                    return 0 == e.length ? [] : e
                }, e.prototype.getJson = function() {
                    var e = this.getValuesKeys();
                    return 0 == e.length ? null : 1 != e.length || e[0] != s.defaultLocaleName || s.serializeLocalizableStringAsObject ? a.createCopy(this.values) : this.values[e[0]]
                }, e.prototype.setJson = function(e) {
                    if (this.values = {}, e)
                        if (Array.isArray(e)) this.setValue(null, e);
                        else
                            for (var t in e) this.setValue(t, e[t])
                }, e.prototype.getValuesKeys = function() {
                    return Object.keys(this.values)
                }, e
            }(),
            f = (p = function(e, t) {
                return (p = Object.setPrototypeOf || {
                        __proto__: []
                    }
                    instanceof Array && function(e, t) {
                        e.__proto__ = t
                    } || function(e, t) {
                        for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                    })(e, t)
            }, function(e, t) {
                if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");

                function n() {
                    this.constructor = e
                }
                p(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
            }),
            m = function(e, t, n) {
                if (n || 2 === arguments.length)
                    for (var o, r = 0, i = t.length; r < i; r++) !o && r in t || (o || (o = Array.prototype.slice.call(t, 0, r)), o[r] = t[r]);
                return e.concat(o || Array.prototype.slice.call(t))
            };

        function g(e, t, n) {
            var o = e.getLocalizableString(n);
            o || (o = e.createLocalizableString(n, e, !0), "object" == typeof t.localizable && "function" == typeof t.localizable.onGetTextCallback && (o.onGetTextCallback = t.localizable.onGetTextCallback))
        }

        function y(e) {
            return function(t, n) {
                var o = function(e, t) {
                    if (t && "object" == typeof t && t.type === de.ComputedUpdaterType) {
                        he.startCollectDependencies((function() {
                            return e[n] = t.updater()
                        }), e, n);
                        var o = t.updater(),
                            r = he.finishCollectDependencies();
                        return t.setDependencies(r), o
                    }
                    return t
                };
                e && e.localizable ? (Object.defineProperty(t, n, {
                    get: function() {
                        return function(e, t, n) {
                            g(e, t, n);
                            var o = e.getLocalizableStringText(n);
                            if (o) return o;
                            if ("object" == typeof t.localizable && t.localizable.defaultStr) {
                                var r = e.getLocale ? e.getLocale() : "";
                                return u.getString(t.localizable.defaultStr, r)
                            }
                            return ""
                        }(this, e, n)
                    },
                    set: function(t) {
                        g(this, e, n);
                        var r = o(this, t);
                        this.setLocalizableStringText(n, r), e && e.onSet && e.onSet(r, this)
                    }
                }), Object.defineProperty(t, "object" == typeof e.localizable && e.localizable.name ? e.localizable.name : "loc" + n.charAt(0).toUpperCase() + n.slice(1), {
                    get: function() {
                        return g(this, e, n), this.getLocalizableString(n)
                    }
                })) : Object.defineProperty(t, n, {
                    get: function() {
                        var t = this.getPropertyValue(n);
                        if (void 0 !== t) return t;
                        if (e) {
                            if ("function" == typeof e.getDefaultValue) return e.getDefaultValue(this);
                            if (void 0 !== e.defaultValue) return e.defaultValue
                        }
                    },
                    set: function(t) {
                        var r = o(this, t);
                        this.setPropertyValue(n, r), e && e.onSet && e.onSet(r, this)
                    }
                })
            }
        }

        function v(e, t, n) {
            e.ensureArray(n, (function(n, o) {
                var r = t ? t.onPush : null;
                r && r(n, o, e)
            }), (function(n, o) {
                var r = t ? t.onRemove : null;
                r && r(n, o, e)
            }))
        }

        function b(e) {
            return function(t, n) {
                Object.defineProperty(t, n, {
                    get: function() {
                        return v(this, e, n), this.getPropertyValue(n)
                    },
                    set: function(t) {
                        v(this, e, n);
                        var o = this.getPropertyValue(n);
                        t !== o && (o ? o.splice.apply(o, m([0, o.length], t || [], !1)) : this.setPropertyValue(n, t), e && e.onSet && e.onSet(t, this))
                    }
                })
            }
        }
        var x = function() {
                function e(t, n, o) {
                    void 0 === o && (o = !1), this.name = n, this.isRequiredValue = !1, this.isUniqueValue = !1, this.isSerializable = !0, this.isLightSerializable = !0, this.isCustom = !1, this.isDynamicChoices = !1, this.isBindable = !1, this.category = "", this.categoryIndex = -1, this.visibleIndex = -1, this.maxLength = -1, this.isArray = !1, this.classInfoValue = t, this.isRequiredValue = o, this.idValue = e.Index++
                }
                return Object.defineProperty(e.prototype, "id", {
                    get: function() {
                        return this.idValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "classInfo", {
                    get: function() {
                        return this.classInfoValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "type", {
                    get: function() {
                        return this.typeValue ? this.typeValue : "string"
                    },
                    set: function(e) {
                        "itemvalues" === e && (e = "itemvalue[]"), "textitems" === e && (e = "textitem[]"), this.typeValue = e, this.typeValue.indexOf("[]") === this.typeValue.length - 2 && (this.isArray = !0, this.className = this.typeValue.substring(0, this.typeValue.length - 2))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isRequired", {
                    get: function() {
                        return this.isRequiredValue
                    },
                    set: function(e) {
                        this.isRequiredValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isUnique", {
                    get: function() {
                        return this.isUniqueValue
                    },
                    set: function(e) {
                        this.isUniqueValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "uniquePropertyName", {
                    get: function() {
                        return this.uniquePropertyValue
                    },
                    set: function(e) {
                        this.uniquePropertyValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "hasToUseGetValue", {
                    get: function() {
                        return this.onGetValue || this.serializationProperty
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "defaultValue", {
                    get: function() {
                        var t = this.defaultValueValue;
                        return e.getItemValuesDefaultValue && R.metaData.isDescendantOf(this.className, "itemvalue") && (t = e.getItemValuesDefaultValue(this.defaultValueValue || [], this.className)), t
                    },
                    set: function(e) {
                        this.defaultValueValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.isDefaultValue = function(e) {
                    return a.isValueEmpty(this.defaultValue) ? !1 === e && ("boolean" == this.type || "switch" == this.type) || "" === e || a.isValueEmpty(e) : a.isTwoValueEquals(e, this.defaultValue, !1, !0, !1)
                }, e.prototype.getValue = function(e) {
                    return this.onGetValue ? this.onGetValue(e) : this.serializationProperty && e[this.serializationProperty] ? e[this.serializationProperty].getJson() : e[this.name]
                }, e.prototype.getPropertyValue = function(e) {
                    return this.isLocalizable ? e[this.serializationProperty] ? e[this.serializationProperty].text : null : this.getValue(e)
                }, Object.defineProperty(e.prototype, "hasToUseSetValue", {
                    get: function() {
                        return this.onSetValue || this.serializationProperty
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.settingValue = function(e, t) {
                    return !this.onSettingValue || e.isLoadingFromJson ? t : this.onSettingValue(e, t)
                }, e.prototype.setValue = function(e, t, n) {
                    this.onSetValue ? this.onSetValue(e, t, n) : this.serializationProperty && e[this.serializationProperty] ? e[this.serializationProperty].setJson(t) : (t && "string" == typeof t && ("number" == this.type && (t = parseInt(t)), "boolean" != this.type && "switch" != this.type || (t = "true" === t.toLowerCase())), e[this.name] = t)
                }, e.prototype.getObjType = function(e) {
                    return this.classNamePart ? e.replace(this.classNamePart, "") : e
                }, e.prototype.getClassName = function(e) {
                    return e && (e = e.toLowerCase()), this.classNamePart && e.indexOf(this.classNamePart) < 0 ? e + this.classNamePart : e
                }, Object.defineProperty(e.prototype, "choices", {
                    get: function() {
                        return this.getChoices(null)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "hasChoices", {
                    get: function() {
                        return !!this.choicesValue || !!this.choicesfunc
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getChoices = function(e, t) {
                    return void 0 === t && (t = null), null != this.choicesValue ? this.choicesValue : null != this.choicesfunc ? this.choicesfunc(e, t) : null
                }, e.prototype.setChoices = function(e, t) {
                    void 0 === t && (t = null), this.choicesValue = e, this.choicesfunc = t
                }, e.prototype.getBaseValue = function() {
                    return this.baseValue ? "function" == typeof this.baseValue ? this.baseValue() : this.baseValue : ""
                }, e.prototype.setBaseValue = function(e) {
                    this.baseValue = e
                }, Object.defineProperty(e.prototype, "readOnly", {
                    get: function() {
                        return null != this.readOnlyValue && this.readOnlyValue
                    },
                    set: function(e) {
                        this.readOnlyValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.isVisible = function(e, t) {
                    void 0 === t && (t = null);
                    var n = !this.layout || this.layout == e;
                    return !(!this.visible || !n) && (!this.visibleIf || !t || this.visibleIf(t))
                }, Object.defineProperty(e.prototype, "visible", {
                    get: function() {
                        return null == this.visibleValue || this.visibleValue
                    },
                    set: function(e) {
                        this.visibleValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isLocalizable", {
                    get: function() {
                        return null != this.isLocalizableValue && this.isLocalizableValue
                    },
                    set: function(e) {
                        this.isLocalizableValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "dataList", {
                    get: function() {
                        return Array.isArray(this.dataListValue) ? this.dataListValue : []
                    },
                    set: function(e) {
                        this.dataListValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.mergeWith = function(t) {
                    for (var n = e.mergableValues, o = 0; o < n.length; o++) this.mergeValue(t, n[o])
                }, e.prototype.addDependedProperty = function(e) {
                    this.dependedProperties || (this.dependedProperties = []), this.dependedProperties.indexOf(e) < 0 && this.dependedProperties.push(e)
                }, e.prototype.getDependedProperties = function() {
                    return this.dependedProperties ? this.dependedProperties : []
                }, e.prototype.schemaType = function() {
                    return this.className || this.baseClassName ? "array" : "boolean" == this.type || "number" == this.type ? this.type : "string"
                }, e.prototype.mergeValue = function(e, t) {
                    null == this[t] && null != e[t] && (this[t] = e[t])
                }, e.Index = 1, e.mergableValues = ["typeValue", "choicesValue", "baseValue", "readOnlyValue", "visibleValue", "isSerializable", "isLightSerializable", "isCustom", "isBindable", "isUnique", "uniquePropertyName", "isDynamicChoices", "isLocalizableValue", "className", "alternativeName", "layout", "classNamePart", "baseClassName", "defaultValue", "serializationProperty", "onGetValue", "onSetValue", "onSettingValue", "displayName", "category", "categoryIndex", "visibleIndex", "nextToProperty", "showMode", "dependedProperties", "visibleIf", "onExecuteExpression", "onPropertyEditorUpdate", "maxLength", "maxValue", "minValue", "dataListValue"], e
            }(),
            C = function() {
                function e() {}
                return e.addProperty = function(t, n) {
                    t = t.toLowerCase();
                    var o = e.properties;
                    o[t] || (o[t] = []), o[t].push(n)
                }, e.removeProperty = function(t, n) {
                    t = t.toLowerCase();
                    var o = e.properties;
                    if (o[t])
                        for (var r = o[t], i = 0; i < r.length; i++)
                            if (r[i].name == n) {
                                o[t].splice(i, 1);
                                break
                            }
                }, e.removeAllProperties = function(t) {
                    t = t.toLowerCase(), delete e.properties[t]
                }, e.addClass = function(t, n) {
                    t = t.toLowerCase(), n && (n = n.toLowerCase()), e.parentClasses[t] = n
                }, e.getProperties = function(t) {
                    t = t.toLowerCase();
                    for (var n = [], o = e.properties; t;) {
                        var r = o[t];
                        if (r)
                            for (var i = 0; i < r.length; i++) n.push(r[i]);
                        t = e.parentClasses[t]
                    }
                    return n
                }, e.createProperties = function(t) {
                    t && t.getType && e.createPropertiesCore(t, t.getType())
                }, e.createPropertiesCore = function(t, n) {
                    var o = e.properties;
                    o[n] && e.createPropertiesInObj(t, o[n]);
                    var r = e.parentClasses[n];
                    r && e.createPropertiesCore(t, r)
                }, e.createPropertiesInObj = function(t, n) {
                    for (var o = 0; o < n.length; o++) e.createPropertyInObj(t, n[o])
                }, e.createPropertyInObj = function(t, n) {
                    if (!(e.checkIsPropertyExists(t, n.name) || n.serializationProperty && e.checkIsPropertyExists(t, n.serializationProperty))) {
                        if (n.isLocalizable && n.serializationProperty && t.createCustomLocalizableObj) {
                            t.createCustomLocalizableObj(n.name);
                            var o = {
                                get: function() {
                                    return t.getLocalizableString(n.name)
                                }
                            };
                            Object.defineProperty(t, n.serializationProperty, o);
                            var r = {
                                get: function() {
                                    return t.getLocalizableStringText(n.name, n.defaultValue)
                                },
                                set: function(e) {
                                    t.setLocalizableStringText(n.name, e)
                                }
                            };
                            Object.defineProperty(t, n.name, r)
                        } else {
                            var i = n.defaultValue,
                                s = n.isArray || "multiplevalues" === n.type;
                            if ("function" == typeof t.createNewArray && (R.metaData.isDescendantOf(n.className, "itemvalue") ? (t.createNewArray(n.name, (function(e) {
                                    e.locOwner = t, e.ownerPropertyName = n.name
                                })), s = !0) : s && t.createNewArray(n.name), s && (Array.isArray(i) && t.setPropertyValue(n.name, i), i = null)), t.getPropertyValue && t.setPropertyValue) {
                                r = {
                                    get: function() {
                                        return n.onGetValue ? n.onGetValue(t) : t.getPropertyValue(n.name, i)
                                    },
                                    set: function(e) {
                                        n.onSetValue ? n.onSetValue(t, e, null) : t.setPropertyValue(n.name, e)
                                    }
                                };
                                Object.defineProperty(t, n.name, r)
                            }
                        }
                        "condition" !== n.type && "expression" !== n.type || n.onExecuteExpression && t.addExpressionProperty(n.name, n.onExecuteExpression)
                    }
                }, e.checkIsPropertyExists = function(e, t) {
                    return e.hasOwnProperty(t) || e[t]
                }, e.properties = {}, e.parentClasses = {}, e
            }(),
            w = function() {
                function e(e, t, n, o) {
                    void 0 === n && (n = null), void 0 === o && (o = null), this.name = e, this.creator = n, this.parentName = o, this.properties = null, e = e.toLowerCase(), this.isCustomValue = !n && "survey" !== e, this.parentName && (this.parentName = this.parentName.toLowerCase(), C.addClass(e, this.parentName), n && this.makeParentRegularClass()), this.properties = new Array;
                    for (var r = 0; r < t.length; r++) this.createProperty(t[r], this.isCustom)
                }
                return e.prototype.find = function(e) {
                    for (var t = 0; t < this.properties.length; t++)
                        if (this.properties[t].name == e) return this.properties[t];
                    return null
                }, Object.defineProperty(e.prototype, "isCustom", {
                    get: function() {
                        return this.isCustomValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.isOverridedProp = function(e) {
                    return !!this.parentName && !!I.findProperty(this.parentName, e)
                }, e.prototype.hasRegularChildClass = function() {
                    if (this.isCustom) {
                        this.isCustomValue = !1;
                        for (var e = 0; e < this.properties.length; e++) this.properties[e].isCustom = !1;
                        C.removeAllProperties(this.name), this.makeParentRegularClass()
                    }
                }, e.prototype.makeParentRegularClass = function() {
                    if (this.parentName) {
                        var e = I.findClass(this.parentName);
                        e && e.hasRegularChildClass()
                    }
                }, e.prototype.createProperty = function(t, n) {
                    void 0 === n && (n = !1);
                    var o = "string" == typeof t ? t : t.name;
                    if (o) {
                        var r = null,
                            i = o.indexOf(e.typeSymbol);
                        i > -1 && (r = o.substring(i + 1), o = o.substring(0, i));
                        var s = this.getIsPropertyNameRequired(o) || !!t.isRequired;
                        o = this.getPropertyName(o);
                        var l = new x(this, o, s);
                        if (r && (l.type = r), "object" == typeof t) {
                            if (t.type && (l.type = t.type), void 0 !== t.default && (l.defaultValue = t.default), a.isValueEmpty(t.isSerializable) || (l.isSerializable = t.isSerializable), a.isValueEmpty(t.isLightSerializable) || (l.isLightSerializable = t.isLightSerializable), a.isValueEmpty(t.maxLength) || (l.maxLength = t.maxLength), a.isValueEmpty(t.displayName) || (l.displayName = t.displayName), a.isValueEmpty(t.category) || (l.category = t.category), a.isValueEmpty(t.categoryIndex) || (l.categoryIndex = t.categoryIndex), a.isValueEmpty(t.nextToProperty) || (l.nextToProperty = t.nextToProperty), a.isValueEmpty(t.visibleIndex) || (l.visibleIndex = t.visibleIndex), a.isValueEmpty(t.showMode) || (l.showMode = t.showMode), a.isValueEmpty(t.maxValue) || (l.maxValue = t.maxValue), a.isValueEmpty(t.minValue) || (l.minValue = t.minValue), a.isValueEmpty(t.dataList) || (l.dataList = t.dataList), a.isValueEmpty(t.isDynamicChoices) || (l.isDynamicChoices = t.isDynamicChoices), a.isValueEmpty(t.isBindable) || (l.isBindable = t.isBindable), a.isValueEmpty(t.isUnique) || (l.isUnique = t.isUnique), a.isValueEmpty(t.uniqueProperty) || (l.uniquePropertyName = t.uniqueProperty), a.isValueEmpty(t.isArray) || (l.isArray = t.isArray), !0 !== t.visible && !1 !== t.visible || (l.visible = t.visible), t.visibleIf && (l.visibleIf = t.visibleIf), t.onExecuteExpression && (l.onExecuteExpression = t.onExecuteExpression), t.onPropertyEditorUpdate && (l.onPropertyEditorUpdate = t.onPropertyEditorUpdate), !0 === t.readOnly && (l.readOnly = !0), t.choices) {
                                var u = "function" == typeof t.choices ? t.choices : null,
                                    c = "function" != typeof t.choices ? t.choices : null;
                                l.setChoices(c, u)
                            }
                            if (t.baseValue && l.setBaseValue(t.baseValue), t.onGetValue && (l.onGetValue = t.onGetValue), t.onSetValue && (l.onSetValue = t.onSetValue), t.onSettingValue && (l.onSettingValue = t.onSettingValue), t.isLocalizable && (t.serializationProperty = "loc" + l.name), t.serializationProperty) l.serializationProperty = t.serializationProperty, l.serializationProperty && 0 == l.serializationProperty.indexOf("loc") && (l.isLocalizable = !0);
                            t.isLocalizable && (l.isLocalizable = t.isLocalizable), t.className && (l.className = t.className), t.baseClassName && (l.baseClassName = t.baseClassName), t.classNamePart && (l.classNamePart = t.classNamePart), t.alternativeName && (l.alternativeName = t.alternativeName), t.layout && (l.layout = t.layout), t.dependsOn && this.addDependsOnProperties(l, t.dependsOn)
                        }
                        return this.properties.push(l), n && !this.isOverridedProp(l.name) && (l.isCustom = !0, C.addProperty(this.name, l)), l
                    }
                }, e.prototype.addDependsOnProperties = function(e, t) {
                    if (Array.isArray(t))
                        for (var n = 0; n < t.length; n++) this.addDependsOnProperty(e, t[n]);
                    else this.addDependsOnProperty(e, t)
                }, e.prototype.addDependsOnProperty = function(e, t) {
                    var n = this.find(t);
                    n || (n = I.findProperty(this.parentName, t)), n && n.addDependedProperty(e.name)
                }, e.prototype.getIsPropertyNameRequired = function(t) {
                    return t.length > 0 && t[0] == e.requiredSymbol
                }, e.prototype.getPropertyName = function(e) {
                    return this.getIsPropertyNameRequired(e) ? e = e.slice(1) : e
                }, e.requiredSymbol = "!", e.typeSymbol = ":", e
            }(),
            P = function() {
                function e() {
                    this.classes = {}, this.alternativeNames = {}, this.childrenClasses = {}, this.classProperties = {}, this.classHashProperties = {}
                }
                return e.prototype.getObjPropertyValue = function(e, t) {
                    if (this.isObjWrapper(e)) {
                        var n = e.getOriginalObj();
                        if (o = I.findProperty(n.getType(), t)) return this.getObjPropertyValueCore(n, o)
                    }
                    var o;
                    return (o = I.findProperty(e.getType(), t)) ? this.getObjPropertyValueCore(e, o) : e[t]
                }, e.prototype.setObjPropertyValue = function(e, t, n) {
                    if (e[t] !== n)
                        if (e[t] && e[t].setJson) e[t].setJson(n);
                        else {
                            if (Array.isArray(n)) {
                                for (var o = [], r = 0; r < n.length; r++) o.push(n[r]);
                                n = o
                            }
                            e[t] = n
                        }
                }, e.prototype.getObjPropertyValueCore = function(e, t) {
                    if (!t.isSerializable) return e[t.name];
                    if (t.isLocalizable) {
                        if (t.isArray) return e[t.name];
                        if (t.serializationProperty) return e[t.serializationProperty].text
                    }
                    return e.getPropertyValue(t.name)
                }, e.prototype.isObjWrapper = function(e) {
                    return !!e.getOriginalObj && !!e.getOriginalObj()
                }, e.prototype.addClass = function(e, t, n, o) {
                    void 0 === n && (n = null), void 0 === o && (o = null), e = e.toLowerCase();
                    var r = new w(e, t, n, o);
                    (this.classes[e] = r, o) && (o = o.toLowerCase(), this.childrenClasses[o] || (this.childrenClasses[o] = []), this.childrenClasses[o].push(r));
                    return r
                }, e.prototype.removeClass = function(e) {
                    var t = this.findClass(e);
                    if (t && (delete this.classes[t.name], t.parentName)) {
                        var n = this.childrenClasses[t.parentName].indexOf(t);
                        n > -1 && this.childrenClasses[t.parentName].splice(n, 1)
                    }
                }, e.prototype.overrideClassCreatore = function(e, t) {
                    this.overrideClassCreator(e, t)
                }, e.prototype.overrideClassCreator = function(e, t) {
                    e = e.toLowerCase();
                    var n = this.findClass(e);
                    n && (n.creator = t)
                }, e.prototype.getProperties = function(e) {
                    var t = this.findClass(e);
                    if (!t) return [];
                    var n = this.classProperties[t.name];
                    return n || (this.fillPropertiesForClass(t.name), this.classProperties[t.name])
                }, e.prototype.getHashProperties = function(e) {
                    var t = this.findClass(e);
                    if (!t) return {};
                    var n = this.classHashProperties[t.name];
                    return n || (this.fillPropertiesForClass(t.name), this.classHashProperties[t.name])
                }, e.prototype.fillPropertiesForClass = function(e) {
                    var t = new Array,
                        n = {};
                    this.fillProperties(e, t, n), this.classProperties[e] = t, this.classHashProperties[e] = n
                }, e.prototype.getPropertiesByObj = function(e) {
                    if (!e || !e.getType) return [];
                    for (var t = {}, n = this.getProperties(e.getType()), o = 0; o < n.length; o++) t[n[o].name] = n[o];
                    var r = e.getDynamicType ? this.getProperties(e.getDynamicType()) : null;
                    if (r && r.length > 0)
                        for (o = 0; o < r.length; o++) {
                            var i = r[o];
                            t[i.name] || (t[i.name] = i)
                        }
                    return Object.keys(t).map((function(e) {
                        return t[e]
                    }))
                }, e.prototype.getDynamicPropertiesByObj = function(e, t) {
                    if (void 0 === t && (t = null), !e || !e.getType || !e.getDynamicType && !t) return [];
                    var n = t || e.getDynamicType();
                    if (!n) return [];
                    var o = this.getProperties(n);
                    if (!o || 0 == o.length) return [];
                    for (var r = {}, i = this.getProperties(e.getType()), s = 0; s < i.length; s++) r[i[s].name] = i[s];
                    var a = [];
                    for (s = 0; s < o.length; s++) {
                        var l = o[s];
                        r[l.name] || a.push(l)
                    }
                    return a
                }, e.prototype.hasOriginalProperty = function(e, t) {
                    return !!this.getOriginalProperty(e, t)
                }, e.prototype.getOriginalProperty = function(e, t) {
                    var n = this.findProperty(e.getType(), t);
                    return n || (this.isObjWrapper(e) ? this.findProperty(e.getOriginalObj().getType(), t) : null)
                }, e.prototype.getProperty = function(e, t) {
                    var n = this.findProperty(e, t);
                    if (!n) return n;
                    var o = this.findClass(e);
                    if (n.classInfo === o) return n;
                    var r = new x(o, n.name, n.isRequired);
                    return r.mergeWith(n), r.isArray = n.isArray, o.properties.push(r), this.emptyClassPropertiesHash(o), r
                }, e.prototype.findProperty = function(e, t) {
                    var n = this.getHashProperties(e)[t];
                    return n || null
                }, e.prototype.findProperties = function(e, t) {
                    for (var n = [], o = this.getHashProperties(e), r = 0; r < t.length; r++) {
                        var i = o[t[r]];
                        i && n.push(i)
                    }
                    return n
                }, e.prototype.getAllPropertiesByName = function(e) {
                    for (var t = new Array, n = this.getAllClasses(), o = 0; o < n.length; o++)
                        for (var r = this.findClass(n[o]), i = 0; i < r.properties.length; i++)
                            if (r.properties[i].name == e) {
                                t.push(r.properties[i]);
                                break
                            } return t
                }, e.prototype.getAllClasses = function() {
                    var e = new Array;
                    for (var t in this.classes) e.push(t);
                    return e
                }, e.prototype.createClass = function(e, t) {
                    void 0 === t && (t = void 0), e = e.toLowerCase();
                    var n = this.findClass(e);
                    if (!n) return null;
                    if (n.creator) return n.creator(t);
                    for (var o = n.parentName; o;) {
                        if (!(n = this.findClass(o))) return null;
                        if (o = n.parentName, n.creator) return this.createCustomType(e, n.creator, t)
                    }
                    return null
                }, e.prototype.createCustomType = function(e, t, n) {
                    void 0 === n && (n = void 0), e = e.toLowerCase();
                    var o = t(n),
                        r = e,
                        i = o.getTemplate ? o.getTemplate() : o.getType();
                    return o.getType = function() {
                        return r
                    }, o.getTemplate = function() {
                        return i
                    }, C.createProperties(o), o
                }, e.prototype.getChildrenClasses = function(e, t) {
                    void 0 === t && (t = !1), e = e.toLowerCase();
                    var n = [];
                    return this.fillChildrenClasses(e, t, n), n
                }, e.prototype.getRequiredProperties = function(e) {
                    for (var t = this.getProperties(e), n = [], o = 0; o < t.length; o++) t[o].isRequired && n.push(t[o].name);
                    return n
                }, e.prototype.addProperties = function(e, t) {
                    e = e.toLowerCase();
                    for (var n = this.findClass(e), o = 0; o < t.length; o++) this.addCustomPropertyCore(n, t[o])
                }, e.prototype.addProperty = function(e, t) {
                    return this.addCustomPropertyCore(this.findClass(e), t)
                }, e.prototype.addCustomPropertyCore = function(e, t) {
                    if (!e) return null;
                    var n = e.createProperty(t, !0);
                    return n && this.emptyClassPropertiesHash(e), n
                }, e.prototype.removeProperty = function(e, t) {
                    var n = this.findClass(e);
                    if (!n) return !1;
                    var o = n.find(t);
                    o && (this.removePropertyFromClass(n, o), this.emptyClassPropertiesHash(n), C.removeProperty(n.name, t))
                }, e.prototype.removePropertyFromClass = function(e, t) {
                    var n = e.properties.indexOf(t);
                    n < 0 || e.properties.splice(n, 1)
                }, e.prototype.emptyClassPropertiesHash = function(e) {
                    this.classProperties[e.name] = null, this.classHashProperties[e.name] = null;
                    for (var t = this.getChildrenClasses(e.name), n = 0; n < t.length; n++) this.classProperties[t[n].name] = null, this.classHashProperties[t[n].name] = null
                }, e.prototype.fillChildrenClasses = function(e, t, n) {
                    var o = this.childrenClasses[e];
                    if (o)
                        for (var r = 0; r < o.length; r++) t && !o[r].creator || n.push(o[r]), this.fillChildrenClasses(o[r].name, t, n)
                }, e.prototype.findClass = function(e) {
                    e = e.toLowerCase();
                    var t = this.classes[e];
                    if (!t) {
                        var n = this.alternativeNames[e];
                        if (n && n != e) return this.findClass(n)
                    }
                    return t
                }, e.prototype.isDescendantOf = function(e, t) {
                    if (!e || !t) return !1;
                    e = e.toLowerCase(), t = t.toLowerCase();
                    var n = this.findClass(e);
                    if (!n) return !1;
                    var o = n;
                    do {
                        if (o.name === t) return !0;
                        o = this.classes[o.parentName]
                    } while (o);
                    return !1
                }, e.prototype.addAlterNativeClassName = function(e, t) {
                    this.alternativeNames[t.toLowerCase()] = e.toLowerCase()
                }, e.prototype.generateSchema = function(e) {
                    void 0 === e && (e = void 0), e || (e = "survey");
                    var t = this.findClass(e);
                    if (!t) return null;
                    var n = {
                        $schema: "http://json-schema.org/draft-07/schema#",
                        title: "SurveyJS Library json schema",
                        type: "object",
                        properties: {},
                        definitions: {}
                    };
                    return this.generateSchemaProperties(t, n.properties, n.definitions), n
                }, e.prototype.generateSchemaProperties = function(e, t, n) {
                    if (e)
                        for (var o = 0; o < e.properties.length; o++) {
                            var r = e.properties[o];
                            t[r.name] = this.generateSchemaProperty(r, n)
                        }
                }, e.prototype.generateSchemaProperty = function(e, t) {
                    var n = {
                        type: e.schemaType()
                    };
                    if (e.hasChoices && (n.enum = e.getChoices(null)), e.className && (n.items = {
                            $ref: "#" + e.className
                        }, this.generateChemaClass(e.className, t)), e.baseClassName) {
                        var o = this.getChildrenClasses(e.baseClassName, !0);
                        "question" == e.baseClassName && o.push(this.findClass("panel")), n.items = [];
                        for (var r = 0; r < o.length; r++) {
                            var i = o[r].name;
                            n.items.push({
                                $ref: "#" + i
                            }), this.generateChemaClass(i, t)
                        }
                    }
                    return n
                }, e.prototype.generateChemaClass = function(e, t) {
                    if (!t[e]) {
                        var n = this.findClass(e);
                        if (n) {
                            var o = !!n.parentName && "base" != n.parentName;
                            o && this.generateChemaClass(n.parentName, t);
                            var r = {
                                type: "object",
                                $id: "#" + e
                            };
                            t[e] = r;
                            var i = {};
                            this.generateSchemaProperties(n, i, t), o ? r.allOff = [{
                                $ref: "#" + n.parentName
                            }, {
                                properties: i
                            }] : r.properties = i
                        }
                    }
                }, e.prototype.fillProperties = function(e, t, n) {
                    var o = this.findClass(e);
                    if (o) {
                        o.parentName && this.fillProperties(o.parentName, t, n);
                        for (var r = 0; r < o.properties.length; r++) {
                            var i = o.properties[r];
                            this.addPropertyCore(i, t, n), n[i.name] = i, i.alternativeName && (n[i.alternativeName] = i)
                        }
                    }
                }, e.prototype.addPropertyCore = function(e, t, n) {
                    if (n[e.name]) {
                        for (var o = -1, r = 0; r < t.length; r++)
                            if (t[r].name == e.name || t[r].alternativeName == e.name) {
                                o = r;
                                break
                            } e.mergeWith(t[o]), t[o] = e
                    } else t.push(e)
                }, e
            }(),
            V = function() {
                function e(e, t) {
                    this.type = e, this.message = t, this.description = "", this.at = -1
                }
                return e.prototype.getFullDescription = function() {
                    return this.message + (this.description ? "\n" + this.description : "")
                }, e
            }(),
            T = function(e) {
                function t(t, n) {
                    var o = e.call(this, "unknownproperty", "The property '" + t + "' in class '" + n + "' is unknown.") || this;
                    o.propertyName = t, o.className = n;
                    var r = R.metaData.getProperties(n);
                    if (r) {
                        o.description = "The list of available properties are: ";
                        for (var i = 0; i < r.length; i++) i > 0 && (o.description += ", "), o.description += r[i].name;
                        o.description += "."
                    }
                    return o
                }
                return f(t, e), t
            }(V),
            k = function(e) {
                function t(t, n, o) {
                    var r = e.call(this, n, o) || this;
                    r.baseClassName = t, r.type = n, r.message = o, r.description = "The following types are available: ";
                    for (var i = R.metaData.getChildrenClasses(t, !0), s = 0; s < i.length; s++) s > 0 && (r.description += ", "), r.description += "'" + i[s].name + "'";
                    return r.description += ".", r
                }
                return f(t, e), t
            }(V),
            S = function(e) {
                function t(t, n) {
                    var o = e.call(this, n, "missingtypeproperty", "The property type is missing in the object. Please take a look at property: '" + t + "'.") || this;
                    return o.propertyName = t, o.baseClassName = n, o
                }
                return f(t, e), t
            }(k),
            O = function(e) {
                function t(t, n) {
                    var o = e.call(this, n, "incorrecttypeproperty", "The property type is incorrect in the object. Please take a look at property: '" + t + "'.") || this;
                    return o.propertyName = t, o.baseClassName = n, o
                }
                return f(t, e), t
            }(k),
            E = function(e) {
                function t(t, n) {
                    var o = e.call(this, "requiredproperty", "The property '" + t + "' is required in class '" + n + "'.") || this;
                    return o.propertyName = t, o.className = n, o
                }
                return f(t, e), t
            }(V),
            R = function() {
                function e() {
                    this.errors = new Array, this.lightSerializing = !1
                }
                return Object.defineProperty(e, "metaData", {
                    get: function() {
                        return e.metaDataValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.toJsonObject = function(e, t) {
                    return void 0 === t && (t = !1), this.toJsonObjectCore(e, null, t)
                }, e.prototype.toObject = function(e, t) {
                    this.toObjectCore(e, t);
                    var n = this.getRequiredError(t, e);
                    n && this.addNewError(n, e)
                }, e.prototype.toObjectCore = function(t, n) {
                    if (t) {
                        var o = null,
                            r = void 0,
                            i = !0;
                        if (n.getType && (r = n.getType(), o = e.metaData.getProperties(r), i = !!r && !e.metaData.isDescendantOf(r, "itemvalue")), o) {
                            for (var s in n.startLoadingFromJson && n.startLoadingFromJson(t), o = this.addDynamicProperties(n, t, o), t)
                                if (s !== e.typePropertyName)
                                    if (s !== e.positionPropertyName) {
                                        var a = this.findProperty(o, s);
                                        a ? this.valueToObj(t[s], n, a) : i && this.addNewError(new T(s.toString(), r), t)
                                    } else n[s] = t[s];
                            n.endLoadingFromJson && n.endLoadingFromJson()
                        }
                    }
                }, e.prototype.toJsonObjectCore = function(t, n, o) {
                    if (void 0 === o && (o = !1), !t || !t.getType) return t;
                    if ("function" == typeof t.getData) return t.getData();
                    var r = {};
                    return null == n || n.className || (r[e.typePropertyName] = n.getObjType(t.getType())), this.propertiesToJson(t, e.metaData.getProperties(t.getType()), r, o), this.propertiesToJson(t, this.getDynamicProperties(t), r, o), r
                }, e.prototype.getDynamicProperties = function(e) {
                    return I.getDynamicPropertiesByObj(e)
                }, e.prototype.addDynamicProperties = function(e, t, n) {
                    if (!e.getDynamicPropertyName) return n;
                    var o = e.getDynamicPropertyName();
                    if (!o) return n;
                    t[o] && (e[o] = t[o]);
                    for (var r = this.getDynamicProperties(e), i = [], s = 0; s < n.length; s++) i.push(n[s]);
                    for (s = 0; s < r.length; s++) i.push(r[s]);
                    return i
                }, e.prototype.propertiesToJson = function(e, t, n, o) {
                    void 0 === o && (o = !1);
                    for (var r = 0; r < t.length; r++) this.valueToJson(e, n, t[r], o)
                }, e.prototype.valueToJson = function(e, t, n, o) {
                    if (void 0 === o && (o = !1), !(!1 === n.isSerializable || !1 === n.isLightSerializable && this.lightSerializing)) {
                        var r = n.getValue(e);
                        if (o || !n.isDefaultValue(r)) {
                            if (this.isValueArray(r)) {
                                for (var i = [], s = 0; s < r.length; s++) i.push(this.toJsonObjectCore(r[s], n, o));
                                r = i.length > 0 ? i : null
                            } else r = this.toJsonObjectCore(r, n, o);
                            var a = "function" == typeof e.getPropertyValue && null !== e.getPropertyValue(n.name, null);
                            (o && a || !n.isDefaultValue(r)) && (I.onSerializingProperty && I.onSerializingProperty(e, n, r, t) || (t[n.name] = r))
                        }
                    }
                }, e.prototype.valueToObj = function(e, t, n) {
                    if (null != e)
                        if (this.removePos(n, e), null != n && n.hasToUseSetValue) n.setValue(t, e, this);
                        else if (this.isValueArray(e)) this.valueToArray(e, t, n.name, n);
                    else {
                        var o = this.createNewObj(e, n);
                        o.newObj && (this.toObjectCore(e, o.newObj), e = o.newObj), o.error || (null != n ? n.setValue(t, e, this) : t[n.name] = e)
                    }
                }, e.prototype.removePos = function(e, t) {
                    !e || !e.type || e.type.indexOf("value") < 0 || this.removePosFromObj(t)
                }, e.prototype.removePosFromObj = function(t) {
                    if (t) {
                        if (Array.isArray(t))
                            for (var n = 0; n < t.length; n++) this.removePosFromObj(t[n]);
                        t[e.positionPropertyName] && delete t[e.positionPropertyName]
                    }
                }, e.prototype.isValueArray = function(e) {
                    return e && Array.isArray(e)
                }, e.prototype.createNewObj = function(t, n) {
                    var o = {
                            newObj: null,
                            error: null
                        },
                        r = t[e.typePropertyName];
                    return !r && null != n && n.className && (r = n.className), r = n.getClassName(r), o.newObj = r ? e.metaData.createClass(r, t) : null, o.error = this.checkNewObjectOnErrors(o.newObj, t, n, r), o
                }, e.prototype.checkNewObjectOnErrors = function(e, t, n, o) {
                    var r = null;
                    return e ? r = this.getRequiredError(e, t) : n.baseClassName && (r = o ? new O(n.name, n.baseClassName) : new S(n.name, n.baseClassName)), r && this.addNewError(r, t), r
                }, e.prototype.getRequiredError = function(t, n) {
                    if (!t.getType || "function" == typeof t.getData) return null;
                    var o = t.getType(),
                        r = e.metaData.getRequiredProperties(o);
                    if (!Array.isArray(r)) return null;
                    for (var i = 0; i < r.length; i++) {
                        var s = I.findProperty(o, r[i]);
                        if (s && a.isValueEmpty(s.defaultValue) && !n[s.name]) return new E(s.name, o)
                    }
                    return null
                }, e.prototype.addNewError = function(t, n) {
                    n && n[e.positionPropertyName] && (t.at = n[e.positionPropertyName].start), this.errors.push(t)
                }, e.prototype.valueToArray = function(e, t, n, o) {
                    if (!t[n] || this.isValueArray(t[n])) {
                        t[n] && e.length > 0 && t[n].splice(0, t[n].length);
                        var r = t[n] ? t[n] : [];
                        this.addValuesIntoArray(e, r, o), t[n] || (t[n] = r)
                    }
                }, e.prototype.addValuesIntoArray = function(e, t, n) {
                    for (var o = 0; o < e.length; o++) {
                        var r = this.createNewObj(e[o], n);
                        r.newObj ? (e[o].name && (r.newObj.name = e[o].name), t.push(r.newObj), this.toObjectCore(e[o], r.newObj)) : r.error || t.push(e[o])
                    }
                }, e.prototype.findProperty = function(e, t) {
                    if (!e) return null;
                    for (var n = 0; n < e.length; n++) {
                        var o = e[n];
                        if (o.name == t || o.alternativeName == t) return o
                    }
                    return null
                }, e.typePropertyName = "type", e.positionPropertyName = "pos", e.metaDataValue = new P, e
            }(),
            I = R.metaData,
            _ = function() {
                function e() {
                    this.values = null, this.properties = null
                }
                return e.prototype.getFirstName = function(e, t) {
                    if (void 0 === t && (t = null), !e) return e;
                    var n = "";
                    if (t && (n = this.getFirstPropertyName(e, t))) return n;
                    for (var o = 0; o < e.length; o++) {
                        var r = e[o];
                        if ("." == r || "[" == r) break;
                        n += r
                    }
                    return n
                }, e.prototype.hasValue = function(e, t) {
                    return void 0 === t && (t = null), t || (t = this.values), this.getValueCore(e, t).hasValue
                }, e.prototype.getValue = function(e, t) {
                    return void 0 === t && (t = null), t || (t = this.values), this.getValueCore(e, t).value
                }, e.prototype.setValue = function(e, t, n) {
                    if (t) {
                        var o = this.getNonNestedObject(e, t, !0);
                        o && (e = o.value, t = o.text, e && t && (e[t] = n))
                    }
                }, e.prototype.getValueInfo = function(e) {
                    if (e.path) return e.value = this.getValueFromPath(e.path, this.values), e.hasValue = null !== e.value && !a.isValueEmpty(e.value), void(!e.hasValue && e.path.length > 1 && "length" == e.path[e.path.length - 1] && (e.hasValue = !0, e.value = 0));
                    var t = this.getValueCore(e.name, this.values);
                    e.value = t.value, e.hasValue = t.hasValue, e.path = t.hasValue ? t.path : null
                }, e.prototype.getValueFromPath = function(e, t) {
                    if (2 === e.length && "@survey" === e[0]) return this.getValueFromSurvey(e[1]);
                    for (var n = 0; t && n < e.length;) {
                        var o = e[n];
                        if (a.isNumber(o) && Array.isArray(t) && o >= t.length) return null;
                        t = t[o], n++
                    }
                    return t
                }, e.prototype.getValueCore = function(e, t) {
                    var n = this.getQuestionDirectly(e);
                    if (n) return {
                        hasValue: !0,
                        value: n.value,
                        path: [e]
                    };
                    var o = this.getValueFromValues(e, t);
                    if (e && !o.hasValue) {
                        var r = this.getValueFromSurvey(e);
                        void 0 !== r && (o.hasValue = !0, o.value = r, o.path = ["@survey", e])
                    }
                    return o
                }, e.prototype.getQuestionDirectly = function(e) {
                    if (this.properties && this.properties.survey) return this.properties.survey.getQuestionByValueName(e)
                }, e.prototype.getValueFromSurvey = function(e) {
                    if (this.properties && this.properties.survey) return this.properties.survey.getBuiltInVariableValue(e.toLocaleLowerCase())
                }, e.prototype.getValueFromValues = function(e, t) {
                    var n = {
                            hasValue: !1,
                            value: null,
                            path: null
                        },
                        o = t;
                    if (!o && 0 !== o && !1 !== o) return n;
                    e && e.lastIndexOf(".length") > -1 && e.lastIndexOf(".length") === e.length - ".length".length && (n.value = 0, n.hasValue = !0);
                    var r = this.getNonNestedObject(o, e, !1);
                    return r ? (n.path = r.path, n.value = r.text ? this.getObjectValue(r.value, r.text) : r.value, n.hasValue = !a.isValueEmpty(n.value), n) : n
                }, e.prototype.getNonNestedObject = function(e, t, n) {
                    for (var o = this.getFirstPropertyName(t, e, n), r = o ? [o] : null; t != o && e;) {
                        if ("[" == t[0]) {
                            var i = this.getObjInArray(e, t);
                            if (!i) return null;
                            e = i.value, t = i.text, r.push(i.index)
                        } else {
                            if (!o && t == this.getFirstName(t)) return {
                                value: e,
                                text: t,
                                path: r
                            };
                            if (e = this.getObjectValue(e, o), a.isValueEmpty(e) && !n) return null;
                            t = t.substring(o.length)
                        }
                        t && "." == t[0] && (t = t.substring(1)), (o = this.getFirstPropertyName(t, e, n)) && r.push(o)
                    }
                    return {
                        value: e,
                        text: t,
                        path: r
                    }
                }, e.prototype.getObjInArray = function(e, t) {
                    if (!Array.isArray(e)) return null;
                    for (var n = 1, o = ""; n < t.length && "]" != t[n];) o += t[n], n++;
                    return t = n < t.length ? t.substring(n + 1) : "", (n = this.getIntValue(o)) < 0 || n >= e.length ? null : {
                        value: e[n],
                        text: t,
                        index: n
                    }
                }, e.prototype.getFirstPropertyName = function(e, t, n) {
                    if (void 0 === n && (n = !1), !e) return e;
                    if (t || (t = {}), t.hasOwnProperty(e)) return e;
                    var o = e.toLowerCase(),
                        r = o[0],
                        i = r.toUpperCase();
                    for (var s in t) {
                        var a = s[0];
                        if (a === i || a === r) {
                            var l = s.toLowerCase();
                            if (l == o) return s;
                            if (o.length <= l.length) continue;
                            var u = o[l.length];
                            if ("." != u && "[" != u) continue;
                            if (l == o.substring(0, l.length)) return s
                        }
                    }
                    if (n && "[" !== e[0]) {
                        var c = e.indexOf(".");
                        return c > -1 && (t[e = e.substring(0, c)] = {}), e
                    }
                    return ""
                }, e.prototype.getObjectValue = function(e, t) {
                    return t ? e[t] : null
                }, e.prototype.getIntValue = function(e) {
                    return "0" == e || (0 | e) > 0 && e % 1 == 0 ? Number(e) : -1
                }, e
            }(),
            q = function() {
                function e() {
                    this.functionHash = {}, this.isAsyncHash = {}
                }
                return e.prototype.register = function(e, t, n) {
                    void 0 === n && (n = !1), this.functionHash[e] = t, n && (this.isAsyncHash[e] = !0)
                }, e.prototype.unregister = function(e) {
                    delete this.functionHash[e], delete this.isAsyncHash[e]
                }, e.prototype.hasFunction = function(e) {
                    return !!this.functionHash[e]
                }, e.prototype.isAsyncFunction = function(e) {
                    return !!this.isAsyncHash[e]
                }, e.prototype.clear = function() {
                    this.functionHash = {}
                }, e.prototype.getAll = function() {
                    var e = [];
                    for (var t in this.functionHash) e.push(t);
                    return e.sort()
                }, e.prototype.run = function(e, t, n) {
                    void 0 === n && (n = null);
                    var o = this.functionHash[e];
                    if (!o) return null;
                    var r = {
                        func: o
                    };
                    if (n)
                        for (var i in n) r[i] = n[i];
                    return r.func(t)
                }, e.Instance = new e, e
            }(),
            D = q.Instance.register;

        function A(e, t) {
            if (null != e)
                if (Array.isArray(e))
                    for (var n = 0; n < e.length; n++) A(e[n], t);
                else a.isNumber(e) && (e = parseFloat(e)), t.push(e)
        }

        function j(e) {
            var t = [];
            A(e, t);
            for (var n = 0, o = 0; o < t.length; o++) n = a.correctAfterPlusMinis(n, t[o], n + t[o]);
            return n
        }

        function L(e, t) {
            var n = [];
            A(e, n);
            for (var o = void 0, r = 0; r < n.length; r++) void 0 === o && (o = n[r]), t ? o > n[r] && (o = n[r]) : o < n[r] && (o = n[r]);
            return o
        }

        function M(e, t, n, o, r) {
            return !e || a.isValueEmpty(e[t]) ? n : o(n, r ? function(e) {
                return "string" == typeof e ? a.isNumber(e) ? parseFloat(e) : void 0 : e
            }(e[t]) : 1)
        }

        function N(e, t, n) {
            void 0 === n && (n = !0);
            var o = function(e) {
                if (2 != e.length) return null;
                var t = e[0];
                if (!t) return null;
                if (!Array.isArray(t) && !Array.isArray(Object.keys(t))) return null;
                var n = e[1];
                return "string" == typeof n || n instanceof String ? {
                    data: t,
                    name: n
                } : null
            }(e);
            if (o) {
                var r = void 0;
                if (Array.isArray(o.data))
                    for (var i = 0; i < o.data.length; i++) r = M(o.data[i], o.name, r, t, n);
                else
                    for (var s in o.data) r = M(o.data[s], o.name, r, t, n);
                return r
            }
        }

        function F(e) {
            var t = N(e, (function(e, t) {
                return null == e && (e = 0), null == t || null == t ? e : a.correctAfterPlusMinis(e, t, e + t)
            }));
            return void 0 !== t ? t : 0
        }

        function B(e) {
            var t = N(e, (function(e, t) {
                return null == e && (e = 0), null == t || null == t ? e : e + 1
            }), !1);
            return void 0 !== t ? t : 0
        }

        function z(e) {
            if (!e) return !1;
            for (var t = e.questions, n = 0; n < t.length; n++)
                if (t[n].hasErrors(!1)) return !1;
            return !0
        }
        q.Instance.register("sum", j), q.Instance.register("min", (function(e) {
            return L(e, !0)
        })), q.Instance.register("max", (function(e) {
            return L(e, !1)
        })), q.Instance.register("count", (function(e) {
            var t = [];
            return A(e, t), t.length
        })), q.Instance.register("avg", (function(e) {
            var t = [];
            A(e, t);
            var n = j(e);
            return t.length > 0 ? n / t.length : 0
        })), q.Instance.register("sumInArray", F), q.Instance.register("minInArray", (function(e) {
            return N(e, (function(e, t) {
                return null == e ? t : null == t || null == t || e < t ? e : t
            }))
        })), q.Instance.register("maxInArray", (function(e) {
            return N(e, (function(e, t) {
                return null == e ? t : null == t || null == t || e > t ? e : t
            }))
        })), q.Instance.register("countInArray", B), q.Instance.register("avgInArray", (function(e) {
            var t = B(e);
            return 0 == t ? 0 : F(e) / t
        })), q.Instance.register("iif", (function(e) {
            return e || 3 === e.length ? e[0] ? e[1] : e[2] : ""
        })), q.Instance.register("getDate", (function(e) {
            return !e && e.length < 1 ? null : e[0] ? new Date(e[0]) : null
        })), q.Instance.register("age", (function(e) {
            if (!e && e.length < 1) return null;
            if (!e[0]) return null;
            var t = new Date(e[0]),
                n = new Date,
                o = n.getFullYear() - t.getFullYear(),
                r = n.getMonth() - t.getMonth();
            return (r < 0 || 0 === r && n.getDate() < t.getDate()) && (o -= o > 0 ? 1 : 0), o
        })), q.Instance.register("isContainerReady", (function(e) {
            if (!e && e.length < 1) return !1;
            if (!e[0] || !this.survey) return !1;
            var t = e[0],
                n = this.survey.getPageByName(t);
            if (n || (n = this.survey.getPanelByName(t)), !n) {
                var o = this.survey.getQuestionByName(t);
                if (!o || !Array.isArray(o.panels)) return !1;
                if (!(e.length > 1)) {
                    for (var r = 0; r < o.panels.length; r++)
                        if (!z(o.panels[r])) return !1;
                    return !0
                }
                e[1] < o.panels.length && (n = o.panels[e[1]])
            }
            return z(n)
        })), q.Instance.register("isDisplayMode", (function() {
            return this.survey && this.survey.isDisplayMode
        })), q.Instance.register("currentDate", (function() {
            return new Date
        })), q.Instance.register("today", (function(e) {
            var t = new Date;
            return s.useLocalTimeZone ? t.setHours(0, 0, 0, 0) : t.setUTCHours(0, 0, 0, 0), Array.isArray(e) && 1 == e.length && t.setDate(t.getDate() + e[0]), t
        })), q.Instance.register("getYear", (function(e) {
            if (1 === e.length && e[0]) return new Date(e[0]).getFullYear()
        })), q.Instance.register("currentYear", (function() {
            return (new Date).getFullYear()
        })), q.Instance.register("diffDays", (function(e) {
            if (!Array.isArray(e) || 2 !== e.length) return 0;
            if (!e[0] || !e[1]) return 0;
            var t = new Date(e[0]),
                n = new Date(e[1]),
                o = Math.abs(n - t);
            return Math.ceil(o / 864e5)
        }));
        var H = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Q = function() {
                function e() {}
                return e.prototype.toString = function(e) {
                    return void 0 === e && (e = void 0), ""
                }, e.prototype.hasFunction = function() {
                    return !1
                }, e.prototype.hasAsyncFunction = function() {
                    return !1
                }, e.prototype.addToAsyncList = function(e) {}, e.prototype.isEqual = function(e) {
                    return !!e && e.getType() === this.getType() && this.isContentEqual(e)
                }, e.prototype.areOperatorsEquals = function(e, t) {
                    return !e && !t || !!e && e.isEqual(t)
                }, e
            }(),
            U = function(e) {
                function t(t, n, o, r) {
                    void 0 === n && (n = null), void 0 === o && (o = null), void 0 === r && (r = !1);
                    var i = e.call(this) || this;
                    return i.operatorName = t, i.left = n, i.right = o, i.isArithmeticValue = r, i.consumer = r ? Z.binaryFunctions.arithmeticOp(t) : Z.binaryFunctions[t], null == i.consumer && Z.throwInvalidOperatorError(t), i
                }
                return H(t, e), t.prototype.getType = function() {
                    return "binary"
                }, Object.defineProperty(t.prototype, "isArithmetic", {
                    get: function() {
                        return this.isArithmeticValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isConjunction", {
                    get: function() {
                        return "or" == this.operatorName || "and" == this.operatorName
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "conjunction", {
                    get: function() {
                        return this.isConjunction ? this.operatorName : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "operator", {
                    get: function() {
                        return this.operatorName
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "leftOperand", {
                    get: function() {
                        return this.left
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rightOperand", {
                    get: function() {
                        return this.right
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isContentEqual = function(e) {
                    var t = e;
                    return t.operator === this.operator && this.areOperatorsEquals(this.left, t.left) && this.areOperatorsEquals(this.right, t.right)
                }, t.prototype.evaluateParam = function(e, t) {
                    return null == e ? null : e.evaluate(t)
                }, t.prototype.evaluate = function(e) {
                    return this.consumer.call(this, this.evaluateParam(this.left, e), this.evaluateParam(this.right, e))
                }, t.prototype.toString = function(e) {
                    if (void 0 === e && (e = void 0), e) {
                        var t = e(this);
                        if (t) return t
                    }
                    return "(" + Z.safeToString(this.left, e) + " " + Z.operatorToString(this.operatorName) + " " + Z.safeToString(this.right, e) + ")"
                }, t.prototype.setVariables = function(e) {
                    null != this.left && this.left.setVariables(e), null != this.right && this.right.setVariables(e)
                }, t.prototype.hasFunction = function() {
                    return !!this.left && this.left.hasFunction() || !!this.right && this.right.hasFunction()
                }, t.prototype.hasAsyncFunction = function() {
                    return !!this.left && this.left.hasAsyncFunction() || !!this.right && this.right.hasAsyncFunction()
                }, t.prototype.addToAsyncList = function(e) {
                    this.left && this.left.addToAsyncList(e), this.right && this.right.addToAsyncList(e)
                }, t
            }(Q),
            W = function(e) {
                function t(t, n) {
                    var o = e.call(this) || this;
                    return o.expressionValue = t, o.operatorName = n, o.consumer = Z.unaryFunctions[n], null == o.consumer && Z.throwInvalidOperatorError(n), o
                }
                return H(t, e), Object.defineProperty(t.prototype, "operator", {
                    get: function() {
                        return this.operatorName
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "expression", {
                    get: function() {
                        return this.expressionValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "unary"
                }, t.prototype.toString = function(e) {
                    if (void 0 === e && (e = void 0), e) {
                        var t = e(this);
                        if (t) return t
                    }
                    return Z.operatorToString(this.operatorName) + " " + this.expression.toString(e)
                }, t.prototype.isContentEqual = function(e) {
                    var t = e;
                    return t.operator == this.operator && this.areOperatorsEquals(this.expression, t.expression)
                }, t.prototype.evaluate = function(e) {
                    var t = this.expression.evaluate(e);
                    return this.consumer.call(this, t)
                }, t.prototype.setVariables = function(e) {
                    this.expression.setVariables(e)
                }, t
            }(Q),
            $ = function(e) {
                function t(t) {
                    var n = e.call(this) || this;
                    return n.values = t, n
                }
                return H(t, e), t.prototype.getType = function() {
                    return "array"
                }, t.prototype.toString = function(e) {
                    if (void 0 === e && (e = void 0), e) {
                        var t = e(this);
                        if (t) return t
                    }
                    return "[" + this.values.map((function(t) {
                        return t.toString(e)
                    })).join(", ") + "]"
                }, t.prototype.evaluate = function(e) {
                    return this.values.map((function(t) {
                        return t.evaluate(e)
                    }))
                }, t.prototype.setVariables = function(e) {
                    this.values.forEach((function(t) {
                        t.setVariables(e)
                    }))
                }, t.prototype.hasFunction = function() {
                    return this.values.some((function(e) {
                        return e.hasFunction()
                    }))
                }, t.prototype.hasAsyncFunction = function() {
                    return this.values.some((function(e) {
                        return e.hasAsyncFunction()
                    }))
                }, t.prototype.addToAsyncList = function(e) {
                    this.values.forEach((function(t) {
                        return t.addToAsyncList(e)
                    }))
                }, t.prototype.isContentEqual = function(e) {
                    var t = e;
                    if (t.values.length !== this.values.length) return !1;
                    for (var n = 0; n < this.values.length; n++)
                        if (!t.values[n].isEqual(this.values[n])) return !1;
                    return !0
                }, t
            }(Q),
            G = function(e) {
                function t(t) {
                    var n = e.call(this) || this;
                    return n.value = t, n
                }
                return H(t, e), t.prototype.getType = function() {
                    return "const"
                }, t.prototype.toString = function(e) {
                    if (void 0 === e && (e = void 0), e) {
                        var t = e(this);
                        if (t) return t
                    }
                    return this.value.toString()
                }, Object.defineProperty(t.prototype, "correctValue", {
                    get: function() {
                        return this.getCorrectValue(this.value)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.evaluate = function() {
                    return this.getCorrectValue(this.value)
                }, t.prototype.setVariables = function(e) {}, t.prototype.getCorrectValue = function(e) {
                    return e && "string" == typeof e ? this.isBooleanValue(e) ? "true" === e.toLowerCase() : e.length > 1 && this.isQuote(e[0]) && this.isQuote(e[e.length - 1]) ? e.substring(1, e.length - 1) : Z.isNumeric(e) ? 0 == e.indexOf("0x") ? parseInt(e) : e.length > 1 && "0" == e[0] ? e : parseFloat(e) : e : e
                }, t.prototype.isContentEqual = function(e) {
                    return e.value == this.value
                }, t.prototype.isQuote = function(e) {
                    return "'" == e || '"' == e
                }, t.prototype.isBooleanValue = function(e) {
                    return e && ("true" === e.toLowerCase() || "false" === e.toLowerCase())
                }, t
            }(Q),
            J = function(e) {
                function t(n) {
                    var o = e.call(this, n) || this;
                    return o.variableName = n, o.valueInfo = {}, o.useValueAsItIs = !1, o.variableName && o.variableName.length > 1 && o.variableName[0] === t.DisableConversionChar && (o.variableName = o.variableName.substring(1), o.useValueAsItIs = !0), o
                }
                return H(t, e), Object.defineProperty(t, "DisableConversionChar", {
                    get: function() {
                        return s.expressionDisableConversionChar
                    },
                    set: function(e) {
                        s.expressionDisableConversionChar = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "variable"
                }, t.prototype.toString = function(e) {
                    if (void 0 === e && (e = void 0), e) {
                        var n = e(this);
                        if (n) return n
                    }
                    return "{" + (this.useValueAsItIs ? t.DisableConversionChar : "") + this.variableName + "}"
                }, Object.defineProperty(t.prototype, "variable", {
                    get: function() {
                        return this.variableName
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.evaluate = function(e) {
                    return this.valueInfo.name = this.variableName, e.getValueInfo(this.valueInfo), this.valueInfo.hasValue ? this.getCorrectValue(this.valueInfo.value) : null
                }, t.prototype.setVariables = function(e) {
                    e.push(this.variableName)
                }, t.prototype.getCorrectValue = function(t) {
                    return this.useValueAsItIs ? t : e.prototype.getCorrectValue.call(this, t)
                }, t.prototype.isContentEqual = function(e) {
                    return e.variable == this.variable
                }, t
            }(G),
            K = function(e) {
                function t(t, n) {
                    var o = e.call(this) || this;
                    return o.originalValue = t, o.parameters = n, o.isReadyValue = !1, Array.isArray(n) && 0 === n.length && (o.parameters = new $([])), o
                }
                return H(t, e), t.prototype.getType = function() {
                    return "function"
                }, t.prototype.evaluateAsync = function(e) {
                    var t = this;
                    this.isReadyValue = !1;
                    var n = new _;
                    n.values = a.createCopy(e.values), n.properties = a.createCopy(e.properties), n.properties.returnResult = function(e) {
                        t.asynResult = e, t.isReadyValue = !0, t.onAsyncReady()
                    }, this.evaluateCore(n)
                }, t.prototype.evaluate = function(e) {
                    return this.isReady ? this.asynResult : this.evaluateCore(e)
                }, t.prototype.evaluateCore = function(e) {
                    return q.Instance.run(this.originalValue, this.parameters.evaluate(e), e.properties)
                }, t.prototype.toString = function(e) {
                    if (void 0 === e && (e = void 0), e) {
                        var t = e(this);
                        if (t) return t
                    }
                    return this.originalValue + "(" + this.parameters.toString(e) + ")"
                }, t.prototype.setVariables = function(e) {
                    this.parameters.setVariables(e)
                }, Object.defineProperty(t.prototype, "isReady", {
                    get: function() {
                        return this.isReadyValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.hasFunction = function() {
                    return !0
                }, t.prototype.hasAsyncFunction = function() {
                    return q.Instance.isAsyncFunction(this.originalValue)
                }, t.prototype.addToAsyncList = function(e) {
                    this.hasAsyncFunction() && e.push(this)
                }, t.prototype.isContentEqual = function(e) {
                    var t = e;
                    return t.originalValue == this.originalValue && this.areOperatorsEquals(t.parameters, this.parameters)
                }, t
            }(Q),
            Z = function() {
                function e() {}
                return e.throwInvalidOperatorError = function(e) {
                    throw new Error("Invalid operator: '" + e + "'")
                }, e.safeToString = function(e, t) {
                    return null == e ? "" : e.toString(t)
                }, e.toOperandString = function(t) {
                    return !t || e.isNumeric(t) || e.isBooleanValue(t) || (t = "'" + t + "'"), t
                }, e.isSpaceString = function(e) {
                    return !!e && !e.replace(" ", "")
                }, e.isNumeric = function(t) {
                    return (!t || !(t.indexOf("-") > -1 || t.indexOf("+") > 1 || t.indexOf("*") > -1 || t.indexOf("^") > -1 || t.indexOf("/") > -1 || t.indexOf("%") > -1)) && (!e.isSpaceString(t) && a.isNumber(t))
                }, e.isBooleanValue = function(e) {
                    return !!e && ("true" === e.toLowerCase() || "false" === e.toLowerCase())
                }, e.countDecimals = function(e) {
                    if (a.isNumber(e) && Math.floor(e) !== e) {
                        var t = e.toString().split(".");
                        return t.length > 1 && t[1].length || 0
                    }
                    return 0
                }, e.plusMinus = function(t, n, o) {
                    var r = e.countDecimals(t),
                        i = e.countDecimals(n);
                    if (r > 0 || i > 0) {
                        var s = Math.max(r, i);
                        o = parseFloat(o.toFixed(s))
                    }
                    return o
                }, e.isTwoValueEquals = function(e, t) {
                    return "undefined" === e && (e = void 0), "undefined" === t && (t = void 0), a.isTwoValueEquals(e, t, !0)
                }, e.operatorToString = function(t) {
                    var n = e.signs[t];
                    return null == n ? t : n
                }, e.unaryFunctions = {
                    empty: function(e) {
                        return a.isValueEmpty(e)
                    },
                    notempty: function(t) {
                        return !e.unaryFunctions.empty(t)
                    },
                    negate: function(e) {
                        return !e
                    }
                }, e.binaryFunctions = {
                    arithmeticOp: function(t) {
                        return function(n, o) {
                            a.isValueEmpty(n) && !e.isSpaceString(n) && (n = "string" == typeof o ? "" : 0), a.isValueEmpty(o) && !e.isSpaceString(o) && (o = "string" == typeof n ? "" : 0);
                            var r = e.binaryFunctions[t];
                            return null == r ? null : r.call(this, n, o)
                        }
                    },
                    and: function(e, t) {
                        return e && t
                    },
                    or: function(e, t) {
                        return e || t
                    },
                    plus: function(e, t) {
                        return a.isNumber(e) && a.isNumber(t) ? a.correctAfterPlusMinis(e, t, e + t) : e + t
                    },
                    minus: function(e, t) {
                        return a.correctAfterPlusMinis(e, t, e - t)
                    },
                    mul: function(e, t) {
                        return a.correctAfterMultiple(e, t, e * t)
                    },
                    div: function(e, t) {
                        return t ? e / t : null
                    },
                    mod: function(e, t) {
                        return t ? e % t : null
                    },
                    power: function(e, t) {
                        return Math.pow(e, t)
                    },
                    greater: function(e, t) {
                        return null != e && null != t && e > t
                    },
                    less: function(e, t) {
                        return null != e && null != t && e < t
                    },
                    greaterorequal: function(t, n) {
                        return !!e.binaryFunctions.equal(t, n) || e.binaryFunctions.greater(t, n)
                    },
                    lessorequal: function(t, n) {
                        return !!e.binaryFunctions.equal(t, n) || e.binaryFunctions.less(t, n)
                    },
                    equal: function(t, n) {
                        return e.isTwoValueEquals(t, n)
                    },
                    notequal: function(t, n) {
                        return !e.binaryFunctions.equal(t, n)
                    },
                    contains: function(t, n) {
                        return e.binaryFunctions.containsCore(t, n, !0)
                    },
                    notcontains: function(t, n) {
                        return !t && !a.isValueEmpty(n) || e.binaryFunctions.containsCore(t, n, !1)
                    },
                    anyof: function(t, n) {
                        if (a.isValueEmpty(t) && a.isValueEmpty(n)) return !0;
                        if (a.isValueEmpty(t) || !Array.isArray(t) && 0 === t.length) return !1;
                        if (a.isValueEmpty(n)) return !0;
                        if (!Array.isArray(t)) return e.binaryFunctions.contains(n, t);
                        if (!Array.isArray(n)) return e.binaryFunctions.contains(t, n);
                        for (var o = 0; o < n.length; o++)
                            if (e.binaryFunctions.contains(t, n[o])) return !0;
                        return !1
                    },
                    allof: function(t, n) {
                        if (!t && !a.isValueEmpty(n)) return !1;
                        if (!Array.isArray(n)) return e.binaryFunctions.contains(t, n);
                        for (var o = 0; o < n.length; o++)
                            if (!e.binaryFunctions.contains(t, n[o])) return !1;
                        return !0
                    },
                    containsCore: function(t, n, o) {
                        if (!t && 0 !== t && !1 !== t) return !1;
                        if (t.length || (t = t.toString(), ("string" == typeof n || n instanceof String) && (t = t.toUpperCase(), n = n.toUpperCase())), "string" == typeof t || t instanceof String) {
                            if (!n) return !1;
                            n = n.toString();
                            var r = t.indexOf(n) > -1;
                            return o ? r : !r
                        }
                        for (var i = Array.isArray(n) ? n : [n], s = 0; s < i.length; s++) {
                            var a = 0;
                            for (n = i[s]; a < t.length && !e.isTwoValueEquals(t[a], n); a++);
                            if (a == t.length) return !o
                        }
                        return o
                    }
                }, e.signs = {
                    less: "<",
                    lessorequal: "<=",
                    greater: ">",
                    greaterorequal: ">=",
                    equal: "==",
                    notequal: "!=",
                    plus: "+",
                    minus: "-",
                    mul: "*",
                    div: "/",
                    and: "and",
                    or: "or",
                    power: "^",
                    mod: "%",
                    negate: "!"
                }, e
            }(),
            X = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Y = function(e) {
                function t(n, o, r, i) {
                    var s = e.call(this) || this;
                    return s.message = n, s.expected = o, s.found = r, s.location = i, s.name = "SyntaxError", "function" == typeof Error.captureStackTrace && Error.captureStackTrace(s, t), s
                }
                return X(t, e), t.buildMessage = function(e, t) {
                    function n(e) {
                        return e.charCodeAt(0).toString(16).toUpperCase()
                    }

                    function o(e) {
                        return e.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, (function(e) {
                            return "\\x0" + n(e)
                        })).replace(/[\x10-\x1F\x7F-\x9F]/g, (function(e) {
                            return "\\x" + n(e)
                        }))
                    }

                    function r(e) {
                        return e.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, (function(e) {
                            return "\\x0" + n(e)
                        })).replace(/[\x10-\x1F\x7F-\x9F]/g, (function(e) {
                            return "\\x" + n(e)
                        }))
                    }

                    function i(e) {
                        switch (e.type) {
                            case "literal":
                                return '"' + o(e.text) + '"';
                            case "class":
                                var t = e.parts.map((function(e) {
                                    return Array.isArray(e) ? r(e[0]) + "-" + r(e[1]) : r(e)
                                }));
                                return "[" + (e.inverted ? "^" : "") + t + "]";
                            case "any":
                                return "any character";
                            case "end":
                                return "end of input";
                            case "other":
                                return e.description
                        }
                    }
                    return "Expected " + function(e) {
                        var t, n, o = e.map(i);
                        if (o.sort(), o.length > 0) {
                            for (t = 1, n = 1; t < o.length; t++) o[t - 1] !== o[t] && (o[n] = o[t], n++);
                            o.length = n
                        }
                        switch (o.length) {
                            case 1:
                                return o[0];
                            case 2:
                                return o[0] + " or " + o[1];
                            default:
                                return o.slice(0, -1).join(", ") + ", or " + o[o.length - 1]
                        }
                    }(e) + " but " + (((s = t) ? '"' + o(s) + '"' : "end of input") + " found.");
                    var s
                }, t
            }(Error);
        var ee = function(e, t) {
                t = void 0 !== t ? t : {};
                var n, o = {},
                    r = {
                        Expression: Je
                    },
                    i = Je,
                    s = function(e, t) {
                        return bt(e, t, !0)
                    },
                    a = ze("||", !1),
                    l = ze("or", !0),
                    u = ze("&&", !1),
                    c = ze("and", !0),
                    p = function(e, t) {
                        return bt(e, t)
                    },
                    d = ze("<=", !1),
                    h = ze("lessorequal", !0),
                    f = ze(">=", !1),
                    m = ze("greaterorequal", !0),
                    g = ze("==", !1),
                    y = ze("equal", !0),
                    v = ze("=", !1),
                    b = ze("!=", !1),
                    x = ze("notequal", !0),
                    C = ze("<", !1),
                    w = ze("less", !0),
                    P = ze(">", !1),
                    V = ze("greater", !0),
                    T = ze("+", !1),
                    k = ze("-", !1),
                    S = ze("*", !1),
                    O = ze("/", !1),
                    E = ze("%", !1),
                    R = ze("^", !1),
                    I = ze("power", !0),
                    _ = ze("*=", !1),
                    q = ze("contains", !0),
                    D = ze("contain", !0),
                    A = ze("notcontains", !0),
                    j = ze("notcontain", !0),
                    L = ze("anyof", !0),
                    M = ze("allof", !0),
                    N = ze("(", !1),
                    F = ze(")", !1),
                    B = ze("!", !1),
                    z = ze("negate", !0),
                    H = ze("empty", !0),
                    Q = ze("notempty", !0),
                    Z = ze("undefined", !1),
                    X = ze("null", !1),
                    ee = ze("{", !1),
                    te = ze("}", !1),
                    ne = ze("''", !1),
                    oe = ze('""', !1),
                    re = ze("'", !1),
                    ie = function(e) {
                        return "'" + e + "'"
                    },
                    se = ze('"', !1),
                    ae = ze("[", !1),
                    le = ze("]", !1),
                    ue = ze(",", !1),
                    ce = ze("true", !0),
                    pe = ze("false", !0),
                    de = ze("0x", !1),
                    he = /^[\-]/,
                    fe = He(["-"], !1, !1),
                    me = ze(".", !1),
                    ge = ze("0", !1),
                    ye = function(e) {
                        return e.join("")
                    },
                    ve = ze("\\'", !1),
                    be = ze('\\"', !1),
                    xe = /^[^"']/,
                    Ce = He(['"', "'"], !0, !1),
                    we = function() {
                        return Be()
                    },
                    Pe = /^[^{}]/,
                    Ve = He(["{", "}"], !0, !1),
                    Te = /^[0-9]/,
                    ke = He([
                        ["0", "9"]
                    ], !1, !1),
                    Se = /^[1-9]/,
                    Oe = He([
                        ["1", "9"]
                    ], !1, !1),
                    Ee = /^[a-zA-Z_]/,
                    Re = He([
                        ["a", "z"],
                        ["A", "Z"], "_"
                    ], !1, !1),
                    Ie = Qe("whitespace"),
                    _e = /^[ \t\n\r]/,
                    qe = He([" ", "\t", "\n", "\r"], !1, !1),
                    De = 0,
                    Ae = 0,
                    je = [{
                        line: 1,
                        column: 1
                    }],
                    Le = 0,
                    Me = [],
                    Ne = 0,
                    Fe = {};
                if (void 0 !== t.startRule) {
                    if (!(t.startRule in r)) throw new Error("Can't start parsing from rule \"" + t.startRule + '".');
                    i = r[t.startRule]
                }

                function Be() {
                    return e.substring(Ae, De)
                }

                function ze(e, t) {
                    return {
                        type: "literal",
                        text: e,
                        ignoreCase: t
                    }
                }

                function He(e, t, n) {
                    return {
                        type: "class",
                        parts: e,
                        inverted: t,
                        ignoreCase: n
                    }
                }

                function Qe(e) {
                    return {
                        type: "other",
                        description: e
                    }
                }

                function Ue(t) {
                    var n, o = je[t];
                    if (o) return o;
                    for (n = t - 1; !je[n];) n--;
                    for (o = {
                            line: (o = je[n]).line,
                            column: o.column
                        }; n < t;) 10 === e.charCodeAt(n) ? (o.line++, o.column = 1) : o.column++, n++;
                    return je[t] = o, o
                }

                function We(e, t) {
                    var n = Ue(e),
                        o = Ue(t);
                    return {
                        start: {
                            offset: e,
                            line: n.line,
                            column: n.column
                        },
                        end: {
                            offset: t,
                            line: o.line,
                            column: o.column
                        }
                    }
                }

                function $e(e) {
                    De < Le || (De > Le && (Le = De, Me = []), Me.push(e))
                }

                function Ge(e, t, n) {
                    return new Y(Y.buildMessage(e, t), e, t, n)
                }

                function Je() {
                    var e, t, n, r, i, a, l, u, c = 34 * De + 0,
                        p = Fe[c];
                    if (p) return De = p.nextPos, p.result;
                    if (e = De, vt() !== o)
                        if ((t = Ze()) !== o) {
                            for (n = [], r = De, (i = vt()) !== o && (a = Ke()) !== o && (l = vt()) !== o && (u = Ze()) !== o ? r = i = [i, a, l, u] : (De = r, r = o); r !== o;) n.push(r), r = De, (i = vt()) !== o && (a = Ke()) !== o && (l = vt()) !== o && (u = Ze()) !== o ? r = i = [i, a, l, u] : (De = r, r = o);
                            n !== o && (r = vt()) !== o ? (Ae = e, e = s(t, n)) : (De = e, e = o)
                        } else De = e, e = o;
                    else De = e, e = o;
                    return Fe[c] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function Ke() {
                    var t, n, r = 34 * De + 1,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, "||" === e.substr(De, 2) ? (n = "||", De += 2) : (n = o, 0 === Ne && $e(a)), n === o && ("or" === e.substr(De, 2).toLowerCase() ? (n = e.substr(De, 2), De += 2) : (n = o, 0 === Ne && $e(l))), n !== o && (Ae = t, n = "or"), t = n, Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function Ze() {
                    var e, t, n, r, i, a, l, u, c = 34 * De + 2,
                        p = Fe[c];
                    if (p) return De = p.nextPos, p.result;
                    if (e = De, (t = Ye()) !== o) {
                        for (n = [], r = De, (i = vt()) !== o && (a = Xe()) !== o && (l = vt()) !== o && (u = Ye()) !== o ? r = i = [i, a, l, u] : (De = r, r = o); r !== o;) n.push(r), r = De, (i = vt()) !== o && (a = Xe()) !== o && (l = vt()) !== o && (u = Ye()) !== o ? r = i = [i, a, l, u] : (De = r, r = o);
                        n !== o ? (Ae = e, e = t = s(t, n)) : (De = e, e = o)
                    } else De = e, e = o;
                    return Fe[c] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function Xe() {
                    var t, n, r = 34 * De + 3,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, "&&" === e.substr(De, 2) ? (n = "&&", De += 2) : (n = o, 0 === Ne && $e(u)), n === o && ("and" === e.substr(De, 3).toLowerCase() ? (n = e.substr(De, 3), De += 3) : (n = o, 0 === Ne && $e(c))), n !== o && (Ae = t, n = "and"), t = n, Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function Ye() {
                    var e, t, n, r, i, s, a, l, u = 34 * De + 4,
                        c = Fe[u];
                    if (c) return De = c.nextPos, c.result;
                    if (e = De, (t = tt()) !== o) {
                        for (n = [], r = De, (i = vt()) !== o && (s = et()) !== o && (a = vt()) !== o && (l = tt()) !== o ? r = i = [i, s, a, l] : (De = r, r = o); r !== o;) n.push(r), r = De, (i = vt()) !== o && (s = et()) !== o && (a = vt()) !== o && (l = tt()) !== o ? r = i = [i, s, a, l] : (De = r, r = o);
                        n !== o ? (Ae = e, e = t = p(t, n)) : (De = e, e = o)
                    } else De = e, e = o;
                    return Fe[u] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function et() {
                    var t, n, r = 34 * De + 5,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, "<=" === e.substr(De, 2) ? (n = "<=", De += 2) : (n = o, 0 === Ne && $e(d)), n === o && ("lessorequal" === e.substr(De, 11).toLowerCase() ? (n = e.substr(De, 11), De += 11) : (n = o, 0 === Ne && $e(h))), n !== o && (Ae = t, n = "lessorequal"), (t = n) === o && (t = De, ">=" === e.substr(De, 2) ? (n = ">=", De += 2) : (n = o, 0 === Ne && $e(f)), n === o && ("greaterorequal" === e.substr(De, 14).toLowerCase() ? (n = e.substr(De, 14), De += 14) : (n = o, 0 === Ne && $e(m))), n !== o && (Ae = t, n = "greaterorequal"), (t = n) === o && (t = De, "==" === e.substr(De, 2) ? (n = "==", De += 2) : (n = o, 0 === Ne && $e(g)), n === o && ("equal" === e.substr(De, 5).toLowerCase() ? (n = e.substr(De, 5), De += 5) : (n = o, 0 === Ne && $e(y))), n !== o && (Ae = t, n = "equal"), (t = n) === o && (t = De, 61 === e.charCodeAt(De) ? (n = "=", De++) : (n = o, 0 === Ne && $e(v)), n === o && ("equal" === e.substr(De, 5).toLowerCase() ? (n = e.substr(De, 5), De += 5) : (n = o, 0 === Ne && $e(y))), n !== o && (Ae = t, n = "equal"), (t = n) === o && (t = De, "!=" === e.substr(De, 2) ? (n = "!=", De += 2) : (n = o, 0 === Ne && $e(b)), n === o && ("notequal" === e.substr(De, 8).toLowerCase() ? (n = e.substr(De, 8), De += 8) : (n = o, 0 === Ne && $e(x))), n !== o && (Ae = t, n = "notequal"), (t = n) === o && (t = De, 60 === e.charCodeAt(De) ? (n = "<", De++) : (n = o, 0 === Ne && $e(C)), n === o && ("less" === e.substr(De, 4).toLowerCase() ? (n = e.substr(De, 4), De += 4) : (n = o, 0 === Ne && $e(w))), n !== o && (Ae = t, n = "less"), (t = n) === o && (t = De, 62 === e.charCodeAt(De) ? (n = ">", De++) : (n = o, 0 === Ne && $e(P)), n === o && ("greater" === e.substr(De, 7).toLowerCase() ? (n = e.substr(De, 7), De += 7) : (n = o, 0 === Ne && $e(V))), n !== o && (Ae = t, n = "greater"), t = n)))))), Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function tt() {
                    var e, t, n, r, i, a, l, u, c = 34 * De + 6,
                        p = Fe[c];
                    if (p) return De = p.nextPos, p.result;
                    if (e = De, (t = ot()) !== o) {
                        for (n = [], r = De, (i = vt()) !== o && (a = nt()) !== o && (l = vt()) !== o && (u = ot()) !== o ? r = i = [i, a, l, u] : (De = r, r = o); r !== o;) n.push(r), r = De, (i = vt()) !== o && (a = nt()) !== o && (l = vt()) !== o && (u = ot()) !== o ? r = i = [i, a, l, u] : (De = r, r = o);
                        n !== o ? (Ae = e, e = t = s(t, n)) : (De = e, e = o)
                    } else De = e, e = o;
                    return Fe[c] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function nt() {
                    var t, n, r = 34 * De + 7,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, 43 === e.charCodeAt(De) ? (n = "+", De++) : (n = o, 0 === Ne && $e(T)), n !== o && (Ae = t, n = "plus"), (t = n) === o && (t = De, 45 === e.charCodeAt(De) ? (n = "-", De++) : (n = o, 0 === Ne && $e(k)), n !== o && (Ae = t, n = "minus"), t = n), Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function ot() {
                    var e, t, n, r, i, a, l, u, c = 34 * De + 8,
                        p = Fe[c];
                    if (p) return De = p.nextPos, p.result;
                    if (e = De, (t = it()) !== o) {
                        for (n = [], r = De, (i = vt()) !== o && (a = rt()) !== o && (l = vt()) !== o && (u = it()) !== o ? r = i = [i, a, l, u] : (De = r, r = o); r !== o;) n.push(r), r = De, (i = vt()) !== o && (a = rt()) !== o && (l = vt()) !== o && (u = it()) !== o ? r = i = [i, a, l, u] : (De = r, r = o);
                        n !== o ? (Ae = e, e = t = s(t, n)) : (De = e, e = o)
                    } else De = e, e = o;
                    return Fe[c] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function rt() {
                    var t, n, r = 34 * De + 9,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, 42 === e.charCodeAt(De) ? (n = "*", De++) : (n = o, 0 === Ne && $e(S)), n !== o && (Ae = t, n = "mul"), (t = n) === o && (t = De, 47 === e.charCodeAt(De) ? (n = "/", De++) : (n = o, 0 === Ne && $e(O)), n !== o && (Ae = t, n = "div"), (t = n) === o && (t = De, 37 === e.charCodeAt(De) ? (n = "%", De++) : (n = o, 0 === Ne && $e(E)), n !== o && (Ae = t, n = "mod"), t = n)), Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function it() {
                    var e, t, n, r, i, a, l, u, c = 34 * De + 10,
                        p = Fe[c];
                    if (p) return De = p.nextPos, p.result;
                    if (e = De, (t = at()) !== o) {
                        for (n = [], r = De, (i = vt()) !== o && (a = st()) !== o && (l = vt()) !== o && (u = at()) !== o ? r = i = [i, a, l, u] : (De = r, r = o); r !== o;) n.push(r), r = De, (i = vt()) !== o && (a = st()) !== o && (l = vt()) !== o && (u = at()) !== o ? r = i = [i, a, l, u] : (De = r, r = o);
                        n !== o ? (Ae = e, e = t = s(t, n)) : (De = e, e = o)
                    } else De = e, e = o;
                    return Fe[c] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function st() {
                    var t, n, r = 34 * De + 11,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, 94 === e.charCodeAt(De) ? (n = "^", De++) : (n = o, 0 === Ne && $e(R)), n === o && ("power" === e.substr(De, 5).toLowerCase() ? (n = e.substr(De, 5), De += 5) : (n = o, 0 === Ne && $e(I))), n !== o && (Ae = t, n = "power"), t = n, Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function at() {
                    var e, t, n, r, i, s, a, l, u = 34 * De + 12,
                        c = Fe[u];
                    if (c) return De = c.nextPos, c.result;
                    if (e = De, (t = ut()) !== o) {
                        for (n = [], r = De, (i = vt()) !== o && (s = lt()) !== o && (a = vt()) !== o ? ((l = ut()) === o && (l = null), l !== o ? r = i = [i, s, a, l] : (De = r, r = o)) : (De = r, r = o); r !== o;) n.push(r), r = De, (i = vt()) !== o && (s = lt()) !== o && (a = vt()) !== o ? ((l = ut()) === o && (l = null), l !== o ? r = i = [i, s, a, l] : (De = r, r = o)) : (De = r, r = o);
                        n !== o ? (Ae = e, e = t = p(t, n)) : (De = e, e = o)
                    } else De = e, e = o;
                    return Fe[u] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function lt() {
                    var t, n, r = 34 * De + 13,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, "*=" === e.substr(De, 2) ? (n = "*=", De += 2) : (n = o, 0 === Ne && $e(_)), n === o && ("contains" === e.substr(De, 8).toLowerCase() ? (n = e.substr(De, 8), De += 8) : (n = o, 0 === Ne && $e(q)), n === o && ("contain" === e.substr(De, 7).toLowerCase() ? (n = e.substr(De, 7), De += 7) : (n = o, 0 === Ne && $e(D)))), n !== o && (Ae = t, n = "contains"), (t = n) === o && (t = De, "notcontains" === e.substr(De, 11).toLowerCase() ? (n = e.substr(De, 11), De += 11) : (n = o, 0 === Ne && $e(A)), n === o && ("notcontain" === e.substr(De, 10).toLowerCase() ? (n = e.substr(De, 10), De += 10) : (n = o, 0 === Ne && $e(j))), n !== o && (Ae = t, n = "notcontains"), (t = n) === o && (t = De, "anyof" === e.substr(De, 5).toLowerCase() ? (n = e.substr(De, 5), De += 5) : (n = o, 0 === Ne && $e(L)), n !== o && (Ae = t, n = "anyof"), (t = n) === o && (t = De, "allof" === e.substr(De, 5).toLowerCase() ? (n = e.substr(De, 5), De += 5) : (n = o, 0 === Ne && $e(M)), n !== o && (Ae = t, n = "allof"), t = n))), Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function ut() {
                    var t, n, r, i, s = 34 * De + 14,
                        a = Fe[s];
                    return a ? (De = a.nextPos, a.result) : (t = De, 40 === e.charCodeAt(De) ? (n = "(", De++) : (n = o, 0 === Ne && $e(N)), n !== o && vt() !== o && (r = Je()) !== o && vt() !== o ? (41 === e.charCodeAt(De) ? (i = ")", De++) : (i = o, 0 === Ne && $e(F)), i === o && (i = null), i !== o ? (Ae = t, t = n = r) : (De = t, t = o)) : (De = t, t = o), t === o && (t = function() {
                        var t, n, r, i, s, a = 34 * De + 15,
                            l = Fe[a];
                        if (l) return De = l.nextPos, l.result;
                        t = De, (n = mt()) !== o ? (40 === e.charCodeAt(De) ? (r = "(", De++) : (r = o, 0 === Ne && $e(N)), r !== o && (i = pt()) !== o ? (41 === e.charCodeAt(De) ? (s = ")", De++) : (s = o, 0 === Ne && $e(F)), s === o && (s = null), s !== o ? (Ae = t, n = new K(n, i), t = n) : (De = t, t = o)) : (De = t, t = o)) : (De = t, t = o);
                        return Fe[a] = {
                            nextPos: De,
                            result: t
                        }, t
                    }()) === o && (t = function() {
                        var t, n, r, i = 34 * De + 16,
                            s = Fe[i];
                        if (s) return De = s.nextPos, s.result;
                        t = De, 33 === e.charCodeAt(De) ? (n = "!", De++) : (n = o, 0 === Ne && $e(B));
                        n === o && ("negate" === e.substr(De, 6).toLowerCase() ? (n = e.substr(De, 6), De += 6) : (n = o, 0 === Ne && $e(z)));
                        n !== o && vt() !== o && (r = Je()) !== o ? (Ae = t, n = new W(r, "negate"), t = n) : (De = t, t = o);
                        t === o && (t = De, (n = ct()) !== o && vt() !== o && (r = function() {
                            var t, n, r = 34 * De + 17,
                                i = Fe[r];
                            if (i) return De = i.nextPos, i.result;
                            t = De, "empty" === e.substr(De, 5).toLowerCase() ? (n = e.substr(De, 5), De += 5) : (n = o, 0 === Ne && $e(H));
                            n !== o && (Ae = t, n = "empty");
                            (t = n) === o && (t = De, "notempty" === e.substr(De, 8).toLowerCase() ? (n = e.substr(De, 8), De += 8) : (n = o, 0 === Ne && $e(Q)), n !== o && (Ae = t, n = "notempty"), t = n);
                            return Fe[r] = {
                                nextPos: De,
                                result: t
                            }, t
                        }()) !== o ? (Ae = t, n = function(e, t) {
                            return new W(e, t)
                        }(n, r), t = n) : (De = t, t = o));
                        return Fe[i] = {
                            nextPos: De,
                            result: t
                        }, t
                    }()) === o && (t = ct()) === o && (t = function() {
                        var t, n, r, i, s = 34 * De + 20,
                            a = Fe[s];
                        if (a) return De = a.nextPos, a.result;
                        t = De, 91 === e.charCodeAt(De) ? (n = "[", De++) : (n = o, 0 === Ne && $e(ae));
                        n !== o && (r = pt()) !== o ? (93 === e.charCodeAt(De) ? (i = "]", De++) : (i = o, 0 === Ne && $e(le)), i !== o ? (Ae = t, t = n = r) : (De = t, t = o)) : (De = t, t = o);
                        return Fe[s] = {
                            nextPos: De,
                            result: t
                        }, t
                    }()), Fe[s] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function ct() {
                    var t, n, r, i, s = 34 * De + 18,
                        a = Fe[s];
                    return a ? (De = a.nextPos, a.result) : (t = De, vt() !== o ? ("undefined" === e.substr(De, 9) ? (n = "undefined", De += 9) : (n = o, 0 === Ne && $e(Z)), n === o && ("null" === e.substr(De, 4) ? (n = "null", De += 4) : (n = o, 0 === Ne && $e(X))), n !== o ? (Ae = t, t = null) : (De = t, t = o)) : (De = t, t = o), t === o && (t = De, vt() !== o && (n = function() {
                        var t, n, r, i, s = 34 * De + 19,
                            a = Fe[s];
                        if (a) return De = a.nextPos, a.result;
                        t = De, (n = function() {
                            var t, n, r = 34 * De + 22,
                                i = Fe[r];
                            if (i) return De = i.nextPos, i.result;
                            t = De, "true" === e.substr(De, 4).toLowerCase() ? (n = e.substr(De, 4), De += 4) : (n = o, 0 === Ne && $e(ce));
                            n !== o && (Ae = t, n = !0);
                            (t = n) === o && (t = De, "false" === e.substr(De, 5).toLowerCase() ? (n = e.substr(De, 5), De += 5) : (n = o, 0 === Ne && $e(pe)), n !== o && (Ae = t, n = !1), t = n);
                            return Fe[r] = {
                                nextPos: De,
                                result: t
                            }, t
                        }()) !== o && (Ae = t, n = n);
                        (t = n) === o && (t = De, (n = function() {
                            var t, n, r, i = 34 * De + 23,
                                s = Fe[i];
                            if (s) return De = s.nextPos, s.result;
                            t = De, "0x" === e.substr(De, 2) ? (n = "0x", De += 2) : (n = o, 0 === Ne && $e(de));
                            n !== o && (r = gt()) !== o ? (Ae = t, n = parseInt(Be(), 16), t = n) : (De = t, t = o);
                            t === o && (t = De, he.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(fe)), n === o && (n = null), n !== o && (r = function() {
                                var t, n, r, i = 34 * De + 24,
                                    s = Fe[i];
                                if (s) return De = s.nextPos, s.result;
                                t = De, (n = gt()) !== o ? (46 === e.charCodeAt(De) ? (r = ".", De++) : (r = o, 0 === Ne && $e(me)), r !== o && gt() !== o ? (Ae = t, n = parseFloat(Be()), t = n) : (De = t, t = o)) : (De = t, t = o);
                                t === o && (t = De, (n = function() {
                                    var t, n, r = 34 * De + 31,
                                        i = Fe[r];
                                    if (i) return De = i.nextPos, i.result;
                                    t = [], Se.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(Oe));
                                    if (n !== o)
                                        for (; n !== o;) t.push(n), Se.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(Oe));
                                    else t = o;
                                    return Fe[r] = {
                                        nextPos: De,
                                        result: t
                                    }, t
                                }()) !== o ? ((r = gt()) === o && (r = null), r !== o ? (Ae = t, n = parseInt(Be(), 10), t = n) : (De = t, t = o)) : (De = t, t = o), t === o && (t = De, 48 === e.charCodeAt(De) ? (n = "0", De++) : (n = o, 0 === Ne && $e(ge)), n !== o && (Ae = t, n = 0), t = n));
                                return Fe[i] = {
                                    nextPos: De,
                                    result: t
                                }, t
                            }()) !== o ? (Ae = t, a = r, t = n = null == n ? a : -a) : (De = t, t = o));
                            var a;
                            return Fe[i] = {
                                nextPos: De,
                                result: t
                            }, t
                        }()) !== o && (Ae = t, n = n), (t = n) === o && (t = De, (n = mt()) !== o && (Ae = t, n = n), (t = n) === o && (t = De, "''" === e.substr(De, 2) ? (n = "''", De += 2) : (n = o, 0 === Ne && $e(ne)), n !== o && (Ae = t, n = ""), (t = n) === o && (t = De, '""' === e.substr(De, 2) ? (n = '""', De += 2) : (n = o, 0 === Ne && $e(oe)), n !== o && (Ae = t, n = ""), (t = n) === o && (t = De, 39 === e.charCodeAt(De) ? (n = "'", De++) : (n = o, 0 === Ne && $e(re)), n !== o && (r = dt()) !== o ? (39 === e.charCodeAt(De) ? (i = "'", De++) : (i = o, 0 === Ne && $e(re)), i !== o ? (Ae = t, n = ie(r), t = n) : (De = t, t = o)) : (De = t, t = o), t === o && (t = De, 34 === e.charCodeAt(De) ? (n = '"', De++) : (n = o, 0 === Ne && $e(se)), n !== o && (r = dt()) !== o ? (34 === e.charCodeAt(De) ? (i = '"', De++) : (i = o, 0 === Ne && $e(se)), i !== o ? (Ae = t, n = ie(r), t = n) : (De = t, t = o)) : (De = t, t = o)))))));
                        return Fe[s] = {
                            nextPos: De,
                            result: t
                        }, t
                    }()) !== o ? (Ae = t, t = new G(n)) : (De = t, t = o), t === o && (t = De, vt() !== o ? (123 === e.charCodeAt(De) ? (n = "{", De++) : (n = o, 0 === Ne && $e(ee)), n !== o && (r = function() {
                        var e, t, n, r = 34 * De + 25,
                            i = Fe[r];
                        if (i) return De = i.nextPos, i.result;
                        if (e = De, t = [], (n = ft()) !== o)
                            for (; n !== o;) t.push(n), n = ft();
                        else t = o;
                        t !== o && (Ae = e, t = ye(t));
                        return e = t, Fe[r] = {
                            nextPos: De,
                            result: e
                        }, e
                    }()) !== o ? (125 === e.charCodeAt(De) ? (i = "}", De++) : (i = o, 0 === Ne && $e(te)), i !== o ? (Ae = t, t = function(e) {
                        return new J(e)
                    }(r)) : (De = t, t = o)) : (De = t, t = o)) : (De = t, t = o))), Fe[s] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function pt() {
                    var t, n, r, i, s, a, l, u, c = 34 * De + 21,
                        p = Fe[c];
                    if (p) return De = p.nextPos, p.result;
                    if (t = De, (n = Je()) === o && (n = null), n !== o) {
                        for (r = [], i = De, (s = vt()) !== o ? (44 === e.charCodeAt(De) ? (a = ",", De++) : (a = o, 0 === Ne && $e(ue)), a !== o && (l = vt()) !== o && (u = Je()) !== o ? i = s = [s, a, l, u] : (De = i, i = o)) : (De = i, i = o); i !== o;) r.push(i), i = De, (s = vt()) !== o ? (44 === e.charCodeAt(De) ? (a = ",", De++) : (a = o, 0 === Ne && $e(ue)), a !== o && (l = vt()) !== o && (u = Je()) !== o ? i = s = [s, a, l, u] : (De = i, i = o)) : (De = i, i = o);
                        r !== o ? (Ae = t, t = n = function(e, t) {
                            if (null == e) return new $([]);
                            var n = [e];
                            if (Array.isArray(t))
                                for (var o = function(e) {
                                        return [].concat.apply([], e)
                                    }(t), r = 3; r < o.length; r += 4) n.push(o[r]);
                            return new $(n)
                        }(n, r)) : (De = t, t = o)
                    } else De = t, t = o;
                    return Fe[c] = {
                        nextPos: De,
                        result: t
                    }, t
                }

                function dt() {
                    var e, t, n, r = 34 * De + 26,
                        i = Fe[r];
                    if (i) return De = i.nextPos, i.result;
                    if (e = De, t = [], (n = ht()) !== o)
                        for (; n !== o;) t.push(n), n = ht();
                    else t = o;
                    return t !== o && (Ae = e, t = ye(t)), e = t, Fe[r] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function ht() {
                    var t, n, r = 34 * De + 27,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, "\\'" === e.substr(De, 2) ? (n = "\\'", De += 2) : (n = o, 0 === Ne && $e(ve)), n !== o && (Ae = t, n = "'"), (t = n) === o && (t = De, '\\"' === e.substr(De, 2) ? (n = '\\"', De += 2) : (n = o, 0 === Ne && $e(be)), n !== o && (Ae = t, n = '"'), (t = n) === o && (t = De, xe.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(Ce)), n !== o && (Ae = t, n = we()), t = n)), Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function ft() {
                    var t, n, r = 34 * De + 28,
                        i = Fe[r];
                    return i ? (De = i.nextPos, i.result) : (t = De, Pe.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(Ve)), n !== o && (Ae = t, n = we()), t = n, Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t)
                }

                function mt() {
                    var e, t, n, r, i, s, a = 34 * De + 29,
                        l = Fe[a];
                    if (l) return De = l.nextPos, l.result;
                    if (e = De, yt() !== o) {
                        if (t = [], n = De, (r = gt()) !== o) {
                            for (i = [], s = yt(); s !== o;) i.push(s), s = yt();
                            i !== o ? n = r = [r, i] : (De = n, n = o)
                        } else De = n, n = o;
                        for (; n !== o;)
                            if (t.push(n), n = De, (r = gt()) !== o) {
                                for (i = [], s = yt(); s !== o;) i.push(s), s = yt();
                                i !== o ? n = r = [r, i] : (De = n, n = o)
                            } else De = n, n = o;
                        t !== o ? (Ae = e, e = we()) : (De = e, e = o)
                    } else De = e, e = o;
                    return Fe[a] = {
                        nextPos: De,
                        result: e
                    }, e
                }

                function gt() {
                    var t, n, r = 34 * De + 30,
                        i = Fe[r];
                    if (i) return De = i.nextPos, i.result;
                    if (t = [], Te.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(ke)), n !== o)
                        for (; n !== o;) t.push(n), Te.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(ke));
                    else t = o;
                    return Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t
                }

                function yt() {
                    var t, n, r = 34 * De + 32,
                        i = Fe[r];
                    if (i) return De = i.nextPos, i.result;
                    if (t = [], Ee.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(Re)), n !== o)
                        for (; n !== o;) t.push(n), Ee.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(Re));
                    else t = o;
                    return Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t
                }

                function vt() {
                    var t, n, r = 34 * De + 33,
                        i = Fe[r];
                    if (i) return De = i.nextPos, i.result;
                    for (Ne++, t = [], _e.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(qe)); n !== o;) t.push(n), _e.test(e.charAt(De)) ? (n = e.charAt(De), De++) : (n = o, 0 === Ne && $e(qe));
                    return Ne--, t === o && (n = o, 0 === Ne && $e(Ie)), Fe[r] = {
                        nextPos: De,
                        result: t
                    }, t
                }

                function bt(e, t, n) {
                    return void 0 === n && (n = !1), t.reduce((function(e, t) {
                        return new U(t[1], e, t[3], n)
                    }), e)
                }
                if ((n = i()) !== o && De === e.length) return n;
                throw n !== o && De < e.length && $e({
                    type: "end"
                }), Ge(Me, Le < e.length ? e.charAt(Le) : null, Le < e.length ? We(Le, Le + 1) : We(Le, Le))
            },
            te = function(e, t) {
                this.at = e, this.code = t
            },
            ne = function() {
                function e() {}
                return e.prototype.patchExpression = function(e) {
                    return e.replace(/=>/g, ">=").replace(/=</g, "<=").replace(/<>/g, "!=").replace(/equals/g, "equal ").replace(/notequals/g, "notequal ")
                }, e.prototype.createCondition = function(e) {
                    return this.parseExpression(e)
                }, e.prototype.parseExpression = function(t) {
                    try {
                        var n = e.parserCache[t];
                        return void 0 === n && ((n = ee(this.patchExpression(t))).hasAsyncFunction() || (e.parserCache[t] = n)), n
                    } catch (e) {
                        e instanceof Y && (this.conditionError = new te(e.location.start.offset, e.message))
                    }
                }, Object.defineProperty(e.prototype, "error", {
                    get: function() {
                        return this.conditionError
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.parserCache = {}, e
            }(),
            oe = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            re = function() {
                function e(e) {
                    this.processValue = new _, this.parser = new ne, this.isAsyncValue = !1, this.hasFunctionValue = !1, this.setExpression(e)
                }
                return Object.defineProperty(e.prototype, "expression", {
                    get: function() {
                        return this.expressionValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.setExpression = function(e) {
                    this.expression !== e && (this.expressionValue = e, this.operand = this.parser.parseExpression(e), this.hasFunctionValue = !!this.canRun() && this.operand.hasFunction(), this.isAsyncValue = !!this.hasFunction() && this.operand.hasAsyncFunction())
                }, e.prototype.getVariables = function() {
                    if (!this.operand) return [];
                    var e = [];
                    return this.operand.setVariables(e), e
                }, e.prototype.hasFunction = function() {
                    return this.hasFunctionValue
                }, Object.defineProperty(e.prototype, "isAsync", {
                    get: function() {
                        return this.isAsyncValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.canRun = function() {
                    return !!this.operand
                }, e.prototype.run = function(e, t) {
                    var n = this;
                    if (void 0 === t && (t = null), !this.operand) return null;
                    if (this.processValue.values = e, this.processValue.properties = t, !this.isAsync) return this.runValues();
                    this.asyncFuncList = [], this.operand.addToAsyncList(this.asyncFuncList);
                    for (var o = 0; o < this.asyncFuncList.length; o++) this.asyncFuncList[o].onAsyncReady = function() {
                        n.doAsyncFunctionReady()
                    };
                    for (o = 0; o < this.asyncFuncList.length; o++) this.asyncFuncList[o].evaluateAsync(this.processValue);
                    return !1
                }, e.prototype.doAsyncFunctionReady = function() {
                    for (var e = 0; e < this.asyncFuncList.length; e++)
                        if (!this.asyncFuncList[e].isReady) return;
                    this.runValues()
                }, e.prototype.runValues = function() {
                    var e = this.operand.evaluate(this.processValue);
                    return this.onComplete && this.onComplete(e), e
                }, e.createExpressionExecutor = function(t) {
                    return new e(t)
                }, e
            }(),
            ie = function() {
                function e(e) {
                    this.expression = e
                }
                return Object.defineProperty(e.prototype, "expression", {
                    get: function() {
                        return this.expressionExecutor ? this.expressionExecutor.expression : ""
                    },
                    set: function(e) {
                        var t = this;
                        this.expressionExecutor && e === this.expression || (this.expressionExecutor = re.createExpressionExecutor(e), this.expressionExecutor.onComplete = function(e) {
                            t.doOnComplete(e)
                        })
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getVariables = function() {
                    return this.expressionExecutor.getVariables()
                }, e.prototype.hasFunction = function() {
                    return this.expressionExecutor.hasFunction()
                }, Object.defineProperty(e.prototype, "isAsync", {
                    get: function() {
                        return this.expressionExecutor.isAsync
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.canRun = function() {
                    return this.expressionExecutor.canRun()
                }, e.prototype.runCore = function(e, t) {
                    return void 0 === t && (t = null), this.expressionExecutor.run(e, t)
                }, e.prototype.doOnComplete = function(e) {}, e
            }(),
            se = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return oe(t, e), t.prototype.run = function(e, t) {
                    return void 0 === t && (t = null), 1 == this.runCore(e, t)
                }, t.prototype.doOnComplete = function(e) {
                    this.onRunComplete && this.onRunComplete(1 == e)
                }, t
            }(ie),
            ae = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return oe(t, e), t.prototype.run = function(e, t) {
                    return void 0 === t && (t = null), this.runCore(e, t)
                }, t.prototype.doOnComplete = function(e) {
                    this.onRunComplete && this.onRunComplete(e)
                }, t
            }(ie),
            le = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ue = function(e, t, n) {
                if (n || 2 === arguments.length)
                    for (var o, r = 0, i = t.length; r < i; r++) !o && r in t || (o || (o = Array.prototype.slice.call(t, 0, r)), o[r] = t[r]);
                return e.concat(o || Array.prototype.slice.call(t))
            },
            ce = function() {
                function e(e) {
                    this.obj = e, this.properties = null, this.values = null
                }
                return e.prototype.getType = function() {
                    return "bindings"
                }, e.prototype.getNames = function() {
                    var e = [];
                    this.fillProperties();
                    for (var t = 0; t < this.properties.length; t++) this.properties[t].isVisible("", this.obj) && e.push(this.properties[t].name);
                    return e
                }, e.prototype.getProperties = function() {
                    var e = [];
                    this.fillProperties();
                    for (var t = 0; t < this.properties.length; t++) e.push(this.properties[t]);
                    return e
                }, e.prototype.setBinding = function(e, t) {
                    this.values || (this.values = {});
                    var n = this.getJson();
                    n !== t && (t ? this.values[e] = t : (delete this.values[e], 0 == Object.keys(this.values).length && (this.values = null)), this.onChangedJSON(n))
                }, e.prototype.clearBinding = function(e) {
                    this.setBinding(e, "")
                }, e.prototype.isEmpty = function() {
                    if (!this.values) return !0;
                    for (var e in this.values) return !1;
                    return !0
                }, e.prototype.getValueNameByPropertyName = function(e) {
                    if (this.values) return this.values[e]
                }, e.prototype.getPropertiesByValueName = function(e) {
                    if (!this.values) return [];
                    var t = [];
                    for (var n in this.values) this.values[n] == e && t.push(n);
                    return t
                }, e.prototype.getJson = function() {
                    if (!this.isEmpty()) {
                        var e = {};
                        for (var t in this.values) e[t] = this.values[t];
                        return e
                    }
                }, e.prototype.setJson = function(e) {
                    var t = this.getJson();
                    if (this.values = null, e)
                        for (var n in this.values = {}, e) this.values[n] = e[n];
                    this.onChangedJSON(t)
                }, e.prototype.fillProperties = function() {
                    if (null === this.properties) {
                        this.properties = [];
                        for (var e = I.getPropertiesByObj(this.obj), t = 0; t < e.length; t++) e[t].isBindable && this.properties.push(e[t])
                    }
                }, e.prototype.onChangedJSON = function(e) {
                    this.obj && this.obj.onBindingChanged(e, this.getJson())
                }, e
            }(),
            pe = function() {
                function e(t, n, o) {
                    this.currentDependency = t, this.target = n, this.property = o, this.dependencies = [], this.id = "" + ++e.DependenciesCount
                }
                return e.prototype.addDependency = function(e, t) {
                    this.target === e && this.property === t || this.dependencies.some((function(n) {
                        return n.obj === e && n.prop === t
                    })) || (this.dependencies.push({
                        obj: e,
                        prop: t,
                        id: this.id
                    }), e.registerPropertyChangedHandlers([t], this.currentDependency, this.id))
                }, e.prototype.dispose = function() {
                    this.dependencies.forEach((function(e) {
                        e.obj.unregisterPropertyChangedHandlers([e.prop], e.id)
                    }))
                }, e.DependenciesCount = 0, e
            }(),
            de = function() {
                function e(t) {
                    this._updater = t, this.dependencies = void 0, this.type = e.ComputedUpdaterType
                }
                return Object.defineProperty(e.prototype, "updater", {
                    get: function() {
                        return this._updater
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.setDependencies = function(e) {
                    this.clearDependencies(), this.dependencies = e
                }, e.prototype.getDependencies = function() {
                    return this.dependencies
                }, e.prototype.clearDependencies = function() {
                    this.dependencies && (this.dependencies.dispose(), this.dependencies = void 0)
                }, e.prototype.dispose = function() {
                    this.clearDependencies()
                }, e.ComputedUpdaterType = "__dependency_computed", e
            }(),
            he = function() {
                function e() {
                    this.propertyHash = {}, this.eventList = [], this.isLoadingFromJsonValue = !1, this.loadingOwner = null, this.onPropertyChanged = this.addEvent(), this.onItemValuePropertyChanged = this.addEvent(), this.isCreating = !0, this.bindingsValue = new ce(this), C.createProperties(this), this.onBaseCreating(), this.isCreating = !1
                }
                return e.finishCollectDependencies = function() {
                    var t = e.currentDependencis;
                    return e.currentDependencis = void 0, t
                }, e.startCollectDependencies = function(t, n, o) {
                    if (void 0 !== e.currentDependencis) throw new Error("Attempt to collect nested dependencies. Nested dependencies are not supported.");
                    e.currentDependencis = new pe(t, n, o)
                }, e.collectDependency = function(t, n) {
                    void 0 !== e.currentDependencis && e.currentDependencis.addDependency(t, n)
                }, Object.defineProperty(e, "commentSuffix", {
                    get: function() {
                        return s.commentSuffix
                    },
                    set: function(e) {
                        s.commentSuffix = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e, "commentPrefix", {
                    get: function() {
                        return e.commentSuffix
                    },
                    set: function(t) {
                        e.commentSuffix = t
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.isValueEmpty = function(e, t) {
                    return void 0 === t && (t = !0), t && (e = this.trimValue(e)), a.isValueEmpty(e)
                }, e.prototype.trimValue = function(e) {
                    return e && ("string" == typeof e || e instanceof String) ? e.trim() : e
                }, e.prototype.isPropertyEmpty = function(e) {
                    return "" !== e && this.isValueEmpty(e)
                }, e.prototype.dispose = function() {
                    for (var e = 0; e < this.eventList.length; e++) this.eventList[e].clear();
                    this.onPropertyValueChangedCallback = void 0, this.isDisposedValue = !0
                }, Object.defineProperty(e.prototype, "isDisposed", {
                    get: function() {
                        return !0 === this.isDisposedValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.addEvent = function() {
                    var e = new ge;
                    return this.eventList.push(e), e
                }, e.prototype.onBaseCreating = function() {}, e.prototype.getType = function() {
                    return "base"
                }, e.prototype.isDescendantOf = function(e) {
                    return I.isDescendantOf(this.getType(), e)
                }, e.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), null
                }, Object.defineProperty(e.prototype, "isDesignMode", {
                    get: function() {
                        var e = this.getSurvey();
                        return !!e && e.isDesignMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "inSurvey", {
                    get: function() {
                        return !!this.getSurvey(!0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "bindings", {
                    get: function() {
                        return this.bindingsValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.checkBindings = function(e, t) {}, e.prototype.updateBindings = function(e, t) {
                    var n = this.bindings.getValueNameByPropertyName(e);
                    n && this.updateBindingValue(n, t)
                }, e.prototype.updateBindingValue = function(e, t) {}, e.prototype.getTemplate = function() {
                    return this.getType()
                }, Object.defineProperty(e.prototype, "isLoadingFromJson", {
                    get: function() {
                        return this.isLoadingFromJsonValue || this.getIsLoadingFromJson()
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getIsLoadingFromJson = function() {
                    return !(!this.loadingOwner || !this.loadingOwner.isLoadingFromJson) || this.isLoadingFromJsonValue
                }, e.prototype.startLoadingFromJson = function(e) {
                    this.isLoadingFromJsonValue = !0
                }, e.prototype.endLoadingFromJson = function() {
                    this.isLoadingFromJsonValue = !1
                }, e.prototype.toJSON = function() {
                    return (new R).toJsonObject(this)
                }, e.prototype.fromJSON = function(e) {
                    (new R).toObject(e, this), this.onSurveyLoad()
                }, e.prototype.onSurveyLoad = function() {}, e.prototype.clone = function() {
                    var e = I.createClass(this.getType());
                    return e.fromJSON(this.toJSON()), e
                }, e.prototype.getPropertyByName = function(e) {
                    return I.findProperty(this.getType(), e)
                }, e.prototype.isPropertyVisible = function(e) {
                    var t = this.getPropertyByName(e);
                    return !!t && t.isVisible("", this)
                }, e.createProgressInfo = function() {
                    return {
                        questionCount: 0,
                        answeredQuestionCount: 0,
                        requiredQuestionCount: 0,
                        requiredAnsweredQuestionCount: 0
                    }
                }, e.prototype.getProgressInfo = function() {
                    return e.createProgressInfo()
                }, e.prototype.localeChanged = function() {}, e.prototype.locStrsChanged = function() {
                    if (this.arraysInfo)
                        for (var t in this.arraysInfo) {
                            if ((o = this.arraysInfo[t]) && o.isItemValues) {
                                var n = this.getPropertyValue(t);
                                n && e.itemValueLocStrChanged && e.itemValueLocStrChanged(n)
                            }
                        }
                    if (this.localizableStrings)
                        for (var t in this.localizableStrings) {
                            var o;
                            (o = this.getLocalizableString(t)) && o.strChanged()
                        }
                }, e.prototype.getPropertyValue = function(e, t) {
                    void 0 === t && (t = null);
                    var n = this.getPropertyValueCore(this.propertyHash, e);
                    if (this.isPropertyEmpty(n)) {
                        if (null != t) return t;
                        var o = I.findProperty(this.getType(), e);
                        if (o && (!o.isCustom || !this.isCreating)) {
                            if (!this.isPropertyEmpty(o.defaultValue) && !Array.isArray(o.defaultValue)) return o.defaultValue;
                            if ("boolean" == o.type || "switch" == o.type) return !1;
                            if (o.isCustom && o.onGetValue) return o.onGetValue(this)
                        }
                    }
                    return n
                }, e.prototype.getPropertyValueCore = function(t, n) {
                    return e.collectDependency(this, n), this.getPropertyValueCoreHandler ? this.getPropertyValueCoreHandler(t, n) : t[n]
                }, e.prototype.geValueFromHash = function() {
                    return this.propertyHash.value
                }, e.prototype.setPropertyValueCore = function(e, t, n) {
                    this.setPropertyValueCoreHandler ? this.isDisposedValue ? console.warn("Attempt to set property '" + t + "' of a disposed object '" + this.getType() + "'") : this.setPropertyValueCoreHandler(e, t, n) : e[t] = n
                }, Object.defineProperty(e.prototype, "isEditingSurveyElement", {
                    get: function() {
                        var e = this.getSurvey();
                        return !!e && e.isEditingSurveyElement
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.iteratePropertiesHash = function(e) {
                    var t = this,
                        n = [];
                    for (var o in this.propertyHash) "value" === o && this.isEditingSurveyElement && Array.isArray(this.value) || n.push(o);
                    n.forEach((function(n) {
                        return e(t.propertyHash, n)
                    }))
                }, e.prototype.setPropertyValue = function(e, t) {
                    if (!this.isLoadingFromJson) {
                        var n = this.getPropertyByName(e);
                        n && (t = n.settingValue(this, t))
                    }
                    var o = this.getPropertyValue(e);
                    if (o && Array.isArray(o) && this.arraysInfo && (!t || Array.isArray(t))) {
                        if (this.isTwoValueEquals(o, t)) return;
                        this.setArrayPropertyDirectly(e, t)
                    } else this.setPropertyValueDirectly(e, t), this.isDisposedValue || this.isTwoValueEquals(o, t) || this.propertyValueChanged(e, o, t)
                }, e.prototype.setArrayPropertyDirectly = function(e, t, n) {
                    void 0 === n && (n = !0);
                    var o = this.arraysInfo[e];
                    this.setArray(e, this.getPropertyValue(e), t, !!o && o.isItemValues, o ? n && o.onPush : null)
                }, e.prototype.setPropertyValueDirectly = function(e, t) {
                    this.setPropertyValueCore(this.propertyHash, e, t)
                }, e.prototype.clearPropertyValue = function(e) {
                    this.setPropertyValueCore(this.propertyHash, e, null), delete this.propertyHash[e]
                }, e.prototype.onPropertyValueChangedCallback = function(e, t, n, o, r) {}, e.prototype.itemValuePropertyChanged = function(e, t, n, o) {
                    this.onItemValuePropertyChanged.fire(this, {
                        obj: e,
                        name: t,
                        oldValue: n,
                        newValue: o,
                        propertyName: e.ownerPropertyName
                    })
                }, e.prototype.onPropertyValueChanged = function(e, t, n) {}, e.prototype.propertyValueChanged = function(e, t, n, o, r) {
                    if (!this.isLoadingFromJson && (this.updateBindings(e, n), this.onPropertyValueChanged(e, t, n), this.onPropertyChanged.fire(this, {
                            name: e,
                            oldValue: t,
                            newValue: n
                        }), this.doPropertyValueChangedCallback(e, t, n, o, this), this.checkConditionPropertyChanged(e), this.onPropChangeFunctions))
                        for (var i = 0; i < this.onPropChangeFunctions.length; i++) this.onPropChangeFunctions[i].name == e && this.onPropChangeFunctions[i].func(n)
                }, e.prototype.onBindingChanged = function(e, t) {
                    this.isLoadingFromJson || this.doPropertyValueChangedCallback("bindings", e, t)
                }, Object.defineProperty(e.prototype, "isInternal", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.doPropertyValueChangedCallback = function(e, t, n, o, r) {
                    if (!this.isInternal) {
                        r || (r = this);
                        var i = this.getSurvey();
                        i || (i = this), i.onPropertyValueChangedCallback && i.onPropertyValueChangedCallback(e, t, n, r, o), i !== this && this.onPropertyValueChangedCallback && this.onPropertyValueChangedCallback(e, t, n, r, o)
                    }
                }, e.prototype.addExpressionProperty = function(e, t, n) {
                    this.expressionInfo || (this.expressionInfo = {}), this.expressionInfo[e] = {
                        onExecute: t,
                        canRun: n
                    }
                }, e.prototype.getDataFilteredValues = function() {
                    return {}
                }, e.prototype.getDataFilteredProperties = function() {
                    return {}
                }, e.prototype.runConditionCore = function(e, t) {
                    if (this.expressionInfo)
                        for (var n in this.expressionInfo) this.runConditionItemCore(n, e, t)
                }, e.prototype.canRunConditions = function() {
                    return !this.isDesignMode
                }, e.prototype.checkConditionPropertyChanged = function(e) {
                    this.expressionInfo && this.expressionInfo[e] && this.canRunConditions() && this.runConditionItemCore(e, this.getDataFilteredValues(), this.getDataFilteredProperties())
                }, e.prototype.runConditionItemCore = function(e, t, n) {
                    var o = this,
                        r = this.expressionInfo[e],
                        i = this.getPropertyValue(e);
                    i && (r.canRun && !r.canRun(this) || (r.runner || (r.runner = new ae(i), r.runner.onRunComplete = function(e) {
                        r.onExecute(o, e)
                    }), r.runner.expression = i, r.runner.run(t, n)))
                }, e.prototype.registerPropertyChangedHandlers = function(e, t, n) {
                    void 0 === n && (n = null);
                    for (var o = 0; o < e.length; o++) this.registerFunctionOnPropertyValueChanged(e[o], t, n)
                }, e.prototype.unregisterPropertyChangedHandlers = function(e, t) {
                    void 0 === t && (t = null);
                    for (var n = 0; n < e.length; n++) this.unRegisterFunctionOnPropertyValueChanged(e[n], t)
                }, e.prototype.registerFunctionOnPropertyValueChanged = function(e, t, n) {
                    if (void 0 === n && (n = null), this.onPropChangeFunctions || (this.onPropChangeFunctions = []), n)
                        for (var o = 0; o < this.onPropChangeFunctions.length; o++) {
                            var r = this.onPropChangeFunctions[o];
                            if (r.name == e && r.key == n) return void(r.func = t)
                        }
                    this.onPropChangeFunctions.push({
                        name: e,
                        func: t,
                        key: n
                    })
                }, e.prototype.registerFunctionOnPropertiesValueChanged = function(e, t, n) {
                    void 0 === n && (n = null), this.registerPropertyChangedHandlers(e, t, n)
                }, e.prototype.unRegisterFunctionOnPropertyValueChanged = function(e, t) {
                    if (void 0 === t && (t = null), this.onPropChangeFunctions)
                        for (var n = 0; n < this.onPropChangeFunctions.length; n++) {
                            var o = this.onPropChangeFunctions[n];
                            if (o.name == e && o.key == t) return void this.onPropChangeFunctions.splice(n, 1)
                        }
                }, e.prototype.unRegisterFunctionOnPropertiesValueChanged = function(e, t) {
                    void 0 === t && (t = null), this.unregisterPropertyChangedHandlers(e, t)
                }, e.prototype.createCustomLocalizableObj = function(e) {
                    this.getLocalizableString(e) || this.createLocalizableString(e, this, !1, !0)
                }, e.prototype.getLocale = function() {
                    var e = this.getSurvey();
                    return e ? e.getLocale() : ""
                }, e.prototype.getLocalizationString = function(e) {
                    return u.getString(e, this.getLocale())
                }, e.prototype.getLocalizationFormatString = function(e) {
                    for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
                    var o = this.getLocalizationString(e);
                    return o && o.format ? o.format.apply(o, t) : ""
                }, e.prototype.createLocalizableString = function(e, t, n, o) {
                    var r = this;
                    void 0 === n && (n = !1), void 0 === o && (o = !1);
                    var i = new d(t, n, e);
                    return o && (i.localizationName = !0 === o ? e : o), i.onStrChanged = function(t, n) {
                        r.propertyValueChanged(e, t, n)
                    }, this.localizableStrings || (this.localizableStrings = {}), this.localizableStrings[e] = i, i
                }, e.prototype.getLocalizableString = function(e) {
                    return this.localizableStrings ? this.localizableStrings[e] : null
                }, e.prototype.getLocalizableStringText = function(t, n) {
                    void 0 === n && (n = ""), e.collectDependency(this, t);
                    var o = this.getLocalizableString(t);
                    if (!o) return "";
                    var r = o.text;
                    return r || n
                }, e.prototype.setLocalizableStringText = function(e, t) {
                    var n = this.getLocalizableString(e);
                    n && (n.text != t && (n.text = t))
                }, e.prototype.addUsedLocales = function(e) {
                    if (this.localizableStrings)
                        for (var t in this.localizableStrings) {
                            (r = this.getLocalizableString(t)) && this.AddLocStringToUsedLocales(r, e)
                        }
                    if (this.arraysInfo)
                        for (var t in this.arraysInfo) {
                            var n = this.getPropertyValue(t);
                            if (n && n.length)
                                for (var o = 0; o < n.length; o++) {
                                    var r;
                                    (r = n[o]) && r.addUsedLocales && r.addUsedLocales(e)
                                }
                        }
                }, e.prototype.searchText = function(e, t) {
                    var n = [];
                    this.getSearchableLocalizedStrings(n);
                    for (var o = 0; o < n.length; o++) n[o].setFindText(e) && t.push({
                        element: this,
                        str: n[o]
                    })
                }, e.prototype.getSearchableLocalizedStrings = function(e) {
                    if (this.localizableStrings) {
                        var t = [];
                        this.getSearchableLocKeys(t);
                        for (var n = 0; n < t.length; n++) {
                            var o = this.getLocalizableString(t[n]);
                            o && e.push(o)
                        }
                    }
                    if (this.arraysInfo) {
                        var r = [];
                        this.getSearchableItemValueKeys(r);
                        for (n = 0; n < r.length; n++) {
                            var i = this.getPropertyValue(r[n]);
                            if (i)
                                for (var s = 0; s < i.length; s++) e.push(i[s].locText)
                        }
                    }
                }, e.prototype.getSearchableLocKeys = function(e) {}, e.prototype.getSearchableItemValueKeys = function(e) {}, e.prototype.AddLocStringToUsedLocales = function(e, t) {
                    for (var n = e.getLocales(), o = 0; o < n.length; o++) t.indexOf(n[o]) < 0 && t.push(n[o])
                }, e.prototype.createItemValues = function(e) {
                    var t = this,
                        n = this.createNewArray(e, (function(n) {
                            if (n.locOwner = t, n.ownerPropertyName = e, "function" == typeof n.getSurvey) {
                                var o = n.getSurvey();
                                o && "function" == typeof o.makeReactive && o.makeReactive(n)
                            }
                        }));
                    return this.arraysInfo[e].isItemValues = !0, n
                }, e.prototype.notifyArrayChanged = function(e, t) {
                    e.onArrayChanged && e.onArrayChanged(t)
                }, e.prototype.createNewArrayCore = function(e) {
                    var t = null;
                    return this.createArrayCoreHandler && (t = this.createArrayCoreHandler(this.propertyHash, e)), t || (t = new Array, this.setPropertyValueCore(this.propertyHash, e, t)), t
                }, e.prototype.ensureArray = function(e, t, n) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), !this.arraysInfo || !this.arraysInfo[e]) return this.createNewArray(e, t, n)
                }, e.prototype.createNewArray = function(e, t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = this.createNewArrayCore(e);
                    this.arraysInfo || (this.arraysInfo = {}), this.arraysInfo[e] = {
                        onPush: t,
                        isItemValues: !1
                    };
                    var r = this;
                    return o.push = function(n) {
                        var i = Object.getPrototypeOf(o).push.call(o, n);
                        if (!r.isDisposedValue) {
                            t && t(n, o.length - 1);
                            var s = new fe(o.length - 1, 0, [n], []);
                            r.propertyValueChanged(e, o, o, s), r.notifyArrayChanged(o, s)
                        }
                        return i
                    }, o.shift = function() {
                        var t = Object.getPrototypeOf(o).shift.call(o);
                        if (!r.isDisposedValue && t) {
                            n && n(t);
                            var i = new fe(o.length - 1, 1, [], []);
                            r.propertyValueChanged(e, o, o, i), r.notifyArrayChanged(o, i)
                        }
                        return t
                    }, o.unshift = function(n) {
                        var i = Object.getPrototypeOf(o).unshift.call(o, n);
                        if (!r.isDisposedValue) {
                            t && t(n, o.length - 1);
                            var s = new fe(0, 0, [n], []);
                            r.propertyValueChanged(e, o, o, s), r.notifyArrayChanged(o, s)
                        }
                        return i
                    }, o.pop = function() {
                        var t = Object.getPrototypeOf(o).pop.call(o);
                        if (!r.isDisposedValue) {
                            n && n(t);
                            var i = new fe(o.length - 1, 1, [], []);
                            r.propertyValueChanged(e, o, o, i), r.notifyArrayChanged(o, i)
                        }
                        return t
                    }, o.splice = function(i, s) {
                        for (var a, l = [], u = 2; u < arguments.length; u++) l[u - 2] = arguments[u];
                        i || (i = 0), s || (s = 0);
                        var c = (a = Object.getPrototypeOf(o).splice).call.apply(a, ue([o, i, s], l, !1));
                        if (l || (l = []), !r.isDisposedValue) {
                            if (n && c)
                                for (var p = 0; p < c.length; p++) n(c[p]);
                            if (t)
                                for (p = 0; p < l.length; p++) t(l[p], i + p);
                            var d = new fe(i, s, l, c);
                            r.propertyValueChanged(e, o, o, d), r.notifyArrayChanged(o, d)
                        }
                        return c
                    }, o
                }, e.prototype.getItemValueType = function() {}, e.prototype.setArray = function(t, n, o, r, i) {
                    var s = [].concat(n);
                    if (Object.getPrototypeOf(n).splice.call(n, 0, n.length), o)
                        for (var a = 0; a < o.length; a++) {
                            var l = o[a];
                            r && e.createItemValue && (l = e.createItemValue(l, this.getItemValueType())), Object.getPrototypeOf(n).push.call(n, l), i && i(n[a])
                        }
                    var u = new fe(0, s.length, n, s);
                    this.propertyValueChanged(t, s, n, u), this.notifyArrayChanged(n, u)
                }, e.prototype.isTwoValueEquals = function(e, t, n, o) {
                    return void 0 === n && (n = !1), void 0 === o && (o = !1), a.isTwoValueEquals(e, t, !1, !n, o)
                }, e.copyObject = function(e, t) {
                    for (var n in t) {
                        var o = t[n];
                        "object" == typeof o && (o = {}, this.copyObject(o, t[n])), e[n] = o
                    }
                }, e.prototype.copyCssClasses = function(t, n) {
                    n && ("string" == typeof n || n instanceof String ? t.root = n : e.copyObject(t, n))
                }, e.prototype.getValueInLowCase = function(e) {
                    return e && "string" == typeof e ? e.toLowerCase() : e
                }, e.prototype.getElementsInDesign = function(e) {
                    return void 0 === e && (e = !1), []
                }, e.currentDependencis = void 0, e
            }(),
            fe = function(e, t, n, o) {
                this.index = e, this.deleteCount = t, this.itemsToAdd = n, this.deletedItems = o
            },
            me = function() {
                function e() {}
                return Object.defineProperty(e.prototype, "isEmpty", {
                    get: function() {
                        return 0 === this.length
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "length", {
                    get: function() {
                        return this.callbacks ? this.callbacks.length : 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.fireByCreatingOptions = function(e, t) {
                    if (this.callbacks)
                        for (var n = 0; n < this.callbacks.length; n++)
                            if (this.callbacks[n](e, t()), !this.callbacks) return
                }, e.prototype.fire = function(e, t) {
                    if (this.callbacks)
                        for (var n = 0; n < this.callbacks.length; n++)
                            if (this.callbacks[n](e, t), !this.callbacks) return
                }, e.prototype.clear = function() {
                    this.callbacks = void 0
                }, e.prototype.add = function(e) {
                    this.hasFunc(e) || (this.callbacks || (this.callbacks = new Array), this.callbacks.push(e), this.fireCallbackChanged())
                }, e.prototype.remove = function(e) {
                    if (this.hasFunc(e)) {
                        var t = this.callbacks.indexOf(e, 0);
                        this.callbacks.splice(t, 1), this.fireCallbackChanged()
                    }
                }, e.prototype.hasFunc = function(e) {
                    return null != this.callbacks && this.callbacks.indexOf(e, 0) > -1
                }, e.prototype.fireCallbackChanged = function() {
                    this.onCallbacksChanged && this.onCallbacksChanged()
                }, e
            }(),
            ge = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return le(t, e), t
            }(me),
            ye = function() {
                function e(e, t) {
                    void 0 === e && (e = null), void 0 === t && (t = null), this.text = e, this.errorOwner = t, this.visible = !0, this.onUpdateErrorTextCallback = void 0
                }
                return e.prototype.equalsTo = function(e) {
                    return !(!e || !e.getErrorType) && (this.getErrorType() === e.getErrorType() && (this.text === e.text && this.visible === e.visible))
                }, Object.defineProperty(e.prototype, "locText", {
                    get: function() {
                        return this.locTextValue || (this.locTextValue = new d(this.errorOwner, !0), this.locTextValue.storeDefaultText = !0, this.locTextValue.text = this.getText()), this.locTextValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getText = function() {
                    var e = this.text;
                    return e || (e = this.getDefaultText()), this.errorOwner && (e = this.errorOwner.getErrorCustomText(e, this)), e
                }, e.prototype.getErrorType = function() {
                    return "base"
                }, e.prototype.getDefaultText = function() {
                    return ""
                }, e.prototype.getLocale = function() {
                    return this.errorOwner ? this.errorOwner.getLocale() : ""
                }, e.prototype.getLocalizationString = function(e) {
                    return u.getString(e, this.getLocale())
                }, e.prototype.updateText = function() {
                    this.onUpdateErrorTextCallback && this.onUpdateErrorTextCallback(this), this.locText.text = this.getText()
                }, e
            }(),
            ve = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            be = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "required"
                }, t.prototype.getDefaultText = function() {
                    return this.getLocalizationString("requiredError")
                }, t
            }(ye),
            xe = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "requireoneanswer"
                }, t.prototype.getDefaultText = function() {
                    return this.getLocalizationString("requiredErrorInPanel")
                }, t
            }(ye),
            Ce = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "requirenumeric"
                }, t.prototype.getDefaultText = function() {
                    return this.getLocalizationString("numericError")
                }, t
            }(ye),
            we = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this, null, n) || this;
                    return o.maxSize = t, o.locText.text = o.getText(), o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "exceedsize"
                }, t.prototype.getDefaultText = function() {
                    return u.getString("exceedMaxSize").format(this.getTextSize())
                }, t.prototype.getTextSize = function() {
                    if (0 === this.maxSize) return "0 Byte";
                    var e = Math.floor(Math.log(this.maxSize) / Math.log(1024));
                    return (this.maxSize / Math.pow(1024, e)).toFixed([0, 0, 2, 3, 3][e]) + " " + ["Bytes", "KB", "MB", "GB", "TB"][e]
                }, t
            }(ye),
            Pe = function(e) {
                function t(t, n, o) {
                    void 0 === o && (o = null);
                    var r = e.call(this, null, o) || this;
                    return r.status = t, r.response = n, r
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "webrequest"
                }, t.prototype.getDefaultText = function() {
                    var e = this.getLocalizationString("urlRequestError");
                    return e ? e.format(this.status, this.response) : ""
                }, t
            }(ye),
            Ve = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "webrequestempty"
                }, t.prototype.getDefaultText = function() {
                    return this.getLocalizationString("urlGetChoicesError")
                }, t
            }(ye),
            Te = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "otherempty"
                }, t.prototype.getDefaultText = function() {
                    return this.getLocalizationString("otherRequiredError")
                }, t
            }(ye),
            ke = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "uploadingfile"
                }, t.prototype.getDefaultText = function() {
                    return this.getLocalizationString("uploadingFile")
                }, t
            }(ye),
            Se = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "requiredinallrowserror"
                }, t.prototype.getDefaultText = function() {
                    return this.getLocalizationString("requiredInAllRowsError")
                }, t
            }(ye),
            Oe = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this, null, n) || this;
                    return o.minRowCount = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "minrowcounterror"
                }, t.prototype.getDefaultText = function() {
                    return u.getString("minRowCountError").format(this.minRowCount)
                }, t
            }(ye),
            Ee = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "keyduplicationerror"
                }, t.prototype.getDefaultText = function() {
                    return this.getLocalizationString("keyDuplicationError")
                }, t
            }(ye),
            Re = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.text = t, o
                }
                return ve(t, e), t.prototype.getErrorType = function() {
                    return "custom"
                }, t
            }(ye),
            Ie = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            _e = function(e, t) {
                void 0 === t && (t = null), this.value = e, this.error = t
            },
            qe = function(e) {
                function t() {
                    var t = e.call(this) || this;
                    return t.createLocalizableString("text", t, !0), t
                }
                return Ie(t, e), t.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), this.errorOwner && this.errorOwner.getSurvey ? this.errorOwner.getSurvey() : null
                }, Object.defineProperty(t.prototype, "text", {
                    get: function() {
                        return this.getLocalizableStringText("text")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("text", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isValidateAllValues", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locText", {
                    get: function() {
                        return this.getLocalizableString("text")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getErrorText = function(e) {
                    return this.text ? this.text : this.getDefaultErrorText(e)
                }, t.prototype.getDefaultErrorText = function(e) {
                    return ""
                }, t.prototype.validate = function(e, t, n, o) {
                    return void 0 === t && (t = null), void 0 === n && (n = null), void 0 === o && (o = null), null
                }, Object.defineProperty(t.prototype, "isRunning", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isAsync", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getLocale = function() {
                    return this.errorOwner ? this.errorOwner.getLocale() : ""
                }, t.prototype.getMarkdownHtml = function(e, t) {
                    return this.errorOwner ? this.errorOwner.getMarkdownHtml(e, t) : void 0
                }, t.prototype.getRenderer = function(e) {
                    return this.errorOwner ? this.errorOwner.getRenderer(e) : null
                }, t.prototype.getRendererContext = function(e) {
                    return this.errorOwner ? this.errorOwner.getRendererContext(e) : e
                }, t.prototype.getProcessedText = function(e) {
                    return this.errorOwner ? this.errorOwner.getProcessedText(e) : e
                }, t.prototype.createCustomError = function(e) {
                    var t = this,
                        n = new Re(this.getErrorText(e), this.errorOwner);
                    return n.onUpdateErrorTextCallback = function(n) {
                        return n.text = t.getErrorText(e)
                    }, n
                }, t.prototype.toString = function() {
                    var e = this.getType().replace("validator", "");
                    return this.text && (e += ", " + this.text), e
                }, t
            }(he),
            De = function() {
                function e() {}
                return e.prototype.run = function(e) {
                    var t = this,
                        n = [],
                        o = null,
                        r = null;
                    this.prepareAsyncValidators();
                    for (var i = [], s = e.getValidators(), a = 0; a < s.length; a++) {
                        var l = s[a];
                        !o && l.isValidateAllValues && (o = e.getDataFilteredValues(), r = e.getDataFilteredProperties()), l.isAsync && (this.asyncValidators.push(l), l.onAsyncCompleted = function(e) {
                            if (e && e.error && i.push(e.error), t.onAsyncCompleted) {
                                for (var n = 0; n < t.asyncValidators.length; n++)
                                    if (t.asyncValidators[n].isRunning) return;
                                t.onAsyncCompleted(i)
                            }
                        })
                    }
                    s = e.getValidators();
                    for (a = 0; a < s.length; a++) {
                        var u = (l = s[a]).validate(e.validatedValue, e.getValidatorTitle(), o, r);
                        u && u.error && n.push(u.error)
                    }
                    return 0 == this.asyncValidators.length && this.onAsyncCompleted && this.onAsyncCompleted([]), n
                }, e.prototype.prepareAsyncValidators = function() {
                    if (this.asyncValidators)
                        for (var e = 0; e < this.asyncValidators.length; e++) this.asyncValidators[e].onAsyncCompleted = null;
                    this.asyncValidators = []
                }, e
            }(),
            Ae = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this) || this;
                    return o.minValue = t, o.maxValue = n, o
                }
                return Ie(t, e), t.prototype.getType = function() {
                    return "numericvalidator"
                }, t.prototype.validate = function(e, t, n, o) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), void 0 === o && (o = null), this.isValueEmpty(e)) return null;
                    if (!a.isNumber(e)) return new _e(null, new Ce(null, this.errorOwner));
                    var r = new _e(parseFloat(e));
                    return null !== this.minValue && this.minValue > r.value || null !== this.maxValue && this.maxValue < r.value ? (r.error = this.createCustomError(t), r) : "number" == typeof e ? null : r
                }, t.prototype.getDefaultErrorText = function(e) {
                    var t = e || this.getLocalizationString("value");
                    return null !== this.minValue && null !== this.maxValue ? this.getLocalizationFormatString("numericMinMax", t, this.minValue, this.maxValue) : null !== this.minValue ? this.getLocalizationFormatString("numericMin", t, this.minValue) : this.getLocalizationFormatString("numericMax", t, this.maxValue)
                }, Object.defineProperty(t.prototype, "minValue", {
                    get: function() {
                        return this.getPropertyValue("minValue")
                    },
                    set: function(e) {
                        this.setPropertyValue("minValue", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxValue", {
                    get: function() {
                        return this.getPropertyValue("maxValue")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxValue", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(qe),
            je = function(e) {
                function t() {
                    return e.call(this) || this
                }
                return Ie(t, e), t.prototype.getType = function() {
                    return "textvalidator"
                }, t.prototype.validate = function(e, t, n, o) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), void 0 === o && (o = null), this.isValueEmpty(e)) return null;
                    if (!this.allowDigits) {
                        if (!/^[A-Za-z\s]*$/.test(e)) return new _e(null, this.createCustomError(t))
                    }
                    return this.minLength > 0 && e.length < this.minLength || this.maxLength > 0 && e.length > this.maxLength ? new _e(null, this.createCustomError(t)) : null
                }, t.prototype.getDefaultErrorText = function(e) {
                    return this.minLength > 0 && this.maxLength > 0 ? this.getLocalizationFormatString("textMinMaxLength", this.minLength, this.maxLength) : this.minLength > 0 ? this.getLocalizationFormatString("textMinLength", this.minLength) : this.getLocalizationFormatString("textMaxLength", this.maxLength)
                }, Object.defineProperty(t.prototype, "minLength", {
                    get: function() {
                        return this.getPropertyValue("minLength")
                    },
                    set: function(e) {
                        this.setPropertyValue("minLength", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxLength", {
                    get: function() {
                        return this.getPropertyValue("maxLength")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxLength", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowDigits", {
                    get: function() {
                        return this.getPropertyValue("allowDigits")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowDigits", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(qe),
            Le = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this) || this;
                    return o.minCount = t, o.maxCount = n, o
                }
                return Ie(t, e), t.prototype.getType = function() {
                    return "answercountvalidator"
                }, t.prototype.validate = function(e, t, n, o) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), void 0 === o && (o = null), null == e || e.constructor != Array) return null;
                    var r = e.length;
                    return 0 == r ? null : this.minCount && r < this.minCount ? new _e(null, this.createCustomError(this.getLocalizationFormatString("minSelectError", this.minCount))) : this.maxCount && r > this.maxCount ? new _e(null, this.createCustomError(this.getLocalizationFormatString("maxSelectError", this.maxCount))) : null
                }, t.prototype.getDefaultErrorText = function(e) {
                    return e
                }, Object.defineProperty(t.prototype, "minCount", {
                    get: function() {
                        return this.getPropertyValue("minCount")
                    },
                    set: function(e) {
                        this.setPropertyValue("minCount", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxCount", {
                    get: function() {
                        return this.getPropertyValue("maxCount")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxCount", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(qe),
            Me = function(e) {
                function t(t) {
                    void 0 === t && (t = null);
                    var n = e.call(this) || this;
                    return n.regex = t, n
                }
                return Ie(t, e), t.prototype.getType = function() {
                    return "regexvalidator"
                }, t.prototype.validate = function(e, t, n, o) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), void 0 === o && (o = null), !this.regex || this.isValueEmpty(e)) return null;
                    var r = new RegExp(this.regex);
                    if (Array.isArray(e))
                        for (var i = 0; i < e.length; i++) {
                            var s = this.hasError(r, e[i], t);
                            if (s) return s
                        }
                    return this.hasError(r, e, t)
                }, t.prototype.hasError = function(e, t, n) {
                    return e.test(t) ? null : new _e(t, this.createCustomError(n))
                }, Object.defineProperty(t.prototype, "regex", {
                    get: function() {
                        return this.getPropertyValue("regex")
                    },
                    set: function(e) {
                        this.setPropertyValue("regex", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(qe),
            Ne = function(e) {
                function t() {
                    var t = e.call(this) || this;
                    return t.re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()=[\]\.,;:\s@\"]+\.)+[^<>()=[\]\.,;:\s@\"]{2,})$/i, t
                }
                return Ie(t, e), t.prototype.getType = function() {
                    return "emailvalidator"
                }, t.prototype.validate = function(e, t, n, o) {
                    return void 0 === t && (t = null), void 0 === n && (n = null), void 0 === o && (o = null), e ? this.re.test(e) ? null : new _e(e, this.createCustomError(t)) : null
                }, t.prototype.getDefaultErrorText = function(e) {
                    return this.getLocalizationString("invalidEmail")
                }, t
            }(qe),
            Fe = function(e) {
                function t(t) {
                    void 0 === t && (t = null);
                    var n = e.call(this) || this;
                    return n.conditionRunner = null, n.isRunningValue = !1, n.expression = t, n
                }
                return Ie(t, e), t.prototype.getType = function() {
                    return "expressionvalidator"
                }, Object.defineProperty(t.prototype, "isValidateAllValues", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isAsync", {
                    get: function() {
                        return !!this.ensureConditionRunner() && this.conditionRunner.isAsync
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRunning", {
                    get: function() {
                        return this.isRunningValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.validate = function(e, t, n, o) {
                    var r = this;
                    if (void 0 === t && (t = null), void 0 === n && (n = null), void 0 === o && (o = null), !this.ensureConditionRunner()) return null;
                    this.conditionRunner.onRunComplete = function(n) {
                        r.isRunningValue = !1, r.onAsyncCompleted && r.onAsyncCompleted(r.generateError(n, e, t))
                    }, this.isRunningValue = !0;
                    var i = this.conditionRunner.run(n, o);
                    return this.conditionRunner.isAsync ? null : (this.isRunningValue = !1, this.generateError(i, e, t))
                }, t.prototype.generateError = function(e, t, n) {
                    return e ? null : new _e(t, this.createCustomError(n))
                }, t.prototype.getDefaultErrorText = function(e) {
                    return this.getLocalizationFormatString("invalidExpression", this.expression)
                }, t.prototype.ensureConditionRunner = function() {
                    return this.conditionRunner ? (this.conditionRunner.expression = this.expression, !0) : !!this.expression && (this.conditionRunner = new se(this.expression), !0)
                }, Object.defineProperty(t.prototype, "expression", {
                    get: function() {
                        return this.getPropertyValue("expression")
                    },
                    set: function(e) {
                        this.setPropertyValue("expression", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(qe);
        I.addClass("surveyvalidator", [{
            name: "text",
            serializationProperty: "locText"
        }]), I.addClass("numericvalidator", ["minValue:number", "maxValue:number"], (function() {
            return new Ae
        }), "surveyvalidator"), I.addClass("textvalidator", [{
            name: "minLength:number",
            default: 0
        }, {
            name: "maxLength:number",
            default: 0
        }, {
            name: "allowDigits:boolean",
            default: !0
        }], (function() {
            return new je
        }), "surveyvalidator"), I.addClass("answercountvalidator", ["minCount:number", "maxCount:number"], (function() {
            return new Le
        }), "surveyvalidator"), I.addClass("regexvalidator", ["regex"], (function() {
            return new Me
        }), "surveyvalidator"), I.addClass("emailvalidator", [], (function() {
            return new Ne
        }), "surveyvalidator"), I.addClass("expressionvalidator", ["expression:condition"], (function() {
            return new Fe
        }), "surveyvalidator");
        var Be = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ze = function(e) {
                function t(t, n, o) {
                    void 0 === n && (n = null), void 0 === o && (o = "itemvalue");
                    var r = e.call(this) || this;
                    return r.typeName = o, r.ownerPropertyName = "", r.locTextValue = new d(r, !0, "text"), r.locTextValue.onStrChanged = function(e, t) {
                        t == r.value && (t = void 0), r.propertyValueChanged("text", e, t)
                    }, r.locTextValue.onGetTextCallback = function(e) {
                        return e || (a.isValueEmpty(r.value) ? null : r.value.toString())
                    }, n && (r.locText.text = n), t && "object" == typeof t ? r.setData(t) : r.value = t, "itemvalue" != r.getType() && C.createProperties(r), r.onCreating(), r
                }
                return Be(t, e), t.prototype.getMarkdownHtml = function(e, t) {
                    return this.locOwner ? this.locOwner.getMarkdownHtml(e, t) : void 0
                }, t.prototype.getRenderer = function(e) {
                    return this.locOwner ? this.locOwner.getRenderer(e) : null
                }, t.prototype.getRendererContext = function(e) {
                    return this.locOwner ? this.locOwner.getRendererContext(e) : e
                }, t.prototype.getProcessedText = function(e) {
                    return this.locOwner ? this.locOwner.getProcessedText(e) : e
                }, Object.defineProperty(t, "Separator", {
                    get: function() {
                        return s.itemValueSeparator
                    },
                    set: function(e) {
                        s.itemValueSeparator = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.setData = function(e, t, n) {
                    e.length = 0;
                    for (var o = 0; o < t.length; o++) {
                        var r = t[o],
                            i = r && "function" == typeof r.getType ? r.getType() : null != n ? n : "itemvalue",
                            s = I.createClass(i);
                        s.setData(r), r.originalItem && (s.originalItem = r.originalItem), e.push(s)
                    }
                }, t.getData = function(e) {
                    for (var t = [], n = 0; n < e.length; n++) t.push(e[n].getData());
                    return t
                }, t.getItemByValue = function(e, t) {
                    if (!Array.isArray(e)) return null;
                    for (var n = a.isValueEmpty(t), o = 0; o < e.length; o++) {
                        if (n && a.isValueEmpty(e[o].value)) return e[o];
                        if (a.isTwoValueEquals(e[o].value, t, !1, !0, !1)) return e[o]
                    }
                    return null
                }, t.getTextOrHtmlByValue = function(e, n) {
                    var o = t.getItemByValue(e, n);
                    return null !== o ? o.locText.textOrHtml : ""
                }, t.locStrsChanged = function(e) {
                    for (var t = 0; t < e.length; t++) e[t].locStrsChanged()
                }, t.runConditionsForItems = function(e, n, o, r, i, s, a) {
                    return void 0 === s && (s = !0), t.runConditionsForItemsCore(e, n, o, r, i, !0, s, a)
                }, t.runEnabledConditionsForItems = function(e, n, o, r, i) {
                    return t.runConditionsForItemsCore(e, null, n, o, r, !1, !0, i)
                }, t.runConditionsForItemsCore = function(e, t, n, o, r, i, s, a) {
                    void 0 === s && (s = !0), o || (o = {});
                    for (var l = o.item, u = o.choice, c = !1, p = 0; p < e.length; p++) {
                        var d = e[p];
                        o.item = d.value, o.choice = d.value;
                        var h = !(!s || !d.getConditionRunner) && d.getConditionRunner(i);
                        h || (h = n);
                        var f = !0;
                        h && (f = h.run(o, r)), a && (f = a(d, f)), t && f && t.push(d), f != (i ? d.isVisible : d.isEnabled) && (c = !0, i ? d.setIsVisible && d.setIsVisible(f) : d.setIsEnabled && d.setIsEnabled(f))
                    }
                    return l ? o.item = l : delete o.item, u ? o.choice = u : delete o.choice, c
                }, t.prototype.onCreating = function() {}, t.prototype.getType = function() {
                    return this.typeName ? this.typeName : "itemvalue"
                }, t.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), this.locOwner && this.locOwner.getSurvey ? this.locOwner.getSurvey() : null
                }, t.prototype.getLocale = function() {
                    return this.locOwner && this.locOwner.getLocale ? this.locOwner.getLocale() : ""
                }, Object.defineProperty(t.prototype, "locText", {
                    get: function() {
                        return this.locTextValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setLocText = function(e) {
                    this.locTextValue = e
                }, Object.defineProperty(t.prototype, "locOwner", {
                    get: function() {
                        return this._locOwner
                    },
                    set: function(e) {
                        this._locOwner = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "value", {
                    get: function() {
                        return this.getPropertyValue("value")
                    },
                    set: function(e) {
                        var t = void 0;
                        if (!a.isValueEmpty(e)) {
                            var n = e.toString(),
                                o = n.indexOf(s.itemValueSeparator);
                            o > -1 && (e = n.slice(0, o), t = n.slice(o + 1))
                        }
                        this.setPropertyValue("value", e), t && (this.text = t)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasText", {
                    get: function() {
                        return !!this.locText.pureText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "pureText", {
                    get: function() {
                        return this.locText.pureText
                    },
                    set: function(e) {
                        this.text = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "text", {
                    get: function() {
                        return this.locText.calculatedText
                    },
                    set: function(e) {
                        this.locText.text = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "calculatedText", {
                    get: function() {
                        return this.locText.calculatedText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "shortcutText", {
                    get: function() {
                        return this.text
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canSerializeValue = function() {
                    var e = this.value;
                    return null != e && (!Array.isArray(e) && "object" != typeof e)
                }, t.prototype.getData = function() {
                    var e = this.toJSON();
                    if (e.value && e.value.pos && delete e.value.pos, a.isValueEmpty(e.value)) return e;
                    var t = this.canSerializeValue();
                    return t && (s.itemValueAlwaysSerializeAsObject || s.itemValueAlwaysSerializeText) || 1 != Object.keys(e).length ? (s.itemValueAlwaysSerializeText && void 0 === e.text && t && (e.text = this.value.toString()), e) : this.value
                }, t.prototype.toJSON = function() {
                    var e = {},
                        t = I.getProperties(this.getType());
                    t && 0 != t.length || (t = I.getProperties("itemvalue"));
                    for (var n = new R, o = 0; o < t.length; o++) {
                        var r = t[o];
                        "text" === r.name && !this.locText.hasNonDefaultText() && a.isTwoValueEquals(this.value, this.text, !1, !0, !1) || n.valueToJson(this, e, r)
                    }
                    return e
                }, t.prototype.setData = function(e) {
                    if (!a.isValueEmpty(e)) {
                        if (void 0 === e.value && void 0 !== e.text && 1 === Object.keys(e).length && (e.value = e.text), void 0 !== e.value) {
                            var t = void 0;
                            t = "function" == typeof e.toJSON ? e.toJSON() : e, (new R).toObject(t, this)
                        } else this.value = e;
                        this.locText.strChanged()
                    }
                }, Object.defineProperty(t.prototype, "visibleIf", {
                    get: function() {
                        return this.getPropertyValue("visibleIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("visibleIf", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "enableIf", {
                    get: function() {
                        return this.getPropertyValue("enableIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("enableIf", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isVisible", {
                    get: function() {
                        return this.getPropertyValue("isVisible", !0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setIsVisible = function(e) {
                    this.setPropertyValue("isVisible", e)
                }, Object.defineProperty(t.prototype, "isEnabled", {
                    get: function() {
                        return this.getPropertyValue("isEnabled", !0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setIsEnabled = function(e) {
                    this.setPropertyValue("isEnabled", e)
                }, t.prototype.addUsedLocales = function(e) {
                    this.AddLocStringToUsedLocales(this.locTextValue, e)
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.locText.strChanged()
                }, t.prototype.onPropertyValueChanged = function(e, t, n) {
                    "value" !== e || this.hasText || this.locText.strChanged();
                    this.locOwner && this.locOwner.itemValuePropertyChanged && this.locOwner.itemValuePropertyChanged(this, e, t, n)
                }, t.prototype.getConditionRunner = function(e) {
                    return e ? this.getVisibleConditionRunner() : this.getEnableConditionRunner()
                }, t.prototype.getVisibleConditionRunner = function() {
                    return this.visibleIf ? (this.visibleConditionRunner || (this.visibleConditionRunner = new se(this.visibleIf)), this.visibleConditionRunner.expression = this.visibleIf, this.visibleConditionRunner) : null
                }, t.prototype.getEnableConditionRunner = function() {
                    return this.enableIf ? (this.enableConditionRunner || (this.enableConditionRunner = new se(this.enableIf)), this.enableConditionRunner.expression = this.enableIf, this.enableConditionRunner) : null
                }, t
            }(he);
        he.createItemValue = function(e, t) {
            var n = null;
            return (n = t ? R.metaData.createClass(t, {}) : "function" == typeof e.getType ? new ze(null, void 0, e.getType()) : new ze(null)).setData(e), n
        }, he.itemValueLocStrChanged = function(e) {
            ze.locStrsChanged(e)
        }, x.getItemValuesDefaultValue = function(e, t) {
            var n = new Array;
            return ze.setData(n, Array.isArray(e) ? e : [], t), n
        }, I.addClass("itemvalue", ["!value", {
            name: "text",
            serializationProperty: "locText"
        }, {
            name: "visibleIf:condition",
            showMode: "form"
        }, {
            name: "enableIf:condition",
            showMode: "form",
            visibleIf: function(e) {
                return !e || "rateValues" !== e.ownerPropertyName
            }
        }], (function(e) {
            return new ze(e)
        }));
        var He = n(3);

        function Qe(e) {
            return s && s.confirmActionFunc ? s.confirmActionFunc(e) : confirm(e)
        }

        function Ue() {
            if ("undefined" == typeof window) return !1;
            if (void 0 === Ue.isIEOrEdge) {
                var e = window.navigator.userAgent,
                    t = e.indexOf("MSIE "),
                    n = e.indexOf("Trident/"),
                    o = e.indexOf("Edge/");
                Ue.isIEOrEdge = o > 0 || n > 0 || t > 0
            }
            return Ue.isIEOrEdge
        }

        function We(e, t) {
            try {
                for (var n = atob(e.split(",")[1]), o = e.split(",")[0].split(":")[1].split(";")[0], r = new ArrayBuffer(n.length), i = new Uint8Array(r), s = 0; s < n.length; s++) i[s] = n.charCodeAt(s);
                var a = new Blob([r], {
                    type: o
                });
                "undefined" != typeof window && window.navigator && window.navigator.msSaveBlob && window.navigator.msSaveOrOpenBlob(a, t)
            } catch (e) {}
        }

        function $e(e) {
            return e ? e.scrollHeight > e.clientHeight && ("scroll" === getComputedStyle(e).overflowY || "auto" === getComputedStyle(e).overflowY) || e.scrollWidth > e.clientWidth && ("scroll" === getComputedStyle(e).overflowX || "auto" === getComputedStyle(e).overflowX) ? e : $e(e.parentElement) : document.documentElement
        }

        function Ge(e, t, n, o, r, i) {
            if (r) {
                "auto" !== e && (r.style.width = (e || t || 16) + "px", r.style.height = (e || n || 16) + "px");
                var a = r.childNodes[0],
                    l = function(e) {
                        if (!e) return e;
                        var t = s.customIcons[e];
                        return t || e
                    }(o);
                a.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", "#" + l);
                var u = r.getElementsByTagName("title")[0];
                i ? (u || (u = document.createElementNS("http://www.w3.org/2000/svg", "title"), r.appendChild(u)), u.textContent = i) : u && r.removeChild(u)
            }
        }

        function Je(e) {
            return "function" != typeof e ? e : e()
        }

        function Ke(e) {
            if ("number" == typeof e) return e + "px";
            if (e && "string" == typeof e && e.length > 0) {
                var t = e[e.length - 1];
                if (t >= "0" && t <= "9" || "." == t) try {
                    return parseFloat(e) + "px"
                } catch (e) {}
            }
            return e
        }

        function Ze(e) {
            var t = e.target;
            t && t.classList && t.classList.remove("sv-focused--by-key")
        }

        function Xe(e, t) {
            if (!e.target || "true" !== e.target.contentEditable) {
                var n = e.target;
                if (n) {
                    var o = e.which || e.keyCode;
                    9 === o ? n.classList && !n.classList.contains("sv-focused--by-key") && n.classList.add("sv-focused--by-key") : 13 === o || 32 === o ? n.click && n.click() : t && !t.processEsc || 27 !== o || n.blur && n.blur()
                }
            }
        }

        function Ye(e, t) {
            if (void 0 === t && (t = {
                    processEsc: !0
                }), !e.target || "true" !== e.target.contentEditable) {
                var n = e.which || e.keyCode,
                    o = [13, 32];
                t.processEsc && o.push(27), -1 !== o.indexOf(n) && e.preventDefault()
            }
        }

        function et(e, t) {
            if (e) {
                t || (t = function(e) {
                    return window.getComputedStyle(e)
                });
                var n = t(e);
                e.style.height = "auto", e.style.height = e.scrollHeight + parseFloat(n.borderTopWidth) + parseFloat(n.borderBottomWidth) + "px"
            }
        }

        function tt(e) {
            return e.originalEvent || e
        }

        function nt(e) {
            e.preventDefault(), e.stopPropagation()
        }

        function ot(e) {
            return getComputedStyle ? Number.parseFloat(getComputedStyle(e).width) : e.offsetWidth
        }

        function rt(e) {
            return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
        }

        function it(e) {
            if (window.getSelection && document.createRange && e.childNodes.length > 0) {
                var t = document.getSelection(),
                    n = t.getRangeAt(0);
                n.setStart(n.endContainer, n.endOffset), n.setEndAfter(e.lastChild), t.removeAllRanges(), t.addRange(n);
                var o = t.toString().replace(/\n/g, "").length;
                e.innerText = e.innerText.replace(/\n/g, ""), (n = document.createRange()).setStart(e.childNodes[0], e.innerText.length - o), n.collapse(!0), t.removeAllRanges(), t.addRange(n)
            }
        }

        function st(e, t) {
            if (t && e && "object" == typeof t)
                for (var n in e) {
                    var o = e[n];
                    o && "object" == typeof o ? (t[n] && "object" == typeof t[n] || (t[n] = {}), st(o, t[n])) : t[n] = o
                }
        }! function() {
            function e() {
                this._result = ""
            }
            e.prototype.log = function(e) {
                this._result += "->" + e
            }, Object.defineProperty(e.prototype, "result", {
                get: function() {
                    return this._result
                },
                enumerable: !1,
                configurable: !0
            })
        }();
        var at = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            lt = function() {
                function e(e, t, n, o) {
                    void 0 === o && (o = null);
                    var r = this;
                    this.container = e, this.model = t, this.itemsSelector = n, this.dotsItemSize = o, this.resizeObserver = void 0, this.isInitialized = !1, this.minDimensionConst = 56, this.separatorSize = 17, this.separatorAddConst = 1, this.paddingSizeConst = 8, this.dotsSizeConst = 48, this.recalcMinDimensionConst = !0, this.getComputedStyle = window.getComputedStyle.bind(window), this.model.updateCallback = function(e) {
                        e ? r.isInitialized = !1 : Object(He.setTimeout)((function() {
                            r.process()
                        }), 1)
                    }, "undefined" != typeof ResizeObserver && (this.resizeObserver = new ResizeObserver((function(e) {
                        return r.process()
                    })), this.resizeObserver.observe(this.container.parentElement))
                }
                return e.prototype.getDimensions = function(e) {
                    return {
                        scroll: e.scrollWidth,
                        offset: e.offsetWidth
                    }
                }, e.prototype.getAvailableSpace = function() {
                    var e = this.getComputedStyle(this.container),
                        t = this.container.offsetWidth;
                    return "border-box" === e.boxSizing && (t -= parseFloat(e.paddingLeft) + parseFloat(e.paddingRight)), t
                }, e.prototype.calcItemSize = function(e) {
                    return e.offsetWidth
                }, e.prototype.calcMinDimension = function(e) {
                    var t = this.minDimensionConst;
                    return e.iconSize && this.recalcMinDimensionConst && (t = 2 * e.iconSize + this.paddingSizeConst), e.canShrink ? t + (e.needSeparator ? this.separatorSize : 0) : e.maxDimension
                }, e.prototype.calcItemsSizes = function() {
                    var e = this,
                        t = this.model.actions;
                    this.container.querySelectorAll(this.itemsSelector).forEach((function(n, o) {
                        var r = t[o];
                        e.calcActionDimensions(r, n)
                    }))
                }, e.prototype.calcActionDimensions = function(e, t) {
                    e.maxDimension = this.calcItemSize(t), e.minDimension = this.calcMinDimension(e)
                }, Object.defineProperty(e.prototype, "isContainerVisible", {
                    get: function() {
                        return rt(this.container)
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.process = function() {
                    var e;
                    if (this.isContainerVisible && !this.model.isResponsivenessDisabled) {
                        this.isInitialized || (this.model.setActionsMode("large"), this.calcItemsSizes(), this.isInitialized = !0);
                        var t = this.dotsItemSize;
                        if (!this.dotsItemSize) {
                            var n = null === (e = this.container) || void 0 === e ? void 0 : e.querySelector(".sv-dots");
                            t = n && this.calcItemSize(n) || this.dotsSizeConst
                        }
                        this.model.fit(this.getAvailableSpace(), t)
                    }
                }, e.prototype.dispose = function() {
                    this.model.updateCallback = void 0, this.resizeObserver && this.resizeObserver.disconnect()
                }, e
            }(),
            ut = function(e) {
                function t(t, n, o, r, i) {
                    void 0 === i && (i = 40);
                    var s = e.call(this, t, n, o, r) || this;
                    return s.minDimensionConst = i, s.recalcMinDimensionConst = !1, s
                }
                return at(t, e), t.prototype.getDimensions = function() {
                    return {
                        scroll: this.container.scrollHeight,
                        offset: this.container.offsetHeight
                    }
                }, t.prototype.getAvailableSpace = function() {
                    var e = this.getComputedStyle(this.container),
                        t = this.container.offsetHeight;
                    return "border-box" === e.boxSizing && (t -= parseFloat(e.paddingTop) + parseFloat(e.paddingBottom)), t
                }, t.prototype.calcItemSize = function(e) {
                    return e.offsetHeight
                }, t.prototype.calcActionDimensions = function(e, t) {
                    e.maxDimension = this.calcItemSize(t), e.minDimension = this.calcItemSize(t)
                }, t
            }(lt),
            ct = function() {
                function e() {
                    this.classes = []
                }
                return e.prototype.isEmpty = function() {
                    return "" === this.toString()
                }, e.prototype.append = function(e, t) {
                    return void 0 === t && (t = !0), e && t && ("string" == typeof e && (e = e.trim()), this.classes.push(e)), this
                }, e.prototype.toString = function() {
                    return this.classes.join(" ")
                }, e
            }(),
            pt = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            dt = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            ht = {
                root: "sv-action-bar",
                defaultSizeMode: "sv-action-bar--default-size-mode",
                smallSizeMode: "sv-action-bar--small-size-mode",
                item: "sv-action-bar-item",
                itemActive: "sv-action-bar-item--active",
                itemPressed: "sv-action-bar-item--pressed",
                itemIcon: "sv-action-bar-item__icon",
                itemTitle: "sv-action-bar-item__title",
                itemTitleWithIcon: "sv-action-bar-item__title--with-icon"
            },
            ft = function(e) {
                function t() {
                    var t = null !== e && e.apply(this, arguments) || this;
                    return t.sizeMode = "default", t
                }
                return pt(t, e), t.prototype.getMarkdownHtml = function(e, t) {
                    return this.locOwner ? this.locOwner.getMarkdownHtml(e, t) : void 0
                }, t.prototype.getRenderer = function(e) {
                    return this.locOwner ? this.locOwner.getRenderer(e) : null
                }, t.prototype.getRendererContext = function(e) {
                    return this.locOwner ? this.locOwner.getRendererContext(e) : e
                }, t.prototype.getProcessedText = function(e) {
                    return this.locOwner ? this.locOwner.getProcessedText(e) : e
                }, t.prototype.getLocale = function() {
                    return this.locOwner ? this.locOwner.getLocale() : ""
                }, t.prototype.getRenderedActions = function() {
                    return this.actions
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.actions.forEach((function(e) {
                        return e.locStrsChanged()
                    }))
                }, t.prototype.raiseUpdate = function(e) {
                    this.isEmpty = !this.actions.some((function(e) {
                        return e.visible
                    })), this.updateCallback && this.updateCallback(e)
                }, t.prototype.onSet = function() {
                    var e = this;
                    this.actions.forEach((function(t) {
                        e.setActionCssClasses(t)
                    })), this.raiseUpdate(!0)
                }, t.prototype.onPush = function(e) {
                    this.setActionCssClasses(e), e.owner = this, this.raiseUpdate(!0)
                }, t.prototype.onRemove = function(e) {
                    e.owner = null, this.raiseUpdate(!0)
                }, t.prototype.setActionCssClasses = function(e) {
                    e.cssClasses = this.cssClasses
                }, Object.defineProperty(t.prototype, "hasActions", {
                    get: function() {
                        return (this.actions || []).length > 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedActions", {
                    get: function() {
                        return this.getRenderedActions()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visibleActions", {
                    get: function() {
                        return this.actions.filter((function(e) {
                            return !1 !== e.visible
                        }))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getRootCss = function() {
                    var e = "small" === this.sizeMode ? this.cssClasses.smallSizeMode : this.cssClasses.defaultSizeMode;
                    return (new ct).append(this.cssClasses.root + (e ? " " + e : "") + (this.containerCss ? " " + this.containerCss : "")).append(this.cssClasses.root + "--empty", this.isEmpty).toString()
                }, t.prototype.getDefaultCssClasses = function() {
                    return ht
                }, Object.defineProperty(t.prototype, "cssClasses", {
                    get: function() {
                        return this.cssClassesValue || (this.cssClassesValue = this.getDefaultCssClasses()), this.cssClassesValue
                    },
                    set: function(e) {
                        var t = this;
                        this.cssClassesValue = {}, this.copyCssClasses(this.cssClassesValue, this.getDefaultCssClasses()), st(e, this.cssClasses), this.actions.forEach((function(e) {
                            t.setActionCssClasses(e)
                        }))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createAction = function(e) {
                    return e instanceof Et ? e : new Et(e)
                }, t.prototype.addAction = function(e, t) {
                    void 0 === t && (t = !0);
                    var n = this.createAction(e);
                    return this.actions.push(n), this.sortItems(), n
                }, t.prototype.sortItems = function() {
                    this.actions = [].concat(this.actions.filter((function(e) {
                        return void 0 === e.visibleIndex || e.visibleIndex >= 0
                    }))).sort((function(e, t) {
                        return e.visibleIndex - t.visibleIndex
                    }))
                }, t.prototype.setItems = function(e, t) {
                    var n = this;
                    void 0 === t && (t = !0), this.actions = e.map((function(e) {
                        return n.createAction(e)
                    })), t && this.sortItems()
                }, t.prototype.initResponsivityManager = function(e) {}, t.prototype.resetResponsivityManager = function() {}, t.prototype.getActionById = function(e) {
                    for (var t = 0; t < this.actions.length; t++)
                        if (this.actions[t].id === e) return this.actions[t];
                    return null
                }, dt([b({
                    onSet: function(e, t) {
                        t.onSet()
                    },
                    onPush: function(e, t, n) {
                        n.onPush(e)
                    },
                    onRemove: function(e, t, n) {
                        n.onRemove(e)
                    }
                })], t.prototype, "actions", void 0), dt([y({
                    defaultValue: !1
                })], t.prototype, "isEmpty", void 0), t
            }(he),
            mt = function() {
                function e() {}
                return e.focusElement = function(e) {
                    e && e.focus()
                }, e.visibility = function(e) {
                    var t = window.getComputedStyle(e);
                    return "none" !== t.display && "hidden" !== t.visibility && (!e.parentElement || this.visibility(e.parentElement))
                }, e.getNextElementPreorder = function(e) {
                    var t = e.nextElementSibling ? e.nextElementSibling : e.parentElement.firstElementChild;
                    return this.visibility(t) ? t : this.getNextElementPreorder(t)
                }, e.getNextElementPostorder = function(e) {
                    var t = e.previousElementSibling ? e.previousElementSibling : e.parentElement.lastElementChild;
                    return this.visibility(t) ? t : this.getNextElementPostorder(t)
                }, e.hasHorizontalScroller = function(e) {
                    return !!e && e.scrollWidth > e.offsetWidth
                }, e.hasVerticalScroller = function(e) {
                    return !!e && e.scrollHeight > e.offsetHeight
                }, e
            }(),
            gt = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            yt = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            vt = {
                root: "sv-list__container",
                item: "sv-list__item",
                loadingIndicator: "sv-list__loading-indicator",
                itemSelected: "sv-list__item--selected",
                itemWithIcon: "sv-list__item--with-icon",
                itemDisabled: "sv-list__item--disabled",
                itemFocused: "sv-list__item--focused",
                itemIcon: "sv-list__item-icon",
                itemSeparator: "sv-list__item-separator",
                itemBody: "sv-list__item-body",
                itemsContainer: "sv-list",
                filter: "sv-list__filter",
                filterIcon: "sv-list__filter-icon",
                filterInput: "sv-list__input",
                emptyContainer: "sv-list__empty-container",
                emptyText: "sv-list__empty-text"
            },
            bt = function(e) {
                function t(n, o, r, i, s) {
                    var a = e.call(this) || this;
                    return a.onSelectionChanged = o, a.allowSelection = r, a.onFilterStringChangedCallback = s, a.onItemClick = function(e) {
                        a.isItemDisabled(e) || (a.isExpanded = !1, a.allowSelection && (a.selectedItem = e), a.onSelectionChanged && a.onSelectionChanged(e))
                    }, a.isItemDisabled = function(e) {
                        return void 0 !== e.enabled && !e.enabled
                    }, a.isItemSelected = function(e) {
                        return !!a.allowSelection && !!a.selectedItem && a.selectedItem.id == e.id
                    }, a.isItemFocused = function(e) {
                        return !!a.focusedItem && a.focusedItem.id == e.id
                    }, a.getItemClass = function(e) {
                        return (new ct).append(a.cssClasses.item).append(a.cssClasses.itemWithIcon, !!e.iconName).append(a.cssClasses.itemDisabled, a.isItemDisabled(e)).append(a.cssClasses.itemFocused, a.isItemFocused(e)).append(a.cssClasses.itemSelected, e.active || a.isItemSelected(e)).append(e.css).toString()
                    }, a.getItemIndent = function(e) {
                        return ((e.level || 0) + 1) * t.INDENT + "px"
                    }, a.setItems(n), a.selectedItem = i, a
                }
                return gt(t, e), t.prototype.hasText = function(e, t) {
                    return !t || (e.title || "").toLocaleLowerCase().indexOf(t.toLocaleLowerCase()) > -1
                }, t.prototype.isItemVisible = function(e) {
                    return e.visible && (!this.shouldProcessFilter || this.hasText(e, this.filterString))
                }, Object.defineProperty(t.prototype, "visibleItems", {
                    get: function() {
                        var e = this;
                        return this.visibleActions.filter((function(t) {
                            return e.isItemVisible(t)
                        }))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "shouldProcessFilter", {
                    get: function() {
                        return !this.onFilterStringChangedCallback
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onFilterStringChanged = function(e) {
                    var t = this;
                    this.isEmpty = 0 === this.renderedActions.filter((function(e) {
                        return t.isItemVisible(e)
                    })).length, this.onFilterStringChangedCallback && this.onFilterStringChangedCallback(e)
                }, t.prototype.setItems = function(t, n) {
                    void 0 === n && (n = !0), e.prototype.setItems.call(this, t, n), !this.isAllDataLoaded && this.actions.length && this.actions.push(this.loadingIndicator)
                }, t.prototype.onSet = function() {
                    this.showFilter = this.searchEnabled && (this.actions || []).length > t.MINELEMENTCOUNT, e.prototype.onSet.call(this)
                }, t.prototype.getDefaultCssClasses = function() {
                    return vt
                }, t.prototype.updateItemActiveState = function() {
                    var e = this;
                    this.actions.forEach((function(t) {
                        return t.active = e.isItemSelected(t)
                    }))
                }, Object.defineProperty(t.prototype, "filterStringPlaceholder", {
                    get: function() {
                        return this.getLocalizationString("filterStringPlaceholder")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "emptyMessage", {
                    get: function() {
                        return this.getLocalizationString("emptyMessage")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "scrollableContainer", {
                    get: function() {
                        return this.listContainerHtmlElement.querySelector("." + this.getDefaultCssClasses().itemsContainer)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "loadingText", {
                    get: function() {
                        return this.getLocalizationString("loadingFile")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "loadingIndicator", {
                    get: function() {
                        return this.loadingIndicatorValue || (this.loadingIndicatorValue = new Et({
                            id: "loadingIndicator",
                            title: this.loadingText,
                            action: function() {},
                            css: this.cssClasses.loadingIndicator
                        })), this.loadingIndicatorValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.goToItems = function(e) {
                    if ("ArrowDown" === e.key || 40 === e.keyCode) {
                        var t = e.target.parentElement.parentElement.querySelector("ul");
                        t && t.firstElementChild && (mt.focusElement(t.firstElementChild), e.preventDefault())
                    }
                }, t.prototype.onMouseMove = function(e) {
                    this.resetFocusedItem()
                }, t.prototype.onKeyDown = function(e) {
                    var t = e.target;
                    "ArrowDown" === e.key || 40 === e.keyCode ? (mt.focusElement(mt.getNextElementPreorder(t)), e.preventDefault()) : "ArrowUp" !== e.key && 38 !== e.keyCode || (mt.focusElement(mt.getNextElementPostorder(t)), e.preventDefault())
                }, t.prototype.onPointerDown = function(e, t) {}, t.prototype.refresh = function() {
                    this.filterString = "", this.resetFocusedItem()
                }, t.prototype.resetFocusedItem = function() {
                    this.focusedItem = void 0
                }, t.prototype.focusFirstVisibleItem = function() {
                    this.focusedItem = this.visibleItems[0]
                }, t.prototype.focusLastVisibleItem = function() {
                    this.focusedItem = this.visibleItems[this.visibleItems.length - 1]
                }, t.prototype.initFocusedItem = function() {
                    var e = this;
                    this.selectedItem ? this.focusedItem = this.visibleItems.filter((function(t) {
                        return t.id === e.selectedItem.id
                    }))[0] : this.focusFirstVisibleItem()
                }, t.prototype.focusNextVisibleItem = function() {
                    if (this.focusedItem) {
                        var e = this.visibleItems,
                            t = e.indexOf(this.focusedItem),
                            n = e[t + 1];
                        n ? this.focusedItem = n : this.focusFirstVisibleItem()
                    } else this.initFocusedItem()
                }, t.prototype.focusPrevVisibleItem = function() {
                    if (this.focusedItem) {
                        var e = this.visibleItems,
                            t = e.indexOf(this.focusedItem),
                            n = e[t - 1];
                        n ? this.focusedItem = n : this.focusLastVisibleItem()
                    } else this.initFocusedItem()
                }, t.prototype.selectFocusedItem = function() {
                    this.focusedItem && this.onItemClick(this.focusedItem)
                }, t.prototype.initListContainerHtmlElement = function(e) {
                    this.listContainerHtmlElement = e
                }, t.prototype.onLastItemRended = function(e) {
                    this.isAllDataLoaded || e === this.actions[this.actions.length - 1] && this.listContainerHtmlElement && (this.hasVerticalScroller = mt.hasVerticalScroller(this.scrollableContainer))
                }, t.prototype.scrollToFocusedItem = function() {
                    var e = this;
                    setTimeout((function() {
                        if (e.listContainerHtmlElement) {
                            var t = e.listContainerHtmlElement.querySelector("." + e.getDefaultCssClasses().itemFocused);
                            t && t.scrollIntoView({
                                behavior: "smooth",
                                block: "nearest",
                                inline: "start"
                            })
                        }
                    }), 0)
                }, t.prototype.addScrollEventListener = function(e) {
                    e && (this.scrollHandler = e), this.scrollHandler && this.scrollableContainer.addEventListener("scroll", this.scrollHandler)
                }, t.prototype.removeScrollEventListener = function() {
                    this.scrollHandler && this.scrollableContainer.removeEventListener("scroll", this.scrollHandler)
                }, t.INDENT = 16, t.MINELEMENTCOUNT = 10, yt([y({
                    defaultValue: !0,
                    onSet: function(e, t) {
                        t.onSet()
                    }
                })], t.prototype, "searchEnabled", void 0), yt([y({
                    defaultValue: !1
                })], t.prototype, "showFilter", void 0), yt([y({
                    defaultValue: !1
                })], t.prototype, "isExpanded", void 0), yt([y({
                    onSet: function(e, t) {
                        t.updateItemActiveState()
                    }
                })], t.prototype, "selectedItem", void 0), yt([y()], t.prototype, "focusedItem", void 0), yt([y({
                    onSet: function(e, t) {
                        t.onFilterStringChanged(t.filterString)
                    }
                })], t.prototype, "filterString", void 0), yt([y({
                    defaultValue: !1
                })], t.prototype, "hasVerticalScroller", void 0), yt([y({
                    defaultValue: !0
                })], t.prototype, "isAllDataLoaded", void 0), t
            }(ft),
            xt = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ct = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            wt = function(e) {
                function t(t, n, o, r, i, s, a, l, u, c, p, d) {
                    void 0 === o && (o = "bottom"), void 0 === r && (r = "left"), void 0 === i && (i = !0), void 0 === s && (s = !1), void 0 === a && (a = function() {}), void 0 === l && (l = function() {
                        return !0
                    }), void 0 === u && (u = function() {}), void 0 === c && (c = function() {}), void 0 === p && (p = ""), void 0 === d && (d = "");
                    var h = e.call(this) || this;
                    return h.focusFirstInputSelector = "", h.onVisibilityChanged = h.addEvent(), h.onRecalculatePosition = h.addEvent(), h.contentComponentName = t, h.contentComponentData = n, h.verticalPosition = o, h.horizontalPosition = r, h.showPointer = i, h.isModal = s, h.onCancel = a, h.onApply = l, h.onHide = u, h.onShow = c, h.cssClass = p, h.title = d, h
                }
                return xt(t, e), Object.defineProperty(t.prototype, "isVisible", {
                    get: function() {
                        return this.getPropertyValue("isVisible", !1)
                    },
                    set: function(e) {
                        if (this.isVisible !== e)
                            if (this.setPropertyValue("isVisible", e), this.onVisibilityChanged.fire(this, {
                                    model: this,
                                    isVisible: e
                                }), this.isVisible) {
                                var t = this.contentComponentData.model;
                                t && t.refresh && t.refresh(), this.onShow()
                            } else this.onHide()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.toggleVisibility = function() {
                    this.isVisible = !this.isVisible
                }, t.prototype.recalculatePosition = function(e) {
                    this.onRecalculatePosition.fire(this, {
                        isResetHeight: e
                    })
                }, Ct([y()], t.prototype, "contentComponentName", void 0), Ct([y()], t.prototype, "contentComponentData", void 0), Ct([y({
                    defaultValue: "bottom"
                })], t.prototype, "verticalPosition", void 0), Ct([y({
                    defaultValue: "left"
                })], t.prototype, "horizontalPosition", void 0), Ct([y({
                    defaultValue: !1
                })], t.prototype, "showPointer", void 0), Ct([y({
                    defaultValue: !1
                })], t.prototype, "isModal", void 0), Ct([y({
                    defaultValue: !0
                })], t.prototype, "isFocusedContent", void 0), Ct([y({
                    defaultValue: function() {}
                })], t.prototype, "onCancel", void 0), Ct([y({
                    defaultValue: function() {
                        return !0
                    }
                })], t.prototype, "onApply", void 0), Ct([y({
                    defaultValue: function() {}
                })], t.prototype, "onHide", void 0), Ct([y({
                    defaultValue: function() {}
                })], t.prototype, "onShow", void 0), Ct([y({
                    defaultValue: ""
                })], t.prototype, "cssClass", void 0), Ct([y({
                    defaultValue: ""
                })], t.prototype, "title", void 0), Ct([y({
                    defaultValue: "popup"
                })], t.prototype, "displayMode", void 0), Ct([y({
                    defaultValue: "flex"
                })], t.prototype, "positionMode", void 0), t
            }(he);

        function Pt(e, t, n, o, r, i, s, a, l) {
            return void 0 === r && (r = function() {}), void 0 === i && (i = function() {}), void 0 === l && (l = "popup"), {
                componentName: e,
                data: t,
                onApply: n,
                onCancel: o,
                onHide: r,
                onShow: i,
                cssClass: s,
                title: a,
                displayMode: l
            }
        }
        var Vt = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Tt = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            };

        function kt(e, t, n) {
            return St(e, t, t, n)
        }

        function St(e, t, n, o) {
            var r = new bt(t.items, (function(e) {
                t.onSelectionChanged(e), i.toggleVisibility()
            }), t.allowSelection, t.selectedItem, t.onFilterStringChangedCallback);
            r.locOwner = o;
            var i = new wt("sv-list", {
                model: r
            }, null == n ? void 0 : n.verticalPosition, null == n ? void 0 : n.horizontalPosition, null == n ? void 0 : n.showPointer, null == n ? void 0 : n.isModal, null == n ? void 0 : n.onCancel, null == n ? void 0 : n.onApply, null == n ? void 0 : n.onHide, null == n ? void 0 : n.onShow, null == n ? void 0 : n.cssClass, null == n ? void 0 : n.title);
            i.displayMode = null == n ? void 0 : n.displayMode;
            var s = Object.assign({}, e, {
                    component: "sv-action-bar-item-dropdown",
                    popupModel: i,
                    action: function() {
                        e.action && e.action(), i.toggleVisibility()
                    }
                }),
                a = new Et(s);
            return a.data = r, a
        }
        var Ot, Et = function(e) {
                function t(t) {
                    var n = e.call(this) || this;
                    if (n.innerItem = t, n.iconSize = 24, n.locTitleChanged = function() {
                            var e = n.locTitle.renderedHtml;
                            n.setPropertyValue("title", e || void 0)
                        }, n.locTitle = t ? t.locTitle : null, t)
                        for (var o in t) n[o] = t[o];
                    return n.locTitleName && n.locTitleChanged(), n.locStrChangedInPopupModel(), n
                }
                return Vt(t, e), t.prototype.raiseUpdate = function() {
                    this.updateCallback && this.updateCallback()
                }, t.prototype.createLocTitle = function() {
                    return this.createLocalizableString("title", this, !0)
                }, Object.defineProperty(t.prototype, "locTitle", {
                    get: function() {
                        return this.locTitleValue
                    },
                    set: function(e) {
                        e || this.locTitleValue || (e = this.createLocTitle()), this.locTitleValue && this.locTitleValue.onStringChanged.remove(this.locTitleChanged), this.locTitleValue = e, this.locTitleValue.onStringChanged.add(this.locTitleChanged), this.locTitleChanged()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTitleName", {
                    get: function() {
                        return this.locTitle.localizationName
                    },
                    set: function(e) {
                        this.locTitle.localizationName = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.locTooltipChanged(), this.locStrChangedInPopupModel()
                }, t.prototype.locStrChangedInPopupModel = function() {
                    if (this.popupModel && this.popupModel.contentComponentData && this.popupModel.contentComponentData.model) {
                        var e = this.popupModel.contentComponentData.model;
                        if (Array.isArray(e.actions)) e.actions.forEach((function(e) {
                            e.locStrsChanged && e.locStrsChanged()
                        }))
                    }
                }, t.prototype.locTooltipChanged = function() {
                    this.locTooltipName && (this.tooltip = u.getString(this.locTooltipName, this.locTitle.locale))
                }, Object.defineProperty(t.prototype, "cssClasses", {
                    get: function() {
                        return this.cssClassesValue || ht
                    },
                    set: function(e) {
                        this.cssClassesValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "disabled", {
                    get: function() {
                        return void 0 !== this.enabled && !this.enabled
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitle", {
                    get: function() {
                        return ("small" != this.mode && (this.showTitle || void 0 === this.showTitle) || !this.iconName) && !!this.title
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isVisible", {
                    get: function() {
                        return this.visible && "popup" !== this.mode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "canShrink", {
                    get: function() {
                        return !!this.iconName
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getActionRootCss = function() {
                    return (new ct).append("sv-action").append(this.css).append("sv-action--space", this.needSpace).append("sv-action--hidden", !this.isVisible).toString()
                }, t.prototype.getActionBarItemTitleCss = function() {
                    return (new ct).append(this.cssClasses.itemTitle).append(this.cssClasses.itemTitleWithIcon, !!this.iconName).toString()
                }, t.prototype.getActionBarItemCss = function() {
                    return (new ct).append(this.cssClasses.item).append(this.cssClasses.itemAsIcon, !this.hasTitle).append(this.cssClasses.itemActive, !!this.active).append(this.cssClasses.itemPressed, !!this.pressed).append(this.innerCss).toString()
                }, t.prototype.getLocale = function() {
                    return this.owner ? this.owner.getLocale() : ""
                }, t.prototype.getMarkdownHtml = function(e, t) {
                    return this.owner ? this.owner.getMarkdownHtml(e, t) : void 0
                }, t.prototype.getProcessedText = function(e) {
                    return this.owner ? this.owner.getProcessedText(e) : e
                }, t.prototype.getRenderer = function(e) {
                    return this.owner ? this.owner.getRenderer(e) : null
                }, t.prototype.getRendererContext = function(e) {
                    return this.owner ? this.owner.getRendererContext(e) : e
                }, Tt([y()], t.prototype, "id", void 0), Tt([y()], t.prototype, "iconName", void 0), Tt([y()], t.prototype, "iconSize", void 0), Tt([y({
                    defaultValue: !0,
                    onSet: function(e, t) {
                        t.raiseUpdate()
                    }
                })], t.prototype, "visible", void 0), Tt([y()], t.prototype, "tooltip", void 0), Tt([y({
                    onSet: function(e, t) {
                        t.locTooltipChanged()
                    }
                })], t.prototype, "locTooltipName", void 0), Tt([y()], t.prototype, "enabled", void 0), Tt([y()], t.prototype, "showTitle", void 0), Tt([y()], t.prototype, "action", void 0), Tt([y()], t.prototype, "css", void 0), Tt([y()], t.prototype, "innerCss", void 0), Tt([y()], t.prototype, "data", void 0), Tt([y()], t.prototype, "popupModel", void 0), Tt([y()], t.prototype, "needSeparator", void 0), Tt([y()], t.prototype, "active", void 0), Tt([y()], t.prototype, "pressed", void 0), Tt([y()], t.prototype, "template", void 0), Tt([y()], t.prototype, "component", void 0), Tt([y()], t.prototype, "items", void 0), Tt([y()], t.prototype, "visibleIndex", void 0), Tt([y({
                    defaultValue: "large"
                })], t.prototype, "mode", void 0), Tt([y()], t.prototype, "disableTabStop", void 0), Tt([y()], t.prototype, "disableShrink", void 0), Tt([y()], t.prototype, "disableHide", void 0), Tt([y({
                    defaultValue: !1
                })], t.prototype, "needSpace", void 0), Tt([y()], t.prototype, "ariaChecked", void 0), Tt([y({
                    defaultValue: "button"
                })], t.prototype, "ariaRole", void 0), Tt([y({
                    onSet: function(e, t) {
                        t.locTitleValue.text !== e && (t.locTitleValue.text = e)
                    }
                })], t.prototype, "title", void 0), t
            }(he),
            Rt = function() {
                function e(e) {
                    this.item = e, this.funcKey = "sv-dropdown-action", this.setupPopupCallbacks()
                }
                return e.prototype.setupPopupCallbacks = function() {
                    var e = this,
                        t = this.popupModel = this.item.popupModel;
                    t && t.registerPropertyChangedHandlers(["isVisible"], (function() {
                        t.isVisible ? e.item.pressed = !0 : e.item.pressed = !1
                    }), this.funcKey)
                }, e.prototype.removePopupCallbacks = function() {
                    this.popupModel && this.popupModel.unregisterPropertyChangedHandlers(["isVisible"], this.funcKey)
                }, e.prototype.dispose = function() {
                    this.removePopupCallbacks()
                }, e
            }(),
            It = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            _t = function(e) {
                function t() {
                    var n = e.call(this) || this;
                    return n.minVisibleItemsCount = 0, n.isResponsivenessDisabled = !1, n.dotsItem = St({
                        id: "dotsItem-id" + t.ContainerID++,
                        css: "sv-dots",
                        innerCss: "sv-dots__item",
                        iconName: "icon-more",
                        visible: !1,
                        tooltip: u.getString("more")
                    }, {
                        items: [],
                        onSelectionChanged: function(e) {
                            n.hiddenItemSelected(e)
                        },
                        allowSelection: !1
                    }), n
                }
                return It(t, e), t.prototype.hideItemsGreaterN = function(e) {
                    var t = this.visibleActions.filter((function(e) {
                        return !e.disableHide
                    }));
                    e = Math.max(e, this.minVisibleItemsCount) - (this.visibleActions.length - t.length);
                    var n = [];
                    t.forEach((function(t) {
                        e <= 0 && (t.mode = "popup", n.push(t.innerItem)), e--
                    })), this.hiddenItemsListModel.setItems(n)
                }, t.prototype.getVisibleItemsCount = function(e) {
                    for (var t = this.visibleActions.map((function(e) {
                            return e.minDimension
                        })), n = 0, o = 0; o < t.length; o++)
                        if ((n += t[o]) > e) return o;
                    return o
                }, t.prototype.updateItemMode = function(e, t) {
                    for (var n = this.visibleActions, o = n.length - 1; o >= 0; o--) t > e && !n[o].disableShrink ? (t -= n[o].maxDimension - n[o].minDimension, n[o].mode = "small") : n[o].mode = "large"
                }, Object.defineProperty(t.prototype, "hiddenItemsListModel", {
                    get: function() {
                        return this.dotsItem.data
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.hiddenItemSelected = function(e) {
                    e && "function" == typeof e.action && e.action()
                }, t.prototype.onSet = function() {
                    var t = this;
                    this.actions.forEach((function(e) {
                        return e.updateCallback = function() {
                            return t.raiseUpdate(!1)
                        }
                    })), e.prototype.onSet.call(this)
                }, t.prototype.onPush = function(t) {
                    var n = this;
                    t.updateCallback = function() {
                        return n.raiseUpdate(!1)
                    }, e.prototype.onPush.call(this, t)
                }, t.prototype.getRenderedActions = function() {
                    return 1 === this.actions.length && this.actions[0].iconName ? this.actions : this.actions.concat([this.dotsItem])
                }, t.prototype.raiseUpdate = function(t) {
                    this.isResponsivenessDisabled || e.prototype.raiseUpdate.call(this, t)
                }, t.prototype.fit = function(e, t) {
                    if (!(e <= 0)) {
                        this.dotsItem.visible = !1;
                        var n = 0,
                            o = 0;
                        this.visibleActions.forEach((function(e) {
                            n += e.minDimension, o += e.maxDimension
                        })), e >= o ? this.setActionsMode("large") : e < n ? (this.setActionsMode("small"), this.hideItemsGreaterN(this.getVisibleItemsCount(e - t)), this.dotsItem.visible = !0) : this.updateItemMode(e, o)
                    }
                }, t.prototype.initResponsivityManager = function(e) {
                    this.responsivityManager = new lt(e, this, ".sv-action:not(.sv-dots)>.sv-action__content")
                }, t.prototype.resetResponsivityManager = function() {
                    this.responsivityManager && (this.responsivityManager.dispose(), this.responsivityManager = void 0)
                }, t.prototype.setActionsMode = function(e) {
                    this.actions.forEach((function(t) {
                        return t.mode = e
                    }))
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.resetResponsivityManager()
                }, t.ContainerID = 1, t
            }(ft),
            qt = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Dt = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            At = function(e) {
                function t() {
                    var t = e.call(this) || this;
                    return t.createLocTitleProperty(), t
                }
                return qt(t, e), t.prototype.createLocTitleProperty = function() {
                    return this.createLocalizableString("title", this, !0)
                }, Object.defineProperty(t.prototype, "title", {
                    get: function() {
                        return this.getLocalizableStringText("title", this.getDefaultTitleValue())
                    },
                    set: function(e) {
                        this.setLocalizableStringText("title", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTitle", {
                    get: function() {
                        return this.getLocalizableString("title")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDefaultTitleValue = function() {}, t.prototype.updateDescriptionVisibility = function(e) {
                    this.hasDescription = !!e
                }, Object.defineProperty(t.prototype, "locDescription", {
                    get: function() {
                        return this.getLocalizableString("description")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleTagName", {
                    get: function() {
                        var e = this.getDefaultTitleTagName(),
                            t = this.getSurvey();
                        return t ? t.getElementTitleTagName(this, e) : e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDefaultTitleTagName = function() {
                    return s.titleTags[this.getType()]
                }, Object.defineProperty(t.prototype, "hasTitle", {
                    get: function() {
                        return this.title.length > 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitleActions", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitleEvents", {
                    get: function() {
                        return this.hasTitleActions
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getTitleToolbar = function() {
                    return null
                }, t.prototype.getTitleOwner = function() {}, Object.defineProperty(t.prototype, "isTitleOwner", {
                    get: function() {
                        return !!this.getTitleOwner()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isTitleRenderedAsString", {
                    get: function() {
                        return this.getIsTitleRenderedAsString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.toggleState = function() {}, Object.defineProperty(t.prototype, "cssClasses", {
                    get: function() {
                        return {}
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssTitle", {
                    get: function() {
                        return ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "ariaTitleId", {
                    get: function() {},
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleTabIndex", {
                    get: function() {},
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleAriaExpanded", {
                    get: function() {},
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "ariaLabel", {
                    get: function() {
                        return this.locTitle.renderedHtml
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleAriaLabel", {
                    get: function() {
                        return this.ariaLabel
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getIsTitleRenderedAsString = function() {
                    return !this.isTitleOwner
                }, Dt([y()], t.prototype, "hasDescription", void 0), Dt([y({
                    localizable: !0,
                    onSet: function(e, t) {
                        t.updateDescriptionVisibility(t, e)
                    }
                })], t.prototype, "description", void 0), t
            }(he);
        ! function(e) {
            e[e.InsideEmptyPanel = 1] = "InsideEmptyPanel", e[e.MultilineRight = 2] = "MultilineRight", e[e.MultilineLeft = 3] = "MultilineLeft"
        }(Ot || (Ot = {}));
        var jt = function(e) {
                function t(n) {
                    var o = e.call(this) || this;
                    return o.selectedElementInDesignValue = o, o.disableDesignActions = t.CreateDisabledDesignElements, o.parentQuestionValue = null, o.isContentElement = !1, o.isEditableTemplateElement = !1, o.isInteractiveDesignElement = !0, o.isSingleInRow = !0, o.name = n, o.createNewArray("errors"), o.createNewArray("titleActions"), o.registerPropertyChangedHandlers(["isReadOnly"], (function() {
                        o.onReadOnlyChanged()
                    })), o.registerPropertyChangedHandlers(["errors"], (function() {
                        o.updateVisibleErrors()
                    })), o.registerPropertyChangedHandlers(["isSingleInRow"], (function() {
                        o.updateElementCss(!1)
                    })), o
                }
                return qt(t, e), t.getProgressInfoByElements = function(e, t) {
                    for (var n = he.createProgressInfo(), o = 0; o < e.length; o++)
                        if (e[o].isVisible) {
                            var r = e[o].getProgressInfo();
                            n.questionCount += r.questionCount, n.answeredQuestionCount += r.answeredQuestionCount, n.requiredQuestionCount += r.requiredQuestionCount, n.requiredAnsweredQuestionCount += r.requiredAnsweredQuestionCount
                        } return t && n.questionCount > 0 && (0 == n.requiredQuestionCount && (n.requiredQuestionCount = 1), n.answeredQuestionCount > 0 && (n.requiredAnsweredQuestionCount = 1)), n
                }, t.ScrollElementToTop = function(e) {
                    if (!e || "undefined" == typeof document) return !1;
                    var t = document.getElementById(e);
                    if (!t || !t.scrollIntoView) return !1;
                    var n = t.getBoundingClientRect().top;
                    return n < 0 && t.scrollIntoView(), n < 0
                }, t.GetFirstNonTextElement = function(e, t) {
                    if (void 0 === t && (t = !1), !e || !e.length || 0 == e.length) return null;
                    if (t) {
                        var n = e[0];
                        "#text" === n.nodeName && (n.data = ""), "#text" === (n = e[e.length - 1]).nodeName && (n.data = "")
                    }
                    for (var o = 0; o < e.length; o++)
                        if ("#text" != e[o].nodeName && "#comment" != e[o].nodeName) return e[o];
                    return null
                }, t.FocusElement = function(e) {
                    if (!e || "undefined" == typeof document) return !1;
                    var n = t.focusElementCore(e);
                    return n || setTimeout((function() {
                        t.focusElementCore(e)
                    }), 10), n
                }, t.focusElementCore = function(e) {
                    if (!document) return !1;
                    var t = document.getElementById(e);
                    return !(!t || t.disabled) && (t.focus(), !0)
                }, t.prototype.onPropertyValueChanged = function(t, n, o) {
                    e.prototype.onPropertyValueChanged.call(this, t, n, o), "state" === t && (this.updateElementCss(!1), this.stateChangedCallback && this.stateChangedCallback())
                }, t.prototype.getSkeletonComponentNameCore = function() {
                    return this.survey ? this.survey.getSkeletonComponentName(this) : ""
                }, Object.defineProperty(t.prototype, "parentQuestion", {
                    get: function() {
                        return this.parentQuestionValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setParentQuestion = function(e) {
                    this.parentQuestionValue = e, this.onParentQuestionChanged()
                }, t.prototype.onParentQuestionChanged = function() {}, Object.defineProperty(t.prototype, "skeletonComponentName", {
                    get: function() {
                        return this.getSkeletonComponentNameCore()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "state", {
                    get: function() {
                        return this.getPropertyValue("state")
                    },
                    set: function(e) {
                        this.setPropertyValue("state", e), this.notifyStateChanged()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.notifyStateChanged = function() {
                    this.survey && this.survey.elementContentVisibilityChanged(this)
                }, Object.defineProperty(t.prototype, "isCollapsed", {
                    get: function() {
                        if (!this.isDesignMode) return "collapsed" === this.state
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isExpanded", {
                    get: function() {
                        return "expanded" === this.state
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.collapse = function() {
                    this.isDesignMode || (this.state = "collapsed")
                }, t.prototype.expand = function() {
                    this.state = "expanded"
                }, t.prototype.toggleState = function() {
                    return this.isCollapsed ? (this.expand(), !0) : !this.isExpanded || (this.collapse(), !1)
                }, Object.defineProperty(t.prototype, "hasStateButton", {
                    get: function() {
                        return this.isExpanded || this.isCollapsed
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "shortcutText", {
                    get: function() {
                        return this.title || this.name
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getTitleToolbar = function() {
                    return this.titleToolbarValue || (this.titleToolbarValue = this.createActionContainer(!0), this.titleToolbarValue.containerCss = (this.isPanel ? this.cssClasses.panel.titleBar : this.cssClasses.titleBar) || "sv-action-title-bar", this.titleToolbarValue.setItems(this.getTitleActions())), this.titleToolbarValue
                }, t.prototype.createActionContainer = function(e) {
                    var t = e ? new _t : new ft;
                    return this.survey && this.survey.getCss().actionBar && (t.cssClasses = this.survey.getCss().actionBar), t
                }, Object.defineProperty(t.prototype, "titleActions", {
                    get: function() {
                        return this.getPropertyValue("titleActions")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getTitleActions = function() {
                    return this.isTitleActionRequested || (this.updateTitleActions(), this.isTitleActionRequested = !0), this.titleActions
                }, t.prototype.getDefaultTitleActions = function() {
                    return []
                }, t.prototype.updateTitleActions = function() {
                    var e = this.getDefaultTitleActions();
                    this.survey && (e = this.survey.getUpdatedElementTitleActions(this, e)), this.setPropertyValue("titleActions", e)
                }, Object.defineProperty(t.prototype, "hasTitleActions", {
                    get: function() {
                        return this.getTitleActions().length > 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitleEvents", {
                    get: function() {
                        return void 0 !== this.state && "default" !== this.state
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleTabIndex", {
                    get: function() {
                        return this.isPage || "default" === this.state ? void 0 : 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleAriaExpanded", {
                    get: function() {
                        if (!this.isPage && "default" !== this.state) return "expanded" === this.state
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setSurveyImpl = function(e, t) {
                    this.surveyImplValue = e, this.surveyImplValue ? (this.surveyDataValue = this.surveyImplValue.getSurveyData(), this.setSurveyCore(this.surveyImplValue.getSurvey()), this.textProcessorValue = this.surveyImplValue.getTextProcessor(), this.onSetData()) : (this.setSurveyCore(null), this.surveyDataValue = null), this.survey && this.clearCssClasses()
                }, t.prototype.canRunConditions = function() {
                    return e.prototype.canRunConditions.call(this) && !!this.data
                }, t.prototype.getDataFilteredValues = function() {
                    return this.data ? this.data.getFilteredValues() : null
                }, t.prototype.getDataFilteredProperties = function() {
                    var e = this.data ? this.data.getFilteredProperties() : {};
                    return e.question = this, e
                }, Object.defineProperty(t.prototype, "surveyImpl", {
                    get: function() {
                        return this.surveyImplValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.__setData = function(e) {
                    s.supportCreatorV2 && (this.surveyDataValue = e)
                }, Object.defineProperty(t.prototype, "data", {
                    get: function() {
                        return this.surveyDataValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "survey", {
                    get: function() {
                        return this.getSurvey()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), this.surveyValue || this.surveyImplValue && this.setSurveyCore(this.surveyImplValue.getSurvey()), this.surveyValue
                }, t.prototype.setSurveyCore = function(e) {
                    this.surveyValue = e, this.surveyChangedCallback && this.surveyChangedCallback()
                }, Object.defineProperty(t.prototype, "isInternal", {
                    get: function() {
                        return this.isContentElement
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "areInvisibleElementsShowing", {
                    get: function() {
                        return !!this.survey && this.survey.areInvisibleElementsShowing && !this.isContentElement
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isVisible", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isReadOnly", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "readOnly", {
                    get: function() {
                        return this.getPropertyValue("readOnly", !1)
                    },
                    set: function(e) {
                        this.readOnly != e && (this.setPropertyValue("readOnly", e), this.isLoadingFromJson || this.setPropertyValue("isReadOnly", this.isReadOnly))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onReadOnlyChanged = function() {
                    this.readOnlyChangedCallback && this.readOnlyChangedCallback()
                }, Object.defineProperty(t.prototype, "css", {
                    get: function() {
                        return this.survey ? this.survey.getCss() : {}
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.ensureCssClassesValue = function() {
                    this.cssClassesValue || (this.cssClassesValue = this.calcCssClasses(this.css), this.updateElementCssCore(this.cssClassesValue))
                }, Object.defineProperty(t.prototype, "cssClasses", {
                    get: function() {
                        return this.survey ? (this.ensureCssClassesValue(), this.cssClassesValue) : this.calcCssClasses(this.css)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.calcCssClasses = function(e) {}, t.prototype.updateElementCssCore = function(e) {}, Object.defineProperty(t.prototype, "cssError", {
                    get: function() {
                        return ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateElementCss = function(e) {
                    this.clearCssClasses()
                }, t.prototype.clearCssClasses = function() {
                    this.cssClassesValue = void 0
                }, t.prototype.getIsLoadingFromJson = function() {
                    return !!e.prototype.getIsLoadingFromJson.call(this) || !!this.survey && this.survey.isLoadingFromJson
                }, Object.defineProperty(t.prototype, "name", {
                    get: function() {
                        return this.getPropertyValue("name", "")
                    },
                    set: function(e) {
                        var t = this.name;
                        this.setPropertyValue("name", this.getValidName(e)), !this.isLoadingFromJson && t && this.onNameChanged(t)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getValidName = function(e) {
                    return e
                }, t.prototype.onNameChanged = function(e) {}, t.prototype.updateBindingValue = function(e, t) {
                    this.data && !this.isTwoValueEquals(t, this.data.getValue(e)) && this.data.setValue(e, t, !1)
                }, Object.defineProperty(t.prototype, "errors", {
                    get: function() {
                        return this.getPropertyValue("errors")
                    },
                    set: function(e) {
                        this.setPropertyValue("errors", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateVisibleErrors = function() {
                    for (var e = 0, t = 0; t < this.errors.length; t++) this.errors[t].visible && e++;
                    this.hasVisibleErrors = e > 0
                }, Object.defineProperty(t.prototype, "containsErrors", {
                    get: function() {
                        return this.getPropertyValue("containsErrors", !1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateContainsErrors = function() {
                    this.setPropertyValue("containsErrors", this.getContainsErrors())
                }, t.prototype.getContainsErrors = function() {
                    return this.errors.length > 0
                }, Object.defineProperty(t.prototype, "selectedElementInDesign", {
                    get: function() {
                        return this.selectedElementInDesignValue
                    },
                    set: function(e) {
                        this.selectedElementInDesignValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateCustomWidgets = function() {}, t.prototype.onSurveyLoad = function() {}, t.prototype.onFirstRendering = function() {
                    this.ensureCssClassesValue()
                }, t.prototype.endLoadingFromJson = function() {
                    e.prototype.endLoadingFromJson.call(this), this.survey || this.onSurveyLoad()
                }, t.prototype.setVisibleIndex = function(e) {
                    return 0
                }, Object.defineProperty(t.prototype, "isPage", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isPanel", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isQuestion", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.delete = function() {}, t.prototype.getLocale = function() {
                    return this.survey ? this.survey.getLocale() : this.locOwner ? this.locOwner.getLocale() : ""
                }, t.prototype.getMarkdownHtml = function(e, t) {
                    return this.survey ? this.survey.getSurveyMarkdownHtml(this, e, t) : this.locOwner ? this.locOwner.getMarkdownHtml(e, t) : void 0
                }, t.prototype.getRenderer = function(e) {
                    return this.survey && "function" == typeof this.survey.getRendererForString ? this.survey.getRendererForString(this, e) : this.locOwner && "function" == typeof this.locOwner.getRenderer ? this.locOwner.getRenderer(e) : null
                }, t.prototype.getRendererContext = function(e) {
                    return this.survey && "function" == typeof this.survey.getRendererContextForString ? this.survey.getRendererContextForString(this, e) : this.locOwner && "function" == typeof this.locOwner.getRendererContext ? this.locOwner.getRendererContext(e) : e
                }, t.prototype.getProcessedText = function(e) {
                    return this.isLoadingFromJson ? e : this.textProcessor ? this.textProcessor.processText(e, this.getUseDisplayValuesInDynamicTexts()) : this.locOwner ? this.locOwner.getProcessedText(e) : e
                }, t.prototype.getUseDisplayValuesInDynamicTexts = function() {
                    return !0
                }, t.prototype.removeSelfFromList = function(e) {
                    if (e && Array.isArray(e)) {
                        var t = e.indexOf(this);
                        t > -1 && e.splice(t, 1)
                    }
                }, Object.defineProperty(t.prototype, "textProcessor", {
                    get: function() {
                        return this.textProcessorValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getProcessedHtml = function(e) {
                    return e && this.textProcessor ? this.textProcessor.processText(e, !0) : e
                }, t.prototype.onSetData = function() {}, Object.defineProperty(t.prototype, "parent", {
                    get: function() {
                        return this.getPropertyValue("parent", null)
                    },
                    set: function(e) {
                        this.setPropertyValue("parent", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getPage = function(e) {
                    for (; e && e.parent;) e = e.parent;
                    return e && "page" == e.getType() ? e : null
                }, t.prototype.moveToBase = function(e, t, n) {
                    if (void 0 === n && (n = null), !t) return !1;
                    e.removeElement(this);
                    var o = -1;
                    return a.isNumber(n) && (o = parseInt(n)), -1 == o && n && n.getType && (o = t.indexOf(n)), t.addElement(this, o), !0
                }, t.prototype.setPage = function(e, t) {
                    var n = this.getPage(e);
                    "string" == typeof t && this.getSurvey().pages.forEach((function(e) {
                        t === e.name && (t = e)
                    }));
                    n !== t && (e && e.removeElement(this), t && t.addElement(this, -1))
                }, t.prototype.getSearchableLocKeys = function(e) {
                    e.push("title"), e.push("description")
                }, Object.defineProperty(t.prototype, "isDefaultV2Theme", {
                    get: function() {
                        return this.survey && "sd-root-modern" == this.survey.getCss().root
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isErrorsModeTooltip", {
                    get: function() {
                        return this.getIsErrorsModeTooltip()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getIsErrorsModeTooltip = function() {
                    return this.isDefaultV2Theme && this.hasParent && this.getIsTooltipErrorSupportedByParent()
                }, t.prototype.getIsTooltipErrorSupportedByParent = function() {
                    var e;
                    return null === (e = this.parent) || void 0 === e ? void 0 : e.getIsTooltipErrorInsideSupported()
                }, t.prototype.getIsTooltipErrorInsideSupported = function() {
                    return !1
                }, Object.defineProperty(t.prototype, "hasParent", {
                    get: function() {
                        return this.parent && !this.parent.isPage || void 0 === this.parent
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasFrameV2", {
                    get: function() {
                        return !this.hasParent && this.isDefaultV2Theme && !this.isDesignMode && this.isSingleInRow
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "width", {
                    get: function() {
                        return this.getPropertyValue("width", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("width", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "minWidth", {
                    get: function() {
                        return this.getPropertyValue("minWidth")
                    },
                    set: function(e) {
                        this.setPropertyValue("minWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxWidth", {
                    get: function() {
                        return this.getPropertyValue("maxWidth")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderWidth", {
                    get: function() {
                        return this.getPropertyValue("renderWidth", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("renderWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "indent", {
                    get: function() {
                        return this.getPropertyValue("indent")
                    },
                    set: function(e) {
                        this.setPropertyValue("indent", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rightIndent", {
                    get: function() {
                        return this.getPropertyValue("rightIndent", 0)
                    },
                    set: function(e) {
                        this.setPropertyValue("rightIndent", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "paddingLeft", {
                    get: function() {
                        return this.getPropertyValue("paddingLeft", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("paddingLeft", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "paddingRight", {
                    get: function() {
                        return this.getPropertyValue("paddingRight", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("paddingRight", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rootStyle", {
                    get: function() {
                        var e = {};
                        return this.allowRootStyle && this.renderWidth && (e.flexGrow = 1, e.flexShrink = 1, e.flexBasis = this.renderWidth, e.minWidth = this.minWidth, e.maxWidth = this.maxWidth), e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "clickTitleFunction", {
                    get: function() {
                        var e = this;
                        if (this.needClickTitleFunction()) return function() {
                            return e.processTitleClick()
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.needClickTitleFunction = function() {
                    return "default" !== this.state
                }, t.prototype.processTitleClick = function() {
                    "default" !== this.state && this.toggleState()
                }, t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this), this.updateDescriptionVisibility(this.description), this.errors.length > 0 && this.errors.forEach((function(e) {
                        e.updateText()
                    }))
                }, t.CreateDisabledDesignElements = !1, Dt([y({
                    defaultValue: null
                })], t.prototype, "dragTypeOverMe", void 0), Dt([y({
                    defaultValue: !1
                })], t.prototype, "isDragMe", void 0), Dt([y()], t.prototype, "cssClassesValue", void 0), Dt([y({
                    defaultValue: !1
                })], t.prototype, "hasVisibleErrors", void 0), Dt([y({
                    defaultValue: !0
                })], t.prototype, "isSingleInRow", void 0), Dt([y({
                    defaultValue: !0
                })], t.prototype, "allowRootStyle", void 0), t
            }(At),
            Lt = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Mt = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this) || this;
                    return o.expressionIsRunning = !1, o.isCalculated = !1, t && (o.name = t), n && (o.expression = n), o
                }
                return Lt(t, e), t.prototype.setOwner = function(e) {
                    this.data = e, this.rerunExpression()
                }, t.prototype.getType = function() {
                    return "calculatedvalue"
                }, t.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), this.data && this.data.getSurvey ? this.data.getSurvey() : null
                }, Object.defineProperty(t.prototype, "owner", {
                    get: function() {
                        return this.data
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "name", {
                    get: function() {
                        return this.getPropertyValue("name", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("name", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "includeIntoResult", {
                    get: function() {
                        return this.getPropertyValue("includeIntoResult", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("includeIntoResult", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "expression", {
                    get: function() {
                        return this.getPropertyValue("expression", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("expression", e), this.rerunExpression()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.locCalculation = function() {
                    this.expressionIsRunning = !0
                }, t.prototype.unlocCalculation = function() {
                    this.expressionIsRunning = !1
                }, t.prototype.resetCalculation = function() {
                    this.isCalculated = !1
                }, t.prototype.doCalculation = function(e, t, n) {
                    this.isCalculated || (this.runExpressionCore(e, t, n), this.isCalculated = !0)
                }, t.prototype.runExpression = function(e, t) {
                    this.runExpressionCore(null, e, t)
                }, Object.defineProperty(t.prototype, "value", {
                    get: function() {
                        if (this.data) return this.data.getVariable(this.name)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setValue = function(e) {
                    this.data && this.data.setVariable(this.name, e)
                }, Object.defineProperty(t.prototype, "canRunExpression", {
                    get: function() {
                        return !(!this.data || this.isLoadingFromJson || !this.expression || this.expressionIsRunning || !this.name)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.rerunExpression = function() {
                    this.canRunExpression && this.runExpression(this.data.getFilteredValues(), this.data.getFilteredProperties())
                }, t.prototype.runExpressionCore = function(e, t, n) {
                    this.canRunExpression && (this.ensureExpression(t), this.locCalculation(), e && this.runDependentExpressions(e, t, n), this.expressionRunner.run(t, n))
                }, t.prototype.runDependentExpressions = function(e, t, n) {
                    var o = this.expressionRunner.getVariables();
                    if (o)
                        for (var r = 0; r < e.length; r++) {
                            var i = e[r];
                            i === this || o.indexOf(i.name) < 0 || (i.doCalculation(e, t, n), t[i.name] = i.value)
                        }
                }, t.prototype.ensureExpression = function(e) {
                    var t = this;
                    this.expressionRunner || (this.expressionRunner = new ae(this.expression), this.expressionRunner.onRunComplete = function(e) {
                        a.isTwoValueEquals(e, t.value) || t.setValue(e), t.unlocCalculation()
                    })
                }, t
            }(he);
        I.addClass("calculatedvalue", [{
            name: "!name",
            isUnique: !0
        }, "expression:expression", "includeIntoResult:boolean"], (function() {
            return new Mt
        }), "base");
        var Nt = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ft = function(e) {
                function t(t) {
                    void 0 === t && (t = null);
                    var n = e.call(this) || this;
                    return n.expression = t, n
                }
                return Nt(t, e), t.prototype.getType = function() {
                    return "expressionitem"
                }, t.prototype.runCondition = function(e, t) {
                    return !!this.expression && new se(this.expression).run(e, t)
                }, Object.defineProperty(t.prototype, "expression", {
                    get: function() {
                        return this.getPropertyValue("expression", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("expression", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locHtml", {
                    get: function() {
                        return this.getLocalizableString("html")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getLocale = function() {
                    return this.locOwner ? this.locOwner.getLocale() : ""
                }, t.prototype.getMarkdownHtml = function(e, t) {
                    return this.locOwner ? this.locOwner.getMarkdownHtml(e, t) : void 0
                }, t.prototype.getRenderer = function(e) {
                    return this.locOwner ? this.locOwner.getRenderer(e) : null
                }, t.prototype.getRendererContext = function(e) {
                    return this.locOwner ? this.locOwner.getRendererContext(e) : e
                }, t.prototype.getProcessedText = function(e) {
                    return this.locOwner ? this.locOwner.getProcessedText(e) : e
                }, t.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), this.locOwner
                }, t
            }(he),
            Bt = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this, t) || this;
                    return o.createLocalizableString("html", o), o.html = n, o
                }
                return Nt(t, e), t.prototype.getType = function() {
                    return "htmlconditionitem"
                }, Object.defineProperty(t.prototype, "html", {
                    get: function() {
                        return this.getLocalizableStringText("html")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("html", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locHtml", {
                    get: function() {
                        return this.getLocalizableString("html")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(Ft),
            zt = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this, t) || this;
                    return o.createLocalizableString("url", o), o.url = n, o
                }
                return Nt(t, e), t.prototype.getType = function() {
                    return "urlconditionitem"
                }, Object.defineProperty(t.prototype, "url", {
                    get: function() {
                        return this.getLocalizableStringText("url")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("url", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locUrl", {
                    get: function() {
                        return this.getLocalizableString("url")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(Ft);
        I.addClass("expressionitem", ["expression:condition"], (function() {
            return new Ft
        }), "base"), I.addClass("htmlconditionitem", [{
            name: "html:html",
            serializationProperty: "locHtml"
        }], (function() {
            return new Bt
        }), "expressionitem"), I.addClass("urlconditionitem", [{
            name: "url:string",
            serializationProperty: "locUrl"
        }], (function() {
            return new zt
        }), "expressionitem");
        var Ht = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Qt = function() {
                function e() {
                    this.parser = new DOMParser
                }
                return e.prototype.assignValue = function(e, t, n) {
                    Array.isArray(e[t]) ? e[t].push(n) : void 0 !== e[t] ? e[t] = [e[t]].concat(n) : "object" == typeof n && 1 === Object.keys(n).length && Object.keys(n)[0] === t ? e[t] = n[t] : e[t] = n
                }, e.prototype.xml2Json = function(e, t) {
                    if (e.children && e.children.length > 0)
                        for (var n = 0; n < e.children.length; n++) {
                            var o = e.children[n],
                                r = {};
                            this.xml2Json(o, r), this.assignValue(t, o.nodeName, r)
                        } else this.assignValue(t, e.nodeName, e.textContent)
                }, e.prototype.parseXmlString = function(e) {
                    var t = this.parser.parseFromString(e, "text/xml"),
                        n = {};
                    return this.xml2Json(t, n), n
                }, e
            }(),
            Ut = function(e) {
                function t() {
                    var t = e.call(this) || this;
                    return t.lastObjHash = "", t.isRunningValue = !1, t.processedUrl = "", t.processedPath = "", t.isUsingCacheFromUrl = void 0, t.error = null, t.createItemValue = function(e) {
                        return new ze(e)
                    }, t
                }
                return Ht(t, e), Object.defineProperty(t, "EncodeParameters", {
                    get: function() {
                        return s.webserviceEncodeParameters
                    },
                    set: function(e) {
                        s.webserviceEncodeParameters = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.clearCache = function() {
                    t.itemsResult = {}, t.sendingSameRequests = {}
                }, t.addSameRequest = function(e) {
                    if (!e.isUsingCache) return !1;
                    var n = e.objHash,
                        o = t.sendingSameRequests[n];
                    return o ? (o.push(e), e.isRunningValue = !0, !0) : (t.sendingSameRequests[e.objHash] = [], !1)
                }, t.unregisterSameRequests = function(e, n) {
                    if (e.isUsingCache) {
                        var o = t.sendingSameRequests[e.objHash];
                        if (delete t.sendingSameRequests[e.objHash], o)
                            for (var r = 0; r < o.length; r++) o[r].isRunningValue = !1, o[r].getResultCallback && o[r].getResultCallback(n)
                    }
                }, t.getCachedItemsResult = function(e) {
                    var n = e.objHash,
                        o = t.itemsResult[n];
                    return !!o && (e.getResultCallback && e.getResultCallback(o), !0)
                }, t.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), this.owner ? this.owner.survey : null
                }, t.prototype.run = function(e) {
                    if (void 0 === e && (e = null), this.url && this.getResultCallback) {
                        if (this.processedText(e), !this.processedUrl) return this.doEmptyResultCallback({}), void(this.lastObjHash = this.objHash);
                        this.lastObjHash !== this.objHash && (this.lastObjHash = this.objHash, this.error = null, this.useChangedItemsResults() || t.addSameRequest(this) || this.sendRequest())
                    }
                }, Object.defineProperty(t.prototype, "isUsingCache", {
                    get: function() {
                        return !0 === this.isUsingCacheFromUrl || !1 !== this.isUsingCacheFromUrl && s.useCachingForChoicesRestful
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRunning", {
                    get: function() {
                        return this.getIsRunning()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getIsRunning = function() {
                    return this.isRunningValue
                }, Object.defineProperty(t.prototype, "isWaitingForParameters", {
                    get: function() {
                        return this.url && !this.processedUrl
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.useChangedItemsResults = function() {
                    return t.getCachedItemsResult(this)
                }, t.prototype.doEmptyResultCallback = function(e) {
                    var t = [];
                    this.updateResultCallback && (t = this.updateResultCallback(t, e)), this.getResultCallback(t)
                }, t.prototype.processedText = function(e) {
                    var n = this.url;
                    if (n && (n = n.replace(t.cacheText, "").replace(t.noCacheText, "")), e) {
                        var o = e.processTextEx(n, !1, s.webserviceEncodeParameters),
                            r = e.processTextEx(this.path, !1, s.webserviceEncodeParameters);
                        o.hasAllValuesOnLastRun && r.hasAllValuesOnLastRun ? (this.processedUrl = o.text, this.processedPath = r.text) : (this.processedUrl = "", this.processedPath = "")
                    } else this.processedUrl = n, this.processedPath = this.path;
                    this.onProcessedUrlCallback && this.onProcessedUrlCallback(this.processedUrl, this.processedPath)
                }, t.prototype.parseResponse = function(e) {
                    var t;
                    if (e && "function" == typeof e.indexOf && 0 === e.indexOf("<")) t = (new Qt).parseXmlString(e);
                    else try {
                        t = JSON.parse(e)
                    } catch (n) {
                        t = (e || "").split("\n").map((function(e) {
                            return e.trim(" ")
                        })).filter((function(e) {
                            return !!e
                        }))
                    }
                    return t
                }, t.prototype.sendRequest = function() {
                    var e = new XMLHttpRequest;
                    e.open("GET", this.processedUrl), e.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    var n = this,
                        o = this.objHash;
                    e.onload = function() {
                        n.beforeLoadRequest(), 200 === e.status ? n.onLoad(n.parseResponse(e.response), o) : n.onError(e.statusText, e.responseText)
                    };
                    var r = {
                        request: e
                    };
                    t.onBeforeSendRequest && t.onBeforeSendRequest(this, r), this.beforeSendRequest(), r.request.send()
                }, t.prototype.getType = function() {
                    return "choicesByUrl"
                }, Object.defineProperty(t.prototype, "isEmpty", {
                    get: function() {
                        return !(this.url || this.path || this.valueName || this.titleName || this.imageLinkName)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getCustomPropertiesNames = function() {
                    for (var e = this.getCustomProperties(), t = new Array, n = 0; n < e.length; n++) t.push(this.getCustomPropertyName(e[n].name));
                    return t
                }, t.prototype.getCustomPropertyName = function(e) {
                    return e + "Name"
                }, t.prototype.getCustomProperties = function() {
                    for (var e = I.getProperties(this.itemValueType), t = [], n = 0; n < e.length; n++) "value" !== e[n].name && "text" !== e[n].name && "visibleIf" !== e[n].name && "enableIf" !== e[n].name && t.push(e[n]);
                    return t
                }, t.prototype.setData = function(e) {
                    this.clear(), e.url && (this.url = e.url), e.path && (this.path = e.path), e.valueName && (this.valueName = e.valueName), e.titleName && (this.titleName = e.titleName), e.imageLinkName && (this.imageLinkName = e.imageLinkName), void 0 !== e.allowEmptyResponse && (this.allowEmptyResponse = e.allowEmptyResponse), void 0 !== e.attachOriginalItems && (this.attachOriginalItems = e.attachOriginalItems);
                    for (var t = this.getCustomPropertiesNames(), n = 0; n < t.length; n++) e[t[n]] && (this[t[n]] = e[t[n]])
                }, t.prototype.getData = function() {
                    if (this.isEmpty) return null;
                    var e = {};
                    this.url && (e.url = this.url), this.path && (e.path = this.path), this.valueName && (e.valueName = this.valueName), this.titleName && (e.titleName = this.titleName), this.imageLinkName && (e.imageLinkName = this.imageLinkName), this.allowEmptyResponse && (e.allowEmptyResponse = this.allowEmptyResponse), this.attachOriginalItems && (e.attachOriginalItems = this.attachOriginalItems);
                    for (var t = this.getCustomPropertiesNames(), n = 0; n < t.length; n++) this[t[n]] && (e[t[n]] = this[t[n]]);
                    return e
                }, Object.defineProperty(t.prototype, "url", {
                    get: function() {
                        return this.getPropertyValue("url", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("url", e), this.isUsingCacheFromUrl = void 0, e && (e.indexOf(t.cacheText) > -1 ? this.isUsingCacheFromUrl = !0 : e.indexOf(t.noCacheText) > -1 && (this.isUsingCacheFromUrl = !1))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "path", {
                    get: function() {
                        return this.getPropertyValue("path", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("path", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "valueName", {
                    get: function() {
                        return this.getPropertyValue("valueName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("valueName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleName", {
                    get: function() {
                        return this.getPropertyValue("titleName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("titleName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "imageLinkName", {
                    get: function() {
                        return this.getPropertyValue("imageLinkName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("imageLinkName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowEmptyResponse", {
                    get: function() {
                        return this.getPropertyValue("allowEmptyResponse")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowEmptyResponse", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "attachOriginalItems", {
                    get: function() {
                        return this.getPropertyValue("attachOriginalItems")
                    },
                    set: function(e) {
                        this.setPropertyValue("attachOriginalItems", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "itemValueType", {
                    get: function() {
                        if (!this.owner) return "itemvalue";
                        var e = I.findProperty(this.owner.getType(), "choices");
                        return e ? "itemvalue[]" == e.type ? "itemvalue" : e.type : "itemvalue"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.clear = function() {
                    this.url = "", this.path = "", this.valueName = "", this.titleName = "", this.imageLinkName = "";
                    for (var e = this.getCustomPropertiesNames(), t = 0; t < e.length; t++) this[e[t]] && (this[e[t]] = "")
                }, t.prototype.beforeSendRequest = function() {
                    this.isRunningValue = !0, this.beforeSendRequestCallback && this.beforeSendRequestCallback()
                }, t.prototype.beforeLoadRequest = function() {
                    this.isRunningValue = !1
                }, t.prototype.onLoad = function(e, n) {
                    void 0 === n && (n = null), n || (n = this.objHash);
                    var o = new Array,
                        r = this.getResultAfterPath(e);
                    if (r && r.length)
                        for (var i = 0; i < r.length; i++) {
                            var s = r[i];
                            if (s) {
                                var a = this.getItemValueCallback ? this.getItemValueCallback(s) : this.getValue(s),
                                    l = this.createItemValue(a);
                                this.setTitle(l, s), this.setCustomProperties(l, s), this.attachOriginalItems && (l.originalItem = s);
                                var u = this.getImageLink(s);
                                u && (l.imageLink = u), o.push(l)
                            }
                        } else this.allowEmptyResponse || (this.error = new Ve(null, this.owner));
                    this.updateResultCallback && (o = this.updateResultCallback(o, e)), this.isUsingCache && (t.itemsResult[n] = o), this.callResultCallback(o, n), t.unregisterSameRequests(this, o)
                }, t.prototype.callResultCallback = function(e, t) {
                    t == this.objHash && this.getResultCallback(e)
                }, t.prototype.setCustomProperties = function(e, t) {
                    for (var n = this.getCustomProperties(), o = 0; o < n.length; o++) {
                        var r = n[o],
                            i = this.getValueCore(t, this.getPropertyBinding(r.name));
                        this.isValueEmpty(i) || (e[r.name] = i)
                    }
                }, t.prototype.getPropertyBinding = function(e) {
                    return this[this.getCustomPropertyName(e)] ? this[this.getCustomPropertyName(e)] : this[e] ? this[e] : e
                }, t.prototype.onError = function(e, n) {
                    this.error = new Pe(e, n, this.owner), this.doEmptyResultCallback(n), t.unregisterSameRequests(this, [])
                }, t.prototype.getResultAfterPath = function(e) {
                    if (!e) return e;
                    if (!this.processedPath) return e;
                    for (var t = this.getPathes(), n = 0; n < t.length; n++)
                        if (!(e = e[t[n]])) return null;
                    return e
                }, t.prototype.getPathes = function() {
                    var e = [];
                    return 0 == (e = this.processedPath.indexOf(";") > -1 ? this.path.split(";") : this.processedPath.split(",")).length && e.push(this.processedPath), e
                }, t.prototype.getValue = function(e) {
                    return e ? this.valueName ? this.getValueCore(e, this.valueName) : e instanceof Object ? Object.keys(e).length < 1 ? null : e[Object.keys(e)[0]] : e : null
                }, t.prototype.setTitle = function(e, t) {
                    var n = this.titleName ? this.titleName : "title",
                        o = this.getValueCore(t, n);
                    o && ("string" == typeof o ? e.text = o : e.locText.setJson(o))
                }, t.prototype.getImageLink = function(e) {
                    var t = this.imageLinkName ? this.imageLinkName : "imageLink";
                    return this.getValueCore(e, t)
                }, t.prototype.getValueCore = function(e, t) {
                    if (!e) return null;
                    if (t.indexOf(".") < 0) return e[t];
                    for (var n = t.split("."), o = 0; o < n.length; o++)
                        if (!(e = e[n[o]])) return null;
                    return e
                }, Object.defineProperty(t.prototype, "objHash", {
                    get: function() {
                        return this.processedUrl + ";" + this.processedPath + ";" + this.valueName + ";" + this.titleName + ";" + this.imageLinkName
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.cacheText = "{CACHE}", t.noCacheText = "{NOCACHE}", t.itemsResult = {}, t.sendingSameRequests = {}, t
            }(he),
            Wt = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return Ht(t, e), Object.defineProperty(t, "EncodeParameters", {
                    get: function() {
                        return Ut.EncodeParameters
                    },
                    set: function(e) {
                        Ut.EncodeParameters = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.clearCache = function() {
                    Ut.clearCache()
                }, Object.defineProperty(t, "onBeforeSendRequest", {
                    get: function() {
                        return Ut.onBeforeSendRequest
                    },
                    set: function(e) {
                        Ut.onBeforeSendRequest = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(Ut);
        I.addClass("choicesByUrl", ["url", "path", "valueName", "titleName", {
            name: "imageLinkName",
            visibleIf: function(e) {
                return !!e && !!e.owner && "imagepicker" == e.owner.getType()
            }
        }, {
            name: "allowEmptyResponse:boolean"
        }, {
            name: "attachOriginalItems:boolean",
            visible: !1
        }], (function() {
            return new Ut
        }));
        var $t = function() {
                function e(e, t) {
                    this.name = e, this.widgetJson = t, this.htmlTemplate = t.htmlTemplate ? t.htmlTemplate : ""
                }
                return e.prototype.afterRender = function(e, t) {
                    var n = this;
                    this.widgetJson.afterRender && (e.localeChangedCallback = function() {
                        n.widgetJson.willUnmount && n.widgetJson.willUnmount(e, t), n.widgetJson.afterRender(e, t)
                    }, this.widgetJson.afterRender(e, t))
                }, e.prototype.willUnmount = function(e, t) {
                    this.widgetJson.willUnmount && this.widgetJson.willUnmount(e, t)
                }, e.prototype.getDisplayValue = function(e, t) {
                    return void 0 === t && (t = void 0), this.widgetJson.getDisplayValue ? this.widgetJson.getDisplayValue(e, t) : null
                }, e.prototype.isFit = function(e) {
                    return !(!this.isLibraryLoaded() || !this.widgetJson.isFit) && this.widgetJson.isFit(e)
                }, Object.defineProperty(e.prototype, "canShowInToolbox", {
                    get: function() {
                        return !1 !== this.widgetJson.showInToolbox && ("customtype" == Gt.Instance.getActivatedBy(this.name) && (!this.widgetJson.widgetIsLoaded || this.widgetJson.widgetIsLoaded()))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "showInToolbox", {
                    get: function() {
                        return !1 !== this.widgetJson.showInToolbox
                    },
                    set: function(e) {
                        this.widgetJson.showInToolbox = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.init = function() {
                    this.widgetJson.init && this.widgetJson.init()
                }, e.prototype.activatedByChanged = function(e) {
                    this.isLibraryLoaded() && this.widgetJson.activatedByChanged && this.widgetJson.activatedByChanged(e)
                }, e.prototype.isLibraryLoaded = function() {
                    return !this.widgetJson.widgetIsLoaded || 1 == this.widgetJson.widgetIsLoaded()
                }, Object.defineProperty(e.prototype, "isDefaultRender", {
                    get: function() {
                        return this.widgetJson.isDefaultRender
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "pdfQuestionType", {
                    get: function() {
                        return this.widgetJson.pdfQuestionType
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "pdfRender", {
                    get: function() {
                        return this.widgetJson.pdfRender
                    },
                    enumerable: !1,
                    configurable: !0
                }), e
            }(),
            Gt = function() {
                function e() {
                    this.widgetsValues = [], this.widgetsActivatedBy = {}, this.onCustomWidgetAdded = new me
                }
                return Object.defineProperty(e.prototype, "widgets", {
                    get: function() {
                        return this.widgetsValues
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.add = function(e, t) {
                    void 0 === t && (t = "property"), this.addCustomWidget(e, t)
                }, e.prototype.addCustomWidget = function(e, t) {
                    void 0 === t && (t = "property");
                    var n = e.name;
                    n || (n = "widget_" + this.widgets.length + 1);
                    var o = new $t(n, e);
                    return this.widgetsValues.push(o), o.init(), this.widgetsActivatedBy[n] = t, o.activatedByChanged(t), this.onCustomWidgetAdded.fire(o, null), o
                }, e.prototype.getActivatedBy = function(e) {
                    var t = this.widgetsActivatedBy[e];
                    return t || "property"
                }, e.prototype.setActivatedBy = function(e, t) {
                    if (e && t) {
                        var n = this.getCustomWidgetByName(e);
                        n && (this.widgetsActivatedBy[e] = t, n.activatedByChanged(t))
                    }
                }, e.prototype.clear = function() {
                    this.widgetsValues = []
                }, e.prototype.getCustomWidgetByName = function(e) {
                    for (var t = 0; t < this.widgets.length; t++)
                        if (this.widgets[t].name == e) return this.widgets[t];
                    return null
                }, e.prototype.getCustomWidget = function(e) {
                    for (var t = 0; t < this.widgetsValues.length; t++)
                        if (this.widgetsValues[t].isFit(e)) return this.widgetsValues[t];
                    return null
                }, e.Instance = new e, e
            }(),
            Jt = function() {
                function e() {
                    this.renderersHash = {}
                }
                return e.prototype.unregisterRenderer = function(e, t) {
                    delete this.renderersHash[e][t]
                }, e.prototype.registerRenderer = function(e, t, n) {
                    this.renderersHash[e] || (this.renderersHash[e] = {}), this.renderersHash[e][t] = n
                }, e.prototype.getRenderer = function(e, t) {
                    return this.renderersHash[e] && this.renderersHash[e][t] || "default"
                }, e.prototype.getRendererByQuestion = function(e) {
                    return this.getRenderer(e.getType(), e.renderAs)
                }, e.prototype.clear = function() {
                    this.renderersHash = {}
                }, e.Instance = new e, e
            }(),
            Kt = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Zt = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Xt = function(e) {
                function t(n) {
                    var o = e.call(this, n) || this;
                    return o.customWidgetData = {
                        isNeedRender: !0
                    }, o.isReadyValue = !0, o.onReadyChanged = o.addEvent(), o.focusIn = function() {
                        o.survey.whenQuestionFocusIn(o)
                    }, o.isRunningValidatorsValue = !1, o.isValueChangedInSurvey = !1, o.allowNotifyValueChanged = !0, o.id = t.getQuestionId(), o.onCreating(), o.createNewArray("validators", (function(e) {
                        e.errorOwner = o
                    })), o.addExpressionProperty("visibleIf", (function(e, t) {
                        o.visible = !0 === t
                    }), (function(e) {
                        return !o.areInvisibleElementsShowing
                    })), o.addExpressionProperty("enableIf", (function(e, t) {
                        o.readOnly = !1 === t
                    })), o.addExpressionProperty("requiredIf", (function(e, t) {
                        o.isRequired = !0 === t
                    })), o.createLocalizableString("commentText", o, !0, "otherItemText"), o.locTitle.onGetDefaultTextCallback = function() {
                        return o.name
                    }, o.locTitle.storeDefaultText = !0, o.createLocalizableString("requiredErrorText", o), o.registerPropertyChangedHandlers(["width"], (function() {
                        o.updateQuestionCss(), o.parent && o.parent.elementWidthChanged(o)
                    })), o.registerPropertyChangedHandlers(["isRequired"], (function() {
                        o.locTitle.strChanged(), o.clearCssClasses()
                    })), o.registerPropertyChangedHandlers(["indent", "rightIndent"], (function() {
                        o.onIndentChanged()
                    })), o.registerPropertyChangedHandlers(["showCommentArea", "showOtherItem"], (function() {
                        o.initCommentFromSurvey()
                    })), o.registerPropertyChangedHandlers(["isMobile"], (function() {
                        o.onMobileChanged()
                    })), o
                }
                return Kt(t, e), t.getQuestionId = function() {
                    return "sq_" + t.questionCounter++
                }, t.prototype.isReadOnlyRenderDiv = function() {
                    return this.isReadOnly && "div" === s.readOnlyCommentRenderMode
                }, t.prototype.createLocTitleProperty = function() {
                    var t = this,
                        n = e.prototype.createLocTitleProperty.call(this);
                    return n.onGetTextCallback = function(e) {
                        return e || (e = t.name), t.survey ? t.survey.getUpdatedQuestionTitle(t, e) : e
                    }, this.locProcessedTitle = new d(this, !0), this.locProcessedTitle.sharedData = n, n
                }, t.prototype.getSurvey = function(t) {
                    return void 0 === t && (t = !1), t ? this.parent ? this.parent.getSurvey(t) : null : this.onGetSurvey ? this.onGetSurvey() : e.prototype.getSurvey.call(this)
                }, t.prototype.getValueName = function() {
                    return this.valueName ? this.valueName.toString() : this.name
                }, Object.defineProperty(t.prototype, "valueName", {
                    get: function() {
                        return this.getPropertyValue("valueName", "")
                    },
                    set: function(e) {
                        var t = this.getValueName();
                        this.setPropertyValue("valueName", e), this.onValueNameChanged(t)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onValueNameChanged = function(e) {
                    this.survey && (this.survey.questionRenamed(this, this.name, e || this.name), this.initDataFromSurvey())
                }, t.prototype.onNameChanged = function(e) {
                    this.locTitle.strChanged(), this.survey && this.survey.questionRenamed(this, e, this.valueName ? this.valueName : e)
                }, Object.defineProperty(t.prototype, "isReady", {
                    get: function() {
                        return this.isReadyValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "ariaRequired", {
                    get: function() {
                        return this.isRequired ? "true" : "false"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "ariaInvalid", {
                    get: function() {
                        return this.errors.length > 0 ? "true" : "false"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "ariaLabelledBy", {
                    get: function() {
                        return this.hasTitle ? this.ariaTitleId : null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "ariaDescribedBy", {
                    get: function() {
                        return this.errors.length > 0 ? this.id + "_errors" : null
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.choicesLoaded = function() {}, Object.defineProperty(t.prototype, "page", {
                    get: function() {
                        return this.getPage(this.parent)
                    },
                    set: function(e) {
                        this.setPage(this.parent, e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getPanel = function() {
                    return null
                }, t.prototype.delete = function() {
                    this.parent && this.removeSelfFromList(this.parent.elements)
                }, Object.defineProperty(t.prototype, "isFlowLayout", {
                    get: function() {
                        return "flow" === this.getLayoutType()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getLayoutType = function() {
                    return this.parent ? this.parent.getChildrenLayoutType() : "row"
                }, t.prototype.isLayoutTypeSupported = function(e) {
                    return "flow" !== e
                }, Object.defineProperty(t.prototype, "visible", {
                    get: function() {
                        return this.getPropertyValue("visible", !0)
                    },
                    set: function(e) {
                        e != this.visible && (this.setPropertyValue("visible", e), this.onVisibleChanged(), this.notifySurveyVisibilityChanged())
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onVisibleChanged = function() {
                    this.setPropertyValue("isVisible", this.isVisible), !this.isVisible && this.errors && this.errors.length > 0 && (this.errors = [])
                }, Object.defineProperty(t.prototype, "useDisplayValuesInDynamicTexts", {
                    get: function() {
                        return this.getPropertyValue("useDisplayValuesInDynamicTexts")
                    },
                    set: function(e) {
                        this.setPropertyValue("useDisplayValuesInDynamicTexts", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getUseDisplayValuesInDynamicTexts = function() {
                    return this.useDisplayValuesInDynamicTexts
                }, Object.defineProperty(t.prototype, "visibleIf", {
                    get: function() {
                        return this.getPropertyValue("visibleIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("visibleIf", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isVisible", {
                    get: function() {
                        return !(this.survey && this.survey.areEmptyElementsHidden && this.isEmpty()) && (this.visible || this.areInvisibleElementsShowing)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visibleIndex", {
                    get: function() {
                        return this.getPropertyValue("visibleIndex", -1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hideNumber", {
                    get: function() {
                        return this.getPropertyValue("hideNumber")
                    },
                    set: function(e) {
                        this.setPropertyValue("hideNumber", e), this.notifySurveyVisibilityChanged()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isAllowTitleLeft", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "question"
                }, Object.defineProperty(t.prototype, "isQuestion", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.moveTo = function(e, t) {
                    return void 0 === t && (t = null), this.moveToBase(this.parent, e, t)
                }, t.prototype.getProgressInfo = function() {
                    return this.hasInput ? {
                        questionCount: 1,
                        answeredQuestionCount: this.isEmpty() ? 0 : 1,
                        requiredQuestionCount: this.isRequired ? 1 : 0,
                        requiredAnsweredQuestionCount: !this.isEmpty() && this.isRequired ? 1 : 0
                    } : e.prototype.getProgressInfo.call(this)
                }, t.prototype.runConditions = function() {
                    this.data && !this.isLoadingFromJson && (this.isDesignMode || this.runCondition(this.getDataFilteredValues(), this.getDataFilteredProperties()), this.locStrsChanged())
                }, t.prototype.setSurveyImpl = function(t, n) {
                    e.prototype.setSurveyImpl.call(this, t), this.survey && (this.survey.questionCreated(this), !0 !== n && this.runConditions())
                }, Object.defineProperty(t.prototype, "parent", {
                    get: function() {
                        return this.getPropertyValue("parent", null)
                    },
                    set: function(e) {
                        this.parent !== e && (this.delete(), this.setPropertyValue("parent", e), this.updateQuestionCss(), this.onParentChanged())
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onParentChanged = function() {}, Object.defineProperty(t.prototype, "hasTitle", {
                    get: function() {
                        return "hidden" !== this.getTitleLocation()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleLocation", {
                    get: function() {
                        return this.getPropertyValue("titleLocation")
                    },
                    set: function(e) {
                        var t = "hidden" == this.titleLocation || "hidden" == e;
                        this.setPropertyValue("titleLocation", e.toLowerCase()), this.updateQuestionCss(), t && this.notifySurveyVisibilityChanged()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getTitleOwner = function() {
                    return this
                }, t.prototype.getIsTitleRenderedAsString = function() {
                    return "hidden" === this.titleLocation
                }, t.prototype.notifySurveyVisibilityChanged = function() {
                    this.survey && !this.isLoadingFromJson && (this.survey.questionVisibilityChanged(this, this.isVisible), this.isClearValueOnHidden && (this.visible || this.clearValueIfInvisible(), this.isVisible && this.updateValueWithDefaults()))
                }, t.prototype.getTitleLocation = function() {
                    if (this.isFlowLayout) return "hidden";
                    var e = this.getTitleLocationCore();
                    return "left" !== e || this.isAllowTitleLeft || (e = "top"), e
                }, t.prototype.getTitleLocationCore = function() {
                    return "default" !== this.titleLocation ? this.titleLocation : this.parent ? this.parent.getQuestionTitleLocation() : this.survey ? this.survey.questionTitleLocation : "top"
                }, Object.defineProperty(t.prototype, "hasTitleOnLeft", {
                    get: function() {
                        return this.hasTitle && "left" === this.getTitleLocation()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitleOnTop", {
                    get: function() {
                        return this.hasTitle && "top" === this.getTitleLocation()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitleOnBottom", {
                    get: function() {
                        return this.hasTitle && "bottom" === this.getTitleLocation()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitleOnLeftTop", {
                    get: function() {
                        if (!this.hasTitle) return !1;
                        var e = this.getTitleLocation();
                        return "left" === e || "top" === e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "errorLocation", {
                    get: function() {
                        return this.survey ? this.survey.questionErrorLocation : "top"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasInput", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasSingleInput", {
                    get: function() {
                        return this.hasInput
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "inputId", {
                    get: function() {
                        return this.id + "i"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDefaultTitleValue = function() {
                    return this.name
                }, t.prototype.getDefaultTitleTagName = function() {
                    return s.titleTags.question
                }, Object.defineProperty(t.prototype, "descriptionLocation", {
                    get: function() {
                        return this.getPropertyValue("descriptionLocation")
                    },
                    set: function(e) {
                        this.setPropertyValue("descriptionLocation", e), this.updateQuestionCss()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasDescriptionUnderTitle", {
                    get: function() {
                        return "underTitle" == this.getDescriptionLocation()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasDescriptionUnderInput", {
                    get: function() {
                        return "underInput" == this.getDescriptionLocation()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDescriptionLocation = function() {
                    return "default" !== this.descriptionLocation ? this.descriptionLocation : this.survey ? this.survey.questionDescriptionLocation : "underTitle"
                }, t.prototype.needClickTitleFunction = function() {
                    return e.prototype.needClickTitleFunction.call(this) || this.hasInput
                }, t.prototype.processTitleClick = function() {
                    var t = this;
                    if (e.prototype.processTitleClick.call(this), !this.isCollapsed) return setTimeout((function() {
                        t.focus()
                    }), 1), !0
                }, Object.defineProperty(t.prototype, "requiredErrorText", {
                    get: function() {
                        return this.getLocalizableStringText("requiredErrorText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("requiredErrorText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locRequiredErrorText", {
                    get: function() {
                        return this.getLocalizableString("requiredErrorText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "commentText", {
                    get: function() {
                        return this.getLocalizableStringText("commentText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("commentText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locCommentText", {
                    get: function() {
                        return this.getLocalizableString("commentText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "commentPlaceHolder", {
                    get: function() {
                        return this.commentPlaceholder
                    },
                    set: function(e) {
                        this.commentPlaceholder = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getAllErrors = function() {
                    return this.errors.slice()
                }, t.prototype.getErrorByType = function(e) {
                    for (var t = 0; t < this.errors.length; t++)
                        if (this.errors[t].getErrorType() === e) return this.errors[t];
                    return null
                }, Object.defineProperty(t.prototype, "customWidget", {
                    get: function() {
                        return this.isCustomWidgetRequested || this.customWidgetValue || (this.isCustomWidgetRequested = !0, this.updateCustomWidget()), this.customWidgetValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateCustomWidget = function() {
                    this.customWidgetValue = Gt.Instance.getCustomWidget(this)
                }, t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this), this.localeChangedCallback && this.localeChangedCallback()
                }, Object.defineProperty(t.prototype, "isCompositeQuestion", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateCommentElements = function() {
                    if (this.autoGrowComment && Array.isArray(this.commentElements))
                        for (var e = 0; e < this.commentElements.length; e++) {
                            var t = this.commentElements[e];
                            t && et(t)
                        }
                }, t.prototype.onCommentInput = function(e) {
                    this.isInputTextUpdate ? e.target && (this.comment = e.target.value) : this.updateCommentElements()
                }, t.prototype.onCommentChange = function(e) {
                    this.comment = e.target.value, this.comment !== e.target.value && (e.target.value = this.comment)
                }, t.prototype.afterRenderQuestionElement = function(e) {
                    this.survey && this.hasSingleInput && this.survey.afterRenderQuestionInput(this, e)
                }, t.prototype.afterRender = function(e) {
                    var t = this;
                    this.survey && (this.survey.afterRenderQuestion(this, e), this.afterRenderQuestionCallback && this.afterRenderQuestionCallback(this, e), (this.supportComment() || this.supportOther()) && (this.commentElements = [], this.getCommentElementsId().forEach((function(e) {
                        var n = document.getElementById(e);
                        n && t.commentElements.push(n)
                    })), this.updateCommentElements()), this.checkForResponsiveness(e))
                }, t.prototype.getCommentElementsId = function() {
                    return [this.commentId]
                }, t.prototype.beforeDestroyQuestionElement = function(e) {
                    this.commentElements = void 0
                }, Object.defineProperty(t.prototype, "processedTitle", {
                    get: function() {
                        var e = this.locProcessedTitle.textOrHtml;
                        return e || this.name
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "fullTitle", {
                    get: function() {
                        return this.locTitle.renderedHtml
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titlePattern", {
                    get: function() {
                        return this.survey ? this.survey.questionTitlePattern : "numTitleRequire"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRequireTextOnStart", {
                    get: function() {
                        return this.isRequired && "requireNumTitle" == this.titlePattern
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRequireTextBeforeTitle", {
                    get: function() {
                        return this.isRequired && "numRequireTitle" == this.titlePattern && "" !== this.requiredText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRequireTextAfterTitle", {
                    get: function() {
                        return this.isRequired && "numTitleRequire" == this.titlePattern && "" !== this.requiredText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "startWithNewLine", {
                    get: function() {
                        return this.getPropertyValue("startWithNewLine")
                    },
                    set: function(e) {
                        this.startWithNewLine != e && this.setPropertyValue("startWithNewLine", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.calcCssClasses = function(e) {
                    var t = {
                        error: {}
                    };
                    return this.copyCssClasses(t, e.question), this.copyCssClasses(t.error, e.error), this.updateCssClasses(t, e), this.survey && this.survey.updateQuestionCssClasses(this, t), t
                }, Object.defineProperty(t.prototype, "cssRoot", {
                    get: function() {
                        return this.ensureElementCss(), this.getPropertyValue("cssRoot", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCssRoot = function(e) {
                    this.setPropertyValue("cssRoot", e)
                }, t.prototype.getCssRoot = function(e) {
                    return (new ct).append(this.isFlowLayout && !this.isDesignMode ? e.flowRoot : e.mainRoot).append(e.titleLeftRoot, !this.isFlowLayout && this.hasTitleOnLeft).append(e.hasError, this.errors.length > 0).append(e.small, !this.width).append(e.answered, this.isAnswered).append(e.expanded, !!this.isExpanded).append(e.collapsed, !!this.isCollapsed).append(e.withFrame, this.hasFrameV2).append(e.nested, (this.hasParent || !this.isSingleInRow) && this.isDefaultV2Theme).toString()
                }, Object.defineProperty(t.prototype, "cssHeader", {
                    get: function() {
                        return this.ensureElementCss(), this.getPropertyValue("cssHeader", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCssHeader = function(e) {
                    this.setPropertyValue("cssHeader", e)
                }, t.prototype.getCssHeader = function(e) {
                    return (new ct).append(e.header).append(e.headerTop, this.hasTitleOnTop).append(e.headerLeft, this.hasTitleOnLeft).append(e.headerBottom, this.hasTitleOnBottom).toString()
                }, Object.defineProperty(t.prototype, "cssContent", {
                    get: function() {
                        return this.ensureElementCss(), this.getPropertyValue("cssContent", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCssContent = function(e) {
                    this.setPropertyValue("cssContent", e)
                }, t.prototype.getCssContent = function(e) {
                    return (new ct).append(e.content).append(e.contentLeft, this.hasTitleOnLeft).toString()
                }, Object.defineProperty(t.prototype, "cssTitle", {
                    get: function() {
                        return this.ensureElementCss(), this.getPropertyValue("cssTitle", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCssTitle = function(e) {
                    this.setPropertyValue("cssTitle", e)
                }, t.prototype.getCssTitle = function(e) {
                    return (new ct).append(e.title).append(e.titleExpandable, "default" !== this.state).append(e.titleExpanded, this.isExpanded).append(e.titleCollapsed, this.isCollapsed).append(e.titleDisabled, this.isReadOnly).append(e.titleOnError, this.containsErrors).append(e.titleOnAnswer, !this.containsErrors && this.isAnswered).toString()
                }, Object.defineProperty(t.prototype, "cssDescription", {
                    get: function() {
                        return this.ensureElementCss(), this.getPropertyValue("cssDescription", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCssDescription = function(e) {
                    this.setPropertyValue("cssDescription", e)
                }, t.prototype.getCssDescription = function(e) {
                    return (new ct).append(e.description, this.hasDescriptionUnderTitle).append(e.descriptionUnderInput, this.hasDescriptionUnderInput).toString()
                }, t.prototype.getIsErrorsModeTooltip = function() {
                    return e.prototype.getIsErrorsModeTooltip.call(this) && !this.customWidget
                }, t.prototype.showErrorOnCore = function(e) {
                    return !this.isErrorsModeTooltip && !this.showErrorsAboveQuestion && !this.showErrorsBelowQuestion && this.errorLocation === e
                }, Object.defineProperty(t.prototype, "showErrorOnTop", {
                    get: function() {
                        return this.showErrorOnCore("top")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showErrorOnBottom", {
                    get: function() {
                        return this.showErrorOnCore("bottom")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getIsTooltipErrorSupportedByParent = function() {
                    return this.parentQuestion ? this.parentQuestion.getIsTooltipErrorInsideSupported() : e.prototype.getIsTooltipErrorSupportedByParent.call(this)
                }, Object.defineProperty(t.prototype, "showErrorsOutsideQuestion", {
                    get: function() {
                        return this.isDefaultV2Theme && !(this.hasParent && this.getIsTooltipErrorSupportedByParent())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showErrorsAboveQuestion", {
                    get: function() {
                        return this.showErrorsOutsideQuestion && "top" === this.errorLocation
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showErrorsBelowQuestion", {
                    get: function() {
                        return this.showErrorsOutsideQuestion && "bottom" === this.errorLocation
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssError", {
                    get: function() {
                        return this.ensureElementCss(), this.getPropertyValue("cssError", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCssError = function(e) {
                    this.setPropertyValue("cssError", e)
                }, t.prototype.getCssError = function(e) {
                    return (new ct).append(e.error.root).append(e.error.outsideQuestion, this.showErrorsBelowQuestion || this.showErrorsAboveQuestion).append(e.error.belowQuestion, this.showErrorsBelowQuestion).append(e.error.aboveQuestion, this.showErrorsAboveQuestion).append(e.error.tooltip, this.isErrorsModeTooltip).append(e.error.locationTop, this.showErrorOnTop).append(e.error.locationBottom, this.showErrorOnBottom).toString()
                }, t.prototype.getRootCss = function() {
                    return (new ct).append(this.cssRoot).append(this.cssClasses.disabled, this.isReadOnly).append(this.cssClasses.invisible, !this.isDesignMode && this.areInvisibleElementsShowing && !this.visible).toString()
                }, t.prototype.updateElementCss = function(t) {
                    e.prototype.updateElementCss.call(this, t), t && this.updateQuestionCss(!0), this.onIndentChanged()
                }, t.prototype.updateQuestionCss = function(e) {
                    this.isLoadingFromJson || !this.survey || !0 !== e && !this.cssClassesValue || this.updateElementCssCore(this.cssClasses)
                }, t.prototype.ensureElementCss = function() {
                    this.cssClassesValue || this.updateQuestionCss(!0)
                }, t.prototype.updateElementCssCore = function(e) {
                    this.setCssRoot(this.getCssRoot(e)), this.setCssHeader(this.getCssHeader(e)), this.setCssContent(this.getCssContent(e)), this.setCssTitle(this.getCssTitle(e)), this.setCssDescription(this.getCssDescription(e)), this.setCssError(this.getCssError(e))
                }, t.prototype.updateCssClasses = function(e, t) {
                    if (t.question) {
                        var n = t[this.getCssType()],
                            o = (new ct).append(e.title).append(t.question.titleRequired, this.isRequired);
                        e.title = o.toString();
                        var r = (new ct).append(e.root).append(n, this.isRequired && !!t.question.required);
                        if (null == n) e.root = r.toString();
                        else if ("string" == typeof n || n instanceof String) e.root = r.append(n.toString()).toString();
                        else
                            for (var i in e.root = r.toString(), n) e[i] = n[i]
                    }
                }, t.prototype.getCssType = function() {
                    return this.getType()
                }, Object.defineProperty(t.prototype, "renderCssRoot", {
                    get: function() {
                        return this.cssClasses.root || void 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onIndentChanged = function() {
                    this.paddingLeft = this.getIndentSize(this.indent), this.paddingRight = this.getIndentSize(this.rightIndent)
                }, t.prototype.getIndentSize = function(e) {
                    return e < 1 || !this.getSurvey() || !this.cssClasses || !this.cssClasses.indent ? "" : e * this.cssClasses.indent + "px"
                }, t.prototype.focus = function(e) {
                    if (void 0 === e && (e = !1), !this.isDesignMode) {
                        this.survey && (this.expandAllParents(this), this.survey.scrollElementToTop(this, this, null, this.id));
                        var t = e ? this.getFirstErrorInputElementId() : this.getFirstInputElementId();
                        jt.FocusElement(t) && this.fireCallback(this.focusCallback)
                    }
                }, t.prototype.expandAllParents = function(e) {
                    e && (e.isCollapsed && e.expand(), this.expandAllParents(e.parent), this.expandAllParents(e.parentQuestion))
                }, t.prototype.fireCallback = function(e) {
                    e && e()
                }, t.prototype.getOthersMaxLength = function() {
                    return this.survey && this.survey.maxOthersLength > 0 ? this.survey.maxOthersLength : null
                }, t.prototype.onCreating = function() {}, t.prototype.getFirstQuestionToFocus = function(e) {
                    return this.hasInput && (!e || this.currentErrorCount > 0) ? this : null
                }, t.prototype.getFirstInputElementId = function() {
                    return this.inputId
                }, t.prototype.getFirstErrorInputElementId = function() {
                    return this.getFirstInputElementId()
                }, t.prototype.getProcessedTextValue = function(e) {
                    var n = e.name.toLocaleLowerCase();
                    e.isExists = -1 !== Object.keys(t.TextPreprocessorValuesMap).indexOf(n) || void 0 !== this[e.name], e.value = this[t.TextPreprocessorValuesMap[n] || e.name]
                }, t.prototype.supportComment = function() {
                    return !1
                }, t.prototype.supportOther = function() {
                    return !1
                }, Object.defineProperty(t.prototype, "isRequired", {
                    get: function() {
                        return this.getPropertyValue("isRequired")
                    },
                    set: function(e) {
                        this.setPropertyValue("isRequired", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "requiredIf", {
                    get: function() {
                        return this.getPropertyValue("requiredIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("requiredIf", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showCommentArea", {
                    get: function() {
                        return this.getPropertyValue("showCommentArea", !1)
                    },
                    set: function(e) {
                        this.supportComment() && this.setPropertyValue("showCommentArea", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasComment", {
                    get: function() {
                        return this.showCommentArea
                    },
                    set: function(e) {
                        this.showCommentArea = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "id", {
                    get: function() {
                        return this.getPropertyValue("id")
                    },
                    set: function(e) {
                        this.setPropertyValue("id", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "ariaTitleId", {
                    get: function() {
                        return this.id + "_ariaTitle"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "commentId", {
                    get: function() {
                        return this.id + "_comment"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "ariaRole", {
                    get: function() {
                        return "textbox"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showOtherItem", {
                    get: function() {
                        return this.getPropertyValue("showOtherItem", !1)
                    },
                    set: function(e) {
                        this.supportOther() && this.showOtherItem != e && (this.setPropertyValue("showOtherItem", e), this.hasOtherChanged())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasOther", {
                    get: function() {
                        return this.showOtherItem
                    },
                    set: function(e) {
                        this.showOtherItem = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.hasOtherChanged = function() {}, Object.defineProperty(t.prototype, "requireUpdateCommentValue", {
                    get: function() {
                        return this.hasComment || this.hasOther
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isReadOnly", {
                    get: function() {
                        var e = !!this.parent && this.parent.isReadOnly,
                            t = !!this.parentQuestion && this.parentQuestion.isReadOnly,
                            n = !!this.survey && this.survey.isDisplayMode;
                        return this.readOnly || e || n || t
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isInputReadOnly", {
                    get: function() {
                        var e = s.supportCreatorV2 && this.isDesignMode;
                        return this.isReadOnly || e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedInputReadOnly", {
                    get: function() {
                        return this.isInputReadOnly ? "" : void 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedInputDisabled", {
                    get: function() {
                        return this.isInputReadOnly ? "" : void 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onReadOnlyChanged = function() {
                    this.setPropertyValue("isInputReadOnly", this.isInputReadOnly), e.prototype.onReadOnlyChanged.call(this)
                }, Object.defineProperty(t.prototype, "enableIf", {
                    get: function() {
                        return this.getPropertyValue("enableIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("enableIf", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.surveyChoiceItemVisibilityChange = function() {}, t.prototype.runCondition = function(e, t) {
                    this.isDesignMode || (t || (t = {}), t.question = this, this.runConditionCore(e, t), this.isValueChangedDirectly || (this.defaultValueRunner = this.getDefaultRunner(this.defaultValueRunner, this.defaultValueExpression), this.runDefaultValueExpression(this.defaultValueRunner, e, t)))
                }, Object.defineProperty(t.prototype, "no", {
                    get: function() {
                        return this.getPropertyValue("no")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.calcNo = function() {
                    if (!this.hasTitle || this.hideNumber) return "";
                    var e = a.getNumberByIndex(this.visibleIndex, this.getStartIndex());
                    return this.survey && (e = this.survey.getUpdatedQuestionNo(this, e)), e
                }, t.prototype.getStartIndex = function() {
                    return this.parent ? this.parent.getQuestionStartIndex() : this.survey ? this.survey.questionStartIndex : ""
                }, t.prototype.onSurveyLoad = function() {
                    this.fireCallback(this.surveyLoadCallback), this.updateValueWithDefaults(), this.isEmpty() && this.initDataFromSurvey()
                }, t.prototype.onSetData = function() {
                    e.prototype.onSetData.call(this), this.survey && (this.initDataFromSurvey(), this.onSurveyValueChanged(this.value), this.updateValueWithDefaults(), this.onIndentChanged(), this.updateQuestionCss(), this.updateIsAnswered())
                }, t.prototype.initDataFromSurvey = function() {
                    if (this.data) {
                        var e = this.data.getValue(this.getValueName());
                        a.isValueEmpty(e) && this.isLoadingFromJson || this.updateValueFromSurvey(e), this.initCommentFromSurvey()
                    }
                }, t.prototype.initCommentFromSurvey = function() {
                    this.data && this.requireUpdateCommentValue ? this.updateCommentFromSurvey(this.data.getComment(this.getValueName())) : this.updateCommentFromSurvey("")
                }, t.prototype.runExpression = function(e) {
                    if (this.survey && e) return this.survey.runExpression(e)
                }, Object.defineProperty(t.prototype, "autoGrowComment", {
                    get: function() {
                        return this.survey && this.survey.autoGrowComment
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "questionValue", {
                    get: function() {
                        return this.getPropertyValue("value")
                    },
                    set: function(e) {
                        this.setPropertyValue("value", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "questionComment", {
                    get: function() {
                        return this.getPropertyValue("comment")
                    },
                    set: function(e) {
                        this.setPropertyValue("comment", e), this.fireCallback(this.commentChangedCallback)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "value", {
                    get: function() {
                        return this.getValueCore()
                    },
                    set: function(e) {
                        this.setNewValue(e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "valueForSurvey", {
                    get: function() {
                        return this.valueToDataCallback ? this.valueToDataCallback(this.value) : this.value
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.clearValue = function() {
                    void 0 !== this.value && (this.value = void 0), this.comment && (this.comment = void 0)
                }, t.prototype.unbindValue = function() {
                    this.clearValue()
                }, t.prototype.createValueCopy = function() {
                    return this.getUnbindValue(this.value)
                }, t.prototype.getUnbindValue = function(e) {
                    return this.isValueSurveyElement(e) ? e : a.getUnbindValue(e)
                }, t.prototype.isValueSurveyElement = function(e) {
                    return !!e && (Array.isArray(e) ? e.length > 0 && this.isValueSurveyElement(e[0]) : !!e.getType && !!e.onPropertyChanged)
                }, t.prototype.canClearValueAsInvisible = function() {
                    return (!this.isVisible || !this.isParentVisible) && ((!this.page || !this.page.isStarted) && (!this.survey || !this.valueName || !this.survey.hasVisibleQuestionByValueName(this.valueName)))
                }, Object.defineProperty(t.prototype, "isParentVisible", {
                    get: function() {
                        for (var e = this.parent; e;) {
                            if (!e.isVisible) return !1;
                            e = e.parent
                        }
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.clearValueIfInvisible = function(e) {
                    void 0 === e && (e = "onHidden"), "none" !== this.clearIfInvisible && ("onHidden" === e && "onComplete" === this.clearIfInvisible || ("none" !== e || "default" !== this.clearIfInvisible && "none" !== this.clearIfInvisible) && this.clearValueIfInvisibleCore())
                }, t.prototype.clearValueIfInvisibleCore = function() {
                    this.canClearValueAsInvisible() && this.clearValue()
                }, Object.defineProperty(t.prototype, "clearIfInvisible", {
                    get: function() {
                        return this.getPropertyValue("clearIfInvisible")
                    },
                    set: function(e) {
                        this.setPropertyValue("clearIfInvisible", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "displayValue", {
                    get: function() {
                        return this.isLoadingFromJson ? "" : this.getDisplayValue(!0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDisplayValue = function(e, t) {
                    void 0 === t && (t = void 0);
                    var n = this.calcDisplayValue(e, t);
                    return this.displayValueCallback ? this.displayValueCallback(n) : n
                }, t.prototype.calcDisplayValue = function(e, t) {
                    if (void 0 === t && (t = void 0), this.customWidget) {
                        var n = this.customWidget.getDisplayValue(this, t);
                        if (n) return n
                    }
                    return t = null == t ? this.createValueCopy() : t, this.isValueEmpty(t) ? this.getDisplayValueEmpty() : this.getDisplayValueCore(e, t)
                }, t.prototype.getDisplayValueCore = function(e, t) {
                    return t
                }, t.prototype.getDisplayValueEmpty = function() {
                    return ""
                }, Object.defineProperty(t.prototype, "defaultValue", {
                    get: function() {
                        return this.getPropertyValue("defaultValue")
                    },
                    set: function(e) {
                        this.isValueExpression(e) ? this.defaultValueExpression = e.substring(1) : (this.setPropertyValue("defaultValue", this.convertDefaultValue(e)), this.updateValueWithDefaults())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "defaultValueExpression", {
                    get: function() {
                        return this.getPropertyValue("defaultValueExpression")
                    },
                    set: function(e) {
                        this.setPropertyValue("defaultValueExpression", e), this.defaultValueRunner = void 0, this.updateValueWithDefaults()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "resizeStyle", {
                    get: function() {
                        return this.autoGrowComment ? "none" : "both"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getPlainData = function(e) {
                    var t = this;
                    if (e || (e = {
                            includeEmpty: !0,
                            includeQuestionTypes: !1
                        }), e.includeEmpty || !this.isEmpty()) {
                        var n = {
                            name: this.name,
                            title: this.locTitle.renderedHtml,
                            value: this.value,
                            displayValue: this.displayValue,
                            isNode: !1,
                            getString: function(e) {
                                return "object" == typeof e ? JSON.stringify(e) : e
                            }
                        };
                        return !0 === e.includeQuestionTypes && (n.questionType = this.getType()), (e.calculations || []).forEach((function(e) {
                            n[e.propertyName] = t[e.propertyName]
                        })), this.hasComment && (n.isNode = !0, n.data = [{
                            name: 0,
                            isComment: !0,
                            title: "Comment",
                            value: s.commentSuffix,
                            displayValue: this.comment,
                            getString: function(e) {
                                return "object" == typeof e ? JSON.stringify(e) : e
                            },
                            isNode: !1
                        }]), n
                    }
                }, Object.defineProperty(t.prototype, "correctAnswer", {
                    get: function() {
                        return this.getPropertyValue("correctAnswer")
                    },
                    set: function(e) {
                        this.setPropertyValue("correctAnswer", this.convertDefaultValue(e))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.convertDefaultValue = function(e) {
                    return e
                }, Object.defineProperty(t.prototype, "quizQuestionCount", {
                    get: function() {
                        return this.isVisible && this.hasInput && !this.isValueEmpty(this.correctAnswer) ? this.getQuizQuestionCount() : 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "correctAnswerCount", {
                    get: function() {
                        return this.isEmpty() || this.isValueEmpty(this.correctAnswer) ? 0 : this.getCorrectAnswerCount()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuizQuestionCount = function() {
                    return 1
                }, t.prototype.getCorrectAnswerCount = function() {
                    return this.isTwoValueEquals(this.value, this.correctAnswer, !s.comparator.caseSensitive, !0) ? 1 : 0
                }, t.prototype.isAnswerCorrect = function() {
                    return this.correctAnswerCount == this.quizQuestionCount
                }, t.prototype.updateValueWithDefaults = function() {
                    this.isLoadingFromJson || !this.isDesignMode && this.isDefaultValueEmpty() || (this.isDesignMode || this.isEmpty()) && (this.isEmpty() && this.isDefaultValueEmpty() || this.isClearValueOnHidden && !this.isVisible || this.isDesignMode && this.isContentElement && this.isDefaultValueEmpty() || this.setDefaultValue())
                }, Object.defineProperty(t.prototype, "isClearValueOnHidden", {
                    get: function() {
                        return "none" !== this.clearIfInvisible && "onComplete" !== this.clearIfInvisible && ("onHidden" === this.clearIfInvisible || !!this.survey && this.survey.isClearValueOnHidden)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionFromArray = function(e, t) {
                    return null
                }, t.prototype.getDefaultValue = function() {
                    return this.defaultValue
                }, t.prototype.isDefaultValueEmpty = function() {
                    return !this.defaultValueExpression && this.isValueEmpty(this.defaultValue)
                }, t.prototype.getDefaultRunner = function(e, t) {
                    return !e && t && (e = new ae(t)), e && (e.expression = t), e
                }, t.prototype.setDefaultValue = function() {
                    var e = this;
                    this.defaultValueRunner = this.getDefaultRunner(this.defaultValueRunner, this.defaultValueExpression), this.setValueAndRunExpression(this.defaultValueRunner, this.getUnbindValue(this.defaultValue), (function(t) {
                        e.value = t
                    }))
                }, t.prototype.isValueExpression = function(e) {
                    return !!e && "string" == typeof e && e.length > 0 && "=" == e[0]
                }, t.prototype.setValueAndRunExpression = function(e, t, n, o, r) {
                    var i = this;
                    void 0 === o && (o = null), void 0 === r && (r = null);
                    var s = function(e) {
                        i.runExpressionSetValue(e, n)
                    };
                    this.runDefaultValueExpression(e, o, r, s) || s(t)
                }, t.prototype.convertFuncValuetoQuestionValue = function(e) {
                    return a.convertValToQuestionVal(e)
                }, t.prototype.runExpressionSetValue = function(e, t) {
                    t(this.convertFuncValuetoQuestionValue(e))
                }, t.prototype.runDefaultValueExpression = function(e, t, n, o) {
                    var r = this;
                    return void 0 === t && (t = null), void 0 === n && (n = null), !(!e || !this.data) && (o || (o = function(e) {
                        r.runExpressionSetValue(e, (function(e) {
                            r.value = e
                        }))
                    }), t || (t = this.data.getFilteredValues()), n || (n = this.data.getFilteredProperties()), e && e.canRun && (e.onRunComplete = function(e) {
                        null == e && (e = r.defaultValue), r.isChangingViaDefaultValue = !0, o(e), r.isChangingViaDefaultValue = !1
                    }, e.run(t, n)), !0)
                }, Object.defineProperty(t.prototype, "comment", {
                    get: function() {
                        return this.getQuestionComment()
                    },
                    set: function(e) {
                        if (e) {
                            var t = e.toString().trim();
                            t !== e && (e = t) === this.comment && this.setPropertyValueDirectly("comment", e)
                        }
                        this.comment != e && (this.setQuestionComment(e), this.updateCommentElements())
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionComment = function() {
                    return this.questionComment
                }, t.prototype.setQuestionComment = function(e) {
                    this.setNewComment(e)
                }, t.prototype.isEmpty = function() {
                    return this.isValueEmpty(this.value)
                }, Object.defineProperty(t.prototype, "isAnswered", {
                    get: function() {
                        return this.getPropertyValue("isAnswered")
                    },
                    set: function(e) {
                        this.setPropertyValue("isAnswered", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateIsAnswered = function() {
                    var e = this.isAnswered;
                    this.setPropertyValue("isAnswered", this.getIsAnswered()), e !== this.isAnswered && this.updateQuestionCss()
                }, t.prototype.getIsAnswered = function() {
                    return !this.isEmpty()
                }, Object.defineProperty(t.prototype, "validators", {
                    get: function() {
                        return this.getPropertyValue("validators")
                    },
                    set: function(e) {
                        this.setPropertyValue("validators", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getValidators = function() {
                    return this.validators
                }, t.prototype.getSupportedValidators = function() {
                    for (var e = [], t = this.getType(); t;) {
                        var n = s.supportedValidators[t];
                        if (n)
                            for (var o = n.length - 1; o >= 0; o--) e.splice(0, 0, n[o]);
                        t = I.findClass(t).parentName
                    }
                    return e
                }, t.prototype.addSupportedValidators = function(e, t) {}, t.prototype.addConditionObjectsByContext = function(e, t) {
                    e.push({
                        name: this.getValueName(),
                        text: this.processedTitle,
                        question: this
                    })
                }, t.prototype.getConditionJson = function(e, t) {
                    void 0 === e && (e = null), void 0 === t && (t = null);
                    var n = (new R).toJsonObject(this);
                    return n.type = this.getType(), n
                }, t.prototype.hasErrors = function(e, t) {
                    void 0 === e && (e = !0), void 0 === t && (t = null);
                    var n = this.errors.length > 0,
                        o = this.checkForErrors(!!t && !0 === t.isOnValueChanged);
                    return e && (this.survey && this.survey.beforeSettingQuestionErrors(this, o), this.errors = o), this.updateContainsErrors(), n != o.length > 0 && this.updateQuestionCss(), this.isCollapsed && t && e && o.length > 0 && this.expand(), o.length > 0
                }, Object.defineProperty(t.prototype, "currentErrorCount", {
                    get: function() {
                        return this.errors.length
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "requiredText", {
                    get: function() {
                        return null != this.survey && this.isRequired ? this.survey.requiredText : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.addError = function(e) {
                    if (e) {
                        var t = null;
                        t = "string" == typeof e || e instanceof String ? new Re(e, this.survey) : e, this.errors.push(t)
                    }
                }, t.prototype.removeError = function(e) {
                    var t = this.errors,
                        n = t.indexOf(e); - 1 !== n && t.splice(n, 1)
                }, t.prototype.checkForErrors = function(e) {
                    var t = new Array;
                    return this.isVisible && this.canCollectErrors() && this.collectErrors(t, e), t
                }, t.prototype.canCollectErrors = function() {
                    return !this.isReadOnly
                }, t.prototype.collectErrors = function(e, t) {
                    if (this.onCheckForErrors(e, t), !(e.length > 0) && this.canRunValidators(t)) {
                        var n = this.runValidators();
                        if (n.length > 0) {
                            e.length = 0;
                            for (var o = 0; o < n.length; o++) e.push(n[o])
                        }
                        if (this.survey && 0 == e.length) {
                            var r = this.fireSurveyValidation();
                            r && e.push(r)
                        }
                    }
                }, t.prototype.canRunValidators = function(e) {
                    return !0
                }, t.prototype.fireSurveyValidation = function() {
                    return this.validateValueCallback ? this.validateValueCallback() : this.survey ? this.survey.validateQuestion(this) : null
                }, t.prototype.onCheckForErrors = function(e, t) {
                    var n = this;
                    if (!t && this.hasRequiredError()) {
                        var o = new be(this.requiredErrorText, this);
                        o.onUpdateErrorTextCallback = function(e) {
                            e.text = n.requiredErrorText
                        }, e.push(o)
                    }
                }, t.prototype.hasRequiredError = function() {
                    return this.isRequired && this.isEmpty()
                }, Object.defineProperty(t.prototype, "isRunningValidators", {
                    get: function() {
                        return this.getIsRunningValidators()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getIsRunningValidators = function() {
                    return this.isRunningValidatorsValue
                }, t.prototype.runValidators = function() {
                    var e = this;
                    return this.validatorRunner && (this.validatorRunner.onAsyncCompleted = null), this.validatorRunner = new De, this.isRunningValidatorsValue = !0, this.validatorRunner.onAsyncCompleted = function(t) {
                        e.doOnAsyncCompleted(t)
                    }, this.validatorRunner.run(this)
                }, t.prototype.doOnAsyncCompleted = function(e) {
                    for (var t = 0; t < e.length; t++) this.errors.push(e[t]);
                    this.isRunningValidatorsValue = !1, this.raiseOnCompletedAsyncValidators()
                }, t.prototype.raiseOnCompletedAsyncValidators = function() {
                    this.onCompletedAsyncValidators && !this.isRunningValidators && (this.onCompletedAsyncValidators(this.getAllErrors().length > 0), this.onCompletedAsyncValidators = null)
                }, t.prototype.setNewValue = function(e) {
                    var t = this.isAnswered;
                    this.setNewValueInData(e), this.allowNotifyValueChanged && this.onValueChanged(), this.isAnswered != t && this.updateQuestionCss()
                }, t.prototype.isTextValue = function() {
                    return !1
                }, Object.defineProperty(t.prototype, "isSurveyInputTextUpdate", {
                    get: function() {
                        return !!this.survey && this.survey.isUpdateValueTextOnTyping
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDataLocNotification = function() {
                    return !!this.isInputTextUpdate && "text"
                }, Object.defineProperty(t.prototype, "isInputTextUpdate", {
                    get: function() {
                        return this.isSurveyInputTextUpdate && this.isTextValue()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setNewValueInData = function(e) {
                    e = this.valueToData(e), this.isValueChangedInSurvey || this.setValueCore(e)
                }, t.prototype.getValueCore = function() {
                    return this.questionValue
                }, t.prototype.setValueCore = function(e) {
                    this.setQuestionValue(e), null != this.data && this.canSetValueToSurvey() && (e = this.valueForSurvey, this.data.setValue(this.getValueName(), e, this.getDataLocNotification(), this.allowNotifyValueChanged))
                }, t.prototype.canSetValueToSurvey = function() {
                    return !0
                }, t.prototype.valueFromData = function(e) {
                    return e
                }, t.prototype.valueToData = function(e) {
                    return e
                }, t.prototype.onValueChanged = function() {}, t.prototype.setNewComment = function(e) {
                    this.questionComment !== e && (this.questionComment = e, null != this.data && this.data.setComment(this.getValueName(), e, !!this.isSurveyInputTextUpdate && "text"))
                }, t.prototype.getValidName = function(e) {
                    return e ? e.trim().replace(/[\{\}]+/g, "") : e
                }, t.prototype.updateValueFromSurvey = function(e) {
                    e = this.getUnbindValue(e), this.valueFromDataCallback && (e = this.valueFromDataCallback(e)), this.setQuestionValue(this.valueFromData(e)), this.updateIsAnswered()
                }, t.prototype.updateCommentFromSurvey = function(e) {
                    this.questionComment = e
                }, t.prototype.onChangeQuestionValue = function(e) {}, t.prototype.setValueChangedDirectly = function() {
                    this.isValueChangedDirectly = !0
                }, t.prototype.setQuestionValue = function(e, t) {
                    void 0 === t && (t = !0);
                    var n = this.isTwoValueEquals(this.questionValue, e);
                    n || this.isChangingViaDefaultValue || this.setValueChangedDirectly(), this.questionValue = e, n || this.onChangeQuestionValue(e), !n && this.allowNotifyValueChanged && this.fireCallback(this.valueChangedCallback), t && this.updateIsAnswered()
                }, t.prototype.onSurveyValueChanged = function(e) {}, t.prototype.setVisibleIndex = function(e) {
                    return (!this.isVisible || !this.hasTitle && !s.setQuestionVisibleIndexForHiddenTitle || this.hideNumber && !s.setQuestionVisibleIndexForHiddenNumber) && (e = -1), this.setPropertyValue("visibleIndex", e), this.setPropertyValue("no", this.calcNo()), e < 0 ? 0 : 1
                }, t.prototype.removeElement = function(e) {
                    return !1
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    return !1
                }, t.prototype.supportGoNextPageError = function() {
                    return !0
                }, t.prototype.clearIncorrectValues = function() {}, t.prototype.clearOnDeletingContainer = function() {}, t.prototype.clearErrors = function() {
                    this.errors = []
                }, t.prototype.clearUnusedValues = function() {}, t.prototype.onAnyValueChanged = function(e) {}, t.prototype.checkBindings = function(e, t) {
                    if (!this.bindings.isEmpty() && this.data)
                        for (var n = this.bindings.getPropertiesByValueName(e), o = 0; o < n.length; o++) {
                            var r = n[o];
                            this.isValueEmpty(t) && a.isNumber(this[r]) && (t = 0), this[r] = t
                        }
                }, t.prototype.getComponentName = function() {
                    return Jt.Instance.getRendererByQuestion(this)
                }, t.prototype.isDefaultRendering = function() {
                    return !!this.customWidget || "default" === this.renderAs || "default" === this.getComponentName()
                }, t.prototype.getErrorCustomText = function(e, t) {
                    return this.survey ? this.survey.getSurveyErrorCustomText(this, e, t) : e
                }, t.prototype.getValidatorTitle = function() {
                    return null
                }, Object.defineProperty(t.prototype, "validatedValue", {
                    get: function() {
                        return this.value
                    },
                    set: function(e) {
                        this.value = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getAllValues = function() {
                    return this.data ? this.data.getAllValues() : null
                }, t.prototype.transformToMobileView = function() {}, t.prototype.transformToDesktopView = function() {}, t.prototype.needResponsiveWidth = function() {
                    return !1
                }, t.prototype.supportResponsiveness = function() {
                    return !1
                }, t.prototype.needResponsiveness = function() {
                    return this.supportResponsiveness() && this.isDefaultV2Theme && !this.isDesignMode
                }, t.prototype.checkForResponsiveness = function(e) {
                    var t = this;
                    if (this.needResponsiveness())
                        if (this.isCollapsed) {
                            this.registerPropertyChangedHandlers(["state"], (function() {
                                t.isExpanded && (t.initResponsiveness(e), t.unregisterPropertyChangedHandlers(["state"], "for-responsiveness"))
                            }), "for-responsiveness")
                        } else this.initResponsiveness(e)
                }, t.prototype.getObservedElementSelector = function() {
                    return ".sd-scrollable-container"
                }, t.prototype.onMobileChanged = function() {
                    this.onMobileChangedCallback && this.onMobileChangedCallback()
                }, t.prototype.initResponsiveness = function(e) {
                    var t = this;
                    if (this.destroyResizeObserver(), e && this.isDefaultRendering()) {
                        var n = this.getObservedElementSelector();
                        if (!n) return;
                        if (!e.querySelector(n)) return;
                        var o = !1,
                            r = void 0;
                        this.resizeObserver = new ResizeObserver((function() {
                            var i = e.querySelector(n);
                            !r && t.isDefaultRendering() && (r = i.scrollWidth), o = !(o || !rt(i)) && t.processResponsiveness(r, ot(i))
                        })), this.onMobileChangedCallback = function() {
                            setTimeout((function() {
                                var o = e.querySelector(n);
                                t.processResponsiveness(r, ot(o))
                            }), 0)
                        }, this.resizeObserver.observe(e)
                    }
                }, t.prototype.getCompactRenderAs = function() {
                    return "default"
                }, t.prototype.getDesktopRenderAs = function() {
                    return "default"
                }, t.prototype.processResponsiveness = function(e, t) {
                    if (t = Math.round(t), Math.abs(e - t) > 2) {
                        var n = this.renderAs;
                        return this.renderAs = e > t ? this.getCompactRenderAs() : this.getDesktopRenderAs(), n !== this.renderAs
                    }
                    return !1
                }, t.prototype.destroyResizeObserver = function() {
                    this.resizeObserver && (this.resizeObserver.disconnect(), this.resizeObserver = void 0, this.onMobileChangedCallback = void 0, this.renderAs = this.getDesktopRenderAs())
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.destroyResizeObserver()
                }, t.TextPreprocessorValuesMap = {
                    title: "processedTitle",
                    require: "requiredText"
                }, t.questionCounter = 100, Zt([y({
                    defaultValue: !1
                })], t.prototype, "isMobile", void 0), Zt([y({
                    localizable: !0
                })], t.prototype, "commentPlaceholder", void 0), Zt([y({
                    defaultValue: "default"
                })], t.prototype, "renderAs", void 0), t
            }(jt);

        function Yt(e) {
            return e && e[0] === s.expressionDisableConversionChar ? e.substring(1) : e
        }
        I.addClass("question", [{
            name: "!name",
            onSettingValue: function(e, t) {
                return Yt(t)
            }
        }, {
            name: "state",
            default: "default",
            choices: ["default", "collapsed", "expanded"]
        }, {
            name: "visible:switch",
            default: !0
        }, {
            name: "useDisplayValuesInDynamicTexts:boolean",
            alternativeName: "useDisplayValuesInTitle",
            default: !0,
            layout: "row"
        }, "visibleIf:condition", {
            name: "width"
        }, {
            name: "minWidth",
            default: s.minWidth
        }, {
            name: "maxWidth",
            default: s.maxWidth
        }, {
            name: "startWithNewLine:boolean",
            default: !0,
            layout: "row"
        }, {
            name: "indent:number",
            default: 0,
            choices: [0, 1, 2, 3],
            layout: "row"
        }, {
            name: "page",
            isSerializable: !1,
            visibleIf: function(e) {
                var t = e ? e.survey : null;
                return !t || !t.pages || t.pages.length > 1
            },
            choices: function(e) {
                var t = e ? e.survey : null;
                return t ? t.pages.map((function(e) {
                    return {
                        value: e.name,
                        text: e.title
                    }
                })) : []
            }
        }, {
            name: "title:text",
            serializationProperty: "locTitle",
            layout: "row",
            dependsOn: "name",
            onPropertyEditorUpdate: function(e, t) {
                e && t && (t.placeholder = e.name)
            }
        }, {
            name: "titleLocation",
            default: "default",
            choices: ["default", "top", "bottom", "left", "hidden"],
            layout: "row"
        }, {
            name: "description:text",
            serializationProperty: "locDescription",
            layout: "row"
        }, {
            name: "descriptionLocation",
            default: "default",
            choices: ["default", "underInput", "underTitle"]
        }, {
            name: "hideNumber:boolean",
            dependsOn: "titleLocation",
            visibleIf: function(e) {
                if (!e) return !0;
                if ("hidden" === e.titleLocation) return !1;
                var t = e ? e.parent : null;
                if (!(!t || "off" !== t.showQuestionNumbers)) return !1;
                var n = e ? e.survey : null;
                return !n || "off" !== n.showQuestionNumbers || !!t && "onpanel" === t.showQuestionNumbers
            }
        }, {
            name: "valueName",
            onSettingValue: function(e, t) {
                return Yt(t)
            }
        }, "enableIf:condition", "defaultValue:value", {
            name: "defaultValueExpression:expression",
            category: "logic"
        }, "correctAnswer:value", {
            name: "clearIfInvisible",
            default: "default",
            choices: ["default", "none", "onComplete", "onHidden"]
        }, "isRequired:switch", "requiredIf:condition", {
            name: "requiredErrorText:text",
            serializationProperty: "locRequiredErrorText"
        }, "readOnly:switch", {
            name: "validators:validators",
            baseClassName: "surveyvalidator",
            classNamePart: "validator"
        }, {
            name: "bindings:bindings",
            serializationProperty: "bindings",
            visibleIf: function(e) {
                return e.bindings.getNames().length > 0
            }
        }, {
            name: "renderAs",
            default: "default",
            visible: !1
        }, {
            name: "showCommentArea",
            visible: !1,
            default: !1,
            alternativeName: "hasComment",
            category: "general"
        }]), I.addAlterNativeClassName("question", "questionbase");
        var en = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            tn = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            nn = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.generatedVisibleRows = null, n.generatedTotalRow = null, n.filteredRows = null, n.filteredColumns = null, n.columns = n.createColumnValues(), n.rows = n.createItemValues("rows"), n
                }
                return en(t, e), t.prototype.createColumnValues = function() {
                    return this.createItemValues("columns")
                }, t.prototype.getType = function() {
                    return "matrixbase"
                }, t.prototype.endLoadingFromJson = function() {
                    e.prototype.endLoadingFromJson.call(this), this.updateVisibilityBasedOnRows()
                }, Object.defineProperty(t.prototype, "isCompositeQuestion", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showHeader", {
                    get: function() {
                        return this.getPropertyValue("showHeader")
                    },
                    set: function(e) {
                        this.setPropertyValue("showHeader", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "columns", {
                    get: function() {
                        return this.getPropertyValue("columns")
                    },
                    set: function(e) {
                        this.setPropertyValue("columns", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visibleColumns", {
                    get: function() {
                        return this.filteredColumns ? this.filteredColumns : this.columns
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rows", {
                    get: function() {
                        return this.getPropertyValue("rows")
                    },
                    set: function(e) {
                        var t = this.processRowsOnSet(e);
                        this.setPropertyValue("rows", t), this.filterItems()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.processRowsOnSet = function(e) {
                    return e
                }, t.prototype.getVisibleRows = function() {
                    return []
                }, Object.defineProperty(t.prototype, "visibleRows", {
                    get: function() {
                        return this.getVisibleRows()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rowsVisibleIf", {
                    get: function() {
                        return this.getPropertyValue("rowsVisibleIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("rowsVisibleIf", e), this.filterItems()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "columnsVisibleIf", {
                    get: function() {
                        return this.getPropertyValue("columnsVisibleIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("columnsVisibleIf", e), this.filterItems()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.runCondition = function(t, n) {
                    e.prototype.runCondition.call(this, t, n), this.runItemsCondition(t, n)
                }, t.prototype.filterItems = function() {
                    return this.areInvisibleElementsShowing ? (this.onRowsChanged(), !1) : !(this.isLoadingFromJson || !this.data) && this.runItemsCondition(this.getDataFilteredValues(), this.getDataFilteredProperties())
                }, t.prototype.onColumnsChanged = function() {}, t.prototype.onRowsChanged = function() {
                    this.updateVisibilityBasedOnRows(), this.fireCallback(this.visibleRowsChangedCallback)
                }, t.prototype.updateVisibilityBasedOnRows = function() {
                    this.hideIfRowsEmpty && (this.visible = this.rows.length > 0 && (!this.filteredRows || this.filteredRows.length > 0))
                }, t.prototype.shouldRunColumnExpression = function() {
                    return !this.survey || !this.survey.areInvisibleElementsShowing
                }, t.prototype.hasRowsAsItems = function() {
                    return !0
                }, t.prototype.runItemsCondition = function(e, t) {
                    var n = null;
                    if (this.filteredRows && !a.isValueEmpty(this.defaultValue)) {
                        n = [];
                        for (var o = 0; o < this.filteredRows.length; o++) n.push(this.filteredRows[o])
                    }
                    var r = this.hasRowsAsItems() && this.runConditionsForRows(e, t),
                        i = this.runConditionsForColumns(e, t);
                    return (r = i || r) && (this.isClearValueOnHidden && (this.filteredColumns || this.filteredRows) && this.clearIncorrectValues(), n && this.restoreNewVisibleRowsValues(n), this.clearGeneratedRows(), i && this.onColumnsChanged(), this.onRowsChanged()), r
                }, t.prototype.clearGeneratedRows = function() {
                    this.generatedVisibleRows = null
                }, t.prototype.runConditionsForRows = function(e, t) {
                    var n = !!this.survey && this.survey.areInvisibleElementsShowing,
                        o = !n && this.rowsVisibleIf ? new se(this.rowsVisibleIf) : null;
                    this.filteredRows = [];
                    var r = ze.runConditionsForItems(this.rows, this.filteredRows, o, e, t, !n);
                    return this.filteredRows.length === this.rows.length && (this.filteredRows = null), r
                }, t.prototype.runConditionsForColumns = function(e, t) {
                    var n = !!this.survey && !this.survey.areInvisibleElementsShowing && this.columnsVisibleIf ? new se(this.columnsVisibleIf) : null;
                    this.filteredColumns = [];
                    var o = ze.runConditionsForItems(this.columns, this.filteredColumns, n, e, t, this.shouldRunColumnExpression());
                    return this.filteredColumns.length === this.columns.length && (this.filteredColumns = null), o
                }, t.prototype.clearIncorrectValues = function() {
                    var t = this.value;
                    if (t) {
                        var n = null,
                            o = !1,
                            r = this.filteredRows ? this.filteredRows : this.rows,
                            i = this.filteredColumns ? this.filteredColumns : this.columns;
                        for (var s in t) ze.getItemByValue(r, s) && ze.getItemByValue(i, t[s]) ? (null == n && (n = {}), n[s] = t[s]) : o = !0;
                        o && (this.value = n), e.prototype.clearIncorrectValues.call(this)
                    }
                }, t.prototype.clearInvisibleValuesInRows = function() {
                    if (!this.isEmpty()) {
                        for (var e = this.getUnbindValue(this.value), t = this.rows, n = 0; n < t.length; n++) {
                            var o = t[n].value;
                            e[o] && !t[n].isVisible && delete e[o]
                        }
                        this.isTwoValueEquals(e, this.value) || (this.value = e)
                    }
                }, t.prototype.restoreNewVisibleRowsValues = function(e) {
                    var t = this.filteredRows ? this.filteredRows : this.rows,
                        n = this.defaultValue,
                        o = this.getUnbindValue(this.value),
                        r = !1;
                    for (var i in n) ze.getItemByValue(t, i) && !ze.getItemByValue(e, i) && (null == o && (o = {}), o[i] = n[i], r = !0);
                    r && (this.value = o)
                }, t.prototype.needResponsiveWidth = function() {
                    return !0
                }, t.prototype.getTableCss = function() {
                    return (new ct).append(this.cssClasses.root).append(this.cssClasses.rootAlternateRows, this.alternateRows).append(this.cssClasses.rootVerticalAlignTop, "top" === this.verticalAlign).append(this.cssClasses.rootVerticalAlignMiddle, "middle" === this.verticalAlign).toString()
                }, Object.defineProperty(t.prototype, "columnMinWidth", {
                    get: function() {
                        return this.getPropertyValue("columnMinWidth", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("columnMinWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rowTitleWidth", {
                    get: function() {
                        return this.getPropertyValue("rowTitleWidth", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("rowTitleWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), tn([y({
                    defaultValue: "middle"
                })], t.prototype, "verticalAlign", void 0), tn([y({
                    defaultValue: !1
                })], t.prototype, "alternateRows", void 0), t
            }(Xt);
        I.addClass("matrixbase", [{
            name: "showCommentArea:switch",
            layout: "row",
            visible: !0,
            category: "general"
        }, "columnsVisibleIf:condition", "rowsVisibleIf:condition", "columnMinWidth", {
            name: "showHeader:boolean",
            default: !0
        }, {
            name: "verticalAlign",
            choices: ["top", "middle"],
            default: "middle"
        }, {
            name: "alternateRows:boolean",
            default: !1
        }], void 0, "question");
        var on = function() {},
            rn = function(e, t) {
                this.name = e, this.returnDisplayValue = t, this.isExists = !1, this.canProcess = !0
            },
            sn = function() {
                function e() {
                    this._unObservableValues = [void 0]
                }
                return Object.defineProperty(e.prototype, "hasAllValuesOnLastRunValue", {
                    get: function() {
                        return this._unObservableValues[0]
                    },
                    set: function(e) {
                        this._unObservableValues[0] = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.process = function(e, t, n) {
                    if (void 0 === t && (t = !1), void 0 === n && (n = !1), this.hasAllValuesOnLastRunValue = !0, !e) return e;
                    if (!this.onProcess) return e;
                    for (var o = this.getItems(e), r = o.length - 1; r >= 0; r--) {
                        var i = o[r],
                            s = this.getName(e.substring(i.start + 1, i.end));
                        if (s) {
                            var l = new rn(s, t);
                            if (this.onProcess(l), l.isExists) {
                                a.isValueEmpty(l.value) && (this.hasAllValuesOnLastRunValue = !1);
                                var u = a.isValueEmpty(l.value) ? "" : l.value;
                                n && (u = encodeURIComponent(u)), e = e.substring(0, i.start) + u + e.substring(i.end + 1)
                            } else l.canProcess && (this.hasAllValuesOnLastRunValue = !1)
                        }
                    }
                    return e
                }, e.prototype.processValue = function(e, t) {
                    var n = new rn(e, t);
                    return this.onProcess && this.onProcess(n), n
                }, Object.defineProperty(e.prototype, "hasAllValuesOnLastRun", {
                    get: function() {
                        return !!this.hasAllValuesOnLastRunValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getItems = function(e) {
                    for (var t = [], n = e.length, o = -1, r = "", i = 0; i < n; i++)
                        if ("{" == (r = e[i]) && (o = i), "}" == r) {
                            if (o > -1) {
                                var s = new on;
                                s.start = o, s.end = i, t.push(s)
                            }
                            o = -1
                        } return t
                }, e.prototype.getName = function(e) {
                    if (e) return e.trim()
                }, e
            }(),
            an = function() {
                function e(e) {
                    var t = this;
                    this.variableName = e, this.textPreProcessor = new sn, this.textPreProcessor.onProcess = function(e) {
                        t.getProcessedTextValue(e)
                    }
                }
                return e.prototype.processValue = function(e, t) {
                    return this.textPreProcessor.processValue(e, t)
                }, Object.defineProperty(e.prototype, "survey", {
                    get: function() {
                        return null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "panel", {
                    get: function() {
                        return null
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getValues = function() {
                    return this.panel ? this.panel.getValue() : null
                }, e.prototype.getQuestionByName = function(e) {
                    return this.panel ? this.panel.getQuestionByValueName(e) : null
                }, e.prototype.getParentTextProcessor = function() {
                    return null
                }, e.prototype.onCustomProcessText = function(e) {
                    return !1
                }, e.prototype.getQuestionDisplayText = function(e) {
                    return e.displayValue
                }, e.prototype.getProcessedTextValue = function(e) {
                    if (e && !this.onCustomProcessText(e)) {
                        var t = (new _).getFirstName(e.name);
                        if (e.isExists = t == this.variableName, e.canProcess = e.isExists, e.canProcess) {
                            e.name = e.name.replace(this.variableName + ".", "");
                            t = (new _).getFirstName(e.name);
                            var n = this.getQuestionByName(t),
                                o = {};
                            if (n) o[t] = e.returnDisplayValue ? this.getQuestionDisplayText(n) : n.value;
                            else {
                                var r = this.panel ? this.getValues() : null;
                                r && (o[t] = r[t])
                            }
                            e.value = (new _).getValue(e.name, o)
                        }
                    }
                }, e.prototype.processText = function(e, t) {
                    return this.survey && this.survey.isDesignMode ? e : (e = this.textPreProcessor.process(e, t), e = this.processTextCore(this.getParentTextProcessor(), e, t), this.processTextCore(this.survey, e, t))
                }, e.prototype.processTextEx = function(e, t) {
                    e = this.processText(e, t);
                    var n = this.textPreProcessor.hasAllValuesOnLastRun,
                        o = {
                            hasAllValuesOnLastRun: !0,
                            text: e
                        };
                    return this.survey && (o = this.survey.processTextEx(e, t, !1)), o.hasAllValuesOnLastRun = o.hasAllValuesOnLastRun && n, o
                }, e.prototype.processTextCore = function(e, t, n) {
                    return e ? e.processText(t, n) : t
                }, e
            }(),
            ln = function() {
                function e() {
                    this.creatorHash = {}
                }
                return Object.defineProperty(e, "DefaultChoices", {
                    get: function() {
                        return [u.getString("choices_Item") + "1", u.getString("choices_Item") + "2", u.getString("choices_Item") + "3"]
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e, "DefaultColums", {
                    get: function() {
                        var e = u.getString("matrix_column") + " ";
                        return [e + "1", e + "2", e + "3"]
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e, "DefaultRows", {
                    get: function() {
                        var e = u.getString("matrix_row") + " ";
                        return [e + "1", e + "2"]
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e, "DefaultMutlipleTextItems", {
                    get: function() {
                        var e = u.getString("multipletext_itemname");
                        return [e + "1", e + "2"]
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.registerQuestion = function(e, t) {
                    this.creatorHash[e] = t
                }, e.prototype.unregisterElement = function(e) {
                    delete this.creatorHash[e]
                }, e.prototype.clear = function() {
                    this.creatorHash = {}
                }, e.prototype.getAllTypes = function() {
                    var e = new Array;
                    for (var t in this.creatorHash) e.push(t);
                    return e.sort()
                }, e.prototype.createQuestion = function(e, t) {
                    var n = this.creatorHash[e];
                    return null == n ? null : n(t)
                }, e.Instance = new e, e
            }(),
            un = function() {
                function e() {
                    this.creatorHash = {}
                }
                return e.prototype.registerElement = function(e, t) {
                    this.creatorHash[e] = t
                }, e.prototype.clear = function() {
                    this.creatorHash = {}
                }, e.prototype.unregisterElement = function(e, t) {
                    void 0 === t && (t = !1), delete this.creatorHash[e], ln.Instance.unregisterElement(e), t && I.removeClass(e)
                }, e.prototype.getAllTypes = function() {
                    var e = ln.Instance.getAllTypes();
                    for (var t in this.creatorHash) e.push(t);
                    return e.sort()
                }, e.prototype.createElement = function(e, t) {
                    var n = this.creatorHash[e];
                    return null == n ? ln.Instance.createQuestion(e, t) : n(t)
                }, e.Instance = new e, e
            }(),
            cn = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            pn = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.createLocalizableString("format", n), n.registerPropertyChangedHandlers(["expression"], (function() {
                        n.expressionRunner && (n.expressionRunner = new ae(n.expression))
                    })), n.registerPropertyChangedHandlers(["format", "currency", "displayStyle"], (function() {
                        n.updateFormatedValue()
                    })), n
                }
                return cn(t, e), t.prototype.getType = function() {
                    return "expression"
                }, Object.defineProperty(t.prototype, "hasInput", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "format", {
                    get: function() {
                        return this.getLocalizableStringText("format", "")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("format", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locFormat", {
                    get: function() {
                        return this.getLocalizableString("format")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "expression", {
                    get: function() {
                        return this.getPropertyValue("expression", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("expression", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.locCalculation = function() {
                    this.expressionIsRunning = !0
                }, t.prototype.unlocCalculation = function() {
                    this.expressionIsRunning = !1
                }, t.prototype.runCondition = function(t, n) {
                    var o = this;
                    e.prototype.runCondition.call(this, t, n), !this.expression || this.expressionIsRunning || !this.runIfReadOnly && this.isReadOnly || (this.locCalculation(), this.expressionRunner || (this.expressionRunner = new ae(this.expression)), this.expressionRunner.onRunComplete = function(e) {
                        a.isTwoValueEquals(e, o.value) || (o.value = e), o.unlocCalculation()
                    }, this.expressionRunner.run(t, n))
                }, t.prototype.canCollectErrors = function() {
                    return !0
                }, t.prototype.hasRequiredError = function() {
                    return !1
                }, Object.defineProperty(t.prototype, "maximumFractionDigits", {
                    get: function() {
                        return this.getPropertyValue("maximumFractionDigits")
                    },
                    set: function(e) {
                        e < -1 || e > 20 || this.setPropertyValue("maximumFractionDigits", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "minimumFractionDigits", {
                    get: function() {
                        return this.getPropertyValue("minimumFractionDigits")
                    },
                    set: function(e) {
                        e < -1 || e > 20 || this.setPropertyValue("minimumFractionDigits", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "runIfReadOnly", {
                    get: function() {
                        return !0 === this.runIfReadOnlyValue
                    },
                    set: function(e) {
                        this.runIfReadOnlyValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "formatedValue", {
                    get: function() {
                        return this.getPropertyValue("formatedValue", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateFormatedValue = function() {
                    this.setPropertyValue("formatedValue", this.getDisplayValueCore(!1, this.value))
                }, t.prototype.onValueChanged = function() {
                    this.updateFormatedValue()
                }, t.prototype.updateValueFromSurvey = function(t) {
                    e.prototype.updateValueFromSurvey.call(this, t), this.updateFormatedValue()
                }, t.prototype.getDisplayValueCore = function(e, t) {
                    var n = this.isValueEmpty(t) ? this.defaultValue : t,
                        o = "";
                    if (!this.isValueEmpty(n)) {
                        var r = this.getValueAsStr(n);
                        o = this.format ? this.format.format(r) : r
                    }
                    return this.survey && (o = this.survey.getExpressionDisplayValue(this, n, o)), o
                }, Object.defineProperty(t.prototype, "displayStyle", {
                    get: function() {
                        return this.getPropertyValue("displayStyle")
                    },
                    set: function(e) {
                        this.setPropertyValue("displayStyle", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "currency", {
                    get: function() {
                        return this.getPropertyValue("currency")
                    },
                    set: function(e) {
                        ["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"].indexOf(e) < 0 || this.setPropertyValue("currency", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "useGrouping", {
                    get: function() {
                        return this.getPropertyValue("useGrouping")
                    },
                    set: function(e) {
                        this.setPropertyValue("useGrouping", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getValueAsStr = function(e) {
                    if ("date" == this.displayStyle) {
                        var t = new Date(e);
                        if (t && t.toLocaleDateString) return t.toLocaleDateString()
                    }
                    if ("none" != this.displayStyle && a.isNumber(e)) {
                        var n = this.getLocale();
                        n || (n = "en");
                        var o = {
                            style: this.displayStyle,
                            currency: this.currency,
                            useGrouping: this.useGrouping
                        };
                        return this.maximumFractionDigits > -1 && (o.maximumFractionDigits = this.maximumFractionDigits), this.minimumFractionDigits > -1 && (o.minimumFractionDigits = this.minimumFractionDigits), e.toLocaleString(n, o)
                    }
                    return e.toString()
                }, t
            }(Xt);
        I.addClass("expression", ["expression:expression", {
            name: "format",
            serializationProperty: "locFormat"
        }, {
            name: "displayStyle",
            default: "none",
            choices: ["none", "decimal", "currency", "percent", "date"]
        }, {
            name: "currency",
            choices: function() {
                return ["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"]
            },
            default: "USD"
        }, {
            name: "maximumFractionDigits:number",
            default: -1
        }, {
            name: "minimumFractionDigits:number",
            default: -1
        }, {
            name: "useGrouping:boolean",
            default: !0
        }, {
            name: "enableIf",
            visible: !1
        }, {
            name: "isRequired",
            visible: !1
        }, {
            name: "readOnly",
            visible: !1
        }, {
            name: "requiredErrorText",
            visible: !1
        }, {
            name: "defaultValueExpression",
            visible: !1
        }, {
            name: "defaultValue",
            visible: !1
        }, {
            name: "correctAnswer",
            visible: !1
        }, {
            name: "requiredIf",
            visible: !1
        }], (function() {
            return new pn("")
        }), "question"), ln.Instance.registerQuestion("expression", (function(e) {
            return new pn(e)
        }));
        var dn = function() {
            var e = function(t, n) {
                return (e = Object.setPrototypeOf || {
                        __proto__: []
                    }
                    instanceof Array && function(e, t) {
                        e.__proto__ = t
                    } || function(e, t) {
                        for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                    })(t, n)
            };
            return function(t, n) {
                if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                function o() {
                    this.constructor = t
                }
                e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
            }
        }();

        function hn(e, t, n, o) {
            e.storeOthersAsComment = !!n && n.storeOthersAsComment, e.choices && 0 != e.choices.length || !e.choicesByUrl.isEmpty || (e.choices = n.choices), e.choicesByUrl.isEmpty || e.choicesByUrl.run(o.getTextProcessor())
        }
        var fn = {
                dropdown: {
                    onCellQuestionUpdate: function(e, t, n, o) {
                        hn(e, 0, n, o), e.locPlaceholder && e.locPlaceholder.isEmpty && !n.locPlaceholder.isEmpty && (e.optionsCaption = n.optionsCaption)
                    }
                },
                checkbox: {
                    onCellQuestionUpdate: function(e, t, n, o) {
                        hn(e, 0, n, o), e.colCount = t.colCount > -1 ? t.colCount : n.columnColCount
                    }
                },
                radiogroup: {
                    onCellQuestionUpdate: function(e, t, n, o) {
                        hn(e, 0, n, o), e.colCount = t.colCount > -1 ? t.colCount : n.columnColCount
                    }
                },
                tagbox: {},
                text: {},
                comment: {},
                boolean: {
                    onCellQuestionUpdate: function(e, t, n, o) {
                        e.renderAs = t.renderAs
                    }
                },
                expression: {},
                rating: {}
            },
            mn = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this) || this;
                    return o.colOwnerValue = null, o.indexValue = -1, o._isVisible = !0, o._hasVisibleCell = !0, o.previousChoicesId = void 0, o.createLocalizableString("totalFormat", o), o.createLocalizableString("cellHint", o), o.registerPropertyChangedHandlers(["showInMultipleColumns"], (function() {
                        o.doShowInMultipleColumnsChanged()
                    })), o.updateTemplateQuestion(), o.name = t, n ? o.title = n : o.templateQuestion.locTitle.strChanged(), o
                }
                return dn(t, e), t.getColumnTypes = function() {
                    var e = [];
                    for (var t in fn) e.push(t);
                    return e
                }, t.prototype.getOriginalObj = function() {
                    return this.templateQuestion
                }, t.prototype.getClassNameProperty = function() {
                    return "cellType"
                }, t.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), this.colOwner ? this.colOwner.survey : null
                }, t.prototype.endLoadingFromJson = function() {
                    var t = this;
                    e.prototype.endLoadingFromJson.call(this), this.templateQuestion.autoOtherMode = this.isShowInMultipleColumns, this.templateQuestion.endLoadingFromJson(), this.templateQuestion.onGetSurvey = function() {
                        return t.getSurvey()
                    }
                }, t.prototype.getDynamicPropertyName = function() {
                    return "cellType"
                }, t.prototype.getDynamicType = function() {
                    return "default" === this.cellType ? "question" : this.calcCellQuestionType(null)
                }, Object.defineProperty(t.prototype, "colOwner", {
                    get: function() {
                        return this.colOwnerValue
                    },
                    set: function(e) {
                        this.colOwnerValue = e, e && (this.updateTemplateQuestion(), this.setParentQuestionToTemplate(this.templateQuestion))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.locTitle.strChanged()
                }, t.prototype.addUsedLocales = function(t) {
                    e.prototype.addUsedLocales.call(this, t), this.templateQuestion.addUsedLocales(t)
                }, Object.defineProperty(t.prototype, "index", {
                    get: function() {
                        return this.indexValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setIndex = function(e) {
                    this.indexValue = e
                }, t.prototype.getType = function() {
                    return "matrixdropdowncolumn"
                }, Object.defineProperty(t.prototype, "cellType", {
                    get: function() {
                        return this.getPropertyValue("cellType")
                    },
                    set: function(e) {
                        e = e.toLocaleLowerCase(), this.updateTemplateQuestion(e), this.setPropertyValue("cellType", e), this.colOwner && this.colOwner.onColumnCellTypeChanged(this)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "templateQuestion", {
                    get: function() {
                        return this.templateQuestionValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "value", {
                    get: function() {
                        return this.templateQuestion.name
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isVisible", {
                    get: function() {
                        return this._isVisible
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setIsVisible = function(e) {
                    this._isVisible = e
                }, Object.defineProperty(t.prototype, "hasVisibleCell", {
                    get: function() {
                        return this._hasVisibleCell
                    },
                    set: function(e) {
                        this._hasVisibleCell = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "name", {
                    get: function() {
                        return this.templateQuestion.name
                    },
                    set: function(e) {
                        this.templateQuestion.name = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "title", {
                    get: function() {
                        return this.templateQuestion.title
                    },
                    set: function(e) {
                        this.templateQuestion.title = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTitle", {
                    get: function() {
                        return this.templateQuestion.locTitle
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "fullTitle", {
                    get: function() {
                        return this.locTitle.textOrHtml
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRequired", {
                    get: function() {
                        return this.templateQuestion.isRequired
                    },
                    set: function(e) {
                        this.templateQuestion.isRequired = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRenderedRequired", {
                    get: function() {
                        return this.getPropertyValue("isRenderedRequired", this.isRequired)
                    },
                    set: function(e) {
                        this.setPropertyValue("isRenderedRequired", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateIsRenderedRequired = function(e) {
                    this.isRenderedRequired = e || this.isRequired
                }, Object.defineProperty(t.prototype, "requiredText", {
                    get: function() {
                        return this.isRenderedRequired && this.getSurvey() ? this.getSurvey().requiredText : this.templateQuestion.requiredText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "requiredErrorText", {
                    get: function() {
                        return this.templateQuestion.requiredErrorText
                    },
                    set: function(e) {
                        this.templateQuestion.requiredErrorText = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locRequiredErrorText", {
                    get: function() {
                        return this.templateQuestion.locRequiredErrorText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "readOnly", {
                    get: function() {
                        return this.templateQuestion.readOnly
                    },
                    set: function(e) {
                        this.templateQuestion.readOnly = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasOther", {
                    get: function() {
                        return this.templateQuestion.hasOther
                    },
                    set: function(e) {
                        this.templateQuestion.hasOther = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visibleIf", {
                    get: function() {
                        return this.templateQuestion.visibleIf
                    },
                    set: function(e) {
                        this.templateQuestion.visibleIf = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "enableIf", {
                    get: function() {
                        return this.templateQuestion.enableIf
                    },
                    set: function(e) {
                        this.templateQuestion.enableIf = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "requiredIf", {
                    get: function() {
                        return this.templateQuestion.requiredIf
                    },
                    set: function(e) {
                        this.templateQuestion.requiredIf = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isUnique", {
                    get: function() {
                        return this.getPropertyValue("isUnique")
                    },
                    set: function(e) {
                        this.setPropertyValue("isUnique", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showInMultipleColumns", {
                    get: function() {
                        return this.getPropertyValue("showInMultipleColumns", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("showInMultipleColumns", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isSupportMultipleColumns", {
                    get: function() {
                        return ["checkbox", "radiogroup"].indexOf(this.cellType) > -1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowInMultipleColumns", {
                    get: function() {
                        return this.showInMultipleColumns && this.isSupportMultipleColumns
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "validators", {
                    get: function() {
                        return this.templateQuestion.validators
                    },
                    set: function(e) {
                        this.templateQuestion.validators = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "totalType", {
                    get: function() {
                        return this.getPropertyValue("totalType")
                    },
                    set: function(e) {
                        this.setPropertyValue("totalType", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "totalExpression", {
                    get: function() {
                        return this.getPropertyValue("totalExpression")
                    },
                    set: function(e) {
                        this.setPropertyValue("totalExpression", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTotal", {
                    get: function() {
                        return "none" != this.totalType || !!this.totalExpression
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "totalFormat", {
                    get: function() {
                        return this.getLocalizableStringText("totalFormat", "")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("totalFormat", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTotalFormat", {
                    get: function() {
                        return this.getLocalizableString("totalFormat")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cellHint", {
                    get: function() {
                        return this.getLocalizableStringText("cellHint", "")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("cellHint", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locCellHint", {
                    get: function() {
                        return this.getLocalizableString("cellHint")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderAs", {
                    get: function() {
                        return this.getPropertyValue("renderAs")
                    },
                    set: function(e) {
                        this.setPropertyValue("renderAs", e), this.templateQuestion && (this.templateQuestion.renderAs = e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "totalMaximumFractionDigits", {
                    get: function() {
                        return this.getPropertyValue("totalMaximumFractionDigits")
                    },
                    set: function(e) {
                        e < -1 || e > 20 || this.setPropertyValue("totalMaximumFractionDigits", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "totalMinimumFractionDigits", {
                    get: function() {
                        return this.getPropertyValue("totalMinimumFractionDigits")
                    },
                    set: function(e) {
                        e < -1 || e > 20 || this.setPropertyValue("totalMinimumFractionDigits", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "totalDisplayStyle", {
                    get: function() {
                        return this.getPropertyValue("totalDisplayStyle")
                    },
                    set: function(e) {
                        this.setPropertyValue("totalDisplayStyle", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "totalCurrency", {
                    get: function() {
                        return this.getPropertyValue("totalCurrency")
                    },
                    set: function(e) {
                        ["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"].indexOf(e) < 0 || this.setPropertyValue("totalCurrency", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "minWidth", {
                    get: function() {
                        return this.getPropertyValue("minWidth", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("minWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "width", {
                    get: function() {
                        return this.getPropertyValue("width", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("width", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "colCount", {
                    get: function() {
                        return this.getPropertyValue("colCount")
                    },
                    set: function(e) {
                        e < -1 || e > 4 || this.setPropertyValue("colCount", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getLocale = function() {
                    return this.colOwner ? this.colOwner.getLocale() : ""
                }, t.prototype.getMarkdownHtml = function(e, t) {
                    return this.colOwner ? this.colOwner.getMarkdownHtml(e, t) : void 0
                }, t.prototype.getRenderer = function(e) {
                    return this.colOwner ? this.colOwner.getRenderer(e) : null
                }, t.prototype.getRendererContext = function(e) {
                    return this.colOwner ? this.colOwner.getRendererContext(e) : e
                }, t.prototype.getProcessedText = function(e) {
                    return this.colOwner ? this.colOwner.getProcessedText(e) : e
                }, t.prototype.createCellQuestion = function(e) {
                    var t = this.calcCellQuestionType(e),
                        n = this.createNewQuestion(t);
                    return this.callOnCellQuestionUpdate(n, e), n
                }, t.prototype.startLoadingFromJson = function(t) {
                    e.prototype.startLoadingFromJson.call(this, t), t && !t.cellType && t.choices && (t.cellType = this.colOwner.getCellType())
                }, t.prototype.updateCellQuestion = function(e, t, n) {
                    void 0 === n && (n = null), this.setQuestionProperties(e, n)
                }, t.prototype.callOnCellQuestionUpdate = function(e, t) {
                    var n = e.getType(),
                        o = fn[n];
                    o && o.onCellQuestionUpdate && o.onCellQuestionUpdate(e, this, this.colOwner, t)
                }, t.prototype.defaultCellTypeChanged = function() {
                    this.updateTemplateQuestion()
                }, t.prototype.calcCellQuestionType = function(e) {
                    var t = this.getDefaultCellQuestionType();
                    return e && this.colOwner && (t = this.colOwner.getCustomCellType(this, e, t)), t
                }, t.prototype.getDefaultCellQuestionType = function(e) {
                    return e || (e = this.cellType), "default" !== e ? e : this.colOwner ? this.colOwner.getCellType() : s.matrixDefaultCellType
                }, t.prototype.updateTemplateQuestion = function(e) {
                    var t = this,
                        n = this.getDefaultCellQuestionType(e),
                        o = this.templateQuestion ? this.templateQuestion.getType() : "";
                    n !== o && (this.templateQuestion && this.removeProperties(o), this.templateQuestionValue = this.createNewQuestion(n), this.templateQuestion.locOwner = this, this.addProperties(n), this.templateQuestion.onPropertyChanged.add((function(e, n) {
                        t.propertyValueChanged(n.name, n.oldValue, n.newValue)
                    })), this.templateQuestion.onItemValuePropertyChanged.add((function(e, n) {
                        t.doItemValuePropertyChanged(n.propertyName, n.obj, n.name, n.newValue, n.oldValue)
                    })), this.templateQuestion.isContentElement = !0, this.isLoadingFromJson || (this.templateQuestion.onGetSurvey = function() {
                        return t.getSurvey()
                    }), this.templateQuestion.locTitle.strChanged())
                }, t.prototype.createNewQuestion = function(e) {
                    var t = I.createClass(e);
                    return t || (t = I.createClass("text")), t.loadingOwner = this, t.isEditableTemplateElement = !0, t.autoOtherMode = this.isShowInMultipleColumns, this.setQuestionProperties(t), this.setParentQuestionToTemplate(t), t
                }, t.prototype.setParentQuestionToTemplate = function(e) {
                    this.colOwner && this.colOwner.isQuestion && e.setParentQuestion(this.colOwner)
                }, t.prototype.setQuestionProperties = function(e, t) {
                    var n = this;
                    if (void 0 === t && (t = null), this.templateQuestion) {
                        var o = (new R).toJsonObject(this.templateQuestion, !0);
                        t && t(o), o.type = e.getType(), "default" === this.cellType && this.colOwner && this.colOwner.hasChoices() && delete o.choices, delete o.itemComponent, (new R).toObject(o, e), e.isContentElement = this.templateQuestion.isContentElement, this.previousChoicesId = void 0, e.loadedChoicesFromServerCallback = function() {
                            if (n.isShowInMultipleColumns && (!n.previousChoicesId || n.previousChoicesId === e.id)) {
                                n.previousChoicesId = e.id;
                                var t = e.visibleChoices;
                                n.templateQuestion.choices = t, n.propertyValueChanged("choices", t, t)
                            }
                        }
                    }
                }, t.prototype.propertyValueChanged = function(t, n, o) {
                    e.prototype.propertyValueChanged.call(this, t, n, o), "isRequired" === t && this.updateIsRenderedRequired(o), this.colOwner && !this.isLoadingFromJson && (this.isShowInMultipleColumns && ["visibleChoices", "choices"].indexOf(t) > -1 && this.colOwner.onShowInMultipleColumnsChanged(this), I.hasOriginalProperty(this, t) && this.colOwner.onColumnPropertyChanged(this, t, o))
                }, t.prototype.doItemValuePropertyChanged = function(e, t, n, o, r) {
                    I.hasOriginalProperty(t, n) && (null == this.colOwner || this.isLoadingFromJson || this.colOwner.onColumnItemValuePropertyChanged(this, e, t, n, o, r))
                }, t.prototype.doShowInMultipleColumnsChanged = function() {
                    null == this.colOwner || this.isLoadingFromJson || this.colOwner.onShowInMultipleColumnsChanged(this), this.templateQuestion && (this.templateQuestion.autoOtherMode = this.isShowInMultipleColumns)
                }, t.prototype.getProperties = function(e) {
                    return I.getDynamicPropertiesByObj(this, e)
                }, t.prototype.removeProperties = function(e) {
                    for (var t = this.getProperties(e), n = 0; n < t.length; n++) {
                        var o = t[n];
                        delete this[o.name], o.serializationProperty && delete this[o.serializationProperty]
                    }
                }, t.prototype.addProperties = function(e) {
                    for (var t = this.templateQuestion, n = this.getProperties(e), o = 0; o < n.length; o++) {
                        var r = n[o];
                        this.addProperty(t, r.name, !1), r.serializationProperty && this.addProperty(t, r.serializationProperty, !0), r.alternativeName && this.addProperty(t, r.alternativeName, !1)
                    }
                }, t.prototype.addProperty = function(e, t, n) {
                    var o = {
                        configurable: !0,
                        get: function() {
                            return e[t]
                        }
                    };
                    n || (o.set = function(n) {
                        e[t] = n
                    }), Object.defineProperty(this, t, o)
                }, t
            }(he);
        I.addClass("matrixdropdowncolumn", [{
            name: "!name",
            isUnique: !0
        }, {
            name: "title",
            serializationProperty: "locTitle",
            dependsOn: "name",
            onPropertyEditorUpdate: function(e, t) {
                e && t && (t.placeholder = e.name)
            }
        }, {
            name: "cellHint",
            serializationProperty: "locCellHint",
            visible: !1
        }, {
            name: "cellType",
            default: "default",
            choices: function() {
                var e = mn.getColumnTypes();
                return e.splice(0, 0, "default"), e
            }
        }, {
            name: "colCount",
            default: -1,
            choices: [-1, 0, 1, 2, 3, 4]
        }, "isRequired:boolean", "isUnique:boolean", {
            name: "requiredErrorText:text",
            serializationProperty: "locRequiredErrorText"
        }, "readOnly:boolean", "minWidth", "width", "visibleIf:condition", "enableIf:condition", "requiredIf:condition", {
            name: "showInMultipleColumns:boolean",
            dependsOn: "cellType",
            visibleIf: function(e) {
                return !!e && e.isSupportMultipleColumns
            }
        }, {
            name: "validators:validators",
            baseClassName: "surveyvalidator",
            classNamePart: "validator"
        }, {
            name: "totalType",
            default: "none",
            choices: ["none", "sum", "count", "min", "max", "avg"]
        }, "totalExpression:expression", {
            name: "totalFormat",
            serializationProperty: "locTotalFormat"
        }, {
            name: "totalDisplayStyle",
            default: "none",
            choices: ["none", "decimal", "currency", "percent"]
        }, {
            name: "totalCurrency",
            choices: function() {
                return ["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"]
            },
            default: "USD"
        }, {
            name: "totalMaximumFractionDigits:number",
            default: -1
        }, {
            name: "totalMinimumFractionDigits:number",
            default: -1
        }, {
            name: "renderAs",
            default: "default",
            visible: !1
        }], (function() {
            return new mn("")
        }));
        var gn = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            yn = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            vn = function() {
                function e() {
                    this.minWidth = "", this.width = "", this.colSpans = 1, this.isActionsCell = !1, this.isDragHandlerCell = !1, this.classNameValue = "", this.idValue = e.counter++
                }
                return Object.defineProperty(e.prototype, "hasQuestion", {
                    get: function() {
                        return !!this.question
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "hasTitle", {
                    get: function() {
                        return !!this.locTitle
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "hasPanel", {
                    get: function() {
                        return !!this.panel
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "id", {
                    get: function() {
                        return this.idValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "showErrorOnTop", {
                    get: function() {
                        return this.showErrorOnCore("top")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "showErrorOnBottom", {
                    get: function() {
                        return this.showErrorOnCore("bottom")
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.showErrorOnCore = function(e) {
                    return this.getShowErrorLocation(e) && (!this.isChoice || this.isFirstChoice)
                }, e.prototype.getShowErrorLocation = function(e) {
                    return this.hasQuestion && this.question.showErrorOnCore(e)
                }, Object.defineProperty(e.prototype, "item", {
                    get: function() {
                        return this.itemValue
                    },
                    set: function(e) {
                        this.itemValue = e, e && (e.hideCaption = !0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isChoice", {
                    get: function() {
                        return !!this.item
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isItemChoice", {
                    get: function() {
                        return this.isChoice && !this.isOtherChoice
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "choiceValue", {
                    get: function() {
                        return this.isChoice ? this.item.value : null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isCheckbox", {
                    get: function() {
                        return this.isItemChoice && this.question.isDescendantOf("checkbox")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isRadio", {
                    get: function() {
                        return this.isItemChoice && this.question.isDescendantOf("radiogroup")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isFirstChoice", {
                    get: function() {
                        return 0 === this.choiceIndex
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "className", {
                    get: function() {
                        var e = (new ct).append(this.classNameValue);
                        return this.hasQuestion && e.append(this.question.cssClasses.hasError, this.question.errors.length > 0).append(this.question.cssClasses.answered, this.question.isAnswered), e.toString()
                    },
                    set: function(e) {
                        this.classNameValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "headers", {
                    get: function() {
                        if (this.cell && this.cell.column) {
                            if (" " === this.cell.column.cellHint) return "";
                            if (this.cell.column.cellHint) return this.cell.column.locCellHint.renderedHtml;
                            if (this.cell.column.isShowInMultipleColumns) return this.item.locText.renderedHtml
                        }
                        return this.question && this.question.isVisible ? this.question.locTitle.renderedHtml : this.hasTitle && this.locTitle.renderedHtml || ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getTitle = function() {
                    return this.matrix && this.matrix.showHeader ? this.headers : ""
                }, e.prototype.calculateFinalClassName = function(e) {
                    var t = this.cell.question.cssClasses,
                        n = (new ct).append(t.itemValue, !!t).append(t.asCell, !!t);
                    return n.append(e.cell, n.isEmpty() && !!e).append(e.choiceCell, this.isChoice).toString()
                }, e.counter = 1, e
            }(),
            bn = function(e) {
                function t(n, o) {
                    void 0 === o && (o = !1);
                    var r = e.call(this) || this;
                    return r.cssClasses = n, r.isDetailRow = o, r.cells = [], r.idValue = t.counter++, r
                }
                return gn(t, e), Object.defineProperty(t.prototype, "id", {
                    get: function() {
                        return this.idValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "attributes", {
                    get: function() {
                        return this.row ? {
                            "data-sv-drop-target-matrix-row": this.row.id
                        } : {}
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "className", {
                    get: function() {
                        return (new ct).append(this.cssClasses.row).append(this.cssClasses.detailRow, this.isDetailRow).append(this.cssClasses.ghostRow, this.isGhostRow).append(this.cssClasses.rowAdditional, this.isAdditionalClasses).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.counter = 1, yn([y({
                    defaultValue: null
                })], t.prototype, "isGhostRow", void 0), yn([y({
                    defaultValue: !1
                })], t.prototype, "isAdditionalClasses", void 0), t
            }(he),
            xn = function(e) {
                function t(t) {
                    var n = e.call(this) || this;
                    return n.matrix = t, n.renderedRowsChangedCallback = function() {}, n.hasActionCellInRowsValues = {}, n.build(), n
                }
                return gn(t, e), Object.defineProperty(t.prototype, "showTable", {
                    get: function() {
                        return this.getPropertyValue("showTable", !0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showHeader", {
                    get: function() {
                        return this.getPropertyValue("showHeader")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showAddRowOnTop", {
                    get: function() {
                        return this.getPropertyValue("showAddRowOnTop", !1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showAddRowOnBottom", {
                    get: function() {
                        return this.getPropertyValue("showAddRowOnBottom", !1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showFooter", {
                    get: function() {
                        return this.matrix.hasFooter && this.matrix.isColumnLayoutHorizontal
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasFooter", {
                    get: function() {
                        return !!this.footerRow
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasRemoveRows", {
                    get: function() {
                        return this.hasRemoveRowsValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isRequireReset = function() {
                    return this.hasRemoveRows != this.matrix.canRemoveRows || !this.matrix.isColumnLayoutHorizontal
                }, Object.defineProperty(t.prototype, "headerRow", {
                    get: function() {
                        return this.headerRowValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "footerRow", {
                    get: function() {
                        return this.footerRowValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowRowsDragAndDrop", {
                    get: function() {
                        return this.matrix.allowRowsDragAndDrop && this.matrix.isColumnLayoutHorizontal
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.build = function() {
                    this.hasRemoveRowsValue = this.matrix.canRemoveRows;
                    this.matrix.visibleRows;
                    this.cssClasses = this.matrix.cssClasses, this.buildRowsActions(), this.buildHeader(), this.buildRows(), this.buildFooter(), this.updateShowTableAndAddRow()
                }, t.prototype.updateShowTableAndAddRow = function() {
                    var e = this.rows.length > 0 || this.matrix.isDesignMode || !this.matrix.getShowColumnsIfEmpty();
                    this.setPropertyValue("showTable", e);
                    var t = this.matrix.canAddRow && e,
                        n = t,
                        o = t;
                    n && (n = "default" === this.matrix.getAddRowLocation() ? !this.matrix.isColumnLayoutHorizontal : "bottom" !== this.matrix.getAddRowLocation()), o && "topBottom" !== this.matrix.getAddRowLocation() && (o = !n), this.setPropertyValue("showAddRowOnTop", n), this.setPropertyValue("showAddRowOnBottom", o)
                }, t.prototype.onAddedRow = function() {
                    if (!(this.getRenderedDataRowCount() >= this.matrix.visibleRows.length)) {
                        var e = this.matrix.visibleRows[this.matrix.visibleRows.length - 1];
                        this.rowsActions.push(this.buildRowActions(e)), this.addHorizontalRow(this.rows, e, 1 == this.matrix.visibleRows.length && !this.matrix.showHeader), this.updateShowTableAndAddRow()
                    }
                }, t.prototype.getRenderedDataRowCount = function() {
                    for (var e = 0, t = 0; t < this.rows.length; t++) this.rows[t].isDetailRow || e++;
                    return e
                }, t.prototype.onRemovedRow = function(e) {
                    var t = this.getRenderedRowIndex(e);
                    if (!(t < 0)) {
                        this.rowsActions.splice(t, 1);
                        var n = 1;
                        t < this.rows.length - 1 && this.rows[t + 1].isDetailRow && n++, this.rows.splice(t, n), this.updateShowTableAndAddRow()
                    }
                }, t.prototype.onDetailPanelChangeVisibility = function(e, t) {
                    var n = this.getRenderedRowIndex(e);
                    if (!(n < 0)) {
                        var o = n < this.rows.length - 1 && this.rows[n + 1].isDetailRow ? n + 1 : -1;
                        if (!(t && o > -1 || !t && o < 0))
                            if (t) {
                                var r = this.createDetailPanelRow(e, this.rows[n]);
                                this.rows.splice(n + 1, 0, r)
                            } else this.rows.splice(o, 1)
                    }
                }, t.prototype.getRenderedRowIndex = function(e) {
                    for (var t = 0; t < this.rows.length; t++)
                        if (this.rows[t].row == e) return t;
                    return -1
                }, t.prototype.buildRowsActions = function() {
                    this.rowsActions = [];
                    for (var e = this.matrix.visibleRows, t = 0; t < e.length; t++) this.rowsActions.push(this.buildRowActions(e[t]))
                }, t.prototype.createRenderedRow = function(e, t) {
                    return void 0 === t && (t = !1), new bn(e, t)
                }, t.prototype.buildHeader = function() {
                    var e = this.matrix.isColumnLayoutHorizontal && this.matrix.showHeader || this.matrix.hasRowText && !this.matrix.isColumnLayoutHorizontal;
                    if (this.setPropertyValue("showHeader", e), e) {
                        if (this.headerRowValue = this.createRenderedRow(this.cssClasses), this.allowRowsDragAndDrop && this.headerRow.cells.push(this.createHeaderCell(null)), this.hasActionCellInRows("start") && this.headerRow.cells.push(this.createHeaderCell(null)), this.matrix.hasRowText && this.matrix.showHeader && this.headerRow.cells.push(this.createHeaderCell(null)), this.matrix.isColumnLayoutHorizontal)
                            for (var t = 0; t < this.matrix.visibleColumns.length; t++) {
                                var n = this.matrix.visibleColumns[t];
                                n.hasVisibleCell && (n.isShowInMultipleColumns ? this.createMutlipleColumnsHeader(n) : this.headerRow.cells.push(this.createHeaderCell(n)))
                            } else {
                                var o = this.matrix.visibleRows;
                                for (t = 0; t < o.length; t++) {
                                    var r = this.createTextCell(o[t].locText);
                                    r.row = o[t], this.headerRow.cells.push(r)
                                }
                                this.matrix.hasFooter && this.headerRow.cells.push(this.createTextCell(this.matrix.getFooterText()))
                            }
                        this.hasActionCellInRows("end") && this.headerRow.cells.push(this.createHeaderCell(null))
                    }
                }, t.prototype.buildFooter = function() {
                    if (this.showFooter) {
                        this.footerRowValue = this.createRenderedRow(this.cssClasses), this.allowRowsDragAndDrop && this.footerRow.cells.push(this.createHeaderCell(null)), this.hasActionCellInRows("start") && this.footerRow.cells.push(this.createHeaderCell(null)), this.matrix.hasRowText && this.footerRow.cells.push(this.createTextCell(this.matrix.getFooterText()));
                        for (var e = this.matrix.visibleTotalRow.cells, t = 0; t < e.length; t++) {
                            var n = e[t];
                            if (n.column.hasVisibleCell)
                                if (n.column.isShowInMultipleColumns) this.createMutlipleColumnsFooter(this.footerRow, n);
                                else {
                                    var o = this.createEditCell(n);
                                    n.column && this.setHeaderCellWidth(n.column, o), this.footerRow.cells.push(o)
                                }
                        }
                        this.hasActionCellInRows("end") && this.footerRow.cells.push(this.createHeaderCell(null))
                    }
                }, t.prototype.buildRows = function() {
                    var e = this.matrix.isColumnLayoutHorizontal ? this.buildHorizontalRows() : this.buildVerticalRows();
                    this.rows = e
                }, t.prototype.hasActionCellInRows = function(e) {
                    if (void 0 === this.hasActionCellInRowsValues[e]) {
                        var t = this.matrix.visibleRows;
                        this.hasActionCellInRowsValues[e] = !1;
                        for (var n = 0; n < t.length; n++)
                            if (!this.isValueEmpty(this.getRowActions(n, e))) {
                                this.hasActionCellInRowsValues[e] = !0;
                                break
                            }
                    }
                    return this.hasActionCellInRowsValues[e]
                }, t.prototype.canRemoveRow = function(e) {
                    return this.matrix.canRemoveRow(e)
                }, t.prototype.buildHorizontalRows = function() {
                    for (var e = this.matrix.visibleRows, t = [], n = 0; n < e.length; n++) this.addHorizontalRow(t, e[n], 0 == n && !this.matrix.showHeader);
                    return t
                }, t.prototype.addHorizontalRow = function(e, t, n) {
                    var o = this.createHorizontalRow(t, n);
                    o.row = t, e.push(o), t.isDetailPanelShowing && e.push(this.createDetailPanelRow(t, o))
                }, t.prototype.getRowDragCell = function(e) {
                    var t = new vn;
                    return t.isDragHandlerCell = !0, t.className = this.getActionsCellClassName(), t.row = this.matrix.visibleRows[e], t
                }, t.prototype.getActionsCellClassName = function() {
                    return (new ct).append(this.cssClasses.actionsCell).append(this.cssClasses.verticalCell, !this.matrix.isColumnLayoutHorizontal).toString()
                }, t.prototype.getRowActionsCell = function(e, t) {
                    var n = this.getRowActions(e, t);
                    if (!this.isValueEmpty(n)) {
                        var o = new vn,
                            r = this.matrix.allowAdaptiveActions ? new _t : new ft;
                        this.matrix.survey && this.matrix.survey.getCss().actionBar && (r.cssClasses = this.matrix.survey.getCss().actionBar), r.setItems(n);
                        var i = new ze(r);
                        return o.item = i, o.isActionsCell = !0, o.className = this.getActionsCellClassName(), o.row = this.matrix.visibleRows[e], o
                    }
                    return null
                }, t.prototype.getRowActions = function(e, t) {
                    var n = this.rowsActions[e];
                    return Array.isArray(n) ? n.filter((function(e) {
                        return e.location || (e.location = "start"), e.location === t
                    })) : []
                }, t.prototype.buildRowActions = function(e) {
                    var t = [];
                    return this.setDefaultRowActions(e, t), this.matrix.survey && (t = this.matrix.survey.getUpdatedMatrixRowActions(this.matrix, e, t)), t
                }, Object.defineProperty(t.prototype, "showRemoveButtonAsIcon", {
                    get: function() {
                        return s.matrixRenderRemoveAsIcon && this.matrix.survey && "sd-root-modern" === this.matrix.survey.css.root
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setDefaultRowActions = function(e, t) {
                    var n = this.matrix;
                    this.hasRemoveRows && this.canRemoveRow(e) && (this.showRemoveButtonAsIcon ? t.push(new Et({
                        id: "remove-row",
                        iconName: "icon-delete",
                        component: "sv-action-bar-item",
                        innerCss: (new ct).append(this.matrix.cssClasses.button).append(this.matrix.cssClasses.buttonRemove).toString(),
                        location: "end",
                        showTitle: !1,
                        title: n.removeRowText,
                        enabled: !n.isInputReadOnly,
                        data: {
                            row: e,
                            question: n
                        },
                        action: function() {
                            n.removeRowUI(e)
                        }
                    })) : t.push(new Et({
                        id: "remove-row",
                        location: "end",
                        enabled: !this.matrix.isInputReadOnly,
                        component: "sv-matrix-remove-button",
                        data: {
                            row: e,
                            question: this.matrix
                        }
                    }))), e.hasPanel && t.push(new Et({
                        id: "show-detail",
                        title: this.matrix.getLocalizationString("editText"),
                        showTitle: !1,
                        location: "start",
                        component: "sv-matrix-detail-button",
                        data: {
                            row: e,
                            question: this.matrix
                        }
                    }))
                }, t.prototype.createHorizontalRow = function(e, t) {
                    var n = this.createRenderedRow(this.cssClasses);
                    if (this.allowRowsDragAndDrop) {
                        var o = this.matrix.visibleRows.indexOf(e);
                        n.cells.push(this.getRowDragCell(o))
                    }(this.addRowActionsCell(e, n, "start"), this.matrix.hasRowText) && ((s = this.createTextCell(e.locText)).row = e, n.cells.push(s), t && this.setHeaderCellWidth(null, s), s.className = (new ct).append(s.className).append(this.cssClasses.rowTextCell).append(this.cssClasses.detailRowText, e.hasPanel).toString());
                    for (var r = 0; r < e.cells.length; r++) {
                        var i = e.cells[r];
                        if (i.column.hasVisibleCell)
                            if (i.column.isShowInMultipleColumns) this.createMutlipleEditCells(n, i);
                            else {
                                var s = this.createEditCell(i);
                                n.cells.push(s), t && this.setHeaderCellWidth(i.column, s)
                            }
                    }
                    return this.addRowActionsCell(e, n, "end"), n
                }, t.prototype.addRowActionsCell = function(e, t, n) {
                    var o = this.matrix.visibleRows.indexOf(e);
                    if (this.hasActionCellInRows(n)) {
                        var r = this.getRowActionsCell(o, n);
                        if (r) t.cells.push(r);
                        else {
                            var i = new vn;
                            i.isEmpty = !0, t.cells.push(i)
                        }
                    }
                }, t.prototype.createDetailPanelRow = function(e, t) {
                    var n = this.matrix.isDesignMode,
                        o = this.createRenderedRow(this.cssClasses, !0);
                    o.row = e;
                    var r = new vn;
                    this.matrix.hasRowText && (r.colSpans = 2), r.isEmpty = !0, n || o.cells.push(r);
                    var i = null;
                    this.hasActionCellInRows("end") && ((i = new vn).isEmpty = !0);
                    var s = new vn;
                    return s.panel = e.detailPanel, s.colSpans = t.cells.length - (n ? 0 : r.colSpans) - (i ? i.colSpans : 0), s.className = this.cssClasses.detailPanelCell, o.cells.push(s), i && o.cells.push(i), "function" == typeof this.matrix.onCreateDetailPanelRenderedRowCallback && this.matrix.onCreateDetailPanelRenderedRowCallback(o), o
                }, t.prototype.buildVerticalRows = function() {
                    for (var e = this.matrix.columns, t = [], n = 0; n < e.length; n++) {
                        var o = e[n];
                        o.isVisible && o.hasVisibleCell && (o.isShowInMultipleColumns ? this.createMutlipleVerticalRows(t, o, n) : t.push(this.createVerticalRow(o, n)))
                    }
                    return this.hasActionCellInRows("end") && t.push(this.createEndVerticalActionRow()), t
                }, t.prototype.createMutlipleVerticalRows = function(e, t, n) {
                    var o = this.getMultipleColumnChoices(t);
                    if (o)
                        for (var r = 0; r < o.length; r++) e.push(this.createVerticalRow(t, n, o[r], r))
                }, t.prototype.createVerticalRow = function(e, t, n, o) {
                    void 0 === n && (n = null), void 0 === o && (o = -1);
                    var r = this.createRenderedRow(this.cssClasses);
                    if (this.matrix.showHeader) {
                        var i = n ? n.locText : e.locTitle,
                            s = this.createTextCell(i);
                        s.column = e, s.className = (new ct).append(s.className).append(this.cssClasses.rowTextCell).toString(), n || this.setRequriedToHeaderCell(e, s), r.cells.push(s)
                    }
                    for (var a = this.matrix.visibleRows, l = 0; l < a.length; l++) {
                        var u = n,
                            c = o >= 0 ? o : l,
                            p = a[l].cells[t],
                            d = n ? p.question.visibleChoices : void 0;
                        d && c < d.length && (u = d[c]);
                        var h = this.createEditCell(p, u);
                        h.item = u, h.choiceIndex = c, r.cells.push(h)
                    }
                    return this.matrix.hasTotal && r.cells.push(this.createEditCell(this.matrix.visibleTotalRow.cells[t])), r
                }, t.prototype.createEndVerticalActionRow = function() {
                    var e = this.createRenderedRow(this.cssClasses);
                    this.matrix.showHeader && e.cells.push(this.createEmptyCell());
                    for (var t = this.matrix.visibleRows, n = 0; n < t.length; n++) e.cells.push(this.getRowActionsCell(n, "end"));
                    return this.matrix.hasTotal && e.cells.push(this.createEmptyCell()), e
                }, t.prototype.createMutlipleEditCells = function(e, t, n) {
                    void 0 === n && (n = !1);
                    var o = n ? this.getMultipleColumnChoices(t.column) : t.question.visibleChoices;
                    if (o)
                        for (var r = 0; r < o.length; r++) {
                            var i = this.createEditCell(t, n ? void 0 : o[r]);
                            n || (i.choiceIndex = r), e.cells.push(i)
                        }
                }, t.prototype.createEditCell = function(e, t) {
                    void 0 === t && (t = void 0);
                    var n = new vn;
                    return n.cell = e, n.row = e.row, n.question = e.question, n.matrix = this.matrix, n.item = t, n.isOtherChoice = !!t && !!e.question && e.question.otherItem === t, n.className = n.calculateFinalClassName(this.cssClasses), n
                }, t.prototype.createMutlipleColumnsFooter = function(e, t) {
                    this.createMutlipleEditCells(e, t, !0)
                }, t.prototype.createMutlipleColumnsHeader = function(e) {
                    var t = this.getMultipleColumnChoices(e);
                    if (t)
                        for (var n = 0; n < t.length; n++) {
                            var o = this.createTextCell(t[n].locText);
                            this.setHeaderCell(e, o), this.headerRow.cells.push(o)
                        }
                }, t.prototype.getMultipleColumnChoices = function(e) {
                    var t = e.templateQuestion.choices;
                    return t && Array.isArray(t) && 0 == t.length ? this.matrix.choices : (t = e.templateQuestion.visibleChoices) && Array.isArray(t) ? t : null
                }, t.prototype.createHeaderCell = function(e) {
                    var t = e ? this.createTextCell(e.locTitle) : this.createEmptyCell();
                    t.column = e, this.setHeaderCell(e, t);
                    var n = e && "default" !== e.cellType ? e.cellType : this.matrix.cellType;
                    return t.className = (new ct).append(this.cssClasses.headerCell).append(this.cssClasses.emptyCell, !!t.isEmpty).append(this.cssClasses.cell + "--" + n).toString(), t
                }, t.prototype.setHeaderCell = function(e, t) {
                    this.setHeaderCellWidth(e, t), this.setRequriedToHeaderCell(e, t)
                }, t.prototype.setHeaderCellWidth = function(e, t) {
                    t.minWidth = null != e ? this.matrix.getColumnWidth(e) : this.matrix.getRowTitleWidth(), t.width = null != e ? e.width : this.matrix.getRowTitleWidth()
                }, t.prototype.setRequriedToHeaderCell = function(e, t) {
                    e && e.isRequired && this.matrix.survey && (t.requiredText = this.matrix.survey.requiredText)
                }, t.prototype.createRemoveRowCell = function(e) {
                    var t = new vn;
                    return t.row = e, t.isRemoveRow = this.canRemoveRow(e), this.cssClasses.cell && (t.className = this.cssClasses.cell), t
                }, t.prototype.createTextCell = function(e) {
                    var t = new vn;
                    return t.locTitle = e, e && e.strChanged(), this.cssClasses.cell && (t.className = this.cssClasses.cell), t
                }, t.prototype.createEmptyCell = function() {
                    var e = this.createTextCell(null);
                    return e.isEmpty = !0, e
                }, yn([b({
                    onPush: function(e, t, n) {
                        n.renderedRowsChangedCallback()
                    }
                })], t.prototype, "rows", void 0), t
            }(he),
            Cn = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            wn = function() {
                function e(e, t, n) {
                    this.column = e, this.row = t, this.data = n, this.questionValue = this.createQuestion(e, t, n), this.questionValue.updateCustomWidget()
                }
                return e.prototype.locStrsChanged = function() {
                    this.question.locStrsChanged()
                }, e.prototype.createQuestion = function(e, t, n) {
                    var o = n.createQuestion(this.row, this.column);
                    return o.validateValueCallback = function() {
                        return n.validateCell(t, e.name, t.value)
                    }, C.getProperties(e.getType()).forEach((function(t) {
                        var n = t.name;
                        void 0 !== e[n] && (o[n] = e[n])
                    })), o
                }, Object.defineProperty(e.prototype, "question", {
                    get: function() {
                        return this.questionValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "value", {
                    get: function() {
                        return this.question.value
                    },
                    set: function(e) {
                        this.question.value = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.runCondition = function(e, t) {
                    this.question.runCondition(e, t)
                }, e
            }(),
            Pn = function(e) {
                function t(t, n, o) {
                    var r = e.call(this, t, n, o) || this;
                    return r.column = t, r.row = n, r.data = o, r.updateCellQuestion(), r
                }
                return Cn(t, e), t.prototype.createQuestion = function(e, t, n) {
                    var o = I.createClass("expression");
                    return o.setSurveyImpl(t), o
                }, t.prototype.locStrsChanged = function() {
                    this.updateCellQuestion(), e.prototype.locStrsChanged.call(this)
                }, t.prototype.updateCellQuestion = function() {
                    this.question.locCalculation(), this.column.updateCellQuestion(this.question, null, (function(e) {
                        delete e.defaultValue
                    })), this.question.expression = this.getTotalExpression(), this.question.format = this.column.totalFormat, this.question.currency = this.column.totalCurrency, this.question.displayStyle = this.column.totalDisplayStyle, this.question.maximumFractionDigits = this.column.totalMaximumFractionDigits, this.question.minimumFractionDigits = this.column.totalMinimumFractionDigits, this.question.unlocCalculation(), this.question.runIfReadOnly = !0
                }, t.prototype.getTotalExpression = function() {
                    if (this.column.totalExpression) return this.column.totalExpression;
                    if ("none" == this.column.totalType) return "";
                    var e = this.column.totalType + "InArray";
                    return q.Instance.hasFunction(e) ? e + "({self}, '" + this.column.name + "')" : ""
                }, t
            }(wn),
            Vn = function(e) {
                function t(t, n, o) {
                    var r = e.call(this, n) || this;
                    return r.row = t, r.variableName = n, r.parentTextProcessor = o, r
                }
                return Cn(t, e), t.prototype.getParentTextProcessor = function() {
                    return this.parentTextProcessor
                }, Object.defineProperty(t.prototype, "survey", {
                    get: function() {
                        return this.row.getSurvey()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getValues = function() {
                    return this.row.value
                }, t.prototype.getQuestionByName = function(e) {
                    return this.row.getQuestionByName(e)
                }, t.prototype.onCustomProcessText = function(e) {
                    return e.name == Tn.IndexVariableName ? (e.isExists = !0, e.value = this.row.rowIndex, !0) : e.name == Tn.RowValueVariableName && (e.isExists = !0, e.value = this.row.rowName, !0)
                }, t
            }(an),
            Tn = function() {
                function e(t, n) {
                    var o = this;
                    this.isSettingValue = !1, this.detailPanelValue = null, this.cells = [], this.isCreatingDetailPanel = !1, this.data = t, this.subscribeToChanges(n), this.textPreProcessor = new Vn(this, e.RowVariableName, t ? t.getParentTextProcessor() : null), this.showHideDetailPanelClick = function() {
                        if (o.getSurvey().isDesignMode) return !0;
                        o.showHideDetailPanel()
                    }, this.idValue = e.getId()
                }
                return e.getId = function() {
                    return "srow_" + e.idCounter++
                }, Object.defineProperty(e.prototype, "id", {
                    get: function() {
                        return this.idValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "rowName", {
                    get: function() {
                        return null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "text", {
                    get: function() {
                        return this.rowName
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "value", {
                    get: function() {
                        for (var e = {}, t = this.questions, n = 0; n < t.length; n++) {
                            var o = t[n];
                            o.isEmpty() || (e[o.getValueName()] = o.value), o.comment && this.getSurvey() && this.getSurvey().storeOthersAsComment && (e[o.getValueName() + he.commentSuffix] = o.comment)
                        }
                        return e
                    },
                    set: function(e) {
                        this.isSettingValue = !0, this.subscribeToChanges(e);
                        for (var t = this.questions, n = 0; n < t.length; n++) {
                            var o = t[n],
                                r = this.getCellValue(e, o.getValueName()),
                                i = o.comment,
                                s = e ? e[o.getValueName() + he.commentSuffix] : "";
                            null == s && (s = ""), o.updateValueFromSurvey(r), (s || this.isTwoValueEquals(i, o.comment)) && o.updateCommentFromSurvey(s), o.onSurveyValueChanged(r)
                        }
                        this.isSettingValue = !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "locText", {
                    get: function() {
                        return null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "hasPanel", {
                    get: function() {
                        return !!this.data && this.data.hasDetailPanel(this)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "detailPanel", {
                    get: function() {
                        return this.detailPanelValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "detailPanelId", {
                    get: function() {
                        return this.detailPanel ? this.detailPanel.id : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isDetailPanelShowing", {
                    get: function() {
                        return !!this.data && this.data.getIsDetailPanelShowing(this)
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.setIsDetailPanelShowing = function(e) {
                    this.data && this.data.setIsDetailPanelShowing(this, e), this.onDetailPanelShowingChanged && this.onDetailPanelShowingChanged()
                }, e.prototype.showHideDetailPanel = function() {
                    this.isDetailPanelShowing ? this.hideDetailPanel() : this.showDetailPanel()
                }, e.prototype.showDetailPanel = function() {
                    this.ensureDetailPanel(), this.detailPanelValue && this.setIsDetailPanelShowing(!0)
                }, e.prototype.hideDetailPanel = function(e) {
                    void 0 === e && (e = !1), this.setIsDetailPanelShowing(!1), e && (this.detailPanelValue = null)
                }, e.prototype.ensureDetailPanel = function() {
                    if (!this.isCreatingDetailPanel && !this.detailPanelValue && this.hasPanel && this.data) {
                        this.isCreatingDetailPanel = !0, this.detailPanelValue = this.data.createRowDetailPanel(this);
                        var e = this.detailPanelValue.questions,
                            t = this.data.getRowValue(this.data.getRowIndex(this));
                        if (!a.isValueEmpty(t))
                            for (var n = 0; n < e.length; n++) {
                                var o = e[n].getValueName();
                                a.isValueEmpty(t[o]) || (e[n].value = t[o])
                            }
                        this.detailPanelValue.setSurveyImpl(this), this.isCreatingDetailPanel = !1
                    }
                }, e.prototype.getAllValues = function() {
                    return this.value
                }, e.prototype.getFilteredValues = function() {
                    var e = this.getAllValues(),
                        t = {
                            row: e
                        };
                    for (var n in e) t[n] = e[n];
                    return t
                }, e.prototype.getFilteredProperties = function() {
                    return {
                        survey: this.getSurvey(),
                        row: this
                    }
                }, e.prototype.runCondition = function(t, n) {
                    this.data && (t[e.OwnerVariableName] = this.data.value), t[e.IndexVariableName] = this.rowIndex, t[e.RowValueVariableName] = this.rowName, n || (n = {}), n[e.RowVariableName] = this;
                    for (var o = 0; o < this.cells.length; o++) t[e.RowVariableName] = this.value, this.cells[o].runCondition(t, n);
                    this.detailPanel && this.detailPanel.runCondition(t, n)
                }, e.prototype.clearValue = function() {
                    for (var e = this.questions, t = 0; t < e.length; t++) e[t].clearValue()
                }, e.prototype.onAnyValueChanged = function(e) {
                    for (var t = this.questions, n = 0; n < t.length; n++) t[n].onAnyValueChanged(e)
                }, e.prototype.getDataValueCore = function(e, t) {
                    var n = this.getSurvey();
                    return n ? n.getDataValueCore(e, t) : e[t]
                }, e.prototype.getValue = function(e) {
                    var t = this.getQuestionByName(e);
                    return t ? t.value : null
                }, e.prototype.setValue = function(e, t) {
                    this.setValueCore(e, t, !1)
                }, e.prototype.getVariable = function(e) {}, e.prototype.setVariable = function(e, t) {}, e.prototype.getComment = function(e) {
                    var t = this.getQuestionByName(e);
                    return t ? t.comment : ""
                }, e.prototype.setComment = function(e, t, n) {
                    this.setValueCore(e, t, !0)
                }, e.prototype.setValueCore = function(t, n, o) {
                    if (!this.isSettingValue) {
                        this.updateQuestionsValue(t, n, o);
                        var r = this.value,
                            i = o ? t + he.commentSuffix : t,
                            s = n,
                            a = this.getQuestionByName(t),
                            l = this.data.onRowChanging(this, i, r);
                        if (a && !this.isTwoValueEquals(l, s) && (this.isSettingValue = !0, o ? a.comment = l : a.value = l, this.isSettingValue = !1, r = this.value), !this.data.isValidateOnValueChanging || !this.hasQuestonError(a)) {
                            var u = null == n && !a || o && !n && !!a && a.autoOtherMode;
                            this.data.onRowChanged(this, i, r, u), this.onAnyValueChanged(e.RowVariableName)
                        }
                    }
                }, e.prototype.updateQuestionsValue = function(e, t, n) {
                    if (this.detailPanel) {
                        var o = this.getQuestionByColumnName(e),
                            r = this.detailPanel.getQuestionByName(e);
                        if (o && r) {
                            var i = this.isTwoValueEquals(t, n ? o.comment : o.value) ? r : o;
                            this.isSettingValue = !0, n ? i.comment = t : i.value = t, this.isSettingValue = !1
                        }
                    }
                }, e.prototype.hasQuestonError = function(e) {
                    if (!e) return !1;
                    if (e.hasErrors(!0, {
                            isOnValueChanged: !this.data.isValidateOnValueChanging
                        })) return !0;
                    if (e.isEmpty()) return !1;
                    var t = this.getCellByColumnName(e.name);
                    return !!(t && t.column && t.column.isUnique) && this.data.checkIfValueInRowDuplicated(this, e)
                }, Object.defineProperty(e.prototype, "isEmpty", {
                    get: function() {
                        var e = this.value;
                        if (a.isValueEmpty(e)) return !0;
                        for (var t in e)
                            if (void 0 !== e[t] && null !== e[t]) return !1;
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getQuestionByColumn = function(e) {
                    var t = this.getCellByColumn(e);
                    return t ? t.question : null
                }, e.prototype.getCellByColumn = function(e) {
                    for (var t = 0; t < this.cells.length; t++)
                        if (this.cells[t].column == e) return this.cells[t];
                    return null
                }, e.prototype.getCellByColumnName = function(e) {
                    for (var t = 0; t < this.cells.length; t++)
                        if (this.cells[t].column.name == e) return this.cells[t];
                    return null
                }, e.prototype.getQuestionByColumnName = function(e) {
                    var t = this.getCellByColumnName(e);
                    return t ? t.question : null
                }, Object.defineProperty(e.prototype, "questions", {
                    get: function() {
                        for (var e = [], t = 0; t < this.cells.length; t++) e.push(this.cells[t].question);
                        var n = this.detailPanel ? this.detailPanel.questions : [];
                        for (t = 0; t < n.length; t++) e.push(n[t]);
                        return e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getQuestionByName = function(e) {
                    var t = this.getQuestionByColumnName(e);
                    return t || (this.detailPanel ? this.detailPanel.getQuestionByName(e) : null)
                }, e.prototype.getQuestionsByName = function(e) {
                    var t = [],
                        n = this.getQuestionByColumnName(e);
                    return n && t.push(n), this.detailPanel && (n = this.detailPanel.getQuestionByName(e)) && t.push(n), t
                }, e.prototype.getSharedQuestionByName = function(e) {
                    return this.data ? this.data.getSharedQuestionByName(e, this) : null
                }, e.prototype.clearIncorrectValues = function(e) {
                    for (var t in e) {
                        var n = this.getQuestionByName(t);
                        if (n) {
                            var o = n.value;
                            n.clearIncorrectValues(), this.isTwoValueEquals(o, n.value) || this.setValue(t, n.value)
                        } else !this.getSharedQuestionByName(t) && t.indexOf(s.matrixTotalValuePostFix) < 0 && this.setValue(t, null)
                    }
                }, e.prototype.getLocale = function() {
                    return this.data ? this.data.getLocale() : ""
                }, e.prototype.getMarkdownHtml = function(e, t) {
                    return this.data ? this.data.getMarkdownHtml(e, t) : void 0
                }, e.prototype.getRenderer = function(e) {
                    return this.data ? this.data.getRenderer(e) : null
                }, e.prototype.getRendererContext = function(e) {
                    return this.data ? this.data.getRendererContext(e) : e
                }, e.prototype.getProcessedText = function(e) {
                    return this.data ? this.data.getProcessedText(e) : e
                }, e.prototype.locStrsChanged = function() {
                    for (var e = 0; e < this.cells.length; e++) this.cells[e].locStrsChanged();
                    this.detailPanel && this.detailPanel.locStrsChanged()
                }, e.prototype.updateCellQuestionOnColumnChanged = function(e, t, n) {
                    var o = this.getCellByColumn(e);
                    o && this.updateCellOnColumnChanged(o, t, n)
                }, e.prototype.updateCellQuestionOnColumnItemValueChanged = function(e, t, n, o, r, i) {
                    var s = this.getCellByColumn(e);
                    s && this.updateCellOnColumnItemValueChanged(s, t, n, o, r, i)
                }, e.prototype.onQuestionReadOnlyChanged = function(e) {
                    for (var t = this.questions, n = 0; n < t.length; n++) {
                        var o = t[n];
                        o.setPropertyValue("isReadOnly", o.isReadOnly)
                    }
                    this.detailPanel && (this.detailPanel.readOnly = e)
                }, e.prototype.hasErrors = function(e, t, n) {
                    var o = !1,
                        r = this.cells;
                    if (!r) return o;
                    for (var i = 0; i < r.length; i++)
                        if (r[i]) {
                            var s = r[i].question;
                            s && s.visible && (s.onCompletedAsyncValidators = function(e) {
                                n()
                            }, t && !0 === t.isOnValueChanged && s.isEmpty() || (o = s.hasErrors(e, t) || o))
                        } if (this.hasPanel) {
                        this.ensureDetailPanel();
                        var a = this.detailPanel.hasErrors(e, !1, t);
                        !t.hideErroredPanel && a && e && (t.isSingleDetailPanel && (t.hideErroredPanel = !0), this.showDetailPanel()), o = a || o
                    }
                    return o
                }, e.prototype.updateCellOnColumnChanged = function(e, t, n) {
                    e.question[t] = n
                }, e.prototype.updateCellOnColumnItemValueChanged = function(e, t, n, o, r, i) {
                    var s = e.question[t];
                    if (Array.isArray(s)) {
                        var a = "value" === o ? i : n.value,
                            l = ze.getItemByValue(s, a);
                        l && (l[o] = r)
                    }
                }, e.prototype.buildCells = function(e) {
                    this.isSettingValue = !0;
                    for (var t = this.data.columns, n = 0; n < t.length; n++) {
                        var o = t[n];
                        if (o.isVisible) {
                            var r = this.createCell(o);
                            this.cells.push(r);
                            var i = this.getCellValue(e, o.name);
                            if (!a.isValueEmpty(i)) {
                                r.question.value = i;
                                var s = o.name + he.commentSuffix;
                                e && !a.isValueEmpty(e[s]) && (r.question.comment = e[s])
                            }
                        }
                    }
                    this.isSettingValue = !1
                }, e.prototype.isTwoValueEquals = function(e, t) {
                    return a.isTwoValueEquals(e, t, !1, !0, !1)
                }, e.prototype.getCellValue = function(e, t) {
                    return this.editingObj ? I.getObjPropertyValue(this.editingObj, t) : e ? e[t] : void 0
                }, e.prototype.createCell = function(e) {
                    return new wn(e, this, this.data)
                }, e.prototype.getSurveyData = function() {
                    return this
                }, e.prototype.getSurvey = function() {
                    return this.data ? this.data.getSurvey() : null
                }, e.prototype.getTextProcessor = function() {
                    return this.textPreProcessor
                }, Object.defineProperty(e.prototype, "rowIndex", {
                    get: function() {
                        return this.data ? this.data.getRowIndex(this) + 1 : -1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "editingObj", {
                    get: function() {
                        return this.editingObjValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.dispose = function() {
                    this.editingObj && (this.editingObj.onPropertyChanged.remove(this.onEditingObjPropertyChanged), this.editingObjValue = null)
                }, e.prototype.subscribeToChanges = function(e) {
                    var t = this;
                    e && e.getType && e.onPropertyChanged && e !== this.editingObj && (this.editingObjValue = e, this.onEditingObjPropertyChanged = function(e, n) {
                        t.updateOnSetValue(n.name, n.newValue)
                    }, this.editingObj.onPropertyChanged.add(this.onEditingObjPropertyChanged))
                }, e.prototype.updateOnSetValue = function(e, t) {
                    this.isSettingValue = !0;
                    for (var n = this.getQuestionsByName(e), o = 0; o < n.length; o++) n[o].value = t;
                    this.isSettingValue = !1
                }, e.RowVariableName = "row", e.OwnerVariableName = "self", e.IndexVariableName = "rowIndex", e.RowValueVariableName = "rowValue", e.idCounter = 1, e
            }(),
            kn = function(e) {
                function t(t) {
                    var n = e.call(this, t, null) || this;
                    return n.buildCells(null), n
                }
                return Cn(t, e), t.prototype.createCell = function(e) {
                    return new Pn(e, this, this.data)
                }, t.prototype.setValue = function(e, t) {
                    this.data && !this.isSettingValue && this.data.onTotalValueChanged()
                }, t.prototype.runCondition = function(t, n) {
                    var o, r = 0;
                    do {
                        o = a.getUnbindValue(this.value), e.prototype.runCondition.call(this, t, n), r++
                    } while (!a.isTwoValueEquals(o, this.value) && r < 3)
                }, t.prototype.updateCellOnColumnChanged = function(e, t, n) {
                    e.updateCellQuestion()
                }, t
            }(Tn),
            Sn = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.isRowChanging = !1, n.lockResetRenderedTable = !1, n.isDoingonAnyValueChanged = !1, n.createItemValues("choices"), n.createLocalizableString("placeholder", n, !1, !0), n.createLocalizableString("keyDuplicationError", n, !1, !0), n.detailPanelValue = n.createNewDetailPanel(), n.detailPanel.selectedElementInDesign = n, n.detailPanel.renderWidth = "100%", n.detailPanel.isInteractiveDesignElement = !1, n.detailPanel.showTitle = !1, n.registerPropertyChangedHandlers(["columns", "cellType"], (function() {
                        n.updateColumnsAndRows()
                    })), n.registerPropertyChangedHandlers(["placeholder", "columnColCount", "rowTitleWidth", "choices"], (function() {
                        n.clearRowsAndResetRenderedTable()
                    })), n.registerPropertyChangedHandlers(["columnLayout", "addRowLocation", "hideColumnsIfEmpty", "showHeader", "minRowCount", "isReadOnly", "rowCount", "hasFooter", "detailPanelMode"], (function() {
                        n.resetRenderedTable()
                    })), n.registerPropertyChangedHandlers(["isMobile"], (function() {
                        "vertical" === n.columnLayout && n.resetRenderedTable()
                    })), n
                }
                return Cn(t, e), Object.defineProperty(t, "defaultCellType", {
                    get: function() {
                        return s.matrixDefaultCellType
                    },
                    set: function(e) {
                        s.matrixDefaultCellType = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.addDefaultColumns = function(e) {
                    for (var t = ln.DefaultColums, n = 0; n < t.length; n++) e.addColumn(t[n])
                }, t.prototype.createColumnValues = function() {
                    var e = this;
                    return this.createNewArray("columns", (function(t) {
                        t.colOwner = e, e.onAddColumn && e.onAddColumn(t)
                    }), (function(t) {
                        t.colOwner = null, e.onRemoveColumn && e.onRemoveColumn(t)
                    }))
                }, t.prototype.getType = function() {
                    return "matrixdropdownbase"
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.clearGeneratedRows()
                }, Object.defineProperty(t.prototype, "hasSingleInput", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRowsDynamic", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isUpdateLocked", {
                    get: function() {
                        return this.isLoadingFromJson || this.isUpdating
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.beginUpdate = function() {
                    this.isUpdating = !0
                }, t.prototype.endUpdate = function() {
                    this.isUpdating = !1, this.updateColumnsAndRows()
                }, t.prototype.updateColumnsAndRows = function() {
                    this.updateColumnsIndexes(this.columns), this.updateColumnsCellType(), this.generatedTotalRow = null, this.clearRowsAndResetRenderedTable()
                }, t.prototype.itemValuePropertyChanged = function(t, n, o, r) {
                    e.prototype.itemValuePropertyChanged.call(this, t, n, o, r), "choices" === t.ownerPropertyName && this.clearRowsAndResetRenderedTable()
                }, Object.defineProperty(t.prototype, "columnLayout", {
                    get: function() {
                        return this.getPropertyValue("columnLayout")
                    },
                    set: function(e) {
                        this.setPropertyValue("columnLayout", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "columnsLocation", {
                    get: function() {
                        return this.columnLayout
                    },
                    set: function(e) {
                        this.columnLayout = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isColumnLayoutHorizontal", {
                    get: function() {
                        return !!this.isMobile || "vertical" != this.columnLayout
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isUniqueCaseSensitive", {
                    get: function() {
                        return void 0 !== this.isUniqueCaseSensitiveValue ? this.isUniqueCaseSensitiveValue : s.comparator.caseSensitive
                    },
                    set: function(e) {
                        this.isUniqueCaseSensitiveValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "detailPanelMode", {
                    get: function() {
                        return this.getPropertyValue("detailPanelMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("detailPanelMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "detailPanel", {
                    get: function() {
                        return this.detailPanelValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getPanel = function() {
                    return this.detailPanel
                }, Object.defineProperty(t.prototype, "detailElements", {
                    get: function() {
                        return this.detailPanel.elements
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createNewDetailPanel = function() {
                    return I.createClass("panel")
                }, Object.defineProperty(t.prototype, "hasRowText", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getFooterText = function() {
                    return null
                }, Object.defineProperty(t.prototype, "canAddRow", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "canRemoveRows", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canRemoveRow = function(e) {
                    return !0
                }, t.prototype.onPointerDown = function(e, t) {}, t.prototype.onRowsChanged = function() {
                    this.resetRenderedTable(), e.prototype.onRowsChanged.call(this)
                }, t.prototype.onStartRowAddingRemoving = function() {
                    this.lockResetRenderedTable = !0, this.setValueChangedDirectly()
                }, t.prototype.onEndRowAdding = function() {
                    this.lockResetRenderedTable = !1, this.renderedTable && (this.renderedTable.isRequireReset() ? this.resetRenderedTable() : this.renderedTable.onAddedRow())
                }, t.prototype.onEndRowRemoving = function(e) {
                    this.lockResetRenderedTable = !1, this.renderedTable.isRequireReset() ? this.resetRenderedTable() : e && this.renderedTable.onRemovedRow(e)
                }, Object.defineProperty(t.prototype, "renderedTableValue", {
                    get: function() {
                        return this.getPropertyValue("renderedTable", null)
                    },
                    set: function(e) {
                        this.setPropertyValue("renderedTable", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.clearRowsAndResetRenderedTable = function() {
                    this.clearGeneratedRows(), this.resetRenderedTable(), this.fireCallback(this.columnsChangedCallback)
                }, t.prototype.resetRenderedTable = function() {
                    this.lockResetRenderedTable || this.isUpdateLocked || (this.renderedTableValue = null, this.fireCallback(this.onRenderedTableResetCallback))
                }, t.prototype.clearGeneratedRows = function() {
                    if (this.generatedVisibleRows) {
                        for (var t = 0; t < this.generatedVisibleRows.length; t++) this.generatedVisibleRows[t].dispose();
                        e.prototype.clearGeneratedRows.call(this)
                    }
                }, Object.defineProperty(t.prototype, "renderedTable", {
                    get: function() {
                        return this.renderedTableValue || (this.renderedTableValue = this.createRenderedTable(), this.onRenderedTableCreatedCallback && this.onRenderedTableCreatedCallback(this.renderedTableValue)), this.renderedTableValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createRenderedTable = function() {
                    return new xn(this)
                }, t.prototype.onMatrixRowCreated = function(e) {
                    if (this.survey)
                        for (var t = {
                                rowValue: e.value,
                                row: e,
                                column: null,
                                columnName: null,
                                cell: null,
                                cellQuestion: null,
                                value: null
                            }, n = 0; n < this.visibleColumns.length; n++) {
                            t.column = this.visibleColumns[n], t.columnName = t.column.name;
                            var o = e.cells[n];
                            t.cell = o, t.cellQuestion = o.question, t.value = o.value, this.onCellCreatedCallback && this.onCellCreatedCallback(t), this.survey.matrixCellCreated(this, t)
                        }
                }, Object.defineProperty(t.prototype, "cellType", {
                    get: function() {
                        return this.getPropertyValue("cellType", s.matrixDefaultCellType)
                    },
                    set: function(e) {
                        e = e.toLowerCase(), this.setPropertyValue("cellType", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateColumnsCellType = function() {
                    for (var e = 0; e < this.columns.length; e++) this.columns[e].defaultCellTypeChanged()
                }, t.prototype.updateColumnsIndexes = function(e) {
                    for (var t = 0; t < e.length; t++) e[t].setIndex(t)
                }, Object.defineProperty(t.prototype, "columnColCount", {
                    get: function() {
                        return this.getPropertyValue("columnColCount")
                    },
                    set: function(e) {
                        e < 0 || e > 4 || this.setPropertyValue("columnColCount", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "horizontalScroll", {
                    get: function() {
                        return this.getPropertyValue("horizontalScroll", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("horizontalScroll", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowAdaptiveActions", {
                    get: function() {
                        return this.getPropertyValue("allowAdaptiveActions")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowAdaptiveActions", e), this.detailPanel && (this.detailPanel.allowAdaptiveActions = e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getRequiredText = function() {
                    return this.survey ? this.survey.requiredText : ""
                }, t.prototype.hasChoices = function() {
                    return this.choices.length > 0
                }, t.prototype.onColumnPropertyChanged = function(e, t, n) {
                    if (this.updateHasFooter(), this.generatedVisibleRows) {
                        for (var o = 0; o < this.generatedVisibleRows.length; o++) this.generatedVisibleRows[o].updateCellQuestionOnColumnChanged(e, t, n);
                        this.generatedTotalRow && this.generatedTotalRow.updateCellQuestionOnColumnChanged(e, t, n), this.onColumnsChanged(), "isRequired" == t && this.resetRenderedTable()
                    }
                }, t.prototype.onColumnItemValuePropertyChanged = function(e, t, n, o, r, i) {
                    if (this.generatedVisibleRows)
                        for (var s = 0; s < this.generatedVisibleRows.length; s++) this.generatedVisibleRows[s].updateCellQuestionOnColumnItemValueChanged(e, t, n, o, r, i)
                }, t.prototype.onShowInMultipleColumnsChanged = function(e) {
                    this.clearGeneratedRows(), this.resetRenderedTable()
                }, t.prototype.onColumnCellTypeChanged = function(e) {
                    this.clearGeneratedRows(), this.resetRenderedTable()
                }, t.prototype.getRowTitleWidth = function() {
                    return ""
                }, Object.defineProperty(t.prototype, "hasFooter", {
                    get: function() {
                        return this.getPropertyValue("hasFooter", !1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getAddRowLocation = function() {
                    return "default"
                }, t.prototype.getShowColumnsIfEmpty = function() {
                    return !1
                }, t.prototype.updateShowTableAndAddRow = function() {
                    this.renderedTable && this.renderedTable.updateShowTableAndAddRow()
                }, t.prototype.updateHasFooter = function() {
                    this.setPropertyValue("hasFooter", this.hasTotal)
                }, Object.defineProperty(t.prototype, "hasTotal", {
                    get: function() {
                        for (var e = 0; e < this.columns.length; e++)
                            if (this.columns[e].hasTotal) return !0;
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getCellType = function() {
                    return this.cellType
                }, t.prototype.getCustomCellType = function(e, t, n) {
                    if (!this.survey) return n;
                    var o = {
                        rowValue: t.value,
                        row: t,
                        column: e,
                        columnName: e.name,
                        cellType: n
                    };
                    return this.survey.matrixCellCreating(this, o), o.cellType
                }, t.prototype.getConditionJson = function(t, n) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), !n) return e.prototype.getConditionJson.call(this);
                    for (var o = "", r = n.length - 1; r >= 0 && "." != n[r]; r--) o = n[r] + o;
                    var i = this.getColumnByName(o);
                    if (!i) return null;
                    var s = i.createCellQuestion(null);
                    return s ? s.getConditionJson(t) : null
                }, t.prototype.clearIncorrectValues = function() {
                    var e = this.visibleRows;
                    if (e)
                        for (var t = 0; t < e.length; t++) e[t].clearIncorrectValues(this.getRowValue(t))
                }, t.prototype.clearErrors = function() {
                    e.prototype.clearErrors.call(this), this.runFuncForCellQuestions((function(e) {
                        e.clearErrors()
                    }))
                }, t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this), this.runFuncForCellQuestions((function(e) {
                        e.localeChanged()
                    }))
                }, t.prototype.runFuncForCellQuestions = function(e) {
                    if (this.generatedVisibleRows)
                        for (var t = 0; t < this.generatedVisibleRows.length; t++)
                            for (var n = this.generatedVisibleRows[t], o = 0; o < n.cells.length; o++) e(n.cells[o].question)
                }, t.prototype.runCondition = function(t, n) {
                    e.prototype.runCondition.call(this, t, n);
                    var o, r = 0;
                    do {
                        o = a.getUnbindValue(this.totalValue), this.runCellsCondition(t, n), this.runTotalsCondition(t, n), r++
                    } while (!a.isTwoValueEquals(o, this.totalValue) && r < 3)
                }, t.prototype.shouldRunColumnExpression = function() {
                    return !1
                }, t.prototype.runCellsCondition = function(e, t) {
                    if (this.generatedVisibleRows) {
                        for (var n = this.getRowConditionValues(e), o = this.generatedVisibleRows, r = 0; r < o.length; r++) o[r].runCondition(n, t);
                        this.checkColumnsVisibility(), this.checkColumnsRenderedRequired()
                    }
                }, t.prototype.checkColumnsVisibility = function() {
                    for (var e = !1, t = 0; t < this.visibleColumns.length; t++) this.visibleColumns[t].visibleIf && (e = this.isColumnVisibilityChanged(this.visibleColumns[t]) || e);
                    e && this.resetRenderedTable()
                }, t.prototype.checkColumnsRenderedRequired = function() {
                    for (var e = this.generatedVisibleRows, t = 0; t < this.visibleColumns.length; t++) {
                        var n = this.visibleColumns[t];
                        if (n.requiredIf) {
                            for (var o = e.length > 0, r = 0; r < e.length; r++)
                                if (!e[r].cells[t].question.isRequired) {
                                    o = !1;
                                    break
                                } n.updateIsRenderedRequired(o)
                        }
                    }
                }, t.prototype.isColumnVisibilityChanged = function(e) {
                    for (var t = e.hasVisibleCell, n = !1, o = this.generatedVisibleRows, r = 0; r < o.length; r++) {
                        var i = o[r].cells[e.index];
                        if (i && i.question && i.question.isVisible) {
                            n = !0;
                            break
                        }
                    }
                    return t != n && (e.hasVisibleCell = n), t != n
                }, t.prototype.runTotalsCondition = function(e, t) {
                    this.generatedTotalRow && this.generatedTotalRow.runCondition(this.getRowConditionValues(e), t)
                }, t.prototype.getRowConditionValues = function(e) {
                    var t = e;
                    t || (t = {});
                    var n = {};
                    return this.isValueEmpty(this.totalValue) || (n = JSON.parse(JSON.stringify(this.totalValue))), t.row = {}, t.totalRow = n, t
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this);
                    for (var t = this.columns, n = 0; n < t.length; n++) t[n].locStrsChanged();
                    var o = this.generatedVisibleRows;
                    if (o) {
                        for (n = 0; n < o.length; n++) o[n].locStrsChanged();
                        this.generatedTotalRow && this.generatedTotalRow.locStrsChanged()
                    }
                }, t.prototype.getColumnByName = function(e) {
                    for (var t = 0; t < this.columns.length; t++)
                        if (this.columns[t].name == e) return this.columns[t];
                    return null
                }, t.prototype.getColumnName = function(e) {
                    return this.getColumnByName(e)
                }, t.prototype.getColumnWidth = function(e) {
                    return e.minWidth ? e.minWidth : this.columnMinWidth
                }, Object.defineProperty(t.prototype, "choices", {
                    get: function() {
                        return this.getPropertyValue("choices")
                    },
                    set: function(e) {
                        this.setPropertyValue("choices", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "placeholder", {
                    get: function() {
                        return this.getLocalizableStringText("placeholder")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("placeholder", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPlaceholder", {
                    get: function() {
                        return this.getLocalizableString("placeholder")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "optionsCaption", {
                    get: function() {
                        return this.placeholder
                    },
                    set: function(e) {
                        this.placeholder = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "keyDuplicationError", {
                    get: function() {
                        return this.getLocalizableStringText("keyDuplicationError")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("keyDuplicationError", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locKeyDuplicationError", {
                    get: function() {
                        return this.getLocalizableString("keyDuplicationError")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "storeOthersAsComment", {
                    get: function() {
                        return !!this.survey && this.survey.storeOthersAsComment
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.addColumn = function(e, t) {
                    void 0 === t && (t = null);
                    var n = new mn(e, t);
                    return this.columns.push(n), n
                }, t.prototype.getVisibleRows = function() {
                    var e = this;
                    return this.isUpdateLocked ? null : (this.generatedVisibleRows || (this.generatedVisibleRows = this.generateRows(), this.generatedVisibleRows.forEach((function(t) {
                        return e.onMatrixRowCreated(t)
                    })), this.data && this.runCellsCondition(this.data.getFilteredValues(), this.data.getFilteredProperties()), this.updateValueOnRowsGeneration(this.generatedVisibleRows), this.updateIsAnswered()), this.generatedVisibleRows)
                }, t.prototype.updateValueOnRowsGeneration = function(e) {
                    for (var t = this.createNewValue(!0), n = this.createNewValue(), o = 0; o < e.length; o++) {
                        var r = e[o];
                        if (!r.editingObj) {
                            var i = this.getRowValue(o),
                                s = r.value;
                            this.isTwoValueEquals(i, s) || (n = this.getNewValueOnRowChanged(r, "", s, !1, n).value)
                        }
                    }
                    this.isTwoValueEquals(t, n) || (this.isRowChanging = !0, this.setNewValue(n), this.isRowChanging = !1)
                }, Object.defineProperty(t.prototype, "totalValue", {
                    get: function() {
                        return this.hasTotal && this.visibleTotalRow ? this.visibleTotalRow.value : {}
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getVisibleTotalRow = function() {
                    if (this.isUpdateLocked) return null;
                    if (this.hasTotal) {
                        if (!this.generatedTotalRow && (this.generatedTotalRow = this.generateTotalRow(), this.data)) {
                            var e = {
                                survey: this.survey
                            };
                            this.runTotalsCondition(this.data.getAllValues(), e)
                        }
                    } else this.generatedTotalRow = null;
                    return this.generatedTotalRow
                }, Object.defineProperty(t.prototype, "visibleTotalRow", {
                    get: function() {
                        return this.getVisibleTotalRow()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onSurveyLoad = function() {
                    e.prototype.onSurveyLoad.call(this), this.updateColumnsIndexes(this.columns), this.clearGeneratedRows(), this.generatedTotalRow = null, this.updateHasFooter()
                }, t.prototype.getRowValue = function(e) {
                    if (e < 0) return null;
                    var t = this.visibleRows;
                    if (e >= t.length) return null;
                    var n = this.createNewValue();
                    return this.getRowValueCore(t[e], n)
                }, t.prototype.checkIfValueInRowDuplicated = function(e, t) {
                    if (!this.generatedVisibleRows) return !1;
                    for (var n = !1, o = 0; o < this.generatedVisibleRows.length; o++) {
                        var r = this.generatedVisibleRows[o];
                        if (e !== r && a.isTwoValueEquals(r.getValue(t.name), t.value, !0, this.isUniqueCaseSensitive)) {
                            n = !0;
                            break
                        }
                    }
                    return n ? this.addDuplicationError(t) : t.clearErrors(), n
                }, t.prototype.setRowValue = function(e, t) {
                    if (e < 0) return null;
                    var n = this.visibleRows;
                    if (e >= n.length) return null;
                    n[e].value = t, this.onRowChanged(n[e], "", t, !1)
                }, t.prototype.generateRows = function() {
                    return null
                }, t.prototype.generateTotalRow = function() {
                    return new kn(this)
                }, t.prototype.createNewValue = function(e) {
                    void 0 === e && (e = !1);
                    var t = this.value ? this.createValueCopy() : {};
                    return e && this.isMatrixValueEmpty(t) ? null : t
                }, t.prototype.getRowValueCore = function(e, t, n) {
                    void 0 === n && (n = !1);
                    var o = t && t[e.rowName] ? t[e.rowName] : null;
                    return !o && n && (o = {}, t && (t[e.rowName] = o)), o
                }, t.prototype.getRowObj = function(e) {
                    var t = this.getRowValueCore(e, this.value);
                    return t && t.getType ? t : null
                }, t.prototype.getRowDisplayValue = function(e, t, n) {
                    if (!n) return n;
                    if (t.editingObj) return n;
                    for (var o = Object.keys(n), r = 0; r < o.length; r++) {
                        var i = o[r],
                            s = t.getQuestionByName(i);
                        if (s || (s = this.getSharedQuestionByName(i, t)), s) {
                            var a = s.getDisplayValue(e, n[i]);
                            e && s.title && s.title !== i ? (n[s.title] = a, delete n[i]) : n[i] = a
                        }
                    }
                    return n
                }, t.prototype.getPlainData = function(t) {
                    var n = this;
                    void 0 === t && (t = {
                        includeEmpty: !0
                    });
                    var o = e.prototype.getPlainData.call(this, t);
                    return o && (o.isNode = !0, o.data = this.visibleRows.map((function(e) {
                        var o = {
                            name: e.rowName,
                            title: e.text,
                            value: e.value,
                            displayValue: n.getRowDisplayValue(!1, e, e.value),
                            getString: function(e) {
                                return "object" == typeof e ? JSON.stringify(e) : e
                            },
                            isNode: !0,
                            data: e.cells.map((function(e) {
                                return e.question.getPlainData(t)
                            })).filter((function(e) {
                                return !!e
                            }))
                        };
                        return (t.calculations || []).forEach((function(t) {
                            o[t.propertyName] = e[t.propertyName]
                        })), o
                    }))), o
                }, t.prototype.addConditionObjectsByContext = function(e, t) {
                    var n = !!t && (!0 === t || this.columns.indexOf(t) > -1),
                        o = this.getConditionObjectsRowIndeces();
                    n && o.push(-1);
                    for (var r = 0; r < o.length; r++) {
                        var i = o[r],
                            s = i > -1 ? this.getConditionObjectRowName(i) : "row";
                        if (s)
                            for (var a = i > -1 ? this.getConditionObjectRowText(i) : "row", l = i > -1 || !0 === t, u = l && -1 === i ? "." : "", c = (l ? this.getValueName() : "") + u + s + ".", p = (l ? this.processedTitle : "") + u + a + ".", d = 0; d < this.columns.length; d++) {
                                var h = this.columns[d];
                                if (-1 !== i || t !== h) {
                                    var f = {
                                        name: c + h.name,
                                        text: p + h.fullTitle,
                                        question: this
                                    }; - 1 === i && !0 === t && (f.context = this), e.push(f)
                                }
                            }
                    }
                }, t.prototype.getConditionObjectRowName = function(e) {
                    return ""
                }, t.prototype.getConditionObjectRowText = function(e) {
                    return this.getConditionObjectRowName(e)
                }, t.prototype.getConditionObjectsRowIndeces = function() {
                    return []
                }, t.prototype.getProgressInfo = function() {
                    if (this.generatedVisibleRows) return jt.getProgressInfoByElements(this.getCellQuestions(), this.isRequired);
                    var e = he.createProgressInfo();
                    return this.updateProgressInfoByValues(e), 0 === e.requiredQuestionCount && this.isRequired && (e.requiredQuestionCount = 1, e.requiredAnsweredQuestionCount = this.isEmpty() ? 0 : 1), e
                }, t.prototype.updateProgressInfoByValues = function(e) {}, t.prototype.updateProgressInfoByRow = function(e, t) {
                    for (var n = 0; n < this.columns.length; n++) {
                        var o = this.columns[n];
                        if (o.templateQuestion.hasInput) {
                            e.questionCount += 1, e.requiredQuestionCount += o.isRequired;
                            var r = !a.isValueEmpty(t[o.name]);
                            e.answeredQuestionCount += r ? 1 : 0, e.requiredAnsweredQuestionCount += r && o.isRequired ? 1 : 0
                        }
                    }
                }, t.prototype.getCellQuestions = function() {
                    var e = [];
                    return this.runFuncForCellQuestions((function(t) {
                        e.push(t)
                    })), e
                }, t.prototype.onBeforeValueChanged = function(e) {}, t.prototype.onSetQuestionValue = function() {
                    if (!this.isRowChanging && (this.onBeforeValueChanged(this.value), this.generatedVisibleRows && 0 != this.generatedVisibleRows.length)) {
                        this.isRowChanging = !0;
                        for (var e = this.createNewValue(), t = 0; t < this.generatedVisibleRows.length; t++) {
                            var n = this.generatedVisibleRows[t];
                            this.generatedVisibleRows[t].value = this.getRowValueCore(n, e)
                        }
                        this.isRowChanging = !1
                    }
                }, t.prototype.setQuestionValue = function(t) {
                    e.prototype.setQuestionValue.call(this, t, !1), this.onSetQuestionValue(), this.updateIsAnswered()
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    var e = this.generatedVisibleRows;
                    if (e || (e = this.visibleRows), !e) return !0;
                    for (var t = 0; t < e.length; t++) {
                        var n = this.generatedVisibleRows[t].cells;
                        if (n)
                            for (var o = 0; o < n.length; o++) {
                                var r = n[o].question;
                                if (r && (!r.supportGoNextPageAutomatic() || !r.value)) return !1
                            }
                    }
                    return !0
                }, t.prototype.getContainsErrors = function() {
                    return e.prototype.getContainsErrors.call(this) || this.checkForAnswersOrErrors((function(e) {
                        return e.containsErrors
                    }), !1)
                }, t.prototype.getIsAnswered = function() {
                    return e.prototype.getIsAnswered.call(this) && this.checkForAnswersOrErrors((function(e) {
                        return e.isAnswered
                    }), !0)
                }, t.prototype.checkForAnswersOrErrors = function(e, t) {
                    void 0 === t && (t = !1);
                    var n = this.generatedVisibleRows;
                    if (!n) return !1;
                    for (var o = 0; o < n.length; o++) {
                        var r = n[o].cells;
                        if (r)
                            for (var i = 0; i < r.length; i++)
                                if (r[i]) {
                                    var s = r[i].question;
                                    if (s && s.isVisible)
                                        if (e(s)) {
                                            if (!t) return !0
                                        } else if (t) return !1
                                }
                    }
                    return !!t
                }, t.prototype.hasErrors = function(t, n) {
                    void 0 === t && (t = !0), void 0 === n && (n = null);
                    var o = this.hasErrorInRows(t, n),
                        r = this.isValueDuplicated();
                    return e.prototype.hasErrors.call(this, t, n) || o || r
                }, t.prototype.getIsRunningValidators = function() {
                    if (e.prototype.getIsRunningValidators.call(this)) return !0;
                    if (!this.generatedVisibleRows) return !1;
                    for (var t = 0; t < this.generatedVisibleRows.length; t++) {
                        var n = this.generatedVisibleRows[t].cells;
                        if (n)
                            for (var o = 0; o < n.length; o++)
                                if (n[o]) {
                                    var r = n[o].question;
                                    if (r && r.isRunningValidators) return !0
                                }
                    }
                    return !1
                }, t.prototype.getAllErrors = function() {
                    var t = e.prototype.getAllErrors.call(this),
                        n = this.generatedVisibleRows;
                    if (null === n) return t;
                    for (var o = 0; o < n.length; o++)
                        for (var r = n[o], i = 0; i < r.cells.length; i++) {
                            var s = r.cells[i].question.getAllErrors();
                            s && s.length > 0 && (t = t.concat(s))
                        }
                    return t
                }, t.prototype.hasErrorInRows = function(e, t) {
                    var n = this,
                        o = this.generatedVisibleRows;
                    this.generatedVisibleRows || (o = this.visibleRows);
                    var r = !1;
                    if (t || (t = {}), !o) return t;
                    t.isSingleDetailPanel = "underRowSingle" === this.detailPanelMode;
                    for (var i = 0; i < o.length; i++) r = o[i].hasErrors(e, t, (function() {
                        n.raiseOnCompletedAsyncValidators()
                    })) || r;
                    return r
                }, t.prototype.isValueDuplicated = function() {
                    if (!this.generatedVisibleRows) return !1;
                    for (var e = this.getUniqueColumns(), t = !1, n = 0; n < e.length; n++) t = this.isValueInColumnDuplicated(e[n]) || t;
                    return t
                }, t.prototype.isValueInColumnDuplicated = function(e) {
                    for (var t = [], n = !1, o = 0; o < this.generatedVisibleRows.length; o++) n = this.isValueDuplicatedInRow(this.generatedVisibleRows[o], e, t) || n;
                    return n
                }, t.prototype.getUniqueColumns = function() {
                    for (var e = new Array, t = 0; t < this.columns.length; t++) this.columns[t].isUnique && e.push(this.columns[t]);
                    return e
                }, t.prototype.isValueDuplicatedInRow = function(e, t, n) {
                    var o = e.getQuestionByColumn(t);
                    if (!o || o.isEmpty()) return !1;
                    for (var r = o.value, i = 0; i < n.length; i++)
                        if (a.isTwoValueEquals(r, n[i], !0, this.isUniqueCaseSensitive)) return this.addDuplicationError(o), !0;
                    return n.push(r), !1
                }, t.prototype.addDuplicationError = function(e) {
                    e.addError(new Ee(this.keyDuplicationError, this))
                }, t.prototype.getFirstQuestionToFocus = function(e) {
                    return this.getFirstCellQuestion(e)
                }, t.prototype.getFirstInputElementId = function() {
                    var t = this.getFirstCellQuestion(!1);
                    return t ? t.inputId : e.prototype.getFirstInputElementId.call(this)
                }, t.prototype.getFirstErrorInputElementId = function() {
                    var t = this.getFirstCellQuestion(!0);
                    return t ? t.inputId : e.prototype.getFirstErrorInputElementId.call(this)
                }, t.prototype.getFirstCellQuestion = function(e) {
                    if (!this.generatedVisibleRows) return null;
                    for (var t = 0; t < this.generatedVisibleRows.length; t++)
                        for (var n = this.generatedVisibleRows[t].cells, o = 0; o < n.length; o++) {
                            if (!e) return n[o].question;
                            if (n[o].question.currentErrorCount > 0) return n[o].question
                        }
                    return null
                }, t.prototype.onReadOnlyChanged = function() {
                    if (e.prototype.onReadOnlyChanged.call(this), this.generateRows)
                        for (var t = 0; t < this.visibleRows.length; t++) this.visibleRows[t].onQuestionReadOnlyChanged(this.isReadOnly)
                }, t.prototype.createQuestion = function(e, t) {
                    return this.createQuestionCore(e, t)
                }, t.prototype.createQuestionCore = function(e, t) {
                    var n = t.createCellQuestion(e);
                    return n.setSurveyImpl(e), n.setParentQuestion(this), n
                }, t.prototype.deleteRowValue = function(e, t) {
                    return e ? (delete e[t.rowName], this.isObject(e) && 0 == Object.keys(e).length ? null : e) : e
                }, t.prototype.onAnyValueChanged = function(e) {
                    if (!this.isUpdateLocked && !this.isDoingonAnyValueChanged && this.generatedVisibleRows) {
                        this.isDoingonAnyValueChanged = !0;
                        for (var t = this.visibleRows, n = 0; n < t.length; n++) t[n].onAnyValueChanged(e);
                        var o = this.visibleTotalRow;
                        o && o.onAnyValueChanged(e), this.isDoingonAnyValueChanged = !1
                    }
                }, t.prototype.isObject = function(e) {
                    return null !== e && "object" == typeof e
                }, t.prototype.getOnCellValueChangedOptions = function(e, t, n) {
                    return {
                        row: e,
                        columnName: t,
                        rowValue: n,
                        value: n ? n[t] : null,
                        getCellQuestion: function(t) {
                            for (var n = 0; n < e.cells.length; n++) {
                                var o = e.cells[n].column;
                                if (o && o.name === t) return e.cells[n].question
                            }
                            return null
                        }
                    }
                }, t.prototype.onCellValueChanged = function(e, t, n) {
                    if (this.survey) {
                        var o = this.getOnCellValueChangedOptions(e, t, n);
                        this.onCellValueChangedCallback && this.onCellValueChangedCallback(o), this.survey.matrixCellValueChanged(this, o)
                    }
                }, t.prototype.validateCell = function(e, t, n) {
                    if (this.survey) {
                        var o = this.getOnCellValueChangedOptions(e, t, n);
                        return this.survey.matrixCellValidate(this, o)
                    }
                }, Object.defineProperty(t.prototype, "isValidateOnValueChanging", {
                    get: function() {
                        return !!this.survey && this.survey.isValidateOnValueChanging
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onRowChanging = function(e, t, n) {
                    if (!this.survey) return n ? n[t] : null;
                    var o = this.getOnCellValueChangedOptions(e, t, n),
                        r = this.getRowValueCore(e, this.createNewValue(), !0);
                    return o.oldValue = r ? r[t] : null, this.survey.matrixCellValueChanging(this, o), o.value
                }, t.prototype.onRowChanged = function(e, t, n, o) {
                    var r = t ? this.getRowObj(e) : null;
                    if (r) {
                        var i = null;
                        n && !o && (i = n[t]), this.isRowChanging = !0, r[t] = i, this.isRowChanging = !1, this.onCellValueChanged(e, t, r)
                    } else {
                        var s = this.createNewValue(!0),
                            a = this.getNewValueOnRowChanged(e, t, n, o, this.createNewValue());
                        if (this.isTwoValueEquals(s, a.value)) return;
                        this.isRowChanging = !0, this.setNewValue(a.value), this.isRowChanging = !1, t && this.onCellValueChanged(e, t, a.rowValue)
                    }
                }, t.prototype.getNewValueOnRowChanged = function(e, t, n, o, r) {
                    var i = this.getRowValueCore(e, r, !0);
                    o && delete i[t];
                    for (var s = 0; s < e.cells.length; s++) {
                        delete i[a = e.cells[s].question.getValueName()]
                    }
                    if (n)
                        for (var a in n = JSON.parse(JSON.stringify(n))) this.isValueEmpty(n[a]) || (i[a] = n[a]);
                    return this.isObject(i) && 0 === Object.keys(i).length && (r = this.deleteRowValue(r, e)), {
                        value: r,
                        rowValue: i
                    }
                }, t.prototype.getRowIndex = function(e) {
                    return this.generatedVisibleRows ? this.visibleRows.indexOf(e) : -1
                }, t.prototype.getElementsInDesign = function(t) {
                    var n;
                    return void 0 === t && (t = !1), n = "none" == this.detailPanelMode ? e.prototype.getElementsInDesign.call(this, t) : t ? [this.detailPanel] : this.detailElements, this.columns.concat(n)
                }, t.prototype.hasDetailPanel = function(e) {
                    return "none" != this.detailPanelMode && (!!this.isDesignMode || (this.onHasDetailPanelCallback ? this.onHasDetailPanelCallback(e) : this.detailElements.length > 0))
                }, t.prototype.getIsDetailPanelShowing = function(e) {
                    if ("none" == this.detailPanelMode) return !1;
                    if (this.isDesignMode) {
                        var t = 0 == this.visibleRows.indexOf(e);
                        return t && (e.detailPanel || e.showDetailPanel()), t
                    }
                    return this.getPropertyValue("isRowShowing" + e.id, !1)
                }, t.prototype.setIsDetailPanelShowing = function(e, t) {
                    if (t != this.getIsDetailPanelShowing(e) && (this.setPropertyValue("isRowShowing" + e.id, t), this.updateDetailPanelButtonCss(e), this.renderedTable && this.renderedTable.onDetailPanelChangeVisibility(e, t), t && "underRowSingle" === this.detailPanelMode))
                        for (var n = this.visibleRows, o = 0; o < n.length; o++) n[o].id !== e.id && n[o].isDetailPanelShowing && n[o].hideDetailPanel()
                }, t.prototype.getDetailPanelButtonCss = function(e) {
                    var t = (new ct).append(this.getPropertyValue("detailButtonCss" + e.id));
                    return t.append(this.cssClasses.detailButton, "" === t.toString()).toString()
                }, t.prototype.getDetailPanelIconCss = function(e) {
                    var t = (new ct).append(this.getPropertyValue("detailIconCss" + e.id));
                    return t.append(this.cssClasses.detailIcon, "" === t.toString()).toString()
                }, t.prototype.getDetailPanelIconId = function(e) {
                    return this.getIsDetailPanelShowing(e) ? this.cssClasses.detailIconExpandedId : this.cssClasses.detailIconId
                }, t.prototype.updateDetailPanelButtonCss = function(e) {
                    var t = this.cssClasses,
                        n = this.getIsDetailPanelShowing(e),
                        o = (new ct).append(t.detailIcon).append(t.detailIconExpanded, n);
                    this.setPropertyValue("detailIconCss" + e.id, o.toString());
                    var r = (new ct).append(t.detailButton).append(t.detailButtonExpanded, n);
                    this.setPropertyValue("detailButtonCss" + e.id, r.toString())
                }, t.prototype.createRowDetailPanel = function(e) {
                    if (this.isDesignMode) return this.detailPanel;
                    var t = this.createNewDetailPanel();
                    t.readOnly = this.isReadOnly;
                    var n = this.detailPanel.toJSON();
                    return (new R).toObject(n, t), t.renderWidth = "100%", t.updateCustomWidgets(), this.onCreateDetailPanelCallback && this.onCreateDetailPanelCallback(e, t), t
                }, t.prototype.getSharedQuestionByName = function(e, t) {
                    if (!this.survey || !this.valueName) return null;
                    var n = this.getRowIndex(t);
                    return n < 0 ? null : this.survey.getQuestionByValueNameFromArray(this.valueName, e, n)
                }, t.prototype.onTotalValueChanged = function() {
                    !this.data || !this.visibleTotalRow || this.isUpdateLocked || this.isSett || this.isReadOnly || this.data.setValue(this.getValueName() + s.matrixTotalValuePostFix, this.totalValue, !1)
                }, t.prototype.getParentTextProcessor = function() {
                    if (!this.parentQuestion || !this.parent) return null;
                    var e = this.parent.data;
                    return e && e.getTextProcessor ? e.getTextProcessor() : null
                }, t.prototype.getQuestionFromArray = function(e, t) {
                    return t >= this.visibleRows.length ? null : this.visibleRows[t].getQuestionByName(e)
                }, t.prototype.isMatrixValueEmpty = function(e) {
                    if (e) {
                        if (Array.isArray(e)) {
                            for (var t = 0; t < e.length; t++)
                                if (this.isObject(e[t]) && Object.keys(e[t]).length > 0) return !1;
                            return !0
                        }
                        return 0 == Object.keys(e).length
                    }
                }, Object.defineProperty(t.prototype, "SurveyModel", {
                    get: function() {
                        return this.survey
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getCellTemplateData = function(e) {
                    return this.SurveyModel.getMatrixCellTemplateData(e)
                }, t.prototype.getCellWrapperComponentName = function(e) {
                    return this.SurveyModel.getElementWrapperComponentName(e, "cell")
                }, t.prototype.getCellWrapperComponentData = function(e) {
                    return this.SurveyModel.getElementWrapperComponentData(e, "cell")
                }, t.prototype.getColumnHeaderWrapperComponentName = function(e) {
                    return this.SurveyModel.getElementWrapperComponentName(e, "column-header")
                }, t.prototype.getColumnHeaderWrapperComponentData = function(e) {
                    return this.SurveyModel.getElementWrapperComponentData(e, "column-header")
                }, t.prototype.getRowHeaderWrapperComponentName = function(e) {
                    return this.SurveyModel.getElementWrapperComponentName(e, "row-header")
                }, t.prototype.getRowHeaderWrapperComponentData = function(e) {
                    return this.SurveyModel.getElementWrapperComponentData(e, "row-header")
                }, Object.defineProperty(t.prototype, "showHorizontalScroll", {
                    get: function() {
                        return !this.isDefaultV2Theme && this.horizontalScroll
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getRootCss = function() {
                    return (new ct).append(e.prototype.getRootCss.call(this)).append(this.cssClasses.rootScroll, this.horizontalScroll).toString()
                }, t.prototype.getIsTooltipErrorInsideSupported = function() {
                    return !0
                }, t
            }(nn);
        I.addClass("matrixdropdownbase", [{
            name: "columns:matrixdropdowncolumns",
            className: "matrixdropdowncolumn"
        }, {
            name: "columnLayout",
            alternativeName: "columnsLocation",
            default: "horizontal",
            choices: ["horizontal", "vertical"]
        }, {
            name: "detailElements",
            visible: !1,
            isLightSerializable: !1
        }, {
            name: "detailPanelMode",
            choices: ["none", "underRow", "underRowSingle"],
            default: "none"
        }, "horizontalScroll:boolean", {
            name: "choices:itemvalue[]",
            uniqueProperty: "value"
        }, {
            name: "placeholder",
            alternativeName: "optionsCaption",
            serializationProperty: "locPlaceholder"
        }, {
            name: "keyDuplicationError",
            serializationProperty: "locKeyDuplicationError"
        }, {
            name: "cellType",
            default: "dropdown",
            choices: function() {
                return mn.getColumnTypes()
            }
        }, {
            name: "columnColCount",
            default: 0,
            choices: [0, 1, 2, 3, 4]
        }, "columnMinWidth", {
            name: "allowAdaptiveActions:boolean",
            default: !1,
            visible: !1
        }], (function() {
            return new Sn("")
        }), "matrixbase");
        var On = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            En = function(e) {
                function t(t, n, o, r) {
                    var i = e.call(this, o, r) || this;
                    return i.name = t, i.item = n, i.buildCells(r), i
                }
                return On(t, e), Object.defineProperty(t.prototype, "rowName", {
                    get: function() {
                        return this.name
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "text", {
                    get: function() {
                        return this.item.text
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locText", {
                    get: function() {
                        return this.item.locText
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(Tn),
            Rn = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.createLocalizableString("totalText", n, !0), n.registerPropertyChangedHandlers(["rows"], (function() {
                        n.clearGeneratedRows(), n.resetRenderedTable(), n.filterItems() || n.onRowsChanged()
                    })), n.registerPropertyChangedHandlers(["hideIfRowsEmpty"], (function() {
                        n.updateVisibilityBasedOnRows()
                    })), n
                }
                return On(t, e), t.prototype.getType = function() {
                    return "matrixdropdown"
                }, Object.defineProperty(t.prototype, "totalText", {
                    get: function() {
                        return this.getLocalizableStringText("totalText", "")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("totalText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTotalText", {
                    get: function() {
                        return this.getLocalizableString("totalText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getFooterText = function() {
                    return this.locTotalText
                }, t.prototype.getRowTitleWidth = function() {
                    return this.rowTitleWidth
                }, Object.defineProperty(t.prototype, "hideIfRowsEmpty", {
                    get: function() {
                        return this.getPropertyValue("hideIfRowsEmpty", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("hideIfRowsEmpty", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDisplayValueCore = function(e, t) {
                    if (!t) return t;
                    var n = this.visibleRows,
                        o = {};
                    if (!n) return o;
                    for (var r = 0; r < n.length; r++) {
                        var i = n[r].rowName,
                            s = t[i];
                        if (s) {
                            if (e) {
                                var a = ze.getTextOrHtmlByValue(this.rows, i);
                                a && (i = a)
                            }
                            o[i] = this.getRowDisplayValue(e, n[r], s)
                        }
                    }
                    return o
                }, t.prototype.getConditionObjectRowName = function(e) {
                    return "." + this.rows[e].value
                }, t.prototype.getConditionObjectRowText = function(e) {
                    return "." + this.rows[e].calculatedText
                }, t.prototype.getConditionObjectsRowIndeces = function() {
                    for (var e = [], t = 0; t < this.rows.length; t++) e.push(t);
                    return e
                }, t.prototype.setNewValue = function(t) {
                    t && "object" != typeof t || e.prototype.setNewValue.call(this, t)
                }, t.prototype.clearIncorrectValues = function() {
                    var t = this.value;
                    if (t) {
                        var n = null,
                            o = !1,
                            r = this.filteredRows ? this.filteredRows : this.rows;
                        for (var i in t) ze.getItemByValue(r, i) ? (null == n && (n = {}), n[i] = t[i]) : o = !0;
                        o && (this.value = n), e.prototype.clearIncorrectValues.call(this)
                    }
                }, t.prototype.clearValueIfInvisibleCore = function() {
                    e.prototype.clearValueIfInvisibleCore.call(this), this.clearInvisibleValuesInRows()
                }, t.prototype.generateRows = function() {
                    var e = new Array,
                        t = this.filteredRows ? this.filteredRows : this.rows;
                    if (!t || 0 === t.length) return e;
                    var n = this.value;
                    n || (n = {});
                    for (var o = 0; o < t.length; o++) t[o].value && e.push(this.createMatrixRow(t[o], n[t[o].value]));
                    return e
                }, t.prototype.createMatrixRow = function(e, t) {
                    return new En(e.value, e, this, t)
                }, t.prototype.getSearchableItemValueKeys = function(e) {
                    e.push("rows")
                }, t.prototype.updateProgressInfoByValues = function(e) {
                    var t = this.value;
                    t || (t = {});
                    for (var n = 0; n < this.rows.length; n++) {
                        var o = t[this.rows[n].value];
                        this.updateProgressInfoByRow(e, o || {})
                    }
                }, t
            }(Sn);
        I.addClass("matrixdropdown", [{
            name: "rows:itemvalue[]",
            uniqueProperty: "value"
        }, "rowsVisibleIf:condition", "rowTitleWidth", {
            name: "totalText",
            serializationProperty: "locTotalText"
        }, "hideIfRowsEmpty:boolean"], (function() {
            return new Rn("")
        }), "matrixdropdownbase"), ln.Instance.registerQuestion("matrixdropdown", (function(e) {
            var t = new Rn(e);
            return t.choices = [1, 2, 3, 4, 5], t.rows = ln.DefaultRows, Sn.addDefaultColumns(t), t
        }));
        var In, _n = !1,
            qn = null;
        "undefined" != typeof navigator && "undefined" != typeof window && navigator && window && (qn = navigator.userAgent || navigator.vendor || window.opera), (In = qn) && ("MacIntel" === navigator.platform && navigator.maxTouchPoints > 0 || "iPad" === navigator.platform || /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(In) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(In.substring(0, 4))) && (_n = !0);
        var Dn = _n || !1,
            An = !1;
        "undefined" != typeof window && (An = "ontouchstart" in window || navigator.maxTouchPoints > 0);
        var jn = Dn && An;
        var Ln = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Mn = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            };
        "undefined" != typeof window && window.addEventListener("touchmove", (function(e) {
            Nn.PreventScrolling && e.preventDefault()
        }), {
            passive: !1
        });
        var Nn = function(e) {
                function t(n, o, r) {
                    var i = e.call(this) || this;
                    return i.surveyValue = n, i.creator = o, i.longTap = r, i.onGhostPositionChanged = new ge, i.onBeforeDrop = new ge, i.onAfterDrop = new ge, i.draggedElement = null, i.dropTarget = null, i.prevDropTarget = null, i.draggedElementShortcut = null, i.scrollIntervalId = null, i.allowDropHere = !1, i.stopLongTapIfMoveEnough = function(e) {
                        e.preventDefault(), i.currentX = e.pageX, i.currentY = e.pageY, i.isMicroMovement || (document.body.style.setProperty("touch-action", ""), document.body.style.setProperty("user-select", ""), document.body.style.setProperty("-webkit-user-select", ""), i.stopLongTap())
                    }, i.stopLongTap = function(e) {
                        clearTimeout(i.timeoutID), i.timeoutID = null, document.removeEventListener("pointerup", i.stopLongTap), document.removeEventListener("pointermove", i.stopLongTapIfMoveEnough)
                    }, i.onContextMenu = function(e) {
                        e.preventDefault(), e.stopPropagation()
                    }, i.dragOver = function(e) {
                        i.moveShortcutElement(e), i.draggedElementShortcut.style.cursor = "grabbing";
                        var t = i.findDropTargetNodeFromPoint(e.clientX, e.clientY);
                        if (t) {
                            i.dropTarget = i.getDropTargetByNode(t, e);
                            var n = i.isDropTargetValid(i.dropTarget, t);
                            if (i.doDragOver(t, e), n) {
                                var o = i.calculateIsBottom(e.clientY, t);
                                i.allowDropHere = !0, i.isDropTargetDoesntChanged(o) || (i.isBottom = null, i.isBottom = o, i.afterDragOver(t, e), i.prevDropTarget = i.dropTarget)
                            } else i.banDropHere()
                        } else i.banDropHere()
                    }, i.drop = function() {
                        if (i.allowDropHere) {
                            i.onBeforeDrop.fire(i, null);
                            var e = i.doDrop();
                            i.onAfterDrop.fire(i, {
                                draggedElement: e
                            })
                        }
                        i.clear()
                    }, i.handlePointerCancel = function(e) {
                        i.clear()
                    }, i.handleEscapeButton = function(e) {
                        27 == e.keyCode && i.clear()
                    }, i.banDropHere = function() {
                        i.allowDropHere = !1, i.doBanDropHere(), i.dropTarget = null, i.draggedElementShortcut.style.cursor = "not-allowed", i.isBottom = null
                    }, i.doBanDropHere = function() {}, i.clear = function() {
                        cancelAnimationFrame(i.scrollIntervalId), document.removeEventListener("pointermove", i.dragOver), document.removeEventListener("pointercancel", i.handlePointerCancel), document.removeEventListener("keydown", i.handleEscapeButton), document.removeEventListener("pointerup", i.drop), i.draggedElementShortcut.removeEventListener("pointerup", i.drop), jn && i.draggedElementShortcut.removeEventListener("contextmenu", i.onContextMenu), document.body.removeChild(i.draggedElementShortcut), i.doClear(), i.dropTarget = null, i.draggedElementShortcut = null, i.draggedElement = null, i.isBottom = null, i.parentElement = null, i.scrollIntervalId = null, jn && (i.savedTargetNode && document.body.removeChild(i.savedTargetNode), t.PreventScrolling = !1), document.body.style.setProperty("touch-action", ""), document.body.style.setProperty("user-select", ""), document.body.style.setProperty("-webkit-user-select", "")
                    }, i
                }
                return Ln(t, e), t.prototype.ghostPositionChanged = function() {
                    this.onGhostPositionChanged.fire({}, {})
                }, Object.defineProperty(t.prototype, "dropTargetDataAttributeName", {
                    get: function() {
                        return "[data-sv-drop-target-".concat(this.draggedElementType, "]")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "survey", {
                    get: function() {
                        return this.surveyValue || this.creator.survey
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.startDrag = function(e, t, n, o, r) {
                    void 0 === r && (r = !1), jn ? this.startLongTapProcessing(e, t, n, o, r) : this.doStartDrag(e, t, n, o)
                }, t.prototype.startLongTapProcessing = function(e, t, n, o, r) {
                    var i = this;
                    void 0 === r && (r = !1), this.startX = e.pageX, this.startY = e.pageY, document.body.style.setProperty("touch-action", "none", "important"), document.body.style.setProperty("user-select", "none", "important"), document.body.style.setProperty("-webkit-user-select", "none", "important"), this.timeoutID = setTimeout((function() {
                        i.doStartDrag(e, t, n, o), r || (i.savedTargetNode = e.target, i.savedTargetNode.style.cssText = "\n          position: absolute;\n          height: 1px!important;\n          width: 1px!important;\n          overflow: hidden;\n          clip: rect(1px 1px 1px 1px);\n          clip: rect(1px, 1px, 1px, 1px);\n        ", document.body.appendChild(i.savedTargetNode)), i.stopLongTap()
                    }), this.longTap ? 500 : 0), document.addEventListener("pointerup", this.stopLongTap), document.addEventListener("pointermove", this.stopLongTapIfMoveEnough)
                }, Object.defineProperty(t.prototype, "isMicroMovement", {
                    get: function() {
                        var e = Math.abs(this.currentX - this.startX),
                            t = Math.abs(this.currentY - this.startY);
                        return e < 5 && t < 5
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.doStartDrag = function(e, n, o, r) {
                    if (jn && (t.PreventScrolling = !0), 3 !== e.which) {
                        this.draggedElement = n, this.parentElement = o, this.onStartDrag();
                        var i = this.getShortcutText(this.draggedElement);
                        this.draggedElementShortcut = this.createDraggedElementShortcut(i, r, e), document.body.append(this.draggedElementShortcut), this.moveShortcutElement(e), document.addEventListener("pointermove", this.dragOver), document.addEventListener("pointercancel", this.handlePointerCancel), document.addEventListener("keydown", this.handleEscapeButton), document.addEventListener("pointerup", this.drop), jn ? this.draggedElementShortcut.addEventListener("contextmenu", this.onContextMenu) : this.draggedElementShortcut.addEventListener("pointerup", this.drop)
                    }
                }, t.prototype.isDropTargetDoesntChanged = function(e) {
                    return this.dropTarget === this.prevDropTarget && e === this.isBottom
                }, t.prototype.onStartDrag = function() {}, t.prototype.getShortcutText = function(e) {
                    return e.shortcutText
                }, t.prototype.createDraggedElementShortcut = function(e, t, n) {
                    var o = document.createElement("div");
                    return o.innerText = e, o.className = this.getDraggedElementClass(), o
                }, t.prototype.getDraggedElementClass = function() {
                    return "sv-dragged-element-shortcut"
                }, t.prototype.doDragOver = function(e, t) {}, t.prototype.afterDragOver = function(e, t) {}, t.prototype.getGhostPosition = function(e) {
                    return this.dropTarget !== e ? null : this.isBottom ? "bottom" : "top"
                }, t.prototype.moveShortcutElement = function(e) {
                    this.doScroll(e.clientY, e.clientX);
                    var t = this.draggedElementShortcut.offsetHeight,
                        n = this.draggedElementShortcut.offsetWidth,
                        o = this.draggedElementShortcut.shortcutXOffset || n / 2,
                        r = this.draggedElementShortcut.shortcutYOffset || t / 2;
                    0 !== document.querySelectorAll("[dir='rtl']").length && (o = n / 2, r = t / 2);
                    var i = document.documentElement.clientHeight,
                        s = document.documentElement.clientWidth,
                        a = this.getShortcutBottomCoordinate(e.clientY, t, r);
                    return this.getShortcutRightCoordinate(e.clientX, n, o) >= s ? (this.draggedElementShortcut.style.left = e.pageX - e.clientX + s - n + "px", void(this.draggedElementShortcut.style.top = e.pageY - r + "px")) : e.clientX - o <= 0 ? (this.draggedElementShortcut.style.left = e.pageX - e.clientX + "px", void(this.draggedElementShortcut.style.top = e.pageY - r + "px")) : a >= i ? (this.draggedElementShortcut.style.left = e.pageX - o + "px", void(this.draggedElementShortcut.style.top = e.pageY - e.clientY + i - t + "px")) : e.clientY - r <= 0 ? (this.draggedElementShortcut.style.left = e.pageX - o + "px", void(this.draggedElementShortcut.style.top = e.pageY - e.clientY + "px")) : (this.draggedElementShortcut.style.left = e.pageX - o + "px", void(this.draggedElementShortcut.style.top = e.pageY - r + "px"))
                }, t.prototype.getShortcutBottomCoordinate = function(e, t, n) {
                    return e + t - n
                }, t.prototype.getShortcutRightCoordinate = function(e, t, n) {
                    return e + t - n
                }, t.prototype.doScroll = function(e, t) {
                    var n = this;
                    cancelAnimationFrame(this.scrollIntervalId);
                    this.draggedElementShortcut.hidden = !0;
                    var o = document.elementFromPoint(t, e);
                    this.draggedElementShortcut.hidden = !1;
                    var r, i, s, a, l = $e(o);
                    "HTML" === l.tagName ? (r = 0, i = document.documentElement.clientHeight, s = 0, a = document.documentElement.clientWidth) : (r = l.getBoundingClientRect().top, i = l.getBoundingClientRect().bottom, s = l.getBoundingClientRect().left, a = l.getBoundingClientRect().right);
                    var u = function() {
                        e - r <= 50 ? l.scrollTop -= 15 : i - e <= 50 ? l.scrollTop += 15 : a - t <= 50 ? l.scrollLeft += 15 : t - s <= 50 && (l.scrollLeft -= 15), n.scrollIntervalId = requestAnimationFrame(u)
                    };
                    this.scrollIntervalId = requestAnimationFrame(u)
                }, t.prototype.getDataAttributeValueByNode = function(e) {
                    var t = this,
                        n = "svDropTarget";
                    return this.draggedElementType.split("-").forEach((function(e) {
                        n += t.capitalizeFirstLetter(e)
                    })), e.dataset[n]
                }, t.prototype.getDropTargetByNode = function(e, t) {
                    var n = this.getDataAttributeValueByNode(e);
                    return this.getDropTargetByDataAttributeValue(n, e, t)
                }, t.prototype.capitalizeFirstLetter = function(e) {
                    return e.charAt(0).toUpperCase() + e.slice(1)
                }, t.prototype.calculateVerticalMiddleOfHTMLElement = function(e) {
                    var t = e.getBoundingClientRect();
                    return t.y + t.height / 2
                }, t.prototype.calculateHorizontalMiddleOfHTMLElement = function(e) {
                    var t = e.getBoundingClientRect();
                    return t.x + t.width / 2
                }, t.prototype.findDropTargetNodeFromPoint = function(e, t) {
                    this.draggedElementShortcut.hidden = !0;
                    var n = document.elementFromPoint(e, t);
                    return this.draggedElementShortcut.hidden = !1, n ? this.findDropTargetNodeByDragOverNode(n) : null
                }, t.prototype.findDropTargetNodeByDragOverNode = function(e) {
                    return e.querySelector(this.dropTargetDataAttributeName) || e.closest(this.dropTargetDataAttributeName)
                }, t.prototype.doClear = function() {}, t.PreventScrolling = !1, Mn([y({
                    defaultValue: null,
                    onSet: function(e, t) {
                        t.ghostPositionChanged()
                    }
                })], t.prototype, "isBottom", void 0), t
            }(he),
            Fn = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Bn = function(e) {
                function t() {
                    var t = null !== e && e.apply(this, arguments) || this;
                    return t.fromIndex = null, t.toIndex = null, t.doDrop = function() {
                        return t.parentElement.moveRowByIndex(t.fromIndex, t.toIndex), t.parentElement
                    }, t
                }
                return Fn(t, e), Object.defineProperty(t.prototype, "draggedElementType", {
                    get: function() {
                        return "matrix-row"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createDraggedElementShortcut = function(e, t, n) {
                    var o = this,
                        r = document.createElement("div");
                    r.style.cssText = ' \n          cursor: grabbing;\n          position: absolute;\n          z-index: 1000;\n          font-family: "Open Sans";\n        ';
                    var i = t.closest("[data-sv-drop-target-matrix-row]"),
                        s = i.cloneNode(!0);
                    s.style.cssText = "\n      box-shadow: rgb(0 0 0 / 10%) 0px 8px 16px;\n      background-color: white;\n      display: flex;\n      flex-grow: 0;\n      flex-shrink: 0;\n      align-items: center;\n      line-height: 0;\n      width: ".concat(i.offsetWidth, "px;\n    "), s.classList.remove("sv-matrix__drag-drop--moveup"), s.classList.remove("sv-matrix__drag-drop--movedown"), this.draggedElement.isDragDropMoveDown = !1, this.draggedElement.isDragDropMoveUp = !1, r.appendChild(s);
                    var a = t.getBoundingClientRect();
                    return r.shortcutXOffset = n.clientX - a.x, r.shortcutYOffset = n.clientY - a.y, this.parentElement.renderedTable.rows.forEach((function(e, t) {
                        e.row === o.draggedElement && (e.isGhostRow = !0)
                    })), this.fromIndex = this.parentElement.visibleRows.indexOf(this.draggedElement), r
                }, t.prototype.getDropTargetByDataAttributeValue = function(e) {
                    return this.parentElement.renderedTable.rows.filter((function(t) {
                        return t.row.id === e
                    }))[0].row
                }, t.prototype.isDropTargetValid = function(e) {
                    return !0
                }, t.prototype.findDropTargetNodeByDragOverNode = function(e) {
                    return e.closest(this.dropTargetDataAttributeName)
                }, t.prototype.calculateIsBottom = function(e) {
                    var t = this.parentElement.renderedTable.rows.map((function(e) {
                        return e.row
                    }));
                    return t.indexOf(this.dropTarget) - t.indexOf(this.draggedElement) > 0
                }, t.prototype.afterDragOver = function(t) {
                    var n = this;
                    if (!this.isDropTargetDoesntChanged(this.isBottom) && this.dropTarget !== this.draggedElement) {
                        var o, r, i, s = this.parentElement.renderedTable.rows;
                        s.forEach((function(e, t) {
                            e.row === n.dropTarget && (o = t), e.row === n.draggedElement && (r = t, (i = e).isGhostRow = !0)
                        })), s.splice(r, 1), s.splice(o, 0, i), this.toIndex = o, e.prototype.ghostPositionChanged.call(this)
                    }
                }, t.prototype.doClear = function() {
                    this.parentElement.resetRenderedTable(), this.fromIndex = null, this.toIndex = null
                }, t
            }(Nn),
            zn = function() {
                function e(e) {
                    var t = this;
                    this.dragHandler = e, this.onPointerUp = function(e) {
                        t.clearListeners()
                    }, this.tryToStartDrag = function(e) {
                        if (t.currentX = e.pageX, t.currentY = e.pageY, !t.isMicroMovement) return t.clearListeners(), t.dragHandler(t.pointerDownEvent, t.currentTarget, t.itemModel), !0
                    }
                }
                return e.prototype.onPointerDown = function(e, t) {
                    jn ? this.dragHandler(e, e.currentTarget, t) : (this.pointerDownEvent = e, this.currentTarget = e.currentTarget, this.startX = e.pageX, this.startY = e.pageY, document.addEventListener("pointermove", this.tryToStartDrag), this.currentTarget.addEventListener("pointerup", this.onPointerUp), this.itemModel = t)
                }, Object.defineProperty(e.prototype, "isMicroMovement", {
                    get: function() {
                        var e = Math.abs(this.currentX - this.startX),
                            t = Math.abs(this.currentY - this.startY);
                        return e < 10 && t < 10
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.clearListeners = function() {
                    this.pointerDownEvent && (document.removeEventListener("pointermove", this.tryToStartDrag), this.currentTarget.removeEventListener("pointerup", this.onPointerUp))
                }, e
            }(),
            Hn = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Qn = function(e) {
                function t(t, n, o) {
                    var r = e.call(this, n, o) || this;
                    return r.index = t, r.buildCells(o), r
                }
                return Hn(t, e), Object.defineProperty(t.prototype, "rowName", {
                    get: function() {
                        return this.id
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "shortcutText", {
                    get: function() {
                        var e = this.data.visibleRows.indexOf(this) + 1,
                            t = this.cells.length > 1 ? this.cells[1].questionValue : void 0,
                            n = this.cells.length > 0 ? this.cells[0].questionValue : void 0;
                        return t && t.value || n && n.value || "" + e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(Tn),
            Un = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.rowCounter = 0, n.initialRowCount = 2, n.setRowCountValueFromData = !1, n.startDragMatrixRow = function(e, t) {
                        n.dragDropMatrixRows.startDrag(e, n.draggedRow, n, e.target)
                    }, n.moveRowByIndex = function(e, t) {
                        var o = n.createNewValue();
                        if (o) {
                            var r = o[e];
                            r && (o.splice(e, 1), o.splice(t, 0, r), n.value = o)
                        }
                    }, n.createLocalizableString("confirmDeleteText", n, !1, "confirmDelete"), n.createLocalizableString("addRowText", n).onGetTextCallback = function(e) {
                        return e || n.defaultAddRowText
                    }, n.createLocalizableString("removeRowText", n, !1, "removeRow"), n.createLocalizableString("emptyRowsText", n, !1, !0), n.registerPropertyChangedHandlers(["hideColumnsIfEmpty", "allowAddRows"], (function() {
                        n.updateShowTableAndAddRow()
                    })), n.registerPropertyChangedHandlers(["allowRowsDragAndDrop"], (function() {
                        n.clearRowsAndResetRenderedTable()
                    })), n.dragOrClickHelper = new zn(n.startDragMatrixRow), n
                }
                return Hn(t, e), t.prototype.setSurveyImpl = function(t, n) {
                    e.prototype.setSurveyImpl.call(this, t, n), this.dragDropMatrixRows = new Bn(this.survey)
                }, t.prototype.isBanStartDrag = function(e) {
                    var t = e.target;
                    return "true" === t.getAttribute("contenteditable") || "INPUT" === t.nodeName
                }, t.prototype.onPointerDown = function(e, t) {
                    t && this.allowRowsDragAndDrop && (this.isBanStartDrag(e) || t.isDetailPanelShowing || (this.draggedRow = t, this.dragOrClickHelper.onPointerDown(e)))
                }, t.prototype.getType = function() {
                    return "matrixdynamic"
                }, Object.defineProperty(t.prototype, "isRowsDynamic", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "confirmDelete", {
                    get: function() {
                        return this.getPropertyValue("confirmDelete", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("confirmDelete", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "keyName", {
                    get: function() {
                        return this.getPropertyValue("keyName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("keyName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "defaultRowValue", {
                    get: function() {
                        return this.getPropertyValue("defaultRowValue")
                    },
                    set: function(e) {
                        this.setPropertyValue("defaultRowValue", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "defaultValueFromLastRow", {
                    get: function() {
                        return this.getPropertyValue("defaultValueFromLastRow", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("defaultValueFromLastRow", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isDefaultValueEmpty = function() {
                    return e.prototype.isDefaultValueEmpty.call(this) && this.isValueEmpty(this.defaultRowValue)
                }, t.prototype.valueFromData = function(t) {
                    if (this.minRowCount < 1) return e.prototype.valueFromData.call(this, t);
                    Array.isArray(t) || (t = []);
                    for (var n = t.length; n < this.minRowCount; n++) t.push({});
                    return t
                }, t.prototype.setDefaultValue = function() {
                    if (!this.isValueEmpty(this.defaultRowValue) && this.isValueEmpty(this.defaultValue)) {
                        if (this.isEmpty() && 0 != this.rowCount) {
                            for (var t = [], n = 0; n < this.rowCount; n++) t.push(this.defaultRowValue);
                            this.value = t
                        }
                    } else e.prototype.setDefaultValue.call(this)
                }, Object.defineProperty(t.prototype, "rowCount", {
                    get: function() {
                        return this.rowCountValue
                    },
                    set: function(e) {
                        if (!(e < 0 || e > s.matrixMaximumRowCount)) {
                            this.setRowCountValueFromData = !1;
                            var t = this.rowCountValue;
                            if (this.rowCountValue = e, this.value && this.value.length > e) {
                                var n = this.value;
                                n.splice(e), this.value = n
                            }
                            if (this.isUpdateLocked) this.initialRowCount = e;
                            else {
                                if (this.generatedVisibleRows || 0 == t) {
                                    this.generatedVisibleRows || (this.generatedVisibleRows = []), this.generatedVisibleRows.splice(e);
                                    for (var o = t; o < e; o++) {
                                        var r = this.createMatrixRow(this.getValueForNewRow());
                                        this.generatedVisibleRows.push(r), this.onMatrixRowCreated(r)
                                    }
                                    this.runCondition(this.getDataFilteredValues(), this.getDataFilteredProperties())
                                }
                                this.onRowsChanged()
                            }
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateProgressInfoByValues = function(e) {
                    var t = this.value;
                    Array.isArray(t) || (t = []);
                    for (var n = 0; n < this.rowCount; n++) {
                        var o = n < t.length ? t[n] : {};
                        this.updateProgressInfoByRow(e, o)
                    }
                }, t.prototype.getValueForNewRow = function() {
                    var e = null;
                    return this.onGetValueForNewRowCallBack && (e = this.onGetValueForNewRowCallBack(this)), e
                }, Object.defineProperty(t.prototype, "allowRowsDragAndDrop", {
                    get: function() {
                        return !this.readOnly && this.getPropertyValue("allowRowsDragAndDrop")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowRowsDragAndDrop", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "iconDragElement", {
                    get: function() {
                        return this.cssClasses.iconDragElement
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createRenderedTable = function() {
                    return new Wn(this)
                }, Object.defineProperty(t.prototype, "rowCountValue", {
                    get: function() {
                        return this.getPropertyValue("rowCount")
                    },
                    set: function(e) {
                        this.setPropertyValue("rowCount", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "minRowCount", {
                    get: function() {
                        return this.getPropertyValue("minRowCount")
                    },
                    set: function(e) {
                        e < 0 && (e = 0), this.setPropertyValue("minRowCount", e), e > this.maxRowCount && (this.maxRowCount = e), this.rowCount < e && (this.rowCount = e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxRowCount", {
                    get: function() {
                        return this.getPropertyValue("maxRowCount")
                    },
                    set: function(e) {
                        e <= 0 || (e > s.matrixMaximumRowCount && (e = s.matrixMaximumRowCount), e != this.maxRowCount && (this.setPropertyValue("maxRowCount", e), e < this.minRowCount && (this.minRowCount = e), this.rowCount > e && (this.rowCount = e)))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowAddRows", {
                    get: function() {
                        return this.getPropertyValue("allowAddRows")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowAddRows", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowRemoveRows", {
                    get: function() {
                        return this.getPropertyValue("allowRemoveRows")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowRemoveRows", e), this.isUpdateLocked || this.resetRenderedTable()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "canAddRow", {
                    get: function() {
                        return this.allowAddRows && !this.isReadOnly && this.rowCount < this.maxRowCount
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "canRemoveRows", {
                    get: function() {
                        var e = this.allowRemoveRows && !this.isReadOnly && this.rowCount > this.minRowCount;
                        return this.canRemoveRowsCallback ? this.canRemoveRowsCallback(e) : e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canRemoveRow = function(e) {
                    return !this.survey || this.survey.matrixAllowRemoveRow(this, e.index, e)
                }, t.prototype.addRowUI = function() {
                    this.addRow(!0)
                }, t.prototype.getQuestionToFocusOnAddingRow = function() {
                    for (var e = this.visibleRows[this.visibleRows.length - 1], t = 0; t < e.cells.length; t++) {
                        var n = e.cells[t].question;
                        if (n && n.isVisible && !n.isReadOnly) return n
                    }
                    return null
                }, t.prototype.addRow = function(e) {
                    var t = this.rowCount,
                        n = {
                            question: this,
                            canAddRow: this.canAddRow
                        };
                    if (this.survey && this.survey.matrixBeforeRowAdded(n), n.canAddRow && (this.onStartRowAddingRemoving(), this.addRowCore(), this.onEndRowAdding(), this.detailPanelShowOnAdding && this.visibleRows.length > 0 && this.visibleRows[this.visibleRows.length - 1].showDetailPanel(), e && t !== this.rowCount)) {
                        var o = this.getQuestionToFocusOnAddingRow();
                        o && o.focus()
                    }
                }, Object.defineProperty(t.prototype, "detailPanelShowOnAdding", {
                    get: function() {
                        return this.getPropertyValue("detailPanelShowOnAdding")
                    },
                    set: function(e) {
                        this.setPropertyValue("detailPanelShowOnAdding", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.hasRowsAsItems = function() {
                    return !1
                }, t.prototype.unbindValue = function() {
                    this.clearGeneratedRows(), this.clearPropertyValue("value"), this.rowCountValue = 0, e.prototype.unbindValue.call(this)
                }, t.prototype.isValueSurveyElement = function(t) {
                    return this.isEditingSurveyElement || e.prototype.isValueSurveyElement.call(this, t)
                }, t.prototype.addRowCore = function() {
                    var e = this.rowCount;
                    this.rowCount = this.rowCount + 1;
                    var t = this.getDefaultRowValue(!0),
                        n = null;
                    if (this.isValueEmpty(t) || (n = this.createNewValue()).length == this.rowCount && (n[n.length - 1] = t, this.value = n), this.data && (this.runCellsCondition(this.getDataFilteredValues(), this.getDataFilteredProperties()), this.isValueEmpty(t))) {
                        var o = this.visibleRows[this.rowCount - 1];
                        this.isValueEmpty(o.value) || (n || (n = this.createNewValue()), this.isValueSurveyElement(n) || this.isTwoValueEquals(n[n.length - 1], o.value) || (n[n.length - 1] = o.value, this.value = n))
                    }
                    this.survey && e + 1 == this.rowCount && (this.survey.matrixRowAdded(this, this.visibleRows[this.visibleRows.length - 1]), this.onRowsChanged())
                }, t.prototype.getDefaultRowValue = function(e) {
                    for (var t = null, n = 0; n < this.columns.length; n++) {
                        var o = this.columns[n].templateQuestion;
                        o && !this.isValueEmpty(o.getDefaultValue()) && ((t = t || {})[this.columns[n].name] = o.getDefaultValue())
                    }
                    if (!this.isValueEmpty(this.defaultRowValue))
                        for (var r in this.defaultRowValue)(t = t || {})[r] = this.defaultRowValue[r];
                    if (e && this.defaultValueFromLastRow) {
                        var i = this.value;
                        if (i && Array.isArray(i) && i.length >= this.rowCount - 1) {
                            var s = i[this.rowCount - 2];
                            for (var r in s)(t = t || {})[r] = s[r]
                        }
                    }
                    return t
                }, t.prototype.removeRowUI = function(e) {
                    if (e && e.rowName) {
                        var t = this.visibleRows.indexOf(e);
                        if (t < 0) return;
                        e = t
                    }
                    this.removeRow(e)
                }, t.prototype.isRequireConfirmOnRowDelete = function(e) {
                    if (!this.confirmDelete) return !1;
                    if (e < 0 || e >= this.rowCount) return !1;
                    var t = this.createNewValue();
                    return !(this.isValueEmpty(t) || !Array.isArray(t)) && (!(e >= t.length) && !this.isValueEmpty(t[e]))
                }, t.prototype.removeRow = function(e, t) {
                    if (this.canRemoveRows && !(e < 0 || e >= this.rowCount)) {
                        var n = this.visibleRows && e < this.visibleRows.length ? this.visibleRows[e] : null;
                        void 0 === t && (t = this.isRequireConfirmOnRowDelete(e)), t && !Qe(this.confirmDeleteText) || n && this.survey && !this.survey.matrixRowRemoving(this, e, n) || (this.onStartRowAddingRemoving(), this.removeRowCore(e), this.onEndRowRemoving(n))
                    }
                }, t.prototype.removeRowCore = function(e) {
                    var t = this.generatedVisibleRows ? this.generatedVisibleRows[e] : null;
                    if (this.generatedVisibleRows && e < this.generatedVisibleRows.length && this.generatedVisibleRows.splice(e, 1), this.rowCountValue--, this.value) {
                        var n = [];
                        (n = Array.isArray(this.value) && e < this.value.length ? this.createValueCopy() : this.createNewValue()).splice(e, 1), n = this.deleteRowValue(n, null), this.isRowChanging = !0, this.value = n, this.isRowChanging = !1
                    }
                    this.onRowsChanged(), this.survey && this.survey.matrixRowRemoved(this, e, t)
                }, Object.defineProperty(t.prototype, "confirmDeleteText", {
                    get: function() {
                        return this.getLocalizableStringText("confirmDeleteText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("confirmDeleteText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locConfirmDeleteText", {
                    get: function() {
                        return this.getLocalizableString("confirmDeleteText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "addRowText", {
                    get: function() {
                        return this.getLocalizableStringText("addRowText", this.defaultAddRowText)
                    },
                    set: function(e) {
                        this.setLocalizableStringText("addRowText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locAddRowText", {
                    get: function() {
                        return this.getLocalizableString("addRowText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "defaultAddRowText", {
                    get: function() {
                        return this.getLocalizationString(this.isColumnLayoutHorizontal ? "addRow" : "addColumn")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "addRowLocation", {
                    get: function() {
                        return this.getPropertyValue("addRowLocation")
                    },
                    set: function(e) {
                        this.setPropertyValue("addRowLocation", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getAddRowLocation = function() {
                    return this.addRowLocation
                }, Object.defineProperty(t.prototype, "hideColumnsIfEmpty", {
                    get: function() {
                        return this.getPropertyValue("hideColumnsIfEmpty")
                    },
                    set: function(e) {
                        this.setPropertyValue("hideColumnsIfEmpty", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getShowColumnsIfEmpty = function() {
                    return this.hideColumnsIfEmpty
                }, Object.defineProperty(t.prototype, "removeRowText", {
                    get: function() {
                        return this.getLocalizableStringText("removeRowText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("removeRowText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locRemoveRowText", {
                    get: function() {
                        return this.getLocalizableString("removeRowText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "emptyRowsText", {
                    get: function() {
                        return this.getLocalizableStringText("emptyRowsText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("emptyRowsText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locEmptyRowsText", {
                    get: function() {
                        return this.getLocalizableString("emptyRowsText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDisplayValueCore = function(e, t) {
                    if (!t || !Array.isArray(t)) return t;
                    for (var n = this.getUnbindValue(t), o = this.visibleRows, r = 0; r < o.length && r < n.length; r++) {
                        var i = n[r];
                        i && (n[r] = this.getRowDisplayValue(e, o[r], i))
                    }
                    return n
                }, t.prototype.getConditionObjectRowName = function(e) {
                    return "[" + e.toString() + "]"
                }, t.prototype.getConditionObjectsRowIndeces = function() {
                    for (var e = [], t = Math.max(this.rowCount, 1), n = 0; n < Math.min(s.matrixMaxRowCountInCondition, t); n++) e.push(n);
                    return e
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    return !1
                }, Object.defineProperty(t.prototype, "hasRowText", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onCheckForErrors = function(t, n) {
                    e.prototype.onCheckForErrors.call(this, t, n), !n && this.hasErrorInMinRows() && t.push(new Oe(this.minRowCount, this))
                }, t.prototype.hasErrorInMinRows = function() {
                    if (this.minRowCount <= 0 || !this.isRequired || !this.generatedVisibleRows) return !1;
                    for (var e = 0, t = 0; t < this.generatedVisibleRows.length; t++) {
                        this.generatedVisibleRows[t].isEmpty || e++
                    }
                    return e < this.minRowCount
                }, t.prototype.getUniqueColumns = function() {
                    var t = e.prototype.getUniqueColumns.call(this);
                    if (this.keyName) {
                        var n = this.getColumnByName(this.keyName);
                        n && t.indexOf(n) < 0 && t.push(n)
                    }
                    return t
                }, t.prototype.generateRows = function() {
                    var e = new Array;
                    if (0 === this.rowCount) return e;
                    for (var t = this.createNewValue(), n = 0; n < this.rowCount; n++) e.push(this.createMatrixRow(this.getRowValueByIndex(t, n)));
                    return this.isValueEmpty(this.getDefaultRowValue(!1)) || (this.value = t), e
                }, t.prototype.createMatrixRow = function(e) {
                    return new Qn(this.rowCounter++, this, e)
                }, t.prototype.onBeforeValueChanged = function(e) {
                    if (e && Array.isArray(e)) {
                        var t = e.length;
                        t != this.rowCount && (!this.setRowCountValueFromData && t < this.initialRowCount || (this.setRowCountValueFromData = !0, this.rowCountValue = t, this.generatedVisibleRows && (this.clearGeneratedRows(), this.generatedVisibleRows = this.visibleRows, this.onRowsChanged())))
                    }
                }, t.prototype.createNewValue = function() {
                    var e = this.createValueCopy();
                    e && Array.isArray(e) || (e = []), e.length > this.rowCount && e.splice(this.rowCount);
                    var t = this.getDefaultRowValue(!1);
                    t = t || {};
                    for (var n = e.length; n < this.rowCount; n++) e.push(this.getUnbindValue(t));
                    return e
                }, t.prototype.deleteRowValue = function(e, t) {
                    for (var n = !0, o = 0; o < e.length; o++)
                        if (this.isObject(e[o]) && Object.keys(e[o]).length > 0) {
                            n = !1;
                            break
                        } return n ? null : e
                }, t.prototype.getRowValueByIndex = function(e, t) {
                    return Array.isArray(e) && t >= 0 && t < e.length ? e[t] : null
                }, t.prototype.getRowValueCore = function(e, t, n) {
                    if (void 0 === n && (n = !1), !this.generatedVisibleRows) return {};
                    var o = this.getRowValueByIndex(t, this.generatedVisibleRows.indexOf(e));
                    return !o && n && (o = {}), o
                }, t.prototype.getAddRowButtonCss = function(e) {
                    return void 0 === e && (e = !1), (new ct).append(this.cssClasses.button).append(this.cssClasses.buttonAdd).append(this.cssClasses.emptyRowsButton, e).toString()
                }, t.prototype.getRemoveRowButtonCss = function() {
                    return (new ct).append(this.cssClasses.button).append(this.cssClasses.buttonRemove).toString()
                }, t.prototype.getRootCss = function() {
                    var t;
                    return (new ct).append(e.prototype.getRootCss.call(this)).append(this.cssClasses.empty, !(null === (t = this.renderedTable) || void 0 === t ? void 0 : t.showTable)).toString()
                }, t
            }(Sn),
            Wn = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return Hn(t, e), t.prototype.setDefaultRowActions = function(t, n) {
                    e.prototype.setDefaultRowActions.call(this, t, n)
                }, t
            }(xn);
        I.addClass("matrixdynamic", [{
            name: "rowsVisibleIf:condition",
            visible: !1
        }, {
            name: "allowAddRows:boolean",
            default: !0
        }, {
            name: "allowRemoveRows:boolean",
            default: !0
        }, {
            name: "rowCount:number",
            default: 2,
            minValue: 0,
            isBindable: !0
        }, {
            name: "minRowCount:number",
            default: 0,
            minValue: 0
        }, {
            name: "maxRowCount:number",
            default: s.matrixMaximumRowCount
        }, {
            name: "keyName"
        }, "defaultRowValue:rowvalue", "defaultValueFromLastRow:boolean", {
            name: "confirmDelete:boolean"
        }, {
            name: "confirmDeleteText",
            dependsOn: "confirmDelete",
            visibleIf: function(e) {
                return !e || e.confirmDelete
            },
            serializationProperty: "locConfirmDeleteText"
        }, {
            name: "addRowLocation",
            default: "default",
            choices: ["default", "top", "bottom", "topBottom"]
        }, {
            name: "addRowText",
            serializationProperty: "locAddRowText"
        }, {
            name: "removeRowText",
            serializationProperty: "locRemoveRowText"
        }, "hideColumnsIfEmpty:boolean", {
            name: "emptyRowsText:text",
            serializationProperty: "locEmptyRowsText",
            dependsOn: "hideColumnsIfEmpty",
            visibleIf: function(e) {
                return !e || e.hideColumnsIfEmpty
            }
        }, {
            name: "detailPanelShowOnAdding:boolean",
            dependsOn: "detailPanelMode",
            visibleIf: function(e) {
                return "none" !== e.detailPanelMode
            }
        }, "allowRowsDragAndDrop:switch"], (function() {
            return new Un("")
        }), "matrixdropdownbase"), ln.Instance.registerQuestion("matrixdynamic", (function(e) {
            var t = new Un(e);
            return t.choices = [1, 2, 3, 4, 5], Sn.addDefaultColumns(t), t
        }));
        var $n = {
                currentType: "",
                getCss: function() {
                    var e = this.currentType ? this[this.currentType] : Gn;
                    return e || (e = Gn), e
                },
                getAvailableThemes: function() {
                    return Object.keys(this).filter((function(e) {
                        return -1 === ["currentType", "getCss", "getAvailableThemes"].indexOf(e)
                    }))
                }
            },
            Gn = {
                root: "sd-root-modern",
                rootMobile: "sd-root-modern--mobile",
                rootReadOnly: "sd-root--readonly",
                container: "sd-container-modern",
                header: "sd-title sd-container-modern__title",
                body: "sd-body",
                bodyWithTimer: "sd-body--with-timer",
                clockTimerRoot: "sd-timer",
                clockTimerRootTop: "sd-timer--top",
                clockTimerRootBottom: "sd-timer--bottom",
                clockTimerProgress: "sd-timer__progress",
                clockTimerProgressAnimation: "sd-timer__progress--animation",
                clockTimerTextContainer: "sd-timer__text-container",
                clockTimerMinorText: "sd-timer__text--minor",
                clockTimerMajorText: "sd-timer__text--major",
                bodyEmpty: "sd-body sd-body--empty",
                footer: "sd-footer sd-body__navigation sd-clearfix",
                title: "sd-title",
                description: "sd-description",
                logo: "sd-logo",
                logoImage: "sd-logo__image",
                headerText: "sd-header__text",
                headerClose: "sd-hidden",
                navigationButton: "",
                bodyNavigationButton: "sd-btn",
                completedPage: "sd-completedpage",
                timerRoot: "sd-body__timer",
                navigation: {
                    complete: "sd-btn--action sd-navigation__complete-btn",
                    prev: "sd-navigation__prev-btn",
                    next: "sd-navigation__next-btn",
                    start: "sd-navigation__start-btn",
                    preview: "sd-navigation__preview-btn",
                    edit: ""
                },
                panel: {
                    title: "sd-title sd-element__title sd-panel__title",
                    titleExpandable: "sd-element__title--expandable",
                    titleExpanded: "sd-element__title--expanded",
                    titleCollapsed: "sd-element__title--collapsed",
                    titleDisabled: "sd-element__title--disabled",
                    titleOnExpand: "sd-panel__title--expanded",
                    titleOnError: "sd-panel__title--error",
                    titleBar: "sd-action-title-bar",
                    description: "sd-description sd-panel__description",
                    container: "sd-element sd-element--complex sd-panel sd-row__panel",
                    withFrame: "sd-element--with-frame",
                    content: "sd-panel__content",
                    icon: "sd-panel__icon",
                    iconExpanded: "sd-panel__icon--expanded",
                    footer: "sd-panel__footer",
                    requiredText: "sd-panel__required-text",
                    header: "sd-panel__header sd-element__header sd-element__header--location-top",
                    collapsed: "sd-element--collapsed",
                    expanded: "sd-element--expanded",
                    nested: "sd-element--nested",
                    invisible: "sd-element--invisible",
                    navigationButton: ""
                },
                paneldynamic: {
                    mainRoot: "sd-element  sd-question sd-question--paneldynamic sd-element--complex sd-question--complex sd-row__question",
                    empty: "sd-question--empty",
                    root: "sd-paneldynamic",
                    navigation: "sd-paneldynamic__navigation",
                    title: "sd-title sd-element__title sd-question__title",
                    button: "sd-action sd-paneldynamic__btn",
                    buttonRemove: "sd-action--negative sd-paneldynamic__remove-btn",
                    buttonAdd: "sd-paneldynamic__add-btn",
                    buttonPrev: "sd-paneldynamic__prev-btn sd-action--icon sd-action",
                    buttonPrevDisabled: "sd-action--disabled",
                    buttonNextDisabled: "sd-action--disabled",
                    buttonNext: "sd-paneldynamic__next-btn sd-action--icon sd-action",
                    progressContainer: "sd-paneldynamic__progress-container",
                    progress: "sd-progress",
                    progressBar: "sd-progress__bar",
                    progressText: "sd-paneldynamic__progress-text",
                    separator: "sd-paneldynamic__separator",
                    panelWrapper: "sd-paneldynamic__panel-wrapper",
                    footer: "sd-paneldynamic__footer",
                    panelFooter: "sd-paneldynamic__panel-footer",
                    footerButtonsContainer: "sd-paneldynamic__buttons-container",
                    panelWrapperInRow: "sd-paneldynamic__panel-wrapper--in-row",
                    progressBtnIcon: "icon-progressbuttonv2",
                    noEntriesPlaceholder: "sd-paneldynamic__placeholder sd-question__placeholder"
                },
                progress: "sd-progress sd-body__progress",
                progressTop: "sd-body__progress--top",
                progressBottom: "sd-body__progress--bottom",
                progressBar: "sd-progress__bar",
                progressText: "sd-progress__text",
                progressButtonsContainerCenter: "sd-progress-buttons__container-center",
                progressButtonsContainer: "sd-progress-buttons__container",
                progressButtonsImageButtonLeft: "sd-progress-buttons__image-button-left",
                progressButtonsImageButtonRight: "sd-progress-buttons__image-button-right",
                progressButtonsImageButtonHidden: "sd-progress-buttons__image-button--hidden",
                progressButtonsListContainer: "sd-progress-buttons__list-container",
                progressButtonsList: "sd-progress-buttons__list",
                progressButtonsListElementPassed: "sd-progress-buttons__list-element--passed",
                progressButtonsListElementCurrent: "sd-progress-buttons__list-element--current",
                progressButtonsListElementNonClickable: "sd-progress-buttons__list-element--nonclickable",
                progressButtonsPageTitle: "sd-progress-buttons__page-title",
                progressButtonsPageDescription: "sd-progress-buttons__page-description",
                progressTextInBar: "sd-hidden",
                page: {
                    root: "sd-page sd-body__page",
                    emptyHeaderRoot: "sd-page__empty-header",
                    title: "sd-title sd-page__title",
                    description: "sd-description sd-page__description"
                },
                pageTitle: "sd-title sd-page__title",
                pageDescription: "sd-description sd-page__description",
                row: "sd-row sd-clearfix",
                rowMultiple: "sd-row--multiple",
                pageRow: "sd-page__row",
                question: {
                    mainRoot: "sd-element sd-question sd-row__question",
                    flowRoot: "sd-element sd-question sd-row__question sd-row__question--flow",
                    withFrame: "sd-element--with-frame",
                    asCell: "sd-table__cell",
                    answered: "sd-question--answered",
                    header: "sd-question__header sd-element__header",
                    headerLeft: "sd-question__header--location--left",
                    headerTop: "sd-question__header--location-top sd-element__header--location-top",
                    headerBottom: "sd-question__header--location--bottom",
                    content: "sd-question__content",
                    contentLeft: "sd-question__content--left",
                    titleLeftRoot: "sd-question--left",
                    titleOnAnswer: "sd-question__title--answer",
                    titleOnError: "sd-question__title--error",
                    title: "sd-title sd-element__title sd-question__title",
                    titleExpandable: "sd-element__title--expandable",
                    titleExpanded: "sd-element__title--expanded",
                    titleCollapsed: "sd-element__title--collapsed",
                    titleDisabled: "sd-element__title--disabled",
                    titleBar: "sd-action-title-bar",
                    requiredText: "sd-question__required-text",
                    number: "sd-element__num",
                    description: "sd-description sd-question__description",
                    descriptionUnderInput: "sd-description sd-question__description sd-question__description--under-input",
                    comment: "sd-input sd-comment",
                    other: "sd-input sd-comment",
                    required: "sd-question--required",
                    titleRequired: "sd-question__title--required",
                    indent: 20,
                    footer: "sd-question__footer",
                    formGroup: "sd-question__form-group",
                    hasError: "sd-question--error",
                    collapsed: "sd-element--collapsed",
                    expanded: "sd-element--expanded",
                    nested: "sd-element--nested",
                    invisible: "sd-element--invisible",
                    composite: "sd-element--complex",
                    disabled: "sd-question--disabled"
                },
                image: {
                    mainRoot: "sd-question sd-question--image",
                    root: "sd-image",
                    image: "sd-image__image",
                    adaptive: "sd-image__image--adaptive",
                    withFrame: ""
                },
                html: {
                    mainRoot: "sd-question sd-row__question sd-question--html",
                    root: "sd-html",
                    withFrame: ""
                },
                error: {
                    root: "sd-question__erbox",
                    icon: "",
                    item: "",
                    tooltip: "sd-question__erbox--tooltip",
                    outsideQuestion: "sd-question__erbox--outside-question",
                    aboveQuestion: "sd-question__erbox--above-question",
                    belowQuestion: "sd-question__erbox--below-question",
                    locationTop: "sd-question__erbox--location--top",
                    locationBottom: "sd-question__erbox--location--bottom"
                },
                checkbox: {
                    root: "sd-selectbase",
                    rootRow: "sd-selectbase--row",
                    rootMultiColumn: "sd-selectbase--multi-column",
                    item: "sd-item sd-checkbox sd-selectbase__item",
                    itemOnError: "sd-item--error",
                    itemSelectAll: "sd-checkbox--selectall",
                    itemNone: "sd-checkbox--none",
                    itemDisabled: "sd-item--disabled sd-checkbox--disabled",
                    itemChecked: "sd-item--checked sd-checkbox--checked",
                    itemHover: "sd-item--allowhover sd-checkbox--allowhover",
                    itemInline: "sd-selectbase__item--inline",
                    label: "sd-selectbase__label",
                    labelChecked: "",
                    itemControl: "sd-visuallyhidden sd-item__control sd-checkbox__control",
                    itemDecorator: "sd-item__svg sd-checkbox__svg",
                    itemSvgIconId: "#icon-v2check",
                    controlLabel: "sd-item__control-label",
                    materialDecorator: "sd-item__decorator sd-checkbox__decorator",
                    other: "sd-input sd-comment sd-selectbase__other",
                    column: "sd-selectbase__column"
                },
                radiogroup: {
                    root: "sd-selectbase",
                    rootRow: "sd-selectbase--row",
                    rootMultiColumn: "sd-selectbase--multi-column",
                    item: "sd-item sd-radio sd-selectbase__item",
                    itemOnError: "sd-item--error",
                    itemInline: "sd-selectbase__item--inline",
                    label: "sd-selectbase__label",
                    labelChecked: "",
                    itemDisabled: "sd-item--disabled sd-radio--disabled",
                    itemChecked: "sd-item--checked sd-radio--checked",
                    itemHover: "sd-item--allowhover sd-radio--allowhover",
                    itemControl: "sd-visuallyhidden sd-item__control sd-radio__control",
                    itemDecorator: "sd-item__svg sd-radio__svg",
                    controlLabel: "sd-item__control-label",
                    materialDecorator: "sd-item__decorator sd-radio__decorator",
                    other: "sd-input sd-comment sd-selectbase__other",
                    clearButton: "",
                    column: "sd-selectbase__column"
                },
                boolean: {
                    mainRoot: "sd-element sd-question sd-row__question sd-question--boolean",
                    root: "sv_qcbc sv_qbln sd-scrollable-container",
                    rootRadio: "sv_qcbc sv_qbln sd-scrollable-container sd-scrollable-container--compact",
                    item: "sd-boolean",
                    itemOnError: "sd-boolean--error",
                    control: "sd-boolean__control sd-visuallyhidden",
                    itemChecked: "sd-boolean--checked",
                    itemIndeterminate: "sd-boolean--indeterminate",
                    itemDisabled: "sd-boolean--disabled",
                    label: "sd-boolean__label",
                    switch: "sd-boolean__switch",
                    disabledLabel: "sd-checkbox__label--disabled",
                    sliderText: "sd-boolean__thumb-text",
                    slider: "sd-boolean__thumb",
                    radioItem: "sd-item",
                    radioItemChecked: "sd-item--checked sd-radio--checked",
                    radioLabel: "sd-selectbase__label",
                    radioControlLabel: "sd-item__control-label",
                    radioFieldset: "sd-selectbase",
                    itemRadioDecorator: "sd-item__svg sd-radio__svg",
                    materialRadioDecorator: "sd-item__decorator sd-radio__decorator",
                    itemRadioControl: "sd-visuallyhidden sd-item__control sd-radio__control",
                    rootCheckbox: "sd-selectbase",
                    checkboxItem: "sd-item sd-selectbase__item sd-checkbox",
                    checkboxLabel: "sd-selectbase__label",
                    checkboxItemOnError: "sd-item--error",
                    checkboxItemIndeterminate: "sd-checkbox--intermediate",
                    checkboxItemChecked: "sd-item--checked sd-checkbox--checked",
                    checkboxItemDecorator: "sd-item__svg sd-checkbox__svg",
                    checkboxItemDisabled: "sd-checkbox--disabled",
                    controlCheckbox: "sd-visuallyhidden sd-item__control sd-checkbox__control",
                    checkboxMaterialDecorator: "sd-item__decorator sd-checkbox__decorator",
                    checkboxControlLabel: "sd-item__control-label",
                    svgIconCheckedId: "#icon-v2check"
                },
                text: {
                    root: "sd-input sd-text",
                    small: "sd-row__question--small",
                    controlDisabled: "sd-input--disabled",
                    onError: "sd-input--error"
                },
                multipletext: {
                    root: "sd-multipletext",
                    itemLabel: "sd-multipletext__item-container sd-input",
                    itemLabelOnError: "sd-multipletext__item-container--error",
                    item: "sd-multipletext__item",
                    itemTitle: "sd-multipletext__item-title",
                    row: "sd-multipletext__row",
                    cell: "sd-multipletext__cell"
                },
                dropdown: {
                    root: "sd-selectbase",
                    small: "sd-row__question--small",
                    selectWrapper: "",
                    other: "sd-input sd-comment sd-selectbase__other",
                    onError: "sd-input--error",
                    label: "sd-selectbase__label",
                    item: "sd-item sd-radio sd-selectbase__item",
                    itemDisabled: "sd-item--disabled sd-radio--disabled",
                    itemChecked: "sd-item--checked sd-radio--checked",
                    itemHover: "sd-item--allowhover sd-radio--allowhover",
                    itemControl: "sd-visuallyhidden sd-item__control sd-radio__control",
                    itemDecorator: "sd-item__svg sd-radio__svg",
                    cleanButton: "sd-dropdown_clean-button",
                    cleanButtonSvg: "sd-dropdown_clean-button-svg",
                    cleanButtonIconId: "icon-clear",
                    control: "sd-input sd-dropdown",
                    controlInputFieldComponent: "sd-dropdown__input-field-component",
                    controlValue: "sd-dropdown__value",
                    controlDisabled: "sd-input--disabled",
                    controlEmpty: "sd-dropdown--empty",
                    controlLabel: "sd-item__control-label",
                    filterStringInput: "sd-dropdown__filter-string-input",
                    materialDecorator: "sd-item__decorator sd-radio__decorator"
                },
                imagepicker: {
                    mainRoot: "sd-element sd-question sd-row__question",
                    root: "sd-selectbase sd-imagepicker",
                    rootColumn: "sd-imagepicker--column",
                    item: "sd-imagepicker__item",
                    itemOnError: "sd-imagepicker__item--error",
                    itemInline: "sd-imagepicker__item--inline",
                    itemChecked: "sd-imagepicker__item--checked",
                    itemDisabled: "sd-imagepicker__item--disabled",
                    itemHover: "sd-imagepicker__item--allowhover",
                    label: "sd-imagepicker__label",
                    itemDecorator: "sd-imagepicker__item-decorator",
                    imageContainer: "sd-imagepicker__image-container",
                    itemControl: "sd-imagepicker__control sd-visuallyhidden",
                    image: "sd-imagepicker__image",
                    itemText: "sd-imagepicker__text",
                    other: "sd-input sd-comment",
                    itemNoImage: "sd-imagepicker__no-image",
                    itemNoImageSvgIcon: "sd-imagepicker__no-image-svg",
                    itemNoImageSvgIconId: "#icon-no-image",
                    column: "sd-selectbase__column sd-imagepicker__column",
                    checkedItemDecorator: "sd-imagepicker__check-decorator",
                    checkedItemSvgIcon: "sd-imagepicker__check-icon",
                    checkedItemSvgIconId: "icon-v2check_24x24"
                },
                matrix: {
                    mainRoot: "sd-element sd-question sd-row__question sd-element--complex sd-question--complex sd-question--table",
                    tableWrapper: "sd-matrix sd-table-wrapper",
                    root: "sd-table sd-matrix__table",
                    rootVerticalAlignTop: "sd-table--align-top",
                    rootVerticalAlignMiddle: "sd-table--align-middle",
                    rootAlternateRows: "sd-table--alternate-rows",
                    rowError: "sd-matrix__row--error",
                    cell: "sd-table__cell sd-matrix__cell",
                    row: "sd-table__row",
                    headerCell: "sd-table__cell sd-table__cell--header",
                    rowTextCell: "sd-table__cell sd-matrix__cell sd-table__cell--row-text",
                    label: "sd-item sd-radio sd-matrix__label",
                    itemOnError: "sd-item--error",
                    itemValue: "sd-visuallyhidden sd-item__control sd-radio__control",
                    itemChecked: "sd-item--checked sd-radio--checked",
                    itemDisabled: "sd-item--disabled sd-radio--disabled",
                    itemHover: "sd-radio--allowhover",
                    materialDecorator: "sd-item__decorator sd-radio__decorator",
                    itemDecorator: "sd-item__svg sd-radio__svg",
                    cellText: "sd-matrix__text",
                    cellTextSelected: "sd-matrix__text--checked",
                    cellTextDisabled: "sd-matrix__text--disabled",
                    cellResponsiveTitle: "sd-matrix__responsive-title"
                },
                matrixdropdown: {
                    mainRoot: "sd-element sd-question sd-row__question sd-element--complex sd-question--complex sd-question--table",
                    rootScroll: "sd-question--scroll",
                    root: "sd-table sd-matrixdropdown",
                    rootVerticalAlignTop: "sd-table--align-top",
                    rootVerticalAlignMiddle: "sd-table--align-middle",
                    tableWrapper: "sd-table-wrapper",
                    rootAlternateRows: "sd-table--alternate-rows",
                    cell: "sd-table__cell",
                    row: "sd-table__row",
                    headerCell: "sd-table__cell sd-table__cell--header",
                    rowTextCell: "sd-table__cell sd-table__cell--row-text",
                    cellRequiredText: "sd-question__required-text",
                    detailButton: "sd-table__cell--detail-button",
                    detailButtonExpanded: "sd-table__cell--detail-button--expanded",
                    detailIcon: "sd-detail-panel__icon",
                    detailIconExpanded: "sd-detail-panel__icon--expanded",
                    detailIconId: "icon-expanddetail",
                    detailIconExpandedId: "icon-collapsedetail",
                    actionsCell: "sd-table__cell sd-table__cell--actions",
                    emptyCell: "sd-table__cell--empty",
                    verticalCell: "sd-table__cell--vertical",
                    cellQuestionWrapper: "sd-table__question-wrapper"
                },
                matrixdynamic: {
                    mainRoot: "sd-element sd-question sd-row__question sd-element--complex sd-question--complex sd-question--table",
                    rootScroll: "sd-question--scroll",
                    empty: "sd-question--empty",
                    root: "sd-table sd-matrixdynamic",
                    tableWrapper: "sd-table-wrapper",
                    cell: "sd-table__cell",
                    row: "sd-table__row",
                    headerCell: "sd-table__cell sd-table__cell--header",
                    rowTextCell: "sd-table__cell sd-table__cell--row-text",
                    cellRequiredText: "sd-question__required-text",
                    button: "sd-action sd-matrixdynamic__btn",
                    detailRow: "sd-table__row sd-table__row--detail",
                    detailButton: "sd-table__cell--detail-button",
                    detailButtonExpanded: "sd-table__cell--detail-button--expanded",
                    detailIcon: "sd-detail-panel__icon",
                    detailIconExpanded: "sd-detail-panel__icon--expanded",
                    detailIconId: "icon-expanddetail",
                    detailIconExpandedId: "icon-collapsedetail",
                    detailPanelCell: "sd-table__cell--detail-panel",
                    actionsCell: "sd-table__cell sd-table__cell--actions",
                    buttonAdd: "sd-matrixdynamic__add-btn",
                    buttonRemove: "sd-action--negative sd-matrixdynamic__remove-btn",
                    iconAdd: "",
                    iconRemove: "",
                    dragElementDecorator: "sd-drag-element__svg",
                    iconDragElement: "#icon-v2dragelement_16x16",
                    footer: "sd-matrixdynamic__footer",
                    emptyRowsSection: "sd-matrixdynamic__placeholder sd-question__placeholder",
                    iconDrag: "sv-matrixdynamic__drag-icon",
                    ghostRow: "sv-matrix-row--drag-drop-ghost-mod",
                    emptyCell: "sd-table__cell--empty",
                    verticalCell: "sd-table__cell--vertical",
                    cellQuestionWrapper: "sd-table__question-wrapper"
                },
                rating: {
                    rootDropdown: "sd-scrollable-container sd-scrollable-container--compact sd-selectbase",
                    root: "sd-scrollable-container sd-rating",
                    rootWrappable: "sd-scrollable-container sd-rating sd-rating--wrappable",
                    item: "sd-rating__item",
                    itemOnError: "sd-rating__item--error",
                    itemHover: "sd-rating__item--allowhover",
                    selected: "sd-rating__item--selected",
                    minText: "sd-rating__item-text sd-rating__min-text",
                    itemText: "sd-rating__item-text",
                    maxText: "sd-rating__item-text sd-rating__max-text",
                    itemDisabled: "sd-rating__item--disabled",
                    control: "sd-input sd-dropdown",
                    controlValue: "sd-dropdown__value",
                    controlDisabled: "sd-input--disabled",
                    controlEmpty: "sd-dropdown--empty",
                    filterStringInput: "sd-dropdown__filter-string-input",
                    onError: "sd-input--error"
                },
                comment: {
                    root: "sd-input sd-comment",
                    small: "sd-row__question--small",
                    controlDisabled: "sd-input--disabled",
                    onError: "sd-input--error"
                },
                expression: "sd-expression",
                file: {
                    root: "sd-file",
                    other: "sd-input sd-comment",
                    placeholderInput: "sd-visuallyhidden",
                    preview: "sd-file__preview",
                    fileSign: "",
                    fileList: "sd-file__list",
                    fileSignBottom: "sd-file__sign",
                    dragArea: "sd-file__drag-area",
                    dragAreaActive: "sd-file__drag-area--active",
                    fileDecorator: "sd-file__decorator",
                    onError: "sd-file__decorator--error",
                    fileDecoratorDrag: "sd-file__decorator--drag",
                    fileInput: "sd-visuallyhidden",
                    noFileChosen: "sd-description sd-file__no-file-chosen",
                    chooseFile: "sd-file__choose-btn",
                    chooseFileAsText: "sd-action sd-file__choose-btn--text",
                    chooseFileAsTextDisabled: "sd-action--disabled",
                    chooseFileAsIcon: "sd-context-btn sd-file__choose-btn--icon",
                    chooseFileIconId: "icon-choosefile",
                    disabled: "sd-file__choose-btn--disabled",
                    removeButton: "sd-context-btn sd-context-btn--negative sd-file__btn sd-file__clean-btn",
                    removeButtonBottom: "",
                    removeButtonIconId: "icon-clear",
                    removeFile: "sd-hidden",
                    removeFileSvg: "",
                    removeFileSvgIconId: "icon-delete",
                    wrapper: "sd-file__wrapper",
                    defaultImage: "sd-file__default-image",
                    defaultImageIconId: "icon-defaultfile",
                    leftIconId: "icon-arrowleft",
                    rightIconId: "icon-arrowright",
                    removeFileButton: "sd-context-btn sd-context-btn--negative sd-file__remove-file-button",
                    dragAreaPlaceholder: "sd-file__drag-area-placeholder",
                    imageWrapper: "sd-file__image-wrapper",
                    single: "sd-file--single",
                    singleImage: "sd-file--single-image",
                    mobile: "sd-file--mobile"
                },
                signaturepad: {
                    mainRoot: "sd-element sd-question sd-question--signature sd-row__question",
                    root: "sd-signaturepad sjs_sp_container",
                    small: "sd-row__question--small",
                    controls: "sjs_sp_controls sd-signaturepad__controls",
                    placeholder: "sjs_sp_placeholder",
                    clearButton: "sjs_sp_clear sd-context-btn sd-context-btn--negative sd-signaturepad__clear",
                    clearButtonIconId: "icon-clear"
                },
                saveData: {
                    root: "",
                    saving: "",
                    error: "",
                    success: "",
                    saveAgainButton: ""
                },
                window: {
                    root: "sv_window",
                    body: "sv_window_content",
                    header: {
                        root: "sv_window_title",
                        title: "",
                        button: "",
                        buttonExpanded: "",
                        buttonCollapsed: ""
                    }
                },
                ranking: {
                    root: "sv-ranking",
                    rootMobileMod: "sv-ranking--mobile",
                    rootDragMod: "sv-ranking--drag",
                    rootDisabled: "sd-ranking--disabled",
                    rootDesignMode: "sv-ranking--design-mode",
                    item: "sv-ranking-item",
                    itemContent: "sv-ranking-item__content sd-ranking-item__content",
                    itemIndex: "sv-ranking-item__index sd-ranking-item__index",
                    controlLabel: "sv-ranking-item__text",
                    itemGhostNode: "sv-ranking-item__ghost",
                    itemIconContainer: "sv-ranking-item__icon-container",
                    itemIcon: "sv-ranking-item__icon",
                    itemIconHoverMod: "sv-ranking-item__icon--hover",
                    itemIconFocusMod: "sv-ranking-item__icon--focus",
                    itemGhostMod: "sv-ranking-item--ghost",
                    itemDragMod: "sv-ranking--drag",
                    itemOnError: "sv-ranking-item--error"
                },
                buttongroup: {
                    root: "sv-button-group",
                    item: "sv-button-group__item",
                    itemIcon: "sv-button-group__item-icon",
                    itemDecorator: "sv-button-group__item-decorator",
                    itemCaption: "sv-button-group__item-caption",
                    itemHover: "sv-button-group__item--hover",
                    itemSelected: "sv-button-group__item--selected",
                    itemDisabled: "sv-button-group__item--disabled",
                    itemControl: "sv-visuallyhidden"
                },
                list: {
                    root: "sv-list__container sd-list",
                    item: "sv-list__item sd-list__item",
                    itemBody: "sv-list__item-body sd-list__item-body",
                    itemSelected: "sv-list__item--selected sd-list__item--selected"
                },
                actionBar: {
                    root: "sd-action-bar",
                    item: "sd-action",
                    defaultSizeMode: "",
                    smallSizeMode: "",
                    itemPressed: "sd-action--pressed",
                    itemAsIcon: "sd-action--icon",
                    itemIcon: "sd-action__icon",
                    itemTitle: "sd-action__title"
                },
                variables: {
                    mobileWidth: "--sd-mobile-width",
                    imagepickerGapBetweenItems: "--sd-imagepicker-gap",
                    themeMark: "--sv-defaultV2-mark"
                },
                tagbox: {
                    root: "sd-selectbase",
                    small: "sd-row__question--small",
                    selectWrapper: "",
                    other: "sd-input sd-comment sd-selectbase__other",
                    onError: "sd-input--error",
                    label: "sd-selectbase__label",
                    item: "sd-item sd-radio sd-selectbase__item",
                    itemDisabled: "sd-item--disabled sd-radio--disabled",
                    itemChecked: "sd-item--checked sd-radio--checked",
                    itemHover: "sd-item--allowhover sd-radio--allowhover",
                    itemControl: "sd-visuallyhidden sd-item__control sd-radio__control",
                    itemDecorator: "sd-item__svg sd-radio__svg",
                    cleanButton: "sd-tagbox_clean-button sd-dropdown_clean-button",
                    cleanButtonSvg: "sd-tagbox_clean-button-svg sd-dropdown_clean-button-svg",
                    cleanButtonIconId: "icon-clear",
                    cleanItemButton: "sd-tagbox-item_clean-button",
                    cleanItemButtonSvg: "sd-tagbox-item_clean-button-svg",
                    cleanItemButtonIconId: "icon-clear_16x16",
                    control: "sd-input sd-tagbox sd-dropdown",
                    controlValue: "sd-tagbox__value sd-dropdown__value",
                    controlValueItems: "sd-tagbox__value-items",
                    placeholderInput: "sd-tagbox__placeholder",
                    controlDisabled: "sd-input--disabled",
                    controlEmpty: "sd-dropdown--empty sd-tagbox--empty",
                    controlLabel: "sd-item__control-label",
                    filterStringInput: "sd-tagbox__filter-string-input sd-dropdown__filter-string-input",
                    materialDecorator: "sd-item__decorator sd-checkbox__decorator"
                }
            },
            Jn = "defaultV2";
        $n[Jn] = Gn;
        var Kn = function() {
                function e() {}
                return Object.defineProperty(e, "serviceUrl", {
                    get: function() {
                        return s.surveyServiceUrl
                    },
                    set: function(e) {
                        s.surveyServiceUrl = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.loadSurvey = function(t, n) {
                    var o = new XMLHttpRequest;
                    o.open("GET", e.serviceUrl + "/getSurvey?surveyId=" + t), o.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), o.onload = function() {
                        var e = JSON.parse(o.response);
                        n(200 == o.status, e, o.response)
                    }, o.send()
                }, e.prototype.getSurveyJsonAndIsCompleted = function(t, n, o) {
                    var r = new XMLHttpRequest;
                    r.open("GET", e.serviceUrl + "/getSurveyAndIsCompleted?surveyId=" + t + "&clientId=" + n), r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), r.onload = function() {
                        var e = JSON.parse(r.response),
                            t = e ? e.survey : null,
                            n = e ? e.isCompleted : null;
                        o(200 == r.status, t, n, r.response)
                    }, r.send()
                }, e.prototype.sendResult = function(t, n, o, r, i) {
                    void 0 === r && (r = null), void 0 === i && (i = !1);
                    var s = new XMLHttpRequest;
                    s.open("POST", e.serviceUrl + "/post/"), s.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    var a = {
                        postId: t,
                        surveyResult: JSON.stringify(n)
                    };
                    r && (a.clientId = r), i && (a.isPartialCompleted = !0);
                    var l = JSON.stringify(a);
                    s.onload = s.onerror = function() {
                        o && o(200 === s.status, s.response, s)
                    }, s.send(l)
                }, e.prototype.sendFile = function(t, n, o) {
                    var r = new XMLHttpRequest;
                    r.onload = r.onerror = function() {
                        o && o(200 == r.status, JSON.parse(r.response))
                    }, r.open("POST", e.serviceUrl + "/upload/", !0);
                    var i = new FormData;
                    i.append("file", n), i.append("postId", t), r.send(i)
                }, e.prototype.getResult = function(t, n, o) {
                    var r = new XMLHttpRequest,
                        i = "resultId=" + t + "&name=" + n;
                    r.open("GET", e.serviceUrl + "/getResult?" + i), r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    r.onload = function() {
                        var e = null,
                            t = null;
                        if (200 == r.status)
                            for (var n in t = [], (e = JSON.parse(r.response)).QuestionResult) {
                                var i = {
                                    name: n,
                                    value: e.QuestionResult[n]
                                };
                                t.push(i)
                            }
                        o(200 == r.status, e, t, r.response)
                    }, r.send()
                }, e.prototype.isCompleted = function(t, n, o) {
                    var r = new XMLHttpRequest,
                        i = "resultId=" + t + "&clientId=" + n;
                    r.open("GET", e.serviceUrl + "/isCompleted?" + i), r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    r.onload = function() {
                        var e = null;
                        200 == r.status && (e = JSON.parse(r.response)), o(200 == r.status, e, r.response)
                    }, r.send()
                }, e
            }(),
            Zn = {
                "$main-color": "#1ab394",
                "$add-button-color": "#1948b3",
                "$remove-button-color": "#ff1800",
                "$disable-color": "#dbdbdb",
                "$progress-text-color": "#9d9d9d",
                "$disabled-label-color": "rgba(64, 64, 64, 0.5)",
                "$slider-color": "white",
                "$disabled-slider-color": "#cfcfcf",
                "$error-color": "#d52901",
                "$text-color": "#404040",
                "$light-text-color": "#fff",
                "$checkmark-color": "#fff",
                "$progress-buttons-color": "#8dd9ca",
                "$inputs-background-color": "transparent",
                "$main-hover-color": "#9f9f9f",
                "$body-container-background-color": "#f4f4f4",
                "$text-border-color": "#d4d4d4",
                "$disabled-text-color": "rgba(64, 64, 64, 0.5)",
                "$border-color": "rgb(64, 64, 64, 0.5)",
                "$header-background-color": "#e7e7e7",
                "$answer-background-color": "rgba(26, 179, 148, 0.2)",
                "$error-background-color": "rgba(213, 41, 1, 0.2)",
                "$radio-checked-color": "#404040",
                "$clean-button-color": "#1948b3",
                "$body-background-color": "#ffffff",
                "$foreground-light": "#909090"
            },
            Xn = {
                "$header-background-color": "#e7e7e7",
                "$body-container-background-color": "#f4f4f4",
                "$main-color": "#1ab394",
                "$main-hover-color": "#0aa384",
                "$body-background-color": "white",
                "$inputs-background-color": "white",
                "$text-color": "#6d7072",
                "$text-input-color": "#6d7072",
                "$header-color": "#6d7072",
                "$border-color": "#e7e7e7",
                "$error-color": "#ed5565",
                "$error-background-color": "#fcdfe2",
                "$progress-text-color": "#9d9d9d",
                "$disable-color": "#dbdbdb",
                "$disabled-label-color": "rgba(64, 64, 64, 0.5)",
                "$slider-color": "white",
                "$disabled-switch-color": "#9f9f9f",
                "$disabled-slider-color": "#cfcfcf",
                "$foreground-light": "#909090",
                "$foreground-disabled": "#161616",
                "$background-dim": "#f3f3f3",
                "$progress-buttons-color": "#8dd9ca",
                "$progress-buttons-line-color": "#d4d4d4"
            },
            Yn = {
                "$header-background-color": "#4a4a4a",
                "$body-container-background-color": "#f8f8f8",
                "$main-color": "#f78119",
                "$main-hover-color": "#e77109",
                "$body-background-color": "white",
                "$inputs-background-color": "white",
                "$text-color": "#4a4a4a",
                "$text-input-color": "#4a4a4a",
                "$header-color": "#f78119",
                "$border-color": "#e7e7e7",
                "$error-color": "#ed5565",
                "$error-background-color": "#fcdfe2",
                "$progress-text-color": "#9d9d9d",
                "$disable-color": "#dbdbdb",
                "$disabled-label-color": "rgba(64, 64, 64, 0.5)",
                "$slider-color": "white",
                "$disabled-switch-color": "#9f9f9f",
                "$disabled-slider-color": "#cfcfcf",
                "$foreground-light": "#909090",
                "$foreground-disabled": "#161616",
                "$background-dim": "#f3f3f3",
                "$progress-buttons-color": "#f7b781",
                "$progress-buttons-line-color": "#d4d4d4"
            },
            eo = {
                "$header-background-color": "#d9d8dd",
                "$body-container-background-color": "#f6f7f2",
                "$main-color": "#3c4f6d",
                "$main-hover-color": "#2c3f5d",
                "$body-background-color": "white",
                "$inputs-background-color": "white",
                "$text-color": "#4a4a4a",
                "$text-input-color": "#4a4a4a",
                "$header-color": "#6d7072",
                "$border-color": "#e7e7e7",
                "$error-color": "#ed5565",
                "$error-background-color": "#fcdfe2",
                "$progress-text-color": "#9d9d9d",
                "$disable-color": "#dbdbdb",
                "$disabled-label-color": "rgba(64, 64, 64, 0.5)",
                "$slider-color": "white",
                "$disabled-switch-color": "#9f9f9f",
                "$disabled-slider-color": "#cfcfcf",
                "$foreground-light": "#909090",
                "$foreground-disabled": "#161616",
                "$background-dim": "#f3f3f3",
                "$progress-buttons-color": "#839ec9",
                "$progress-buttons-line-color": "#d4d4d4"
            },
            to = {
                "$header-background-color": "#ddd2ce",
                "$body-container-background-color": "#f7efed",
                "$main-color": "#68656e",
                "$main-hover-color": "#58555e",
                "$body-background-color": "white",
                "$inputs-background-color": "white",
                "$text-color": "#4a4a4a",
                "$text-input-color": "#4a4a4a",
                "$header-color": "#6d7072",
                "$border-color": "#e7e7e7",
                "$error-color": "#ed5565",
                "$error-background-color": "#fcdfe2",
                "$progress-text-color": "#9d9d9d",
                "$disable-color": "#dbdbdb",
                "$disabled-label-color": "rgba(64, 64, 64, 0.5)",
                "$slider-color": "white",
                "$disabled-switch-color": "#9f9f9f",
                "$disabled-slider-color": "#cfcfcf",
                "$foreground-light": "#909090",
                "$foreground-disabled": "#161616",
                "$background-dim": "#f3f3f3",
                "$progress-buttons-color": "#c6bed4",
                "$progress-buttons-line-color": "#d4d4d4"
            },
            no = {
                "$header-background-color": "#cdccd2",
                "$body-container-background-color": "#efedf4",
                "$main-color": "#0f0f33",
                "$main-hover-color": "#191955",
                "$body-background-color": "white",
                "$inputs-background-color": "white",
                "$text-color": "#0f0f33",
                "$text-input-color": "#0f0f33",
                "$header-color": "#0f0f33",
                "$border-color": "#e7e7e7",
                "$error-color": "#ed5565",
                "$error-background-color": "#fcdfe2",
                "$progress-text-color": "#9d9d9d",
                "$disable-color": "#dbdbdb",
                "$disabled-label-color": "rgba(64, 64, 64, 0.5)",
                "$slider-color": "white",
                "$disabled-switch-color": "#9f9f9f",
                "$disabled-slider-color": "#cfcfcf",
                "$foreground-light": "#909090",
                "$foreground-disabled": "#161616",
                "$background-dim": "#f3f3f3",
                "$progress-buttons-color": "#747491",
                "$progress-buttons-line-color": "#d4d4d4"
            },
            oo = {
                "$header-background-color": "#82b8da",
                "$body-container-background-color": "#dae1e7",
                "$main-color": "#3c3b40",
                "$main-hover-color": "#1e1d20",
                "$body-background-color": "white",
                "$inputs-background-color": "white",
                "$text-color": "#000",
                "$text-input-color": "#000",
                "$header-color": "#000",
                "$border-color": "#e7e7e7",
                "$error-color": "#ed5565",
                "$error-background-color": "#fcdfe2",
                "$disable-color": "#dbdbdb",
                "$progress-text-color": "#9d9d9d",
                "$disabled-label-color": "rgba(64, 64, 64, 0.5)",
                "$slider-color": "white",
                "$disabled-switch-color": "#9f9f9f",
                "$disabled-slider-color": "#cfcfcf",
                "$foreground-light": "#909090",
                "$foreground-disabled": "#161616",
                "$background-dim": "#f3f3f3",
                "$progress-buttons-color": "#d1c9f5",
                "$progress-buttons-line-color": "#d4d4d4"
            },
            ro = {
                "$header-background-color": "#323232",
                "$body-container-background-color": "#f8f8f8",
                "$main-color": "#5ac8fa",
                "$main-hover-color": "#06a1e7",
                "$body-background-color": "white",
                "$inputs-background-color": "white",
                "$text-color": "#000",
                "$text-input-color": "#000",
                "$header-color": "#000",
                "$border-color": "#e7e7e7",
                "$error-color": "#ed5565",
                "$error-background-color": "#fcdfe2",
                "$disable-color": "#dbdbdb",
                "$progress-text-color": "#9d9d9d",
                "$disabled-label-color": "rgba(64, 64, 64, 0.5)",
                "$slider-color": "white",
                "$disabled-switch-color": "#9f9f9f",
                "$disabled-slider-color": "#cfcfcf",
                "$foreground-light": "#909090",
                "$foreground-disabled": "#161616",
                "$background-dim": "#f3f3f3",
                "$progress-buttons-color": "#acdcf2",
                "$progress-buttons-line-color": "#d4d4d4"
            };
        var io = function() {
                function e() {
                    this.sheet = null, e.Enabled && (this.sheet = e.findSheet(e.SurveyJSStylesSheetId), this.sheet || (this.sheet = e.createSheet(e.SurveyJSStylesSheetId), this.initializeStyles(this.sheet))), e.autoApplyTheme()
                }
                return e.autoApplyTheme = function() {
                    if ("bootstrap" !== $n.currentType && "bootstrapmaterial" !== $n.currentType) {
                        var t = e.getIncludedThemeCss();
                        1 === t.length && e.applyTheme(t[0].name)
                    }
                }, e.getAvailableThemes = function() {
                    return $n.getAvailableThemes().filter((function(e) {
                        return -1 !== ["defaultV2", "default", "modern"].indexOf(e)
                    })).map((function(e) {
                        return {
                            name: e,
                            theme: $n[e]
                        }
                    }))
                }, e.getIncludedThemeCss = function() {
                    var t = e.getAvailableThemes();
                    if (document && document.body) {
                        var n = getComputedStyle(document.body);
                        if (n.length) return t.filter((function(e) {
                            return e.theme.variables && n.getPropertyValue(e.theme.variables.themeMark)
                        }))
                    }
                    return []
                }, e.findSheet = function(e) {
                    if ("undefined" == typeof document) return null;
                    for (var t = 0; t < document.styleSheets.length; t++)
                        if (document.styleSheets[t].ownerNode && document.styleSheets[t].ownerNode.id === e) return document.styleSheets[t];
                    return null
                }, e.createSheet = function(t) {
                    var n = document.createElement("style");
                    return n.id = t, n.appendChild(document.createTextNode("")), document.head.appendChild(n), e.Logger && e.Logger.log("style sheet " + t + " created"), n.sheet
                }, e.applyTheme = function(t, n) {
                    if (void 0 === t && (t = "default"), $n.currentType = t, e.Enabled) {
                        if ("bootstrap" !== t && "bootstrapmaterial" !== t) return l = e.ThemeColors[t], u = document.body, Object.keys(l || {}).forEach((function(e) {
                            var t = e.substring(1);
                            u.style.setProperty("--" + t, l[e])
                        })), void(e.Logger && e.Logger.log("apply theme " + t + " completed"));
                        var o = e.ThemeCss[t];
                        if (!o) return void($n.currentType = "defaultV2");
                        var r = n || e.ThemeSelector[t] || e.ThemeSelector.default,
                            i = (t + r).trim(),
                            s = e.findSheet(i);
                        if (!s) {
                            s = e.createSheet(i);
                            var a = e.ThemeColors[t] || e.ThemeColors.default;
                            Object.keys(o).forEach((function(e) {
                                var t = o[e];
                                Object.keys(a || {}).forEach((function(e) {
                                    return t = t.replace(new RegExp("\\" + e, "g"), a[e])
                                }));
                                try {
                                    0 === e.indexOf("body") ? s.insertRule(e + " { " + t + " }", 0) : s.insertRule(r + e + " { " + t + " }", 0)
                                } catch (e) {}
                            }))
                        }
                    }
                    var l, u;
                    e.Logger && e.Logger.log("apply theme " + t + " completed")
                }, e.prototype.initializeStyles = function(t) {
                    e.Enabled && (Object.keys(e.Styles).length && Object.keys(e.Styles).forEach((function(n) {
                        try {
                            t.insertRule(n + " { " + e.Styles[n] + " }", 0)
                        } catch (e) {}
                    })), Object.keys(e.Media).length && Object.keys(e.Media).forEach((function(n) {
                        try {
                            t.insertRule(e.Media[n].media + " { " + n + " { " + e.Media[n].style + " } }", 0)
                        } catch (e) {}
                    })))
                }, e.SurveyJSStylesSheetId = "surveyjs-styles", e.Styles = {}, e.Media = {}, e.ThemeColors = {
                    modern: Zn,
                    default: Xn,
                    orange: Yn,
                    darkblue: eo,
                    darkrose: to,
                    stone: no,
                    winter: oo,
                    winterstone: ro
                }, e.ThemeCss = {}, e.ThemeSelector = {
                    default: ".sv_main ",
                    modern: ".sv-root-modern "
                }, e.Enabled = !0, e
            }(),
            so = function(e) {
                return "undefined" == typeof window ? 0 : window.setTimeout(e, 1e3)
            },
            ao = function(e) {
                "undefined" != typeof window && window.clearTimeout(e)
            },
            lo = function() {
                function e() {
                    this.listenerCounter = 0, this.timerId = -1, this.onTimer = new me
                }
                return Object.defineProperty(e, "instance", {
                    get: function() {
                        return e.instanceValue || (e.instanceValue = new e), e.instanceValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.start = function(e) {
                    var t = this;
                    void 0 === e && (e = null), e && this.onTimer.add(e), this.timerId < 0 && (this.timerId = so((function() {
                        t.doTimer()
                    }))), this.listenerCounter++
                }, e.prototype.stop = function(e) {
                    void 0 === e && (e = null), e && this.onTimer.remove(e), this.listenerCounter--, 0 == this.listenerCounter && this.timerId > -1 && (ao(this.timerId), this.timerId = -1)
                }, e.prototype.doTimer = function() {
                    var e = this;
                    if ((this.onTimer.isEmpty || 0 == this.listenerCounter) && (this.timerId = -1), !(this.timerId < 0)) {
                        var t = this.timerId;
                        this.onTimer.fire(this, {}), t === this.timerId && (this.timerId = so((function() {
                            e.doTimer()
                        })))
                    }
                }, e.instanceValue = null, e
            }(),
            uo = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            co = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            po = function(e) {
                function t(t) {
                    var n = e.call(this) || this;
                    return n.timerFunc = null, n.surveyValue = t, n.onCreating(), n
                }
                return uo(t, e), Object.defineProperty(t.prototype, "survey", {
                    get: function() {
                        return this.surveyValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onCreating = function() {}, t.prototype.start = function() {
                    var e = this;
                    this.survey && (this.isRunning || this.isDesignMode || (this.survey.onCurrentPageChanged.add((function() {
                        e.update()
                    })), this.timerFunc = function() {
                        e.doTimer()
                    }, this.setIsRunning(!0), this.update(), lo.instance.start(this.timerFunc)))
                }, t.prototype.stop = function() {
                    this.isRunning && (this.setIsRunning(!1), lo.instance.stop(this.timerFunc))
                }, Object.defineProperty(t.prototype, "isRunning", {
                    get: function() {
                        return this.getPropertyValue("isRunning", !1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setIsRunning = function(e) {
                    this.setPropertyValue("isRunning", e)
                }, t.prototype.update = function() {
                    this.updateText(), this.updateProgress()
                }, t.prototype.doTimer = function() {
                    var e = this.survey.currentPage;
                    e && (e.timeSpent = e.timeSpent + 1), this.spent = this.spent + 1, this.update(), this.onTimer && this.onTimer(e)
                }, t.prototype.updateProgress = function() {
                    var e = this,
                        t = this.survey.timerInfo,
                        n = t.spent,
                        o = t.limit;
                    o ? 0 == n ? (this.progress = 0, setTimeout((function() {
                        e.progress = Math.floor((n + 1) / o * 100) / 100
                    }), 0)) : n !== o && (this.progress = Math.floor((n + 1) / o * 100) / 100) : this.progress = void 0
                }, t.prototype.updateText = function() {
                    var e = this.survey.timerClock;
                    this.clockMajorText = e.majorText, this.clockMinorText = e.minorText, this.text = this.survey.timerInfoText
                }, Object.defineProperty(t.prototype, "showProgress", {
                    get: function() {
                        return void 0 !== this.progress
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showTimerAsClock", {
                    get: function() {
                        return !!this.survey.getCss().clockTimerRoot
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rootCss", {
                    get: function() {
                        return (new ct).append(this.survey.getCss().clockTimerRoot).append(this.survey.getCss().clockTimerRootTop, this.survey.isTimerPanelShowingOnTop).append(this.survey.getCss().clockTimerRootBottom, this.survey.isTimerPanelShowingOnBottom).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getProgressCss = function() {
                    return (new ct).append(this.survey.getCss().clockTimerProgress).append(this.survey.getCss().clockTimerProgressAnimation, this.progress > 0).toString()
                }, Object.defineProperty(t.prototype, "textContainerCss", {
                    get: function() {
                        return this.survey.getCss().clockTimerTextContainer
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "minorTextCss", {
                    get: function() {
                        return this.survey.getCss().clockTimerMinorText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "majorTextCss", {
                    get: function() {
                        return this.survey.getCss().clockTimerMajorText
                    },
                    enumerable: !1,
                    configurable: !0
                }), co([y()], t.prototype, "text", void 0), co([y()], t.prototype, "progress", void 0), co([y()], t.prototype, "clockMajorText", void 0), co([y()], t.prototype, "clockMinorText", void 0), co([y({
                    defaultValue: 0
                })], t.prototype, "spent", void 0), t
            }(he),
            ho = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            fo = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            mo = function(e) {
                function t(n, o) {
                    void 0 === n && (n = null), void 0 === o && (o = null);
                    var r = e.call(this) || this;
                    r.valuesHash = {}, r.variablesHash = {}, r.onTriggerExecuted = r.addEvent(), r.onCompleting = r.addEvent(), r.onComplete = r.addEvent(), r.onShowingPreview = r.addEvent(), r.onNavigateToUrl = r.addEvent(), r.onStarted = r.addEvent(), r.onPartialSend = r.addEvent(), r.onCurrentPageChanging = r.addEvent(), r.onCurrentPageChanged = r.addEvent(), r.onValueChanging = r.addEvent(), r.onValueChanged = r.addEvent(), r.onVariableChanged = r.addEvent(), r.onVisibleChanged = r.addEvent(), r.onPageVisibleChanged = r.addEvent(), r.onPanelVisibleChanged = r.addEvent(), r.onQuestionCreated = r.addEvent(), r.onQuestionAdded = r.addEvent(), r.onQuestionRemoved = r.addEvent(), r.onPanelAdded = r.addEvent(), r.onPanelRemoved = r.addEvent(), r.onPageAdded = r.addEvent(), r.onValidateQuestion = r.addEvent(), r.onSettingQuestionErrors = r.addEvent(), r.onServerValidateQuestions = r.addEvent(), r.onValidatePanel = r.addEvent(), r.onErrorCustomText = r.addEvent(), r.onValidatedErrorsOnCurrentPage = r.addEvent(), r.onProcessHtml = r.addEvent(), r.onGetQuestionTitle = r.addEvent(), r.onGetTitleTagName = r.addEvent(), r.onGetQuestionNo = r.addEvent(), r.onProgressText = r.addEvent(), r.onTextMarkdown = r.addEvent(), r.onTextRenderAs = r.addEvent(), r.onSendResult = r.addEvent(), r.onGetResult = r.addEvent(), r.onUploadFiles = r.addEvent(), r.onDownloadFile = r.addEvent(), r.onClearFiles = r.addEvent(), r.onLoadChoicesFromServer = r.addEvent(), r.onLoadedSurveyFromService = r.addEvent(), r.onProcessTextValue = r.addEvent(), r.onUpdateQuestionCssClasses = r.addEvent(), r.onUpdatePanelCssClasses = r.addEvent(), r.onUpdatePageCssClasses = r.addEvent(), r.onUpdateChoiceItemCss = r.addEvent(), r.onAfterRenderSurvey = r.addEvent(), r.onAfterRenderHeader = r.addEvent(), r.onAfterRenderPage = r.addEvent(), r.onAfterRenderQuestion = r.addEvent(), r.onAfterRenderQuestionInput = r.addEvent(), r.onAfterRenderPanel = r.addEvent(), r.onFocusInQuestion = r.addEvent(), r.onFocusInPanel = r.addEvent(), r.onShowingChoiceItem = r.addEvent(), r.onChoicesLazyLoad = r.addEvent(), r.onGetChoiceDisplayValue = r.addEvent(), r.onMatrixRowAdded = r.addEvent(), r.onMatrixBeforeRowAdded = r.addEvent(), r.onMatrixRowRemoving = r.addEvent(), r.onMatrixRowRemoved = r.addEvent(), r.onMatrixAllowRemoveRow = r.addEvent(), r.onMatrixCellCreating = r.addEvent(), r.onMatrixCellCreated = r.addEvent(), r.onMatrixAfterCellRender = r.addEvent(), r.onMatrixCellValueChanged = r.addEvent(), r.onMatrixCellValueChanging = r.addEvent(), r.onMatrixCellValidate = r.addEvent(), r.onDynamicPanelAdded = r.addEvent(), r.onDynamicPanelRemoved = r.addEvent(), r.onDynamicPanelRemoving = r.addEvent(), r.onTimer = r.addEvent(), r.onTimerPanelInfoText = r.addEvent(), r.onDynamicPanelItemValueChanged = r.addEvent(), r.onIsAnswerCorrect = r.addEvent(), r.onDragDropAllow = r.addEvent(), r.onScrollingElementToTop = r.addEvent(), r.onLocaleChangedEvent = r.addEvent(), r.onGetQuestionTitleActions = r.addEvent(), r.onGetPanelTitleActions = r.addEvent(), r.onGetPageTitleActions = r.addEvent(), r.onGetPanelFooterActions = r.addEvent(), r.onGetMatrixRowActions = r.addEvent(), r.onElementContentVisibilityChanged = r.addEvent(), r.onGetExpressionDisplayValue = r.addEvent(), r.jsonErrors = null, r.cssValue = null, r.hideRequiredErrors = !1, r._isMobile = !1, r._isDesignMode = !1, r.ignoreValidation = !1, r.isNavigationButtonPressed = !1, r.mouseDownPage = null, r.isCalculatingProgressText = !1, r.isFirstPageRendering = !0, r.isCurrentPageRendering = !0, r.isTriggerIsRunning = !1, r.triggerValues = null, r.triggerKeys = null, r.conditionValues = null, r.isValueChangedOnRunningCondition = !1, r.conditionRunnerCounter = 0, r.conditionUpdateVisibleIndexes = !1, r.conditionNotifyElementsOnAnyValueOrVariableChanged = !1, r.isEndLoadingFromJson = null, r.questionHashes = {
                        names: {},
                        namesInsensitive: {},
                        valueNames: {},
                        valueNamesInsensitive: {}
                    }, r.afterRenderPageTasks = [], r.needRenderIcons = !0, r.skippedPages = [], r.skeletonComponentName = "sv-skeleton", "undefined" != typeof document && (t.stylesManager = new io);
                    var i = function(e) {
                        return "<h3>" + e + "</h3>"
                    };
                    return r.createHtmlLocString("completedHtml", "completingSurvey", i), r.createHtmlLocString("completedBeforeHtml", "completingSurveyBefore", i), r.createHtmlLocString("loadingHtml", "loadingSurvey", i), r.createLocalizableString("logo", r, !1), r.createLocalizableString("startSurveyText", r, !1, !0), r.createLocalizableString("pagePrevText", r, !1, !0), r.createLocalizableString("pageNextText", r, !1, !0), r.createLocalizableString("completeText", r, !1, !0), r.createLocalizableString("previewText", r, !1, !0), r.createLocalizableString("editText", r, !1, !0), r.createLocalizableString("questionTitleTemplate", r, !0), r.textPreProcessor = new sn, r.textPreProcessor.onProcess = function(e) {
                        r.getProcessedTextValue(e)
                    }, r.timerModelValue = new po(r), r.timerModelValue.onTimer = function(e) {
                        r.doTimer(e)
                    }, r.createNewArray("pages", (function(e) {
                        r.doOnPageAdded(e)
                    }), (function(e) {
                        r.doOnPageRemoved(e)
                    })), r.createNewArray("triggers", (function(e) {
                        e.setOwner(r)
                    })), r.createNewArray("calculatedValues", (function(e) {
                        e.setOwner(r)
                    })), r.createNewArray("completedHtmlOnCondition", (function(e) {
                        e.locOwner = r
                    })), r.createNewArray("navigateToUrlOnCondition", (function(e) {
                        e.locOwner = r
                    })), r.registerPropertyChangedHandlers(["locale"], (function() {
                        r.onSurveyLocaleChanged()
                    })), r.registerPropertyChangedHandlers(["firstPageIsStarted"], (function() {
                        r.onFirstPageIsStartedChanged()
                    })), r.registerPropertyChangedHandlers(["mode"], (function() {
                        r.onModeChanged()
                    })), r.registerPropertyChangedHandlers(["progressBarType"], (function() {
                        r.updateProgressText()
                    })), r.registerPropertyChangedHandlers(["questionStartIndex", "requiredText", "questionTitlePattern"], (function() {
                        r.resetVisibleIndexes()
                    })), r.registerPropertyChangedHandlers(["isLoading", "isCompleted", "isCompletedBefore", "mode", "isStartedState", "currentPage"], (function() {
                        r.updateState()
                    })), r.registerPropertyChangedHandlers(["state", "currentPage", "showPreviewBeforeComplete"], (function() {
                        r.onStateAndCurrentPageChanged()
                    })), r.registerPropertyChangedHandlers(["logo", "logoPosition"], (function() {
                        r.updateHasLogo()
                    })), r.onGetQuestionNo.onCallbacksChanged = function() {
                        r.resetVisibleIndexes()
                    }, r.onProgressText.onCallbacksChanged = function() {
                        r.updateProgressText()
                    }, r.onTextMarkdown.onCallbacksChanged = function() {
                        r.locStrsChanged()
                    }, r.onProcessHtml.onCallbacksChanged = function() {
                        r.locStrsChanged()
                    }, r.onGetQuestionTitle.onCallbacksChanged = function() {
                        r.locStrsChanged()
                    }, r.onUpdatePageCssClasses.onCallbacksChanged = function() {
                        r.currentPage && r.currentPage.updateElementCss()
                    }, r.onUpdatePanelCssClasses.onCallbacksChanged = function() {
                        r.currentPage && r.currentPage.updateElementCss()
                    }, r.onUpdateQuestionCssClasses.onCallbacksChanged = function() {
                        r.currentPage && r.currentPage.updateElementCss()
                    }, r.onShowingChoiceItem.onCallbacksChanged = function() {
                        r.rebuildQuestionChoices()
                    }, r.navigationBarValue = r.createNavigationBar(), r.navigationBar.locOwner = r, r.onBeforeCreating(), n && (("string" == typeof n || n instanceof String) && (n = JSON.parse(n)), n && n.clientId && (r.clientId = n.clientId), r.fromJSON(n), r.surveyId && r.loadSurveyFromService(r.surveyId, r.clientId)), r.onCreating(), o && r.render(o), r.updateCss(), r.setCalculatedWidthModeUpdater(), r
                }
                return ho(t, e), Object.defineProperty(t, "cssType", {
                    get: function() {
                        return $n.currentType
                    },
                    set: function(e) {
                        io.applyTheme(e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "platformName", {
                    get: function() {
                        return t.platform
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "commentSuffix", {
                    get: function() {
                        return s.commentSuffix
                    },
                    set: function(e) {
                        s.commentSuffix = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "commentPrefix", {
                    get: function() {
                        return this.commentSuffix
                    },
                    set: function(e) {
                        this.commentSuffix = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createHtmlLocString = function(e, t, n) {
                    this.createLocalizableString(e, this, !1, t).onGetLocalizationTextCallback = n
                }, t.prototype.getType = function() {
                    return "survey"
                }, t.prototype.onPropertyValueChanged = function(e, t, n) {
                    "questionsOnPageMode" === e && this.onQuestionsOnPageModeChanged(t)
                }, Object.defineProperty(t.prototype, "pages", {
                    get: function() {
                        return this.getPropertyValue("pages")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.render = function(e) {
                    void 0 === e && (e = null), this.renderCallback && this.renderCallback()
                }, t.prototype.updateSurvey = function(e, t) {
                    var n = function() {
                            if ("model" == r || "children" == r) return "continue";
                            if (0 == r.indexOf("on") && o[r] && o[r].add) {
                                var t = e[r];
                                o[r].add((function(e, n) {
                                    t(e, n)
                                }))
                            } else o[r] = e[r]
                        },
                        o = this;
                    for (var r in e) n();
                    e && e.data && this.onValueChanged.add((function(t, n) {
                        e.data[n.name] = n.value
                    }))
                }, t.prototype.getCss = function() {
                    return this.css
                }, t.prototype.updateCompletedPageCss = function() {
                    this.containerCss = this.css.container, this.completedCss = (new ct).append(this.css.body).append(this.css.completedPage).toString()
                }, t.prototype.updateCss = function() {
                    this.rootCss = this.getRootCss(), this.updateNavigationCss(), this.updateCompletedPageCss()
                }, Object.defineProperty(t.prototype, "css", {
                    get: function() {
                        return this.cssValue || (this.cssValue = {}, this.copyCssClasses(this.cssValue, $n.getCss())), this.cssValue
                    },
                    set: function(e) {
                        this.setCss(e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCss = function(e, t) {
                    void 0 === t && (t = !0), t ? this.mergeValues(e, this.css) : this.cssValue = e, this.updateCss(), this.updateElementCss(!1)
                }, Object.defineProperty(t.prototype, "cssTitle", {
                    get: function() {
                        return this.css.title
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssNavigationComplete", {
                    get: function() {
                        return this.getNavigationCss(this.cssSurveyNavigationButton, this.css.navigation.complete)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssNavigationPreview", {
                    get: function() {
                        return this.getNavigationCss(this.cssSurveyNavigationButton, this.css.navigation.preview)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssNavigationEdit", {
                    get: function() {
                        return this.getNavigationCss(this.css.navigationButton, this.css.navigation.edit)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssNavigationPrev", {
                    get: function() {
                        return this.getNavigationCss(this.cssSurveyNavigationButton, this.css.navigation.prev)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssNavigationStart", {
                    get: function() {
                        return this.getNavigationCss(this.cssSurveyNavigationButton, this.css.navigation.start)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssNavigationNext", {
                    get: function() {
                        return this.getNavigationCss(this.cssSurveyNavigationButton, this.css.navigation.next)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssSurveyNavigationButton", {
                    get: function() {
                        return (new ct).append(this.css.navigationButton).append(this.css.bodyNavigationButton).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "bodyCss", {
                    get: function() {
                        return (new ct).append(this.css.body).append(this.css.bodyWithTimer, "none" != this.showTimerPanel && "running" === this.state).append(this.css.body + "--" + this.calculatedWidthMode).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "completedStateCss", {
                    get: function() {
                        return this.getPropertyValue("completedStateCss", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getCompletedStateCss = function() {
                    return (new ct).append(this.css.saveData[this.completedState], "" !== this.completedState).toString()
                }, t.prototype.getNavigationCss = function(e, t) {
                    return (new ct).append(e).append(t).toString()
                }, Object.defineProperty(t.prototype, "lazyRendering", {
                    get: function() {
                        return !0 === this.lazyRenderingValue
                    },
                    set: function(e) {
                        if (this.lazyRendering !== e) {
                            this.lazyRenderingValue = e;
                            var t = this.currentPage;
                            t && t.updateRows()
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isLazyRendering", {
                    get: function() {
                        return this.lazyRendering || s.lazyRowsRendering
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateLazyRenderingRowsOnRemovingElements = function() {
                    if (this.isLazyRendering) {
                        var e = this.currentPage;
                        e && function(e) {
                            if (document) {
                                var t = document.getElementById(e);
                                if (t) {
                                    var n = $e(t);
                                    n && n.dispatchEvent(new CustomEvent("scroll"))
                                }
                            }
                        }(e.id)
                    }
                }, Object.defineProperty(t.prototype, "triggers", {
                    get: function() {
                        return this.getPropertyValue("triggers")
                    },
                    set: function(e) {
                        this.setPropertyValue("triggers", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "calculatedValues", {
                    get: function() {
                        return this.getPropertyValue("calculatedValues")
                    },
                    set: function(e) {
                        this.setPropertyValue("calculatedValues", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "surveyId", {
                    get: function() {
                        return this.getPropertyValue("surveyId", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("surveyId", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "surveyPostId", {
                    get: function() {
                        return this.getPropertyValue("surveyPostId", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("surveyPostId", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "clientId", {
                    get: function() {
                        return this.getPropertyValue("clientId", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("clientId", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cookieName", {
                    get: function() {
                        return this.getPropertyValue("cookieName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("cookieName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "sendResultOnPageNext", {
                    get: function() {
                        return this.getPropertyValue("sendResultOnPageNext", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("sendResultOnPageNext", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "surveyShowDataSaving", {
                    get: function() {
                        return this.getPropertyValue("surveyShowDataSaving", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("surveyShowDataSaving", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "focusFirstQuestionAutomatic", {
                    get: function() {
                        return this.getPropertyValue("focusFirstQuestionAutomatic")
                    },
                    set: function(e) {
                        this.setPropertyValue("focusFirstQuestionAutomatic", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "focusOnFirstError", {
                    get: function() {
                        return this.getPropertyValue("focusOnFirstError")
                    },
                    set: function(e) {
                        this.setPropertyValue("focusOnFirstError", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showNavigationButtons", {
                    get: function() {
                        return this.getPropertyValue("showNavigationButtons")
                    },
                    set: function(e) {
                        !0 !== e && void 0 !== e || (e = "bottom"), !1 === e && (e = "none"), this.setPropertyValue("showNavigationButtons", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showPrevButton", {
                    get: function() {
                        return this.getPropertyValue("showPrevButton")
                    },
                    set: function(e) {
                        this.setPropertyValue("showPrevButton", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showTitle", {
                    get: function() {
                        return this.getPropertyValue("showTitle")
                    },
                    set: function(e) {
                        this.setPropertyValue("showTitle", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showPageTitles", {
                    get: function() {
                        return this.getPropertyValue("showPageTitles")
                    },
                    set: function(e) {
                        this.setPropertyValue("showPageTitles", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showCompletedPage", {
                    get: function() {
                        return this.getPropertyValue("showCompletedPage")
                    },
                    set: function(e) {
                        this.setPropertyValue("showCompletedPage", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "navigateToUrl", {
                    get: function() {
                        return this.getPropertyValue("navigateToUrl")
                    },
                    set: function(e) {
                        this.setPropertyValue("navigateToUrl", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "navigateToUrlOnCondition", {
                    get: function() {
                        return this.getPropertyValue("navigateToUrlOnCondition")
                    },
                    set: function(e) {
                        this.setPropertyValue("navigateToUrlOnCondition", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getNavigateToUrl = function() {
                    var e = this.getExpressionItemOnRunCondition(this.navigateToUrlOnCondition),
                        t = e ? e.url : this.navigateToUrl;
                    return t && (t = this.processText(t, !1)), t
                }, t.prototype.navigateTo = function() {
                    var e = {
                        url: this.getNavigateToUrl()
                    };
                    this.onNavigateToUrl.fire(this, e), e.url && "undefined" != typeof window && window.location && (window.location.href = e.url)
                }, Object.defineProperty(t.prototype, "requiredText", {
                    get: function() {
                        return this.getPropertyValue("requiredText", "*")
                    },
                    set: function(e) {
                        this.setPropertyValue("requiredText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.beforeSettingQuestionErrors = function(e, t) {
                    this.maakeRequiredErrorsInvisibgle(t), this.onSettingQuestionErrors.fire(this, {
                        question: e,
                        errors: t
                    })
                }, t.prototype.beforeSettingPanelErrors = function(e, t) {
                    this.maakeRequiredErrorsInvisibgle(t)
                }, t.prototype.maakeRequiredErrorsInvisibgle = function(e) {
                    if (this.hideRequiredErrors)
                        for (var t = 0; t < e.length; t++) {
                            var n = e[t].getErrorType();
                            "required" != n && "requireoneanswer" != n || (e[t].visible = !1)
                        }
                }, Object.defineProperty(t.prototype, "questionStartIndex", {
                    get: function() {
                        return this.getPropertyValue("questionStartIndex", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionStartIndex", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "storeOthersAsComment", {
                    get: function() {
                        return this.getPropertyValue("storeOthersAsComment")
                    },
                    set: function(e) {
                        this.setPropertyValue("storeOthersAsComment", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxTextLength", {
                    get: function() {
                        return this.getPropertyValue("maxTextLength")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxTextLength", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxOthersLength", {
                    get: function() {
                        return this.getPropertyValue("maxOthersLength")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxOthersLength", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "goNextPageAutomatic", {
                    get: function() {
                        return this.getPropertyValue("goNextPageAutomatic", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("goNextPageAutomatic", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowCompleteSurveyAutomatic", {
                    get: function() {
                        return this.getPropertyValue("allowCompleteSurveyAutomatic", !0)
                    },
                    set: function(e) {
                        this.setPropertyValue("allowCompleteSurveyAutomatic", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "checkErrorsMode", {
                    get: function() {
                        return this.getPropertyValue("checkErrorsMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("checkErrorsMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "autoGrowComment", {
                    get: function() {
                        return this.getPropertyValue("autoGrowComment")
                    },
                    set: function(e) {
                        this.setPropertyValue("autoGrowComment", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "textUpdateMode", {
                    get: function() {
                        return this.getPropertyValue("textUpdateMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("textUpdateMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "clearInvisibleValues", {
                    get: function() {
                        return this.getPropertyValue("clearInvisibleValues")
                    },
                    set: function(e) {
                        !0 === e && (e = "onComplete"), !1 === e && (e = "none"), this.setPropertyValue("clearInvisibleValues", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.clearIncorrectValues = function(e) {
                    void 0 === e && (e = !1);
                    for (var t = 0; t < this.pages.length; t++) this.pages[t].clearIncorrectValues();
                    if (e) {
                        var n = this.data,
                            o = !1;
                        for (var r in n)
                            if (!this.getQuestionByValueName(r) && !this.iscorrectValueWithPostPrefix(r, s.commentSuffix) && !this.iscorrectValueWithPostPrefix(r, s.matrixTotalValuePostFix)) {
                                var i = this.getCalculatedValueByName(r);
                                i && i.includeIntoResult || (o = !0, delete n[r])
                            } o && (this.data = n)
                    }
                }, t.prototype.iscorrectValueWithPostPrefix = function(e, t) {
                    return e.indexOf(t) === e.length - t.length && !!this.getQuestionByValueName(e.substring(0, e.indexOf(t)))
                }, Object.defineProperty(t.prototype, "keepIncorrectValues", {
                    get: function() {
                        return this.getPropertyValue("keepIncorrectValues", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("keepIncorrectValues", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locale", {
                    get: function() {
                        return this.getPropertyValue("locale", u.currentLocale)
                    },
                    set: function(e) {
                        e !== u.defaultLocale || u.currentLocale || (e = ""), this.setPropertyValue("locale", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onSurveyLocaleChanged = function() {
                    this.notifyElementsOnAnyValueOrVariableChanged("locale"), this.localeChanged(), this.onLocaleChangedEvent.fire(this, this.locale)
                }, t.prototype.getUsedLocales = function() {
                    var e = new Array;
                    this.addUsedLocales(e);
                    var t = e.indexOf("default");
                    if (t > -1) {
                        var n = u.defaultLocale,
                            o = e.indexOf(n);
                        o > -1 && e.splice(o, 1), t = e.indexOf("default"), e[t] = n
                    }
                    return e
                }, t.prototype.localeChanged = function() {
                    for (var e = 0; e < this.pages.length; e++) this.pages[e].localeChanged()
                }, t.prototype.getLocale = function() {
                    return this.locale
                }, t.prototype.locStrsChanged = function() {
                    if (e.prototype.locStrsChanged.call(this), this.currentPage) {
                        this.isShowStartingPage || this.updateProgressText();
                        var t = this.activePage;
                        t && t.locStrsChanged();
                        for (var n = this.visiblePages, o = 0; o < n.length; o++) n[o].navigationLocStrChanged();
                        this.navigationBar.locStrsChanged()
                    }
                }, t.prototype.getMarkdownHtml = function(e, t) {
                    return this.getSurveyMarkdownHtml(this, e, t)
                }, t.prototype.getRenderer = function(e) {
                    return this.getRendererForString(this, e)
                }, t.prototype.getRendererContext = function(e) {
                    return this.getRendererContextForString(this, e)
                }, t.prototype.getRendererForString = function(e, t) {
                    var n = {
                        element: e,
                        name: t,
                        renderAs: this.getBuiltInRendererForString(e, t)
                    };
                    return this.onTextRenderAs.fire(this, n), n.renderAs
                }, t.prototype.getRendererContextForString = function(e, t) {
                    return t
                }, t.prototype.getExpressionDisplayValue = function(e, t, n) {
                    var o = {
                        question: e,
                        value: t,
                        displayValue: n
                    };
                    return this.onGetExpressionDisplayValue.fire(this, o), o.displayValue
                }, t.prototype.getBuiltInRendererForString = function(e, t) {
                    if (this.isDesignMode) return d.editableRenderer
                }, t.prototype.getProcessedText = function(e) {
                    return this.processText(e, !0)
                }, t.prototype.getLocString = function(e) {
                    return this.getLocalizationString(e)
                }, t.prototype.getErrorCustomText = function(e, t) {
                    return this.getSurveyErrorCustomText(this, e, t)
                }, t.prototype.getSurveyErrorCustomText = function(e, t, n) {
                    var o = {
                        text: t,
                        name: n.getErrorType(),
                        obj: e,
                        error: n
                    };
                    return this.onErrorCustomText.fire(this, o), o.text
                }, Object.defineProperty(t.prototype, "emptySurveyText", {
                    get: function() {
                        return this.getLocalizationString("emptySurvey")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "logo", {
                    get: function() {
                        return this.getLocalizableStringText("logo")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("logo", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locLogo", {
                    get: function() {
                        return this.getLocalizableString("logo")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "logoWidth", {
                    get: function() {
                        return Ke(this.getPropertyValue("logoWidth"))
                    },
                    set: function(e) {
                        this.setPropertyValue("logoWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "logoHeight", {
                    get: function() {
                        return Ke(this.getPropertyValue("logoHeight"))
                    },
                    set: function(e) {
                        this.setPropertyValue("logoHeight", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "logoPosition", {
                    get: function() {
                        return this.getPropertyValue("logoPosition")
                    },
                    set: function(e) {
                        this.setPropertyValue("logoPosition", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasLogo", {
                    get: function() {
                        return this.getPropertyValue("hasLogo", !1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateHasLogo = function() {
                    this.setPropertyValue("hasLogo", !!this.logo && "none" !== this.logoPosition)
                }, Object.defineProperty(t.prototype, "isLogoBefore", {
                    get: function() {
                        return !this.isDesignMode && (this.renderedHasLogo && ("left" === this.logoPosition || "top" === this.logoPosition))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isLogoAfter", {
                    get: function() {
                        return this.isDesignMode ? this.renderedHasLogo : this.renderedHasLogo && ("right" === this.logoPosition || "bottom" === this.logoPosition)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "logoClassNames", {
                    get: function() {
                        return (new ct).append(this.css.logo).append({
                            left: "sv-logo--left",
                            right: "sv-logo--right",
                            top: "sv-logo--top",
                            bottom: "sv-logo--bottom"
                        } [this.logoPosition]).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedHasTitle", {
                    get: function() {
                        return this.isDesignMode ? this.isPropertyVisible("title") : !this.locTitle.isEmpty && this.showTitle
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedHasDescription", {
                    get: function() {
                        return this.isDesignMode ? this.isPropertyVisible("description") : !!this.hasDescription
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitle", {
                    get: function() {
                        return this.renderedHasTitle
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedHasLogo", {
                    get: function() {
                        return this.isDesignMode ? this.isPropertyVisible("logo") : this.hasLogo
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedHasHeader", {
                    get: function() {
                        return this.renderedHasTitle || this.renderedHasLogo
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "logoFit", {
                    get: function() {
                        return this.getPropertyValue("logoFit")
                    },
                    set: function(e) {
                        this.setPropertyValue("logoFit", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setIsMobile = function(e) {
                    void 0 === e && (e = !0), this.isMobile !== e && (this._isMobile = e, this.updateCss(), this.getAllQuestions().map((function(t) {
                        return t.isMobile = e
                    })))
                }, Object.defineProperty(t.prototype, "isMobile", {
                    get: function() {
                        return this._isMobile
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isLogoImageChoosen = function() {
                    return this.locLogo.renderedHtml
                }, Object.defineProperty(t.prototype, "titleMaxWidth", {
                    get: function() {
                        if (!("undefined" != typeof window && void 0 !== window.orientation || this.isMobile || this.isValueEmpty(this.isLogoImageChoosen()) || s.supportCreatorV2)) {
                            var e = this.logoWidth;
                            if ("left" === this.logoPosition || "right" === this.logoPosition) return "calc(100% - 5px - 2em - " + e + ")"
                        }
                        return ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "completedHtml", {
                    get: function() {
                        return this.getLocalizableStringText("completedHtml")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("completedHtml", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locCompletedHtml", {
                    get: function() {
                        return this.getLocalizableString("completedHtml")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "completedHtmlOnCondition", {
                    get: function() {
                        return this.getPropertyValue("completedHtmlOnCondition")
                    },
                    set: function(e) {
                        this.setPropertyValue("completedHtmlOnCondition", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.runExpression = function(e) {
                    if (!e) return null;
                    var t = this.getFilteredValues(),
                        n = this.getFilteredProperties();
                    return new ae(e).run(t, n)
                }, t.prototype.runCondition = function(e) {
                    if (!e) return !1;
                    var t = this.getFilteredValues(),
                        n = this.getFilteredProperties();
                    return new se(e).run(t, n)
                }, t.prototype.runTriggers = function() {
                    this.checkTriggers(this.getFilteredValues(), !1)
                }, Object.defineProperty(t.prototype, "renderedCompletedHtml", {
                    get: function() {
                        var e = this.getExpressionItemOnRunCondition(this.completedHtmlOnCondition);
                        return e ? e.html : this.completedHtml
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getExpressionItemOnRunCondition = function(e) {
                    if (0 == e.length) return null;
                    for (var t = this.getFilteredValues(), n = this.getFilteredProperties(), o = 0; o < e.length; o++)
                        if (e[o].runCondition(t, n)) return e[o];
                    return null
                }, Object.defineProperty(t.prototype, "completedBeforeHtml", {
                    get: function() {
                        return this.getLocalizableStringText("completedBeforeHtml")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("completedBeforeHtml", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locCompletedBeforeHtml", {
                    get: function() {
                        return this.getLocalizableString("completedBeforeHtml")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "loadingHtml", {
                    get: function() {
                        return this.getLocalizableStringText("loadingHtml")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("loadingHtml", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locLoadingHtml", {
                    get: function() {
                        return this.getLocalizableString("loadingHtml")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "defaultLoadingHtml", {
                    get: function() {
                        return "<h3>" + this.getLocalizationString("loadingSurvey") + "</h3>"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "navigationBar", {
                    get: function() {
                        return this.navigationBarValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.addNavigationItem = function(e) {
                    return e.component || (e.component = "sv-nav-btn"), e.innerCss || (e.innerCss = this.cssSurveyNavigationButton), this.navigationBar.addAction(e)
                }, Object.defineProperty(t.prototype, "startSurveyText", {
                    get: function() {
                        return this.getLocalizableStringText("startSurveyText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("startSurveyText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locStartSurveyText", {
                    get: function() {
                        return this.getLocalizableString("startSurveyText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "pagePrevText", {
                    get: function() {
                        return this.getLocalizableStringText("pagePrevText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("pagePrevText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPagePrevText", {
                    get: function() {
                        return this.getLocalizableString("pagePrevText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "pageNextText", {
                    get: function() {
                        return this.getLocalizableStringText("pageNextText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("pageNextText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPageNextText", {
                    get: function() {
                        return this.getLocalizableString("pageNextText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "completeText", {
                    get: function() {
                        return this.getLocalizableStringText("completeText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("completeText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locCompleteText", {
                    get: function() {
                        return this.getLocalizableString("completeText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "previewText", {
                    get: function() {
                        return this.getLocalizableStringText("previewText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("previewText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPreviewText", {
                    get: function() {
                        return this.getLocalizableString("previewText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "editText", {
                    get: function() {
                        return this.getLocalizableStringText("editText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("editText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locEditText", {
                    get: function() {
                        return this.getLocalizableString("editText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getElementTitleTagName = function(e, t) {
                    if (this.onGetTitleTagName.isEmpty) return t;
                    var n = {
                        element: e,
                        tagName: t
                    };
                    return this.onGetTitleTagName.fire(this, n), n.tagName
                }, Object.defineProperty(t.prototype, "questionTitlePattern", {
                    get: function() {
                        return this.getPropertyValue("questionTitlePattern", "numTitleRequire")
                    },
                    set: function(e) {
                        "numRequireTitle" !== e && "requireNumTitle" !== e && "numTitle" != e && (e = "numTitleRequire"), this.setPropertyValue("questionTitlePattern", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionTitlePatternOptions = function() {
                    var e = new Array,
                        t = this.getLocalizationString("questionTitlePatternText"),
                        n = this.questionStartIndex ? this.questionStartIndex : "1.";
                    return e.push({
                        value: "numTitleRequire",
                        text: n + " " + t + " " + this.requiredText
                    }), e.push({
                        value: "numRequireTitle",
                        text: n + " " + this.requiredText + " " + t
                    }), e.push({
                        value: "requireNumTitle",
                        text: this.requiredText + " " + n + " " + t
                    }), e.push({
                        value: "numTitle",
                        text: n + " " + t
                    }), e
                }, Object.defineProperty(t.prototype, "questionTitleTemplate", {
                    get: function() {
                        return this.getLocalizableStringText("questionTitleTemplate")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("questionTitleTemplate", e), this.questionTitlePattern = this.getNewTitlePattern(e), this.questionStartIndex = this.getNewQuestionTitleElement(e, "no", this.questionStartIndex, "1"), this.requiredText = this.getNewQuestionTitleElement(e, "require", this.requiredText, "*")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getNewTitlePattern = function(e) {
                    if (e) {
                        for (var t = []; e.indexOf("{") > -1;) {
                            var n = (e = e.substring(e.indexOf("{") + 1)).indexOf("}");
                            if (n < 0) break;
                            t.push(e.substring(0, n)), e = e.substring(n + 1)
                        }
                        if (t.length > 1) {
                            if ("require" == t[0]) return "requireNumTitle";
                            if ("require" == t[1] && 3 == t.length) return "numRequireTitle";
                            if (t.indexOf("require") < 0) return "numTitle"
                        }
                        if (1 == t.length && "title" == t[0]) return "numTitle"
                    }
                    return "numTitleRequire"
                }, t.prototype.getNewQuestionTitleElement = function(e, t, n, o) {
                    if (t = "{" + t + "}", !e || e.indexOf(t) < 0) return n;
                    for (var r = e.indexOf(t), i = "", s = "", a = r - 1; a >= 0 && "}" != e[a]; a--);
                    for (a < r - 1 && (i = e.substring(a + 1, r)), a = r += t.length; a < e.length && "{" != e[a]; a++);
                    for (a > r && (s = e.substring(r, a)), a = 0; a < i.length && i.charCodeAt(a) < 33;) a++;
                    for (i = i.substring(a), a = s.length - 1; a >= 0 && s.charCodeAt(a) < 33;) a--;
                    return s = s.substring(0, a + 1), i || s ? i + (n || o) + s : n
                }, Object.defineProperty(t.prototype, "locQuestionTitleTemplate", {
                    get: function() {
                        return this.getLocalizableString("questionTitleTemplate")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getUpdatedQuestionTitle = function(e, t) {
                    if (this.onGetQuestionTitle.isEmpty) return t;
                    var n = {
                        question: e,
                        title: t
                    };
                    return this.onGetQuestionTitle.fire(this, n), n.title
                }, t.prototype.getUpdatedQuestionNo = function(e, t) {
                    if (this.onGetQuestionNo.isEmpty) return t;
                    var n = {
                        question: e,
                        no: t
                    };
                    return this.onGetQuestionNo.fire(this, n), n.no
                }, Object.defineProperty(t.prototype, "showPageNumbers", {
                    get: function() {
                        return this.getPropertyValue("showPageNumbers", !1)
                    },
                    set: function(e) {
                        e !== this.showPageNumbers && (this.setPropertyValue("showPageNumbers", e), this.updateVisibleIndexes())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showQuestionNumbers", {
                    get: function() {
                        return this.getPropertyValue("showQuestionNumbers")
                    },
                    set: function(e) {
                        !0 === e && (e = "on"), !1 === e && (e = "off"), (e = "onpage" === (e = e.toLowerCase()) ? "onPage" : e) !== this.showQuestionNumbers && (this.setPropertyValue("showQuestionNumbers", e), this.updateVisibleIndexes())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showProgressBar", {
                    get: function() {
                        return this.getPropertyValue("showProgressBar")
                    },
                    set: function(e) {
                        this.setPropertyValue("showProgressBar", e.toLowerCase())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "progressBarType", {
                    get: function() {
                        return this.getPropertyValue("progressBarType")
                    },
                    set: function(e) {
                        "correctquestion" === e && (e = "correctQuestion"), "requiredquestion" === e && (e = "requiredQuestion"), this.setPropertyValue("progressBarType", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowProgressBarOnTop", {
                    get: function() {
                        return !!this.canShowProresBar() && ("top" === this.showProgressBar || "both" === this.showProgressBar)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowProgressBarOnBottom", {
                    get: function() {
                        return !!this.canShowProresBar() && ("bottom" === this.showProgressBar || "both" === this.showProgressBar)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getProgressCssClasses = function() {
                    return (new ct).append(this.css.progress).append(this.css.progressTop, this.isShowProgressBarOnTop).append(this.css.progressBottom, this.isShowProgressBarOnBottom).toString()
                }, t.prototype.canShowProresBar = function() {
                    return !this.isShowingPreview || "showAllQuestions" != this.showPreviewBeforeComplete
                }, Object.defineProperty(t.prototype, "processedTitle", {
                    get: function() {
                        return this.locTitle.renderedHtml
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "questionTitleLocation", {
                    get: function() {
                        return this.getPropertyValue("questionTitleLocation")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionTitleLocation", e.toLowerCase()), this.isLoadingFromJson || this.updateElementCss(!0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateElementCss = function(e) {
                    this.startedPage && this.startedPage.updateElementCss(e);
                    for (var t = this.visiblePages, n = 0; n < t.length; n++) t[n].updateElementCss(e)
                }, Object.defineProperty(t.prototype, "questionErrorLocation", {
                    get: function() {
                        return this.getPropertyValue("questionErrorLocation")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionErrorLocation", e.toLowerCase())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "questionDescriptionLocation", {
                    get: function() {
                        return this.getPropertyValue("questionDescriptionLocation")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionDescriptionLocation", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "mode", {
                    get: function() {
                        return this.getPropertyValue("mode")
                    },
                    set: function(e) {
                        (e = e.toLowerCase()) != this.mode && ("edit" != e && "display" != e || this.setPropertyValue("mode", e))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onModeChanged = function() {
                    for (var e = 0; e < this.pages.length; e++) {
                        var t = this.pages[e];
                        t.setPropertyValue("isReadOnly", t.isReadOnly)
                    }
                    this.updateButtonsVisibility(), this.updateCss()
                }, Object.defineProperty(t.prototype, "data", {
                    get: function() {
                        for (var e = {}, t = this.getValuesKeys(), n = 0; n < t.length; n++) {
                            var o = t[n],
                                r = this.getDataValueCore(this.valuesHash, o);
                            void 0 !== r && (e[o] = r)
                        }
                        return this.setCalculatedValuesIntoResult(e), e
                    },
                    set: function(e) {
                        this.valuesHash = {}, this.setDataCore(e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.mergeData = function(e) {
                    e && this.setDataCore(e)
                }, t.prototype.setDataCore = function(e) {
                    if (e)
                        for (var t in e) this.setDataValueCore(this.valuesHash, t, e[t]);
                    this.updateAllQuestionsValue(), this.notifyAllQuestionsOnValueChanged(), this.notifyElementsOnAnyValueOrVariableChanged(""), this.runConditions(), this.updateAllQuestionsValue()
                }, Object.defineProperty(t.prototype, "editingObj", {
                    get: function() {
                        return this.editingObjValue
                    },
                    set: function(e) {
                        var t = this;
                        if (this.editingObj != e && (this.editingObj && this.editingObj.onPropertyChanged.remove(this.onEditingObjPropertyChanged), this.editingObjValue = e, !this.isDisposed)) {
                            if (!e)
                                for (var n = this.getAllQuestions(), o = 0; o < n.length; o++) n[o].unbindValue();
                            this.editingObj && (this.setDataCore({}), this.onEditingObjPropertyChanged = function(e, n) {
                                I.hasOriginalProperty(t.editingObj, n.name) && t.updateOnSetValue(n.name, t.editingObj[n.name], n.oldValue)
                            }, this.editingObj.onPropertyChanged.add(this.onEditingObjPropertyChanged))
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isEditingSurveyElement", {
                    get: function() {
                        return !!this.editingObj
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCalculatedValuesIntoResult = function(e) {
                    for (var t = 0; t < this.calculatedValues.length; t++) {
                        var n = this.calculatedValues[t];
                        n.includeIntoResult && n.name && void 0 !== this.getVariable(n.name) && (e[n.name] = this.getVariable(n.name))
                    }
                }, t.prototype.getAllValues = function() {
                    return this.data
                }, t.prototype.getPlainData = function(e) {
                    e || (e = {
                        includeEmpty: !0,
                        includeQuestionTypes: !1,
                        includeValues: !1
                    });
                    var t = [],
                        n = [];
                    if (this.getAllQuestions().forEach((function(o) {
                            var r = o.getPlainData(e);
                            r && (t.push(r), n.push(o.valueName || o.name))
                        })), e.includeValues)
                        for (var o = this.getValuesKeys(), r = 0; r < o.length; r++) {
                            var i = o[r];
                            if (-1 == n.indexOf(i)) {
                                var s = this.getDataValueCore(this.valuesHash, i);
                                s && t.push({
                                    name: i,
                                    title: i,
                                    value: s,
                                    displayValue: s,
                                    isNode: !1,
                                    getString: function(e) {
                                        return "object" == typeof e ? JSON.stringify(e) : e
                                    }
                                })
                            }
                        }
                    return t
                }, t.prototype.getFilteredValues = function() {
                    var e = {};
                    for (var t in this.variablesHash) e[t] = this.variablesHash[t];
                    this.addCalculatedValuesIntoFilteredValues(e);
                    for (var n = this.getValuesKeys(), o = 0; o < n.length; o++) {
                        e[t = n[o]] = this.getDataValueCore(this.valuesHash, t)
                    }
                    return e
                }, t.prototype.addCalculatedValuesIntoFilteredValues = function(e) {
                    for (var t = this.calculatedValues, n = 0; n < t.length; n++) e[t[n].name] = t[n].value
                }, t.prototype.getFilteredProperties = function() {
                    return {
                        survey: this
                    }
                }, t.prototype.getValuesKeys = function() {
                    if (!this.editingObj) return Object.keys(this.valuesHash);
                    for (var e = I.getPropertiesByObj(this.editingObj), t = [], n = 0; n < e.length; n++) t.push(e[n].name);
                    return t
                }, t.prototype.getDataValueCore = function(e, t) {
                    return this.editingObj ? I.getObjPropertyValue(this.editingObj, t) : this.getDataFromValueHash(e, t)
                }, t.prototype.setDataValueCore = function(e, t, n) {
                    this.editingObj ? I.setObjPropertyValue(this.editingObj, t, n) : this.setDataToValueHash(e, t, n)
                }, t.prototype.deleteDataValueCore = function(e, t) {
                    this.editingObj ? this.editingObj[t] = null : this.deleteDataFromValueHash(e, t)
                }, t.prototype.getDataFromValueHash = function(e, t) {
                    return this.valueHashGetDataCallback ? this.valueHashGetDataCallback(e, t) : e[t]
                }, t.prototype.setDataToValueHash = function(e, t, n) {
                    this.valueHashSetDataCallback ? this.valueHashSetDataCallback(e, t, n) : e[t] = n
                }, t.prototype.deleteDataFromValueHash = function(e, t) {
                    this.valueHashDeleteDataCallback ? this.valueHashDeleteDataCallback(e, t) : delete e[t]
                }, Object.defineProperty(t.prototype, "comments", {
                    get: function() {
                        for (var e = {}, t = this.getValuesKeys(), n = 0; n < t.length; n++) {
                            var o = t[n];
                            o.indexOf(this.commentSuffix) > 0 && (e[o] = this.getDataValueCore(this.valuesHash, o))
                        }
                        return e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visiblePages", {
                    get: function() {
                        if (this.isDesignMode) return this.pages;
                        for (var e = new Array, t = 0; t < this.pages.length; t++) this.isPageInVisibleList(this.pages[t]) && e.push(this.pages[t]);
                        return e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isPageInVisibleList = function(e) {
                    return this.isDesignMode || e.isVisible && !e.isStarted
                }, Object.defineProperty(t.prototype, "isEmpty", {
                    get: function() {
                        return 0 == this.pages.length
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "PageCount", {
                    get: function() {
                        return this.pageCount
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "pageCount", {
                    get: function() {
                        return this.pages.length
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visiblePageCount", {
                    get: function() {
                        return this.visiblePages.length
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "startedPage", {
                    get: function() {
                        var e = this.firstPageIsStarted && this.pages.length > 1 ? this.pages[0] : null;
                        return e && (e.onFirstRendering(), e.setWasShown(!0)), e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "currentPage", {
                    get: function() {
                        return this.getPropertyValue("currentPage", null)
                    },
                    set: function(e) {
                        if (!this.isLoadingFromJson) {
                            var t = this.getPageByObject(e);
                            if ((!e || t) && (t || !this.isCurrentPageAvailable)) {
                                var n = this.visiblePages;
                                if (!(null != t && n.indexOf(t) < 0) && t != this.currentPage) {
                                    var o = this.currentPage;
                                    this.currentPageChanging(t, o) && (this.setPropertyValue("currentPage", t), t && (t.onFirstRendering(), t.updateCustomWidgets(), t.setWasShown(!0)), this.locStrsChanged(), this.currentPageChanged(t, o))
                                }
                            }
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateCurrentPage = function() {
                    this.isCurrentPageAvailable || (this.currentPage = this.firstVisiblePage)
                }, Object.defineProperty(t.prototype, "isCurrentPageAvailable", {
                    get: function() {
                        var e = this.currentPage;
                        return !!e && this.isPageInVisibleList(e) && this.isPageExistsInSurvey(e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isPageExistsInSurvey = function(e) {
                    return this.pages.indexOf(e) > -1 || !!this.onContainsPageCallback && this.onContainsPageCallback(e)
                }, Object.defineProperty(t.prototype, "activePage", {
                    get: function() {
                        return this.getPropertyValue("activePage")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowStartingPage", {
                    get: function() {
                        return "starting" === this.state
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowingPage", {
                    get: function() {
                        return "running" == this.state || "preview" == this.state || this.isShowStartingPage
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateActivePage = function() {
                    var e = this.isShowStartingPage ? this.startedPage : this.currentPage;
                    this.setPropertyValue("activePage", e)
                }, t.prototype.onStateAndCurrentPageChanged = function() {
                    this.updateActivePage(), this.updateButtonsVisibility()
                }, t.prototype.getPageByObject = function(e) {
                    if (!e) return null;
                    if (e.getType && "page" == e.getType()) return e;
                    if ("string" == typeof e || e instanceof String) return this.getPageByName(String(e));
                    if (!isNaN(e)) {
                        var t = Number(e),
                            n = this.visiblePages;
                        return e < 0 || e >= n.length ? null : n[t]
                    }
                    return e
                }, Object.defineProperty(t.prototype, "currentPageNo", {
                    get: function() {
                        return this.visiblePages.indexOf(this.currentPage)
                    },
                    set: function(e) {
                        var t = this.visiblePages;
                        e < 0 || e >= t.length || (this.currentPage = t[e])
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "questionsOrder", {
                    get: function() {
                        return this.getPropertyValue("questionsOrder")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionsOrder", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.focusFirstQuestion = function() {
                    if (!this.isFocusingQuestion) {
                        var e = this.activePage;
                        e && (e.scrollToTop(), e.focusFirstQuestion())
                    }
                }, t.prototype.scrollToTopOnPageChange = function(e) {
                    void 0 === e && (e = !0);
                    var t = this.activePage;
                    t && (e && t.scrollToTop(), this.isCurrentPageRendering && this.focusFirstQuestionAutomatic && !this.isFocusingQuestion && (t.focusFirstQuestion(), this.isCurrentPageRendering = !1))
                }, Object.defineProperty(t.prototype, "state", {
                    get: function() {
                        return this.getPropertyValue("state", "empty")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateState = function() {
                    this.setPropertyValue("state", this.calcState())
                }, t.prototype.calcState = function() {
                    return this.isLoading ? "loading" : this.isCompleted ? "completed" : this.isCompletedBefore ? "completedbefore" : !this.isDesignMode && this.isEditMode && this.isStartedState && this.startedPage ? "starting" : this.isShowingPreview ? this.currentPage ? "preview" : "empty" : this.currentPage ? "running" : "empty"
                }, Object.defineProperty(t.prototype, "isCompleted", {
                    get: function() {
                        return this.getPropertyValue("isCompleted", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isCompleted", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowingPreview", {
                    get: function() {
                        return this.getPropertyValue("isShowingPreview", !1)
                    },
                    set: function(e) {
                        this.isShowingPreview != e && (this.setPropertyValue("isShowingPreview", e), this.onShowingPreviewChanged())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isStartedState", {
                    get: function() {
                        return this.getPropertyValue("isStartedState", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isStartedState", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isCompletedBefore", {
                    get: function() {
                        return this.getPropertyValue("isCompletedBefore", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isCompletedBefore", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isLoading", {
                    get: function() {
                        return this.getPropertyValue("isLoading", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isLoading", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "completedState", {
                    get: function() {
                        return this.getPropertyValue("completedState", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "completedStateText", {
                    get: function() {
                        return this.getPropertyValue("completedStateText", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCompletedState = function(e, t) {
                    this.setPropertyValue("completedState", e), t || ("saving" == e && (t = this.getLocalizationString("savingData")), "error" == e && (t = this.getLocalizationString("savingDataError")), "success" == e && (t = this.getLocalizationString("savingDataSuccess"))), this.setPropertyValue("completedStateText", t), this.setPropertyValue("completedStateCss", this.getCompletedStateCss())
                }, t.prototype.clear = function(e, t) {
                    void 0 === e && (e = !0), void 0 === t && (t = !0), this.isCompleted = !1, this.isCompletedBefore = !1, this.isLoading = !1, this.canBeCompletedByTrigger = !1, e && (this.data = null, this.variablesHash = {}), this.timerModel.spent = 0;
                    for (var n = 0; n < this.pages.length; n++) this.pages[n].timeSpent = 0, this.pages[n].setWasShown(!1), this.pages[n].passed = !1;
                    this.onFirstPageIsStartedChanged(), t && (this.currentPage = this.firstVisiblePage), e && this.updateValuesWithDefaults()
                }, t.prototype.mergeValues = function(e, t) {
                    st(e, t)
                }, t.prototype.updateValuesWithDefaults = function() {
                    if (!this.isDesignMode && !this.isLoading)
                        for (var e = 0; e < this.pages.length; e++)
                            for (var t = this.pages[e].questions, n = 0; n < t.length; n++) t[n].updateValueWithDefaults()
                }, t.prototype.updateCustomWidgets = function(e) {
                    e && e.updateCustomWidgets()
                }, t.prototype.currentPageChanging = function(e, t) {
                    var n = {
                        oldCurrentPage: t,
                        newCurrentPage: e,
                        allowChanging: !0,
                        allow: !0,
                        isNextPage: this.isNextPage(e, t),
                        isPrevPage: this.isPrevPage(e, t)
                    };
                    this.onCurrentPageChanging.fire(this, n);
                    var o = n.allowChanging && n.allow;
                    return o && (this.isCurrentPageRendering = !0), o
                }, t.prototype.currentPageChanged = function(e, t) {
                    var n = this.isNextPage(e, t);
                    n && (t.passed = !0), this.onCurrentPageChanged.fire(this, {
                        oldCurrentPage: t,
                        newCurrentPage: e,
                        isNextPage: n,
                        isPrevPage: this.isPrevPage(e, t)
                    })
                }, t.prototype.isNextPage = function(e, t) {
                    return !(!e || !t) && e.visibleIndex == t.visibleIndex + 1
                }, t.prototype.isPrevPage = function(e, t) {
                    return !(!e || !t) && e.visibleIndex + 1 == t.visibleIndex
                }, t.prototype.getProgress = function() {
                    if (null == this.currentPage) return 0;
                    if ("pages" !== this.progressBarType) {
                        var e = this.getProgressInfo();
                        return "requiredQuestions" === this.progressBarType ? e.requiredQuestionCount >= 1 ? Math.ceil(100 * e.requiredAnsweredQuestionCount / e.requiredQuestionCount) : 100 : e.questionCount >= 1 ? Math.ceil(100 * e.answeredQuestionCount / e.questionCount) : 100
                    }
                    var t = this.visiblePages,
                        n = t.indexOf(this.currentPage) + 1;
                    return Math.ceil(100 * n / t.length)
                }, Object.defineProperty(t.prototype, "progressValue", {
                    get: function() {
                        return this.getPropertyValue("progressValue", 0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isNavigationButtonsShowing", {
                    get: function() {
                        if (this.isDesignMode) return "none";
                        var e = this.currentPage;
                        return e ? "show" === e.navigationButtonsVisibility ? "bottom" : "hide" === e.navigationButtonsVisibility ? "none" : this.showNavigationButtons : "none"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isNavigationButtonsShowingOnTop", {
                    get: function() {
                        return this.getIsNavigationButtonsShowingOn("top")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isNavigationButtonsShowingOnBottom", {
                    get: function() {
                        return this.getIsNavigationButtonsShowingOn("bottom")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getIsNavigationButtonsShowingOn = function(e) {
                    var t = this.isNavigationButtonsShowing;
                    return "both" == t || t == e
                }, Object.defineProperty(t.prototype, "isEditMode", {
                    get: function() {
                        return "edit" == this.mode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isDisplayMode", {
                    get: function() {
                        return "display" == this.mode || "preview" == this.state
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isUpdateValueTextOnTyping", {
                    get: function() {
                        return "onTyping" == this.textUpdateMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isDesignMode", {
                    get: function() {
                        return this._isDesignMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setDesignMode = function(e) {
                    this._isDesignMode = e, this.onQuestionsOnPageModeChanged("standard")
                }, Object.defineProperty(t.prototype, "showInvisibleElements", {
                    get: function() {
                        return this.getPropertyValue("showInvisibleElements", !1)
                    },
                    set: function(e) {
                        var t = this.visiblePages;
                        this.setPropertyValue("showInvisibleElements", e), this.isLoadingFromJson || (this.runConditions(), this.updateAllElementsVisibility(t))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateAllElementsVisibility = function(e) {
                    for (var t = 0; t < this.pages.length; t++) {
                        var n = this.pages[t];
                        n.updateElementVisibility(), e.indexOf(n) > -1 != n.isVisible && this.onPageVisibleChanged.fire(this, {
                            page: n,
                            visible: n.isVisible
                        })
                    }
                }, Object.defineProperty(t.prototype, "areInvisibleElementsShowing", {
                    get: function() {
                        return this.isDesignMode || this.showInvisibleElements
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "areEmptyElementsHidden", {
                    get: function() {
                        return this.isShowingPreview && "showAnsweredQuestions" == this.showPreviewBeforeComplete
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasCookie", {
                    get: function() {
                        if (!this.cookieName || "undefined" == typeof document) return !1;
                        var e = document.cookie;
                        return e && e.indexOf(this.cookieName + "=true") > -1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCookie = function() {
                    this.cookieName && "undefined" != typeof document && (document.cookie = this.cookieName + "=true; expires=Fri, 31 Dec 9999 0:0:0 GMT")
                }, t.prototype.deleteCookie = function() {
                    this.cookieName && (document.cookie = this.cookieName + "=;")
                }, t.prototype.nextPage = function() {
                    return !this.isLastPage && this.doCurrentPageComplete(!1)
                }, t.prototype.hasErrorsOnNavigate = function(e) {
                    var t = this;
                    if (this.ignoreValidation || !this.isEditMode) return !1;
                    var n = function(n) {
                        n || t.doCurrentPageCompleteCore(e)
                    };
                    return "onComplete" === this.checkErrorsMode ? !!this.isLastPage && !1 !== this.hasErrors(!0, !0, n) : !1 !== this.hasCurrentPageErrors(n)
                }, t.prototype.checkForAsyncQuestionValidation = function(e, t) {
                    var n = this;
                    this.clearAsyncValidationQuesitons();
                    for (var o = function() {
                            if (e[i].isRunningValidators) {
                                var o = e[i];
                                o.onCompletedAsyncValidators = function(e) {
                                    n.onCompletedAsyncQuestionValidators(o, t, e)
                                }, r.asyncValidationQuesitons.push(e[i])
                            }
                        }, r = this, i = 0; i < e.length; i++) o();
                    return this.asyncValidationQuesitons.length > 0
                }, t.prototype.clearAsyncValidationQuesitons = function() {
                    if (this.asyncValidationQuesitons)
                        for (var e = this.asyncValidationQuesitons, t = 0; t < e.length; t++) e[t].onCompletedAsyncValidators = null;
                    this.asyncValidationQuesitons = []
                }, t.prototype.onCompletedAsyncQuestionValidators = function(e, t, n) {
                    if (n) {
                        if (this.clearAsyncValidationQuesitons(), t(!0), this.focusOnFirstError && e && e.page && e.page === this.currentPage) {
                            for (var o = this.currentPage.questions, r = 0; r < o.length; r++)
                                if (o[r] !== e && o[r].errors.length > 0) return;
                            e.focus(!0)
                        }
                    } else {
                        for (var i = this.asyncValidationQuesitons, s = 0; s < i.length; s++)
                            if (i[s].isRunningValidators) return;
                        t(!1)
                    }
                }, Object.defineProperty(t.prototype, "isCurrentPageHasErrors", {
                    get: function() {
                        return this.checkIsCurrentPageHasErrors()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.hasCurrentPageErrors = function(e) {
                    return this.hasPageErrors(void 0, e)
                }, t.prototype.hasPageErrors = function(e, t) {
                    return e || (e = this.activePage), !!e && (!!this.checkIsPageHasErrors(e) || !!t && (!!this.checkForAsyncQuestionValidation(e.questions, (function(e) {
                        return t(e)
                    })) && void 0))
                }, t.prototype.hasErrors = function(e, t, n) {
                    void 0 === e && (e = !0), void 0 === t && (t = !1), n && (e = !0);
                    for (var o = this.visiblePages, r = null, i = !1, s = 0; s < o.length; s++) o[s].hasErrors(e, !1) && (r || (r = o[s]), i = !0);
                    if (t && r) {
                        this.currentPage = r;
                        var a = r.questions;
                        for (s = 0; s < a.length; s++)
                            if (a[s].errors.length > 0) {
                                a[s].focus(!0);
                                break
                            }
                    }
                    return i || !n ? i : !!this.checkForAsyncQuestionValidation(this.getAllQuestions(), (function(e) {
                        return n(e)
                    })) && void 0
                }, t.prototype.ensureUniqueNames = function(e) {
                    if (void 0 === e && (e = null), null == e)
                        for (var t = 0; t < this.pages.length; t++) this.ensureUniqueName(this.pages[t]);
                    else this.ensureUniqueName(e)
                }, t.prototype.ensureUniqueName = function(e) {
                    if (e.isPage && this.ensureUniquePageName(e), e.isPanel && this.ensureUniquePanelName(e), e.isPage || e.isPanel)
                        for (var t = e.elements, n = 0; n < t.length; n++) this.ensureUniqueNames(t[n]);
                    else this.ensureUniqueQuestionName(e)
                }, t.prototype.ensureUniquePageName = function(e) {
                    var t = this;
                    return this.ensureUniqueElementName(e, (function(e) {
                        return t.getPageByName(e)
                    }))
                }, t.prototype.ensureUniquePanelName = function(e) {
                    var t = this;
                    return this.ensureUniqueElementName(e, (function(e) {
                        return t.getPanelByName(e)
                    }))
                }, t.prototype.ensureUniqueQuestionName = function(e) {
                    var t = this;
                    return this.ensureUniqueElementName(e, (function(e) {
                        return t.getQuestionByName(e)
                    }))
                }, t.prototype.ensureUniqueElementName = function(e, t) {
                    var n = t(e.name);
                    if (n && n != e) {
                        for (var o = this.getNewName(e.name); t(o);) o = this.getNewName(e.name);
                        e.name = o
                    }
                }, t.prototype.getNewName = function(e) {
                    for (var t = e.length; t > 0 && e[t - 1] >= "0" && e[t - 1] <= "9";) t--;
                    var n = e.substring(0, t),
                        o = 0;
                    return t < e.length && (o = parseInt(e.substring(t))), n + ++o
                }, t.prototype.checkIsCurrentPageHasErrors = function(e) {
                    return void 0 === e && (e = void 0), this.checkIsPageHasErrors(this.activePage, e)
                }, t.prototype.checkIsPageHasErrors = function(e, t) {
                    if (void 0 === t && (t = void 0), void 0 === t && (t = this.focusOnFirstError), !e) return !0;
                    var n = e.hasErrors(!0, t);
                    return this.fireValidatedErrorsOnPage(e), n
                }, t.prototype.fireValidatedErrorsOnPage = function(e) {
                    if (!this.onValidatedErrorsOnCurrentPage.isEmpty && e) {
                        for (var t = e.questions, n = new Array, o = new Array, r = 0; r < t.length; r++) {
                            var i = t[r];
                            if (i.errors.length > 0) {
                                n.push(i);
                                for (var s = 0; s < i.errors.length; s++) o.push(i.errors[s])
                            }
                        }
                        this.onValidatedErrorsOnCurrentPage.fire(this, {
                            questions: n,
                            errors: o,
                            page: e
                        })
                    }
                }, t.prototype.prevPage = function() {
                    var e = this;
                    if (this.isFirstPage || "starting" === this.state) return !1;
                    this.resetNavigationButton();
                    var t = this.skippedPages.find((function(t) {
                        return t.to == e.currentPage
                    }));
                    if (t) this.currentPage = t.from, this.skippedPages.splice(this.skippedPages.indexOf(t), 1);
                    else {
                        var n = this.visiblePages,
                            o = n.indexOf(this.currentPage);
                        this.currentPage = n[o - 1]
                    }
                    return !0
                }, t.prototype.completeLastPage = function() {
                    var e = this.doCurrentPageComplete(!0);
                    return e && this.cancelPreview(), e
                }, t.prototype.navigationMouseDown = function() {
                    return this.isNavigationButtonPressed = !0, !0
                }, t.prototype.resetNavigationButton = function() {
                    this.isNavigationButtonPressed = !1
                }, t.prototype.nextPageUIClick = function() {
                    this.mouseDownPage && this.mouseDownPage !== this.activePage || (this.mouseDownPage = null, this.nextPage())
                }, t.prototype.nextPageMouseDown = function() {
                    return this.mouseDownPage = this.activePage, this.navigationMouseDown()
                }, t.prototype.showPreview = function() {
                    return this.resetNavigationButton(), !this.hasErrorsOnNavigate(!0) && (!this.doServerValidation(!0, !0) && (this.showPreviewCore(), !0))
                }, t.prototype.showPreviewCore = function() {
                    var e = {
                        allowShowPreview: !0,
                        allow: !0
                    };
                    this.onShowingPreview.fire(this, e), this.isShowingPreview = e.allowShowPreview && e.allow
                }, t.prototype.cancelPreview = function(e) {
                    void 0 === e && (e = null), this.isShowingPreview && (this.isShowingPreview = !1, a.isValueEmpty(e) && this.visiblePageCount > 0 && (e = this.visiblePageCount - 1), null !== e && (this.currentPage = e))
                }, t.prototype.cancelPreviewByPage = function(e) {
                    this.cancelPreview(e.originalPage)
                }, t.prototype.doCurrentPageComplete = function(e) {
                    return !this.isValidatingOnServer && (this.resetNavigationButton(), !this.hasErrorsOnNavigate(e) && this.doCurrentPageCompleteCore(e))
                }, t.prototype.doCurrentPageCompleteCore = function(e) {
                    return !this.doServerValidation(e) && (e ? (this.currentPage.passed = !0, this.doComplete()) : (this.doNextPage(), !0))
                }, Object.defineProperty(t.prototype, "isSinglePage", {
                    get: function() {
                        return "singlePage" == this.questionsOnPageMode
                    },
                    set: function(e) {
                        this.questionsOnPageMode = e ? "singlePage" : "standard"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "questionsOnPageMode", {
                    get: function() {
                        return this.getPropertyValue("questionsOnPageMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionsOnPageMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "firstPageIsStarted", {
                    get: function() {
                        return this.getPropertyValue("firstPageIsStarted", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("firstPageIsStarted", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isPageStarted = function(e) {
                    return this.firstPageIsStarted && this.pages.length > 1 && this.pages[0] === e
                }, Object.defineProperty(t.prototype, "showPreviewBeforeComplete", {
                    get: function() {
                        return this.getPropertyValue("showPreviewBeforeComplete")
                    },
                    set: function(e) {
                        this.setPropertyValue("showPreviewBeforeComplete", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowPreviewBeforeComplete", {
                    get: function() {
                        var e = this.showPreviewBeforeComplete;
                        return "showAllQuestions" == e || "showAnsweredQuestions" == e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onFirstPageIsStartedChanged = function() {
                    this.isStartedState = this.firstPageIsStarted && this.pages.length > 1, this.pageVisibilityChanged(this.pages[0], !this.isStartedState)
                }, t.prototype.onShowingPreviewChanged = function() {
                    this.isDesignMode || (this.isShowingPreview ? (this.runningPages = this.pages.slice(0, this.pages.length), this.setupPagesForPageModes(!0)) : (this.runningPages && this.restoreOrigionalPages(this.runningPages), this.runningPages = void 0), this.runConditions(), this.updateAllElementsVisibility(this.pages), this.updateVisibleIndexes(), this.currentPageNo = 0)
                }, t.prototype.onQuestionsOnPageModeChanged = function(e) {
                    this.isShowingPreview || ("standard" == this.questionsOnPageMode || this.isDesignMode ? (this.origionalPages && this.restoreOrigionalPages(this.origionalPages), this.origionalPages = void 0) : (e && "standard" != e || (this.origionalPages = this.pages.slice(0, this.pages.length)), this.setupPagesForPageModes(this.isSinglePage)), this.runConditions(), this.updateVisibleIndexes())
                }, t.prototype.restoreOrigionalPages = function(e) {
                    this.questionHashesClear(), this.pages.splice(0, this.pages.length);
                    for (var t = 0; t < e.length; t++) this.pages.push(e[t])
                }, t.prototype.getPageStartIndex = function() {
                    return this.firstPageIsStarted && this.pages.length > 0 ? 1 : 0
                }, t.prototype.setupPagesForPageModes = function(t) {
                    this.questionHashesClear();
                    var n = this.getPageStartIndex();
                    e.prototype.startLoadingFromJson.call(this);
                    var o = this.createPagesForQuestionOnPageMode(t, n),
                        r = this.pages.length - n;
                    this.pages.splice(n, r);
                    for (var i = 0; i < o.length; i++) this.pages.push(o[i]);
                    e.prototype.endLoadingFromJson.call(this);
                    for (i = 0; i < o.length; i++) o[i].setSurveyImpl(this, !0);
                    this.doElementsOnLoad(), this.updateCurrentPage()
                }, t.prototype.createPagesForQuestionOnPageMode = function(e, t) {
                    return e ? [this.createSinglePage(t)] : this.createPagesForEveryQuestion(t)
                }, t.prototype.createSinglePage = function(e) {
                    var t = this.createNewPage("all");
                    t.setSurveyImpl(this);
                    for (var n = e; n < this.pages.length; n++) {
                        var o = this.pages[n],
                            r = I.createClass("panel");
                        r.originalPage = o, t.addPanel(r);
                        var i = (new R).toJsonObject(o);
                        (new R).toObject(i, r), this.showPageTitles || (r.title = "")
                    }
                    return t
                }, t.prototype.createPagesForEveryQuestion = function(e) {
                    for (var t = [], n = e; n < this.pages.length; n++) {
                        var o = this.pages[n];
                        o.setWasShown(!0);
                        for (var r = 0; r < o.elements.length; r++) {
                            var i = o.elements[r],
                                s = I.createClass(i.getType());
                            if (s) {
                                var a = new R;
                                a.lightSerializing = !0;
                                var l = a.toJsonObject(o),
                                    u = I.createClass(o.getType());
                                u.fromJSON(l), u.name = i.name, u.setSurveyImpl(this), t.push(u);
                                var c = (new R).toJsonObject(i);
                                u.addElement(s), (new R).toObject(c, s);
                                for (var p = 0; p < u.questions.length; p++) this.questionHashesAdded(u.questions[p])
                            }
                        }
                    }
                    return t
                }, Object.defineProperty(t.prototype, "isFirstPage", {
                    get: function() {
                        return this.getPropertyValue("isFirstPage")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isLastPage", {
                    get: function() {
                        return this.getPropertyValue("isLastPage")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateButtonsVisibility = function() {
                    this.updateIsFirstLastPageState(), this.setPropertyValue("isShowPrevButton", this.calcIsShowPrevButton()), this.setPropertyValue("isShowNextButton", this.calcIsShowNextButton()), this.setPropertyValue("isCompleteButtonVisible", this.calcIsCompleteButtonVisible()), this.setPropertyValue("isPreviewButtonVisible", this.calcIsPreviewButtonVisible()), this.setPropertyValue("isCancelPreviewButtonVisible", this.calcIsCancelPreviewButtonVisible())
                }, Object.defineProperty(t.prototype, "isShowPrevButton", {
                    get: function() {
                        return this.getPropertyValue("isShowPrevButton")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowNextButton", {
                    get: function() {
                        return this.getPropertyValue("isShowNextButton")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isCompleteButtonVisible", {
                    get: function() {
                        return this.getPropertyValue("isCompleteButtonVisible")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isPreviewButtonVisible", {
                    get: function() {
                        return this.getPropertyValue("isPreviewButtonVisible")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isCancelPreviewButtonVisible", {
                    get: function() {
                        return this.getPropertyValue("isCancelPreviewButtonVisible")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateIsFirstLastPageState = function() {
                    var e = this.currentPage;
                    this.setPropertyValue("isFirstPage", !!e && e === this.firstVisiblePage), this.setPropertyValue("isLastPage", !!e && e === this.lastVisiblePage)
                }, t.prototype.calcIsShowPrevButton = function() {
                    if (this.isFirstPage || !this.showPrevButton || "running" !== this.state) return !1;
                    var e = this.visiblePages[this.currentPageNo - 1];
                    return this.getPageMaxTimeToFinish(e) <= 0
                }, t.prototype.calcIsShowNextButton = function() {
                    return "running" === this.state && !this.isLastPage && !this.canBeCompletedByTrigger
                }, t.prototype.calcIsCompleteButtonVisible = function() {
                    var e = this.state;
                    return this.isEditMode && ("running" === this.state && (this.isLastPage && !this.isShowPreviewBeforeComplete || this.canBeCompletedByTrigger) || "preview" === e)
                }, t.prototype.calcIsPreviewButtonVisible = function() {
                    return this.isEditMode && this.isShowPreviewBeforeComplete && "running" == this.state && this.isLastPage
                }, t.prototype.calcIsCancelPreviewButtonVisible = function() {
                    return this.isEditMode && this.isShowPreviewBeforeComplete && "preview" == this.state
                }, Object.defineProperty(t.prototype, "firstVisiblePage", {
                    get: function() {
                        for (var e = this.pages, t = 0; t < e.length; t++)
                            if (this.isPageInVisibleList(e[t])) return e[t];
                        return null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "lastVisiblePage", {
                    get: function() {
                        for (var e = this.pages, t = e.length - 1; t >= 0; t--)
                            if (this.isPageInVisibleList(e[t])) return e[t];
                        return null
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.doComplete = function(e) {
                    if (void 0 === e && (e = !1), !this.isCompleted) {
                        if (!this.checkOnCompletingEvent(e)) return this.isCompleted = !1, !1;
                        var t = this.hasCookie;
                        this.stopTimer(), this.isCompleted = !0, this.clearUnusedValues(), this.setCookie();
                        var n = this,
                            o = !1,
                            r = {
                                isCompleteOnTrigger: e,
                                showDataSaving: function(e) {
                                    o = !0, n.setCompletedState("saving", e)
                                },
                                showDataSavingError: function(e) {
                                    n.setCompletedState("error", e)
                                },
                                showDataSavingSuccess: function(e) {
                                    n.setCompletedState("success", e), n.navigateTo()
                                },
                                showDataSavingClear: function(e) {
                                    n.setCompletedState("", "")
                                }
                            };
                        return this.onComplete.fire(this, r), !t && this.surveyPostId && this.sendResult(), o || this.navigateTo(), !0
                    }
                }, t.prototype.checkOnCompletingEvent = function(e) {
                    var t = {
                        allowComplete: !0,
                        allow: !0,
                        isCompleteOnTrigger: e
                    };
                    return this.onCompleting.fire(this, t), t.allowComplete && t.allow
                }, t.prototype.start = function() {
                    return !!this.firstPageIsStarted && (!this.checkIsPageHasErrors(this.startedPage, !0) && (this.isStartedState = !1, this.startTimerFromUI(), this.onStarted.fire(this, {}), this.updateVisibleIndexes(), this.currentPage && this.currentPage.locStrsChanged(), !0))
                }, Object.defineProperty(t.prototype, "isValidatingOnServer", {
                    get: function() {
                        return this.getPropertyValue("isValidatingOnServer", !1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setIsValidatingOnServer = function(e) {
                    e != this.isValidatingOnServer && (this.setPropertyValue("isValidatingOnServer", e), this.onIsValidatingOnServerChanged())
                }, t.prototype.createServerValidationOptions = function(e, t) {
                    var n = this,
                        o = {
                            data: {},
                            errors: {},
                            survey: this,
                            complete: function() {
                                n.completeServerValidation(o, t)
                            }
                        };
                    if (e && "onComplete" === this.checkErrorsMode) o.data = this.data;
                    else
                        for (var r = this.activePage.questions, i = 0; i < r.length; i++) {
                            var s = r[i];
                            if (s.visible) {
                                var a = this.getValue(s.getValueName());
                                this.isValueEmpty(a) || (o.data[s.getValueName()] = a)
                            }
                        }
                    return o
                }, t.prototype.onIsValidatingOnServerChanged = function() {}, t.prototype.doServerValidation = function(e, t) {
                    var n = this;
                    if (void 0 === t && (t = !1), !this.onServerValidateQuestions || this.onServerValidateQuestions.isEmpty) return !1;
                    if (!e && "onComplete" === this.checkErrorsMode) return !1;
                    this.setIsValidatingOnServer(!0);
                    var o = "function" == typeof this.onServerValidateQuestions;
                    return this.serverValidationEventCount = o ? 1 : this.onServerValidateQuestions.length, o ? this.onServerValidateQuestions(this, this.createServerValidationOptions(e, t)) : this.onServerValidateQuestions.fireByCreatingOptions(this, (function() {
                        return n.createServerValidationOptions(e, t)
                    })), !0
                }, t.prototype.completeServerValidation = function(e, t) {
                    if (!(this.serverValidationEventCount > 1 && (this.serverValidationEventCount--, e && e.errors && 0 === Object.keys(e.errors).length)) && (this.serverValidationEventCount = 0, this.setIsValidatingOnServer(!1), e || e.survey)) {
                        var n = e.survey,
                            o = !1;
                        if (e.errors) {
                            var r = this.focusOnFirstError;
                            for (var i in e.errors) {
                                var s = n.getQuestionByName(i);
                                s && s.errors && (o = !0, s.addError(new Re(e.errors[i], this)), r && (r = !1, s.page && (this.currentPage = s.page), s.focus(!0)))
                            }
                            this.fireValidatedErrorsOnPage(this.currentPage)
                        }
                        o || (t ? this.showPreviewCore() : n.isLastPage ? n.doComplete() : n.doNextPage())
                    }
                }, t.prototype.doNextPage = function() {
                    var e = this.currentPage;
                    if (this.checkOnPageTriggers(), this.isCompleted) this.doComplete(!0);
                    else if (this.sendResultOnPageNext && this.sendResult(this.surveyPostId, this.clientId, !0), e === this.currentPage) {
                        var t = this.visiblePages,
                            n = t.indexOf(this.currentPage);
                        this.currentPage = t[n + 1]
                    }
                }, t.prototype.setCompleted = function() {
                    this.doComplete(!0)
                }, t.prototype.canBeCompleted = function() {
                    s.changeNavigationButtonsOnCompleteTrigger && (this.canBeCompletedByTrigger || (this.canBeCompletedByTrigger = !0, this.updateButtonsVisibility()))
                }, Object.defineProperty(t.prototype, "processedCompletedHtml", {
                    get: function() {
                        var e = this.renderedCompletedHtml;
                        return e ? this.processHtml(e) : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "processedCompletedBeforeHtml", {
                    get: function() {
                        return this.processHtml(this.completedBeforeHtml)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "processedLoadingHtml", {
                    get: function() {
                        return this.processHtml(this.loadingHtml)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getProgressInfo = function() {
                    var e = this.isDesignMode ? this.pages : this.visiblePages;
                    return jt.getProgressInfoByElements(e, !1)
                }, Object.defineProperty(t.prototype, "progressText", {
                    get: function() {
                        var e = this.getPropertyValue("progressText", "");
                        return e || (this.updateProgressText(), e = this.getPropertyValue("progressText", "")), e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateProgressText = function(e) {
                    void 0 === e && (e = !1), this.isCalculatingProgressText || e && "pages" == this.progressBarType && this.onProgressText.isEmpty || (this.isCalculatingProgressText = !0, this.setPropertyValue("progressText", this.getProgressText()), this.setPropertyValue("progressValue", this.getProgress()), this.isCalculatingProgressText = !1)
                }, t.prototype.getProgressText = function() {
                    if (!this.isDesignMode && null == this.currentPage) return "";
                    var e = {
                            questionCount: 0,
                            answeredQuestionCount: 0,
                            requiredQuestionCount: 0,
                            requiredAnsweredQuestionCount: 0,
                            text: ""
                        },
                        t = this.progressBarType.toLowerCase();
                    if ("questions" === t || "requiredquestions" === t || "correctquestions" === t || !this.onProgressText.isEmpty) {
                        var n = this.getProgressInfo();
                        e.questionCount = n.questionCount, e.answeredQuestionCount = n.answeredQuestionCount, e.requiredQuestionCount = n.requiredQuestionCount, e.requiredAnsweredQuestionCount = n.requiredAnsweredQuestionCount
                    }
                    return e.text = this.getProgressTextCore(e), this.onProgressText.fire(this, e), e.text
                }, t.prototype.getProgressTextCore = function(e) {
                    var t = this.progressBarType.toLowerCase();
                    if ("questions" === t){
	
                        var percentageGiven = (e.answeredQuestionCount / e.questionCount) * 100;
                        return this.getLocalizationFormatString("questionsProgressText", Math.round(percentageGiven));
                    }	
                    if ("requiredquestions" === t){

                        var percentageGiven = (e.requiredAnsweredQuestionCount / e.requiredQuestionCount) * 100;
                        return this.getLocalizationFormatString("questionsProgressText", Math.round(percentageGiven));
                    }	
                    if ("correctquestions" === t) {
                        var n = this.getCorrectedAnswerCount();
                        var percentageGiven = (n / e.questionCount) * 100;

                        return this.getLocalizationFormatString("questionsProgressText", Math.round(percentageGiven))
                    }

                    var o = this.isDesignMode ? this.pages : this.visiblePages,
                        r = o.indexOf(this.currentPage) + 1;
                    return this.getLocalizationFormatString("progressText", r, o.length)
                }, t.prototype.getRootCss = function() {
                    return (new ct).append(this.css.root).append(this.css.rootMobile, this.isMobile).append(this.css.rootReadOnly, "display" === this.mode).toString()
                }, t.prototype.afterRenderSurvey = function(e) {
                    var t = this;
                    this.destroyResizeObserver(), Array.isArray(e) && (e = jt.GetFirstNonTextElement(e));
                    var n = e,
                        o = this.css.variables;
                    if (o) {
                        var r = Number.parseFloat(window.getComputedStyle(n).getPropertyValue(o.mobileWidth));
                        if (r) {
                            var i = !1;
                            this.resizeObserver = new ResizeObserver((function() {
                                i = !(i || !rt(n)) && t.processResponsiveness(n.offsetWidth, r)
                            })), this.resizeObserver.observe(n)
                        }
                    }
                    this.onAfterRenderSurvey.fire(this, {
                        survey: this,
                        htmlElement: e
                    })
                }, t.prototype.processResponsiveness = function(e, t) {
                    var n = e < t;
                    return this.isMobile !== n && (this.setIsMobile(n), !0)
                }, t.prototype.destroyResizeObserver = function() {
                    this.resizeObserver && (this.resizeObserver.disconnect(), this.resizeObserver = void 0)
                }, t.prototype.updateQuestionCssClasses = function(e, t) {
                    this.onUpdateQuestionCssClasses.fire(this, {
                        question: e,
                        cssClasses: t
                    })
                }, t.prototype.updatePanelCssClasses = function(e, t) {
                    this.onUpdatePanelCssClasses.fire(this, {
                        panel: e,
                        cssClasses: t
                    })
                }, t.prototype.updatePageCssClasses = function(e, t) {
                    this.onUpdatePageCssClasses.fire(this, {
                        page: e,
                        cssClasses: t
                    })
                }, t.prototype.updateChoiceItemCss = function(e, t) {
                    t.question = e, this.onUpdateChoiceItemCss.fire(this, t)
                }, t.prototype.afterRenderPage = function(e) {
                    var t = this;
                    for (this.isDesignMode || this.isFocusingQuestion || setTimeout((function() {
                            return t.scrollToTopOnPageChange(!t.isFirstPageRendering)
                        }), 1); this.afterRenderPageTasks.length > 0;) this.afterRenderPageTasks.shift()();
                    this.isFirstPageRendering = !1, this.onAfterRenderPage.isEmpty || this.onAfterRenderPage.fire(this, {
                        page: this.activePage,
                        htmlElement: e
                    })
                }, t.prototype.afterRenderHeader = function(e) {
                    this.onAfterRenderHeader.isEmpty || this.onAfterRenderHeader.fire(this, {
                        htmlElement: e
                    })
                }, t.prototype.afterRenderQuestion = function(e, t) {
                    this.onAfterRenderQuestion.fire(this, {
                        question: e,
                        htmlElement: t
                    })
                }, t.prototype.afterRenderQuestionInput = function(e, t) {
                    if (!this.onAfterRenderQuestionInput.isEmpty) {
                        var n = e.inputId;
                        if (n && t.id !== n && "undefined" != typeof document) {
                            var o = document.getElementById(n);
                            o && (t = o)
                        }
                        this.onAfterRenderQuestionInput.fire(this, {
                            question: e,
                            htmlElement: t
                        })
                    }
                }, t.prototype.afterRenderPanel = function(e, t) {
                    this.onAfterRenderPanel.fire(this, {
                        panel: e,
                        htmlElement: t
                    })
                }, t.prototype.whenQuestionFocusIn = function(e) {
                    this.onFocusInQuestion.fire(this, {
                        question: e
                    })
                }, t.prototype.whenPanelFocusIn = function(e) {
                    this.onFocusInPanel.fire(this, {
                        panel: e
                    })
                }, t.prototype.rebuildQuestionChoices = function() {
                    this.getAllQuestions().forEach((function(e) {
                        return e.surveyChoiceItemVisibilityChange()
                    }))
                }, t.prototype.canChangeChoiceItemsVisibility = function() {
                    return !this.onShowingChoiceItem.isEmpty
                }, t.prototype.getChoiceItemVisibility = function(e, t, n) {
                    var o = {
                        question: e,
                        item: t,
                        visible: n
                    };
                    return this.onShowingChoiceItem.fire(this, o), o.visible
                }, t.prototype.loadQuestionChoices = function(e) {
                    this.onChoicesLazyLoad.fire(this, e)
                }, t.prototype.getChoiceDisplayValue = function(e) {
                    this.onGetChoiceDisplayValue.fire(this, e)
                }, t.prototype.matrixBeforeRowAdded = function(e) {
                    this.onMatrixBeforeRowAdded.fire(this, e)
                }, t.prototype.matrixRowAdded = function(e, t) {
                    this.onMatrixRowAdded.fire(this, {
                        question: e,
                        row: t
                    })
                }, t.prototype.getQuestionByValueNameFromArray = function(e, t, n) {
                    var o = this.getQuestionsByValueName(e);
                    if (o) {
                        for (var r = 0; r < o.length; r++) {
                            var i = o[r].getQuestionFromArray(t, n);
                            if (i) return i
                        }
                        return null
                    }
                }, t.prototype.matrixRowRemoved = function(e, t, n) {
                    this.onMatrixRowRemoved.fire(this, {
                        question: e,
                        rowIndex: t,
                        row: n
                    })
                }, t.prototype.matrixRowRemoving = function(e, t, n) {
                    var o = {
                        question: e,
                        rowIndex: t,
                        row: n,
                        allow: !0
                    };
                    return this.onMatrixRowRemoving.fire(this, o), o.allow
                }, t.prototype.matrixAllowRemoveRow = function(e, t, n) {
                    var o = {
                        question: e,
                        rowIndex: t,
                        row: n,
                        allow: !0
                    };
                    return this.onMatrixAllowRemoveRow.fire(this, o), o.allow
                }, t.prototype.matrixCellCreating = function(e, t) {
                    t.question = e, this.onMatrixCellCreating.fire(this, t)
                }, t.prototype.matrixCellCreated = function(e, t) {
                    t.question = e, this.onMatrixCellCreated.fire(this, t)
                }, t.prototype.matrixAfterCellRender = function(e, t) {
                    t.question = e, this.onMatrixAfterCellRender.fire(this, t)
                }, t.prototype.matrixCellValueChanged = function(e, t) {
                    t.question = e, this.onMatrixCellValueChanged.fire(this, t)
                }, t.prototype.matrixCellValueChanging = function(e, t) {
                    t.question = e, this.onMatrixCellValueChanging.fire(this, t)
                }, Object.defineProperty(t.prototype, "isValidateOnValueChanging", {
                    get: function() {
                        return "onValueChanging" === this.checkErrorsMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isValidateOnValueChanged", {
                    get: function() {
                        return "onValueChanged" === this.checkErrorsMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.matrixCellValidate = function(e, t) {
                    return t.question = e, this.onMatrixCellValidate.fire(this, t), t.error ? new Re(t.error, this) : null
                }, t.prototype.dynamicPanelAdded = function(e, t, n) {
                    if (this.isLoadingFromJson || this.updateVisibleIndexes(), !this.onDynamicPanelAdded.isEmpty) {
                        var o = e.panels;
                        void 0 === t && (n = o[t = o.length - 1]), this.onDynamicPanelAdded.fire(this, {
                            question: e,
                            panel: n,
                            panelIndex: t
                        })
                    }
                }, t.prototype.dynamicPanelRemoved = function(e, t, n) {
                    for (var o = n ? n.questions : [], r = 0; r < o.length; r++) o[r].clearOnDeletingContainer();
                    this.updateVisibleIndexes(), this.onDynamicPanelRemoved.fire(this, {
                        question: e,
                        panelIndex: t,
                        panel: n
                    })
                }, t.prototype.dynamicPanelRemoving = function(e, t, n) {
                    var o = {
                        question: e,
                        panelIndex: t,
                        panel: n,
                        allow: !0
                    };
                    return this.onDynamicPanelRemoving.fire(this, o), o.allow
                }, t.prototype.dynamicPanelItemValueChanged = function(e, t) {
                    t.question = e, this.onDynamicPanelItemValueChanged.fire(this, t)
                }, t.prototype.dragAndDropAllow = function(e) {
                    return e.allow = !0, this.onDragDropAllow.fire(this, e), e.allow
                }, t.prototype.elementContentVisibilityChanged = function(e) {
                    this.currentPage && this.currentPage.ensureRowsVisibility(), this.onElementContentVisibilityChanged.fire(this, {
                        element: e
                    })
                }, t.prototype.getUpdatedPanelFooterActions = function(e, t, n) {
                    var o = {
                        question: n,
                        panel: e,
                        actions: t
                    };
                    return this.onGetPanelFooterActions.fire(this, o), o.actions
                }, t.prototype.getUpdatedElementTitleActions = function(e, t) {
                    return e.isPage ? this.getUpdatedPageTitleActions(e, t) : e.isPanel ? this.getUpdatedPanelTitleActions(e, t) : this.getUpdatedQuestionTitleActions(e, t)
                }, t.prototype.getUpdatedQuestionTitleActions = function(e, t) {
                    var n = {
                        question: e,
                        titleActions: t
                    };
                    return this.onGetQuestionTitleActions.fire(this, n), n.titleActions
                }, t.prototype.getUpdatedPanelTitleActions = function(e, t) {
                    var n = {
                        panel: e,
                        titleActions: t
                    };
                    return this.onGetPanelTitleActions.fire(this, n), n.titleActions
                }, t.prototype.getUpdatedPageTitleActions = function(e, t) {
                    var n = {
                        page: e,
                        titleActions: t
                    };
                    return this.onGetPageTitleActions.fire(this, n), n.titleActions
                }, t.prototype.getUpdatedMatrixRowActions = function(e, t, n) {
                    var o = {
                        question: e,
                        actions: n,
                        row: t
                    };
                    return this.onGetMatrixRowActions.fire(this, o), o.actions
                }, t.prototype.scrollElementToTop = function(e, t, n, o) {
                    var r = {
                        element: e,
                        question: t,
                        page: n,
                        elementId: o,
                        cancel: !1
                    };
                    this.onScrollingElementToTop.fire(this, r), r.cancel || jt.ScrollElementToTop(r.elementId)
                }, t.prototype.uploadFiles = function(e, t, n, o) {
                    this.onUploadFiles.isEmpty ? o("error", n) : this.onUploadFiles.fire(this, {
                        question: e,
                        name: t,
                        files: n || [],
                        callback: o
                    }), this.surveyPostId && this.uploadFilesCore(t, n, o)
                }, t.prototype.downloadFile = function(e, t, n, o) {
                    this.onDownloadFile.isEmpty && o && o("success", n.content || n), this.onDownloadFile.fire(this, {
                        question: e,
                        name: t,
                        content: n.content || n,
                        fileValue: n,
                        callback: o
                    })
                }, t.prototype.clearFiles = function(e, t, n, o, r) {
                    this.onClearFiles.isEmpty && r && r("success", n), this.onClearFiles.fire(this, {
                        question: e,
                        name: t,
                        value: n,
                        fileName: o,
                        callback: r
                    })
                }, t.prototype.updateChoicesFromServer = function(e, t, n) {
                    var o = {
                        question: e,
                        choices: t,
                        serverResult: n
                    };
                    return this.onLoadChoicesFromServer.fire(this, o), o.choices
                }, t.prototype.loadedChoicesFromServer = function(e) {
                    this.locStrsChanged()
                }, t.prototype.createSurveyService = function() {
                    return new Kn
                }, t.prototype.uploadFilesCore = function(e, t, n) {
                    var o = this,
                        r = [];
                    t.forEach((function(e) {
                        n && n("uploading", e), o.createSurveyService().sendFile(o.surveyPostId, e, (function(o, i) {
                            o ? (r.push({
                                content: i,
                                file: e
                            }), r.length === t.length && n && n("success", r)) : n && n("error", {
                                response: i,
                                file: e
                            })
                        }))
                    }))
                }, t.prototype.getPage = function(e) {
                    return this.pages[e]
                }, t.prototype.addPage = function(e, t) {
                    void 0 === t && (t = -1), null != e && (t < 0 || t >= this.pages.length ? this.pages.push(e) : this.pages.splice(t, 0, e))
                }, t.prototype.addNewPage = function(e, t) {
                    void 0 === e && (e = null), void 0 === t && (t = -1);
                    var n = this.createNewPage(e);
                    return this.addPage(n, t), n
                }, t.prototype.removePage = function(e) {
                    var t = this.pages.indexOf(e);
                    t < 0 || (this.pages.splice(t, 1), this.currentPage == e && (this.currentPage = this.pages.length > 0 ? this.pages[0] : null))
                }, t.prototype.getQuestionByName = function(e, t) {
                    if (void 0 === t && (t = !1), !e) return null;
                    t && (e = e.toLowerCase());
                    var n = (t ? this.questionHashes.namesInsensitive : this.questionHashes.names)[e];
                    return n ? n[0] : null
                }, t.prototype.getQuestionByValueName = function(e, t) {
                    void 0 === t && (t = !1);
                    var n = this.getQuestionsByValueName(e, t);
                    return n ? n[0] : null
                }, t.prototype.getQuestionsByValueName = function(e, t) {
                    void 0 === t && (t = !1);
                    var n = (t ? this.questionHashes.valueNamesInsensitive : this.questionHashes.valueNames)[e];
                    return n || null
                }, t.prototype.getCalculatedValueByName = function(e) {
                    for (var t = 0; t < this.calculatedValues.length; t++)
                        if (e == this.calculatedValues[t].name) return this.calculatedValues[t];
                    return null
                }, t.prototype.getQuestionsByNames = function(e, t) {
                    void 0 === t && (t = !1);
                    var n = [];
                    if (!e) return n;
                    for (var o = 0; o < e.length; o++)
                        if (e[o]) {
                            var r = this.getQuestionByName(e[o], t);
                            r && n.push(r)
                        } return n
                }, t.prototype.getPageByElement = function(e) {
                    for (var t = 0; t < this.pages.length; t++) {
                        var n = this.pages[t];
                        if (n.containsElement(e)) return n
                    }
                    return null
                }, t.prototype.getPageByQuestion = function(e) {
                    return this.getPageByElement(e)
                }, t.prototype.getPageByName = function(e) {
                    for (var t = 0; t < this.pages.length; t++)
                        if (this.pages[t].name == e) return this.pages[t];
                    return null
                }, t.prototype.getPagesByNames = function(e) {
                    var t = [];
                    if (!e) return t;
                    for (var n = 0; n < e.length; n++)
                        if (e[n]) {
                            var o = this.getPageByName(e[n]);
                            o && t.push(o)
                        } return t
                }, t.prototype.getAllQuestions = function(e, t) {
                    void 0 === e && (e = !1), void 0 === t && (t = !1);
                    for (var n = new Array, o = 0; o < this.pages.length; o++) this.pages[o].addQuestionsToList(n, e, t);
                    return n
                }, t.prototype.getQuizQuestions = function() {
                    for (var e = new Array, t = this.getPageStartIndex(); t < this.pages.length; t++)
                        if (this.pages[t].isVisible)
                            for (var n = this.pages[t].questions, o = 0; o < n.length; o++) {
                                var r = n[o];
                                r.quizQuestionCount > 0 && e.push(r)
                            }
                    return e
                }, t.prototype.getPanelByName = function(e, t) {
                    void 0 === t && (t = !1);
                    var n = this.getAllPanels();
                    t && (e = e.toLowerCase());
                    for (var o = 0; o < n.length; o++) {
                        var r = n[o].name;
                        if (t && (r = r.toLowerCase()), r == e) return n[o]
                    }
                    return null
                }, t.prototype.getAllPanels = function(e, t) {
                    void 0 === e && (e = !1), void 0 === t && (t = !1);
                    for (var n = new Array, o = 0; o < this.pages.length; o++) this.pages[o].addPanelsIntoList(n, e, t);
                    return n
                }, t.prototype.createNewPage = function(e) {
                    var t = I.createClass("page");
                    return t.name = e, t
                }, t.prototype.questionOnValueChanging = function(e, t) {
                    if (this.editingObj) {
                        var n = I.findProperty(this.editingObj.getType(), e);
                        n && (t = n.settingValue(this.editingObj, t))
                    }
                    if (this.onValueChanging.isEmpty) return t;
                    var o = {
                        name: e,
                        question: this.getQuestionByValueName(e),
                        value: this.getUnbindValue(t),
                        oldValue: this.getValue(e)
                    };
                    return this.onValueChanging.fire(this, o), o.value
                }, t.prototype.updateQuestionValue = function(e, t) {
                    if (!this.isLoadingFromJson) {
                        var n = this.getQuestionsByValueName(e);
                        if (n)
                            for (var o = 0; o < n.length; o++) {
                                var r = n[o].value;
                                (r === t && Array.isArray(r) && this.editingObj || !this.isTwoValueEquals(r, t)) && n[o].updateValueFromSurvey(t)
                            }
                    }
                }, t.prototype.checkQuestionErrorOnValueChanged = function(e) {
                    !this.isNavigationButtonPressed && ("onValueChanged" === this.checkErrorsMode || e.getAllErrors().length > 0) && this.checkQuestionErrorOnValueChangedCore(e)
                }, t.prototype.checkQuestionErrorOnValueChangedCore = function(e) {
                    var t = e.getAllErrors().length,
                        n = e.hasErrors(!0, {
                            isOnValueChanged: !this.isValidateOnValueChanging
                        }),
                        o = this.checkErrorsMode.indexOf("Value") > -1;
                    return e.page && o && (t > 0 || e.getAllErrors().length > 0) && this.fireValidatedErrorsOnPage(e.page), n
                }, t.prototype.checkErrorsOnValueChanging = function(e, t) {
                    if (this.isLoadingFromJson) return !1;
                    var n = this.getQuestionsByValueName(e);
                    if (!n) return !1;
                    for (var o = !1, r = 0; r < n.length; r++) {
                        var i = n[r];
                        this.isTwoValueEquals(i.valueForSurvey, t) || (i.value = t), this.checkQuestionErrorOnValueChangedCore(i) && (o = !0), o = o || i.errors.length > 0
                    }
                    return o
                }, t.prototype.notifyQuestionOnValueChanged = function(e, t) {
                    if (!this.isLoadingFromJson) {
                        var n = this.getQuestionsByValueName(e);
                        if (n)
                            for (var o = 0; o < n.length; o++) {
                                var r = n[o];
                                this.checkQuestionErrorOnValueChanged(r), r.onSurveyValueChanged(t), this.onValueChanged.fire(this, {
                                    name: e,
                                    question: r,
                                    value: t
                                })
                            } else this.onValueChanged.fire(this, {
                                name: e,
                                question: null,
                                value: t
                            });
                        this.isDisposed || (this.checkElementsBindings(e, t), this.notifyElementsOnAnyValueOrVariableChanged(e))
                    }
                }, t.prototype.checkElementsBindings = function(e, t) {
                    this.isRunningElementsBindings = !0;
                    for (var n = 0; n < this.pages.length; n++) this.pages[n].checkBindings(e, t);
                    this.isRunningElementsBindings = !1, this.updateVisibleIndexAfterBindings && (this.updateVisibleIndexes(), this.updateVisibleIndexAfterBindings = !1)
                }, t.prototype.notifyElementsOnAnyValueOrVariableChanged = function(e) {
                    if ("processing" !== this.isEndLoadingFromJson)
                        if (this.isRunningConditions) this.conditionNotifyElementsOnAnyValueOrVariableChanged = !0;
                        else {
                            for (var t = 0; t < this.pages.length; t++) this.pages[t].onAnyValueChanged(e);
                            this.isEndLoadingFromJson || this.locStrsChanged()
                        }
                }, t.prototype.updateAllQuestionsValue = function() {
                    for (var e = this.getAllQuestions(), t = 0; t < e.length; t++) {
                        var n = e[t],
                            o = n.getValueName();
                        n.updateValueFromSurvey(this.getValue(o)), n.requireUpdateCommentValue && n.updateCommentFromSurvey(this.getComment(o))
                    }
                }, t.prototype.notifyAllQuestionsOnValueChanged = function() {
                    for (var e = this.getAllQuestions(), t = 0; t < e.length; t++) e[t].onSurveyValueChanged(this.getValue(e[t].getValueName()))
                }, t.prototype.checkOnPageTriggers = function() {
                    for (var e = this.getCurrentPageQuestions(!0), t = {}, n = 0; n < e.length; n++) {
                        var o = e[n].getValueName();
                        t[o] = this.getValue(o)
                    }
                    this.addCalculatedValuesIntoFilteredValues(t), this.checkTriggers(t, !0)
                }, t.prototype.getCurrentPageQuestions = function(e) {
                    void 0 === e && (e = !1);
                    var t = [],
                        n = this.currentPage;
                    if (!n) return t;
                    for (var o = 0; o < n.questions.length; o++) {
                        var r = n.questions[o];
                        (e || r.visible) && r.name && t.push(r)
                    }
                    return t
                }, t.prototype.checkTriggers = function(e, t) {
                    if (!this.isCompleted && 0 != this.triggers.length && !this.isDisplayMode)
                        if (this.isTriggerIsRunning)
                            for (var n in this.triggerValues = this.getFilteredValues(), e) this.triggerKeys[n] = e[n];
                        else {
                            this.isTriggerIsRunning = !0, this.triggerKeys = e, this.triggerValues = this.getFilteredValues();
                            var o = this.getFilteredProperties(),
                                r = this.canBeCompletedByTrigger;
                            this.canBeCompletedByTrigger = !1;
                            for (var i = 0; i < this.triggers.length; i++) this.triggers[i].checkExpression(t, this.triggerKeys, this.triggerValues, o);
                            r !== this.canBeCompletedByTrigger && this.updateButtonsVisibility(), this.isTriggerIsRunning = !1
                        }
                }, t.prototype.doElementsOnLoad = function() {
                    for (var e = 0; e < this.pages.length; e++) this.pages[e].onSurveyLoad()
                }, Object.defineProperty(t.prototype, "isRunningConditions", {
                    get: function() {
                        return !!this.conditionValues
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.runConditions = function() {
                    if (!this.isCompleted && "processing" !== this.isEndLoadingFromJson && !this.isRunningConditions) {
                        this.conditionValues = this.getFilteredValues();
                        var e = this.getFilteredProperties(),
                            t = this.pages.indexOf(this.currentPage);
                        this.runConditionsCore(e), this.checkIfNewPagesBecomeVisible(t), this.conditionValues = null, this.isValueChangedOnRunningCondition && this.conditionRunnerCounter < s.maximumConditionRunCountOnValueChanged ? (this.isValueChangedOnRunningCondition = !1, this.conditionRunnerCounter++, this.runConditions()) : (this.isValueChangedOnRunningCondition = !1, this.conditionRunnerCounter = 0, this.conditionUpdateVisibleIndexes && (this.conditionUpdateVisibleIndexes = !1, this.updateVisibleIndexes()), this.conditionNotifyElementsOnAnyValueOrVariableChanged && (this.conditionNotifyElementsOnAnyValueOrVariableChanged = !1, this.notifyElementsOnAnyValueOrVariableChanged("")))
                    }
                }, t.prototype.runConditionOnValueChanged = function(e, t) {
                    this.isRunningConditions ? (this.conditionValues[e] = t, this.isValueChangedOnRunningCondition = !0) : this.runConditions()
                }, t.prototype.runConditionsCore = function(t) {
                    for (var n = this.pages, o = 0; o < this.calculatedValues.length; o++) this.calculatedValues[o].resetCalculation();
                    for (o = 0; o < this.calculatedValues.length; o++) this.calculatedValues[o].doCalculation(this.calculatedValues, this.conditionValues, t);
                    e.prototype.runConditionCore.call(this, this.conditionValues, t);
                    for (o = 0; o < n.length; o++) n[o].runCondition(this.conditionValues, t)
                }, t.prototype.checkIfNewPagesBecomeVisible = function(e) {
                    var t = this.pages.indexOf(this.currentPage);
                    if (!(t <= e + 1))
                        for (var n = e + 1; n < t; n++)
                            if (this.pages[n].isVisible) {
                                this.currentPage = this.pages[n];
                                break
                            }
                }, t.prototype.sendResult = function(e, t, n) {
                    if (void 0 === e && (e = null), void 0 === t && (t = null), void 0 === n && (n = !1), this.isEditMode && (n && this.onPartialSend && this.onPartialSend.fire(this, null), !e && this.surveyPostId && (e = this.surveyPostId), e && (t && (this.clientId = t), !n || this.clientId))) {
                        var o = this;
                        this.surveyShowDataSaving && this.setCompletedState("saving", ""), this.createSurveyService().sendResult(e, this.data, (function(e, t, n) {
                            o.surveyShowDataSaving && (e ? o.setCompletedState("success", "") : o.setCompletedState("error", t)), o.onSendResult.fire(o, {
                                success: e,
                                response: t,
                                request: n
                            })
                        }), this.clientId, n)
                    }
                }, t.prototype.getResult = function(e, t) {
                    var n = this;
                    this.createSurveyService().getResult(e, t, (function(e, t, o, r) {
                        n.onGetResult.fire(n, {
                            success: e,
                            data: t,
                            dataList: o,
                            response: r
                        })
                    }))
                }, t.prototype.loadSurveyFromService = function(e, t) {
                    void 0 === e && (e = null), void 0 === t && (t = null), e && (this.surveyId = e), t && (this.clientId = t);
                    var n = this;
                    this.isLoading = !0, this.onLoadingSurveyFromService(), t ? this.createSurveyService().getSurveyJsonAndIsCompleted(this.surveyId, this.clientId, (function(e, t, o, r) {
                        n.isLoading = !1, e && (n.isCompletedBefore = "completed" == o, n.loadSurveyFromServiceJson(t))
                    })) : this.createSurveyService().loadSurvey(this.surveyId, (function(e, t, o) {
                        n.isLoading = !1, e && n.loadSurveyFromServiceJson(t)
                    }))
                }, t.prototype.loadSurveyFromServiceJson = function(e) {
                    e && (this.fromJSON(e), this.notifyAllQuestionsOnValueChanged(), this.onLoadSurveyFromService(), this.onLoadedSurveyFromService.fire(this, {}))
                }, t.prototype.onLoadingSurveyFromService = function() {}, t.prototype.onLoadSurveyFromService = function() {}, t.prototype.resetVisibleIndexes = function() {
                    for (var e = this.getAllQuestions(!0), t = 0; t < e.length; t++) e[t].setVisibleIndex(-1);
                    this.updateVisibleIndexes()
                }, t.prototype.updateVisibleIndexes = function() {
                    if (!this.isLoadingFromJson && !this.isEndLoadingFromJson)
                        if (this.isRunningConditions && this.onVisibleChanged.isEmpty && this.onPageVisibleChanged.isEmpty) this.conditionUpdateVisibleIndexes = !0;
                        else if (this.isRunningElementsBindings) this.updateVisibleIndexAfterBindings = !0;
                    else {
                        if (this.updatePageVisibleIndexes(this.showPageNumbers), "onPage" == this.showQuestionNumbers)
                            for (var e = this.visiblePages, t = 0; t < e.length; t++) e[t].setVisibleIndex(0);
                        else {
                            var n = "on" == this.showQuestionNumbers ? 0 : -1;
                            for (t = 0; t < this.pages.length; t++) n += this.pages[t].setVisibleIndex(n)
                        }
                        this.updateProgressText(!0)
                    }
                }, t.prototype.updatePageVisibleIndexes = function(e) {
                    this.updateButtonsVisibility();
                    for (var t = 0, n = 0; n < this.pages.length; n++) {
                        var o = this.pages[n],
                            r = o.isVisible && (n > 0 || !o.isStarted);
                        o.visibleIndex = r ? t++ : -1, o.num = r ? o.visibleIndex + 1 : -1
                    }
                }, t.prototype.fromJSON = function(e) {
                    if (e) {
                        this.questionHashesClear(), this.jsonErrors = null;
                        var t = new R;
                        t.toObject(e, this), t.errors.length > 0 && (this.jsonErrors = t.errors), this.onStateAndCurrentPageChanged(), this.updateState()
                    }
                }, t.prototype.setJsonObject = function(e) {
                    this.fromJSON(e)
                }, t.prototype.endLoadingFromJson = function() {
                    this.isEndLoadingFromJson = "processing", this.onFirstPageIsStartedChanged(), this.onQuestionsOnPageModeChanged("standard"), e.prototype.endLoadingFromJson.call(this), this.hasCookie && this.doComplete(), this.doElementsOnLoad(), this.isEndLoadingFromJson = "conditions", this.runConditions(), this.notifyElementsOnAnyValueOrVariableChanged(""), this.isEndLoadingFromJson = null, this.updateVisibleIndexes(), this.updateHasLogo(), this.updateCurrentPage(), this.hasDescription = !!this.description, this.setCalculatedWidthModeUpdater()
                }, t.prototype.updateNavigationCss = function() {
                    this.navigationBar && (this.updateNavigationBarCss(), this.updateNavigationItemCssCallback && this.updateNavigationItemCssCallback())
                }, t.prototype.updateNavigationBarCss = function() {
                    var e = this.navigationBar;
                    e.cssClasses = this.css.actionBar, e.containerCss = this.css.footer
                }, t.prototype.createNavigationBar = function() {
                    var e = new ft;
                    return e.setItems(this.createNavigationActions()), e
                }, t.prototype.createNavigationActions = function() {
                    var e = this,
                        t = new Et({
                            id: "sv-nav-start",
                            visible: new de((function() {
                                return e.isShowStartingPage
                            })),
                            visibleIndex: 10,
                            locTitle: this.locStartSurveyText,
                            action: function() {
                                return e.start()
                            },
                            component: "sv-nav-btn"
                        }),
                        n = new Et({
                            id: "sv-nav-prev",
                            visible: new de((function() {
                                return e.isShowPrevButton
                            })),
                            visibleIndex: 20,
                            data: {
                                mouseDown: function() {
                                    return e.navigationMouseDown()
                                }
                            },
                            locTitle: this.locPagePrevText,
                            action: function() {
                                return e.prevPage()
                            },
                            component: "sv-nav-btn"
                        }),
                        o = new Et({
                            id: "sv-nav-next",
                            visible: new de((function() {
                                return e.isShowNextButton
                            })),
                            visibleIndex: 30,
                            data: {
                                mouseDown: function() {
                                    return e.nextPageMouseDown()
                                }
                            },
                            locTitle: this.locPageNextText,
                            action: function() {
                                return e.nextPageUIClick()
                            },
                            component: "sv-nav-btn"
                        }),
                        r = new Et({
                            id: "sv-nav-preview",
                            visible: new de((function() {
                                return e.isPreviewButtonVisible
                            })),
                            visibleIndex: 40,
                            data: {
                                mouseDown: function() {
                                    return e.navigationMouseDown()
                                }
                            },
                            locTitle: this.locPreviewText,
                            action: function() {
                                return e.showPreview()
                            },
                            component: "sv-nav-btn"
                        }),
                        i = new Et({
                            id: "sv-nav-complete",
                            visible: new de((function() {
                                return e.isCompleteButtonVisible
                            })),
                            visibleIndex: 50,
                            data: {
                                mouseDown: function() {
                                    return e.navigationMouseDown()
                                }
                            },
                            locTitle: this.locCompleteText,
                            action: function() {
                                return e.completeLastPage()
                            },
                            component: "sv-nav-btn"
                        });
                    return this.updateNavigationItemCssCallback = function() {
                        t.innerCss = e.cssNavigationStart, n.innerCss = e.cssNavigationPrev, o.innerCss = e.cssNavigationNext, r.innerCss = e.cssNavigationPreview, i.innerCss = e.cssNavigationComplete
                    }, [t, n, o, r, i]
                }, t.prototype.onBeforeCreating = function() {}, t.prototype.onCreating = function() {}, t.prototype.getProcessedTextValue = function(e) {
                    if (this.getProcessedTextValueCore(e), !this.onProcessTextValue.isEmpty) {
                        var t = this.isValueEmpty(e.value);
                        this.onProcessTextValue.fire(this, e), e.isExists = e.isExists || t && !this.isValueEmpty(e.value)
                    }
                }, t.prototype.getBuiltInVariableValue = function(e) {
                    if ("pageno" === e) {
                        var t = this.currentPage;
                        return null != t ? this.visiblePages.indexOf(t) + 1 : 0
                    }
                    return "pagecount" === e ? this.visiblePageCount : "correctedanswers" === e || "correctanswers" === e || "correctedanswercount" === e ? this.getCorrectedAnswerCount() : "incorrectedanswers" === e || "incorrectanswers" === e || "incorrectedanswercount" === e ? this.getInCorrectedAnswerCount() : "questioncount" === e ? this.getQuizQuestionCount() : void 0
                }, t.prototype.getProcessedTextValueCore = function(e) {
                    var t = e.name.toLocaleLowerCase();
                    if (-1 === ["no", "require", "title"].indexOf(t)) {
                        var n = this.getBuiltInVariableValue(t);
                        if (void 0 !== n) return e.isExists = !0, void(e.value = n);
                        if ("locale" === t) return e.isExists = !0, void(e.value = this.locale ? this.locale : u.defaultLocale);
                        var o = this.getVariable(t);
                        if (void 0 !== o) return e.isExists = !0, void(e.value = o);
                        var r = this.getFirstName(t);
                        if (r) {
                            var i = r.useDisplayValuesInDynamicTexts;
                            e.isExists = !0;
                            var s = r.getValueName().toLowerCase();
                            t = (t = s + t.substring(s.length)).toLocaleLowerCase();
                            var a = {};
                            return a[s] = e.returnDisplayValue && i ? r.getDisplayValue(!1, void 0) : r.value, void(e.value = (new _).getValue(t, a))
                        }
                        this.getProcessedValuesWithoutQuestion(e)
                    }
                }, t.prototype.getProcessedValuesWithoutQuestion = function(e) {
                    var t = this.getValue(e.name);
                    if (void 0 !== t) return e.isExists = !0, void(e.value = t);
                    var n = new _,
                        o = n.getFirstName(e.name);
                    if (o !== e.name) {
                        var r = {},
                            i = this.getValue(o);
                        a.isValueEmpty(i) && (i = this.getVariable(o)), a.isValueEmpty(i) || (r[o] = i, e.value = n.getValue(e.name, r), e.isExists = n.hasValue(e.name, r))
                    }
                }, t.prototype.getFirstName = function(e) {
                    var t;
                    e = e.toLowerCase();
                    do {
                        t = this.getQuestionByValueName(e, !0), e = this.reduceFirstName(e)
                    } while (!t && e);
                    return t
                }, t.prototype.reduceFirstName = function(e) {
                    var t = e.lastIndexOf("."),
                        n = e.lastIndexOf("[");
                    if (t < 0 && n < 0) return "";
                    var o = Math.max(t, n);
                    return e.substring(0, o)
                }, t.prototype.clearUnusedValues = function() {
                    for (var e = this.getAllQuestions(), t = 0; t < e.length; t++) e[t].clearUnusedValues();
                    this.clearInvisibleQuestionValues()
                }, t.prototype.hasVisibleQuestionByValueName = function(e) {
                    var t = this.getQuestionsByValueName(e);
                    if (!t) return !1;
                    for (var n = 0; n < t.length; n++)
                        if (t[n].isVisible && t[n].isParentVisible) return !0;
                    return !1
                }, t.prototype.questionCountByValueName = function(e) {
                    var t = this.getQuestionsByValueName(e);
                    return t ? t.length : 0
                }, t.prototype.clearInvisibleQuestionValues = function() {
                    for (var e = "none" === this.clearInvisibleValues ? "none" : "onComplete", t = this.getAllQuestions(), n = 0; n < t.length; n++) t[n].clearValueIfInvisible(e)
                }, t.prototype.getVariable = function(e) {
                    if (!e) return null;
                    e = e.toLowerCase();
                    var t = this.variablesHash[e];
                    return this.isValueEmpty(t) && (e.indexOf(".") > -1 || e.indexOf("[") > -1) && (new _).hasValue(e, this.variablesHash) ? (new _).getValue(e, this.variablesHash) : t
                }, t.prototype.setVariable = function(e, t) {
                    e && (e = e.toLowerCase(), this.variablesHash[e] = t, this.notifyElementsOnAnyValueOrVariableChanged(e), this.runConditionOnValueChanged(e, t), this.onVariableChanged.fire(this, {
                        name: e,
                        value: t
                    }))
                }, t.prototype.getVariableNames = function() {
                    var e = [];
                    for (var t in this.variablesHash) e.push(t);
                    return e
                }, t.prototype.getUnbindValue = function(e) {
                    return this.editingObj ? e : a.getUnbindValue(e)
                }, t.prototype.getValue = function(e) {
                    if (!e || 0 == e.length) return null;
                    var t = this.getDataValueCore(this.valuesHash, e);
                    return this.getUnbindValue(t)
                }, t.prototype.setValue = function(e, t, n, o) {
                    void 0 === n && (n = !1), void 0 === o && (o = !0);
                    var r = t;
                    if (o && (r = this.questionOnValueChanging(e, t)), (!this.isValidateOnValueChanging || !this.checkErrorsOnValueChanging(e, r)) && (this.editingObj || !this.isValueEqual(e, r) || !this.isTwoValueEquals(r, t))) {
                        var i = this.getValue(e);
                        this.isValueEmpty(r) ? this.deleteDataValueCore(this.valuesHash, e) : (r = this.getUnbindValue(r), this.setDataValueCore(this.valuesHash, e, r)), this.updateOnSetValue(e, r, i, n, o)
                    }
                }, t.prototype.updateOnSetValue = function(e, t, n, o, r) {
                    if (void 0 === o && (o = !1), void 0 === r && (r = !0), this.updateQuestionValue(e, t), !0 !== o && !this.isDisposed && !this.isRunningElementsBindings) {
                        var i = {};
                        i[e] = {
                            newValue: t,
                            oldValue: n
                        }, this.runConditionOnValueChanged(e, t), this.checkTriggers(i, !1), r && this.notifyQuestionOnValueChanged(e, t), "text" !== o && this.tryGoNextPageAutomatic(e)
                    }
                }, t.prototype.isValueEqual = function(e, t) {
                    "" !== t && void 0 !== t || (t = null);
                    var n = this.getValue(e);
                    return "" !== n && void 0 !== n || (n = null), null === t || null === n ? t === n : this.isTwoValueEquals(t, n)
                }, t.prototype.doOnPageAdded = function(e) {
                    e.setSurveyImpl(this), e.name || (e.name = this.generateNewName(this.pages, "page")), this.questionHashesPanelAdded(e), this.updateVisibleIndexes(), this.isLoadingFromJson || (this.updateProgressText(), this.updateCurrentPage());
                    var t = {
                        page: e
                    };
                    this.onPageAdded.fire(this, t)
                }, t.prototype.doOnPageRemoved = function(e) {
                    e.setSurveyImpl(null), e === this.currentPage && this.updateCurrentPage(), this.updateVisibleIndexes(), this.updateProgressText(), this.updateLazyRenderingRowsOnRemovingElements()
                }, t.prototype.generateNewName = function(e, t) {
                    for (var n = {}, o = 0; o < e.length; o++) n[e[o].name] = !0;
                    for (var r = 1; n[t + r];) r++;
                    return t + r
                }, t.prototype.tryGoNextPageAutomatic = function(e) {
                    if (!this.isEndLoadingFromJson && this.goNextPageAutomatic && this.currentPage) {
                        var t = this.getQuestionByValueName(e);
                        if (t && (!t || t.visible && t.supportGoNextPageAutomatic()) && (!t.hasErrors(!1) || t.supportGoNextPageError())) {
                            var n = this.getCurrentPageQuestions();
                            if (!(n.indexOf(t) < 0)) {
                                for (var o = 0; o < n.length; o++)
                                    if (n[o].hasInput && n[o].isEmpty()) return;
                                this.checkIsCurrentPageHasErrors(!1) || (this.isLastPage ? !0 === this.goNextPageAutomatic && this.allowCompleteSurveyAutomatic && (this.isShowPreviewBeforeComplete ? this.showPreview() : this.completeLastPage()) : this.nextPage())
                            }
                        }
                    }
                }, t.prototype.getComment = function(e) {
                    return this.getValue(e + this.commentSuffix) || ""
                }, t.prototype.setComment = function(e, t, n) {
                    if (void 0 === n && (n = !1), t || (t = ""), !this.isTwoValueEquals(t, this.getComment(e))) {
                        var o = e + this.commentSuffix;
                        this.isValueEmpty(t) ? this.deleteDataValueCore(this.valuesHash, o) : this.setDataValueCore(this.valuesHash, o, t);
                        var r = this.getQuestionsByValueName(e);
                        if (r)
                            for (var i = 0; i < r.length; i++) r[i].updateCommentFromSurvey(t), this.checkQuestionErrorOnValueChanged(r[i]);
                        n || this.runConditionOnValueChanged(e, this.getValue(e)), "text" !== n && this.tryGoNextPageAutomatic(e);
                        var s = this.getQuestionByName(e);
                        s && this.onValueChanged.fire(this, {
                            name: o,
                            question: s,
                            value: t
                        })
                    }
                }, t.prototype.clearValue = function(e) {
                    this.setValue(e, null), this.setComment(e, null)
                }, Object.defineProperty(t.prototype, "clearValueOnDisableItems", {
                    get: function() {
                        return this.getPropertyValue("clearValueOnDisableItems", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("clearValueOnDisableItems", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isClearValueOnHidden", {
                    get: function() {
                        return "onHidden" == this.clearInvisibleValues || this.isClearValueOnHiddenContainer
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isClearValueOnHiddenContainer", {
                    get: function() {
                        return "onHiddenContainer" == this.clearInvisibleValues && !this.isShowingPreview && !this.runningPages
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.questionVisibilityChanged = function(e, t) {
                    this.updateVisibleIndexes(), this.onVisibleChanged.fire(this, {
                        question: e,
                        name: e.name,
                        visible: t
                    })
                }, t.prototype.pageVisibilityChanged = function(e, t) {
                    this.isLoadingFromJson || ((t && !this.currentPage || e === this.currentPage) && this.updateCurrentPage(), this.updateVisibleIndexes(), this.onPageVisibleChanged.fire(this, {
                        page: e,
                        visible: t
                    }))
                }, t.prototype.panelVisibilityChanged = function(e, t) {
                    this.updateVisibleIndexes(), this.onPanelVisibleChanged.fire(this, {
                        panel: e,
                        visible: t
                    })
                }, t.prototype.questionCreated = function(e) {
                    this.onQuestionCreated.fire(this, {
                        question: e
                    })
                }, t.prototype.questionAdded = function(e, t, n, o) {
                    e.name || (e.name = this.generateNewName(this.getAllQuestions(!1, !0), "question")), e.page && this.questionHashesAdded(e), this.currentPage || this.updateCurrentPage(), this.updateVisibleIndexes(), this.setCalculatedWidthModeUpdater(), (!this.isMovingQuestion || this.isDesignMode && !s.supportCreatorV2) && this.onQuestionAdded.fire(this, {
                        question: e,
                        name: e.name,
                        index: t,
                        parentPanel: n,
                        rootPanel: o
                    })
                }, t.prototype.questionRemoved = function(e) {
                    this.questionHashesRemoved(e, e.name, e.getValueName()), this.updateVisibleIndexes(), this.onQuestionRemoved.fire(this, {
                        question: e,
                        name: e.name
                    }), this.updateLazyRenderingRowsOnRemovingElements()
                }, t.prototype.questionRenamed = function(e, t, n) {
                    this.questionHashesRemoved(e, t, n), this.questionHashesAdded(e)
                }, t.prototype.questionHashesClear = function() {
                    this.questionHashes.names = {}, this.questionHashes.namesInsensitive = {}, this.questionHashes.valueNames = {}, this.questionHashes.valueNamesInsensitive = {}
                }, t.prototype.questionHashesPanelAdded = function(e) {
                    if (!this.isLoadingFromJson)
                        for (var t = e.questions, n = 0; n < t.length; n++) this.questionHashesAdded(t[n])
                }, t.prototype.questionHashesAdded = function(e) {
                    this.questionHashAddedCore(this.questionHashes.names, e, e.name), this.questionHashAddedCore(this.questionHashes.namesInsensitive, e, e.name.toLowerCase()), this.questionHashAddedCore(this.questionHashes.valueNames, e, e.getValueName()), this.questionHashAddedCore(this.questionHashes.valueNamesInsensitive, e, e.getValueName().toLowerCase())
                }, t.prototype.questionHashesRemoved = function(e, t, n) {
                    t && (this.questionHashRemovedCore(this.questionHashes.names, e, t), this.questionHashRemovedCore(this.questionHashes.namesInsensitive, e, t.toLowerCase())), n && (this.questionHashRemovedCore(this.questionHashes.valueNames, e, n), this.questionHashRemovedCore(this.questionHashes.valueNamesInsensitive, e, n.toLowerCase()))
                }, t.prototype.questionHashAddedCore = function(e, t, n) {
                    var o;
                    (o = e[n]) ? (o = e[n]).indexOf(t) < 0 && o.push(t): e[n] = [t]
                }, t.prototype.questionHashRemovedCore = function(e, t, n) {
                    var o = e[n];
                    if (o) {
                        var r = o.indexOf(t);
                        r > -1 && o.splice(r, 1), 0 == o.length && delete e[n]
                    }
                }, t.prototype.panelAdded = function(e, t, n, o) {
                    e.name || (e.name = this.generateNewName(this.getAllPanels(!1, !0), "panel")), this.questionHashesPanelAdded(e), this.updateVisibleIndexes(), this.onPanelAdded.fire(this, {
                        panel: e,
                        name: e.name,
                        index: t,
                        parentPanel: n,
                        rootPanel: o
                    })
                }, t.prototype.panelRemoved = function(e) {
                    this.updateVisibleIndexes(), this.onPanelRemoved.fire(this, {
                        panel: e,
                        name: e.name
                    }), this.updateLazyRenderingRowsOnRemovingElements()
                }, t.prototype.validateQuestion = function(e) {
                    if (this.onValidateQuestion.isEmpty) return null;
                    var t = {
                        name: e.name,
                        question: e,
                        value: e.value,
                        error: null
                    };
                    return this.onValidateQuestion.fire(this, t), t.error ? new Re(t.error, this) : null
                }, t.prototype.validatePanel = function(e) {
                    if (this.onValidatePanel.isEmpty) return null;
                    var t = {
                        name: e.name,
                        panel: e,
                        error: null
                    };
                    return this.onValidatePanel.fire(this, t), t.error ? new Re(t.error, this) : null
                }, t.prototype.processHtml = function(e) {
                    var t = {
                        html: e
                    };
                    return this.onProcessHtml.fire(this, t), this.processText(t.html, !0)
                }, t.prototype.processText = function(e, t) {
                    return this.processTextEx(e, t, !1).text
                }, t.prototype.processTextEx = function(e, t, n) {
                    var o = {
                        text: this.processTextCore(e, t, n),
                        hasAllValuesOnLastRun: !0
                    };
                    return o.hasAllValuesOnLastRun = this.textPreProcessor.hasAllValuesOnLastRun, o
                }, t.prototype.processTextCore = function(e, t, n) {
                    return void 0 === n && (n = !1), this.isDesignMode ? e : this.textPreProcessor.process(e, t, n)
                }, t.prototype.getSurveyMarkdownHtml = function(e, t, n) {
                    var o = {
                        element: e,
                        text: t,
                        name: n,
                        html: null
                    };
                    return this.onTextMarkdown.fire(this, o), o.html
                }, t.prototype.getCorrectedAnswerCount = function() {
                    return this.getCorrectedAnswerCountCore(!0)
                }, t.prototype.getCorrectAnswerCount = function() {
                    return this.getCorrectedAnswerCountCore(!0)
                }, t.prototype.getQuizQuestionCount = function() {
                    for (var e = this.getQuizQuestions(), t = 0, n = 0; n < e.length; n++) t += e[n].quizQuestionCount;
                    return t
                }, t.prototype.getInCorrectedAnswerCount = function() {
                    return this.getCorrectedAnswerCountCore(!1)
                }, t.prototype.getInCorrectAnswerCount = function() {
                    return this.getCorrectedAnswerCountCore(!1)
                }, t.prototype.getCorrectedAnswerCountCore = function(e) {
                    for (var t = this.getQuizQuestions(), n = 0, o = {
                            question: null,
                            result: !1,
                            correctAnswers: 0,
                            incorrectAnswers: 0
                        }, r = 0; r < t.length; r++) {
                        var i = t[r],
                            s = i.quizQuestionCount;
                        if (o.question = i, o.correctAnswers = i.correctAnswerCount, o.incorrectAnswers = s - o.correctAnswers, o.result = o.question.isAnswerCorrect(), this.onIsAnswerCorrect.fire(this, o), e) {
                            if (o.result || o.correctAnswers < s) {
                                var a = o.correctAnswers;
                                0 == a && o.result && (a = 1), n += a
                            }
                        } else(!o.result || o.incorrectAnswers < s) && (n += o.incorrectAnswers)
                    }
                    return n
                }, t.prototype.getCorrectedAnswers = function() {
                    return this.getCorrectedAnswerCount()
                }, t.prototype.getInCorrectedAnswers = function() {
                    return this.getInCorrectedAnswerCount()
                }, Object.defineProperty(t.prototype, "showTimerPanel", {
                    get: function() {
                        return this.getPropertyValue("showTimerPanel")
                    },
                    set: function(e) {
                        this.setPropertyValue("showTimerPanel", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isTimerPanelShowingOnTop", {
                    get: function() {
                        return this.timerModel.isRunning && "top" == this.showTimerPanel
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isTimerPanelShowingOnBottom", {
                    get: function() {
                        return this.timerModel.isRunning && "bottom" == this.showTimerPanel
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showTimerPanelMode", {
                    get: function() {
                        return this.getPropertyValue("showTimerPanelMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("showTimerPanelMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "widthMode", {
                    get: function() {
                        return this.getPropertyValue("widthMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("widthMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setCalculatedWidthModeUpdater = function() {
                    var e = this;
                    this.calculatedWidthModeUpdater && this.calculatedWidthModeUpdater.dispose(), this.calculatedWidthModeUpdater = new de((function() {
                        return e.calculateWidthMode()
                    })), this.calculatedWidthMode = this.calculatedWidthModeUpdater
                }, t.prototype.calculateWidthMode = function() {
                    if ("auto" == this.widthMode) {
                        var e = !1;
                        return this.pages.forEach((function(t) {
                            t.needResponsiveWidth() && (e = !0)
                        })), e ? "responsive" : "static"
                    }
                    return this.widthMode
                }, Object.defineProperty(t.prototype, "width", {
                    get: function() {
                        return this.getPropertyValue("width")
                    },
                    set: function(e) {
                        this.setPropertyValue("width", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedWidth", {
                    get: function() {
                        var e = this.getPropertyValue("width");
                        return e && !isNaN(e) && (e += "px"), "static" == this.getPropertyValue("calculatedWidthMode") && e || void 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "timerInfo", {
                    get: function() {
                        return this.getTimerInfo()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "timerClock", {
                    get: function() {
                        var e, t;
                        if (this.currentPage) {
                            var n = this.getTimerInfo(),
                                o = n.spent,
                                r = n.limit,
                                i = n.minorSpent,
                                s = n.minorLimit;
                            e = r > 0 ? this.getDisplayClockTime(r - o) : this.getDisplayClockTime(o), void 0 !== i && (t = s > 0 ? this.getDisplayClockTime(s - i) : this.getDisplayClockTime(i))
                        }
                        return {
                            majorText: e,
                            minorText: t
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "timerInfoText", {
                    get: function() {
                        var e = {
                            text: this.getTimerInfoText()
                        };
                        this.onTimerPanelInfoText.fire(this, e);
                        var t = new d(this, !0);
                        return t.text = e.text, t.textOrHtml
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getTimerInfo = function() {
                    var e = this.currentPage;
                    if (!e) return {
                        spent: 0,
                        limit: 0
                    };
                    var t = e.timeSpent,
                        n = this.timeSpent,
                        o = this.getPageMaxTimeToFinish(e),
                        r = this.maxTimeToFinish;
                    return "page" == this.showTimerPanelMode ? {
                        spent: t,
                        limit: o
                    } : "survey" == this.showTimerPanelMode ? {
                        spent: n,
                        limit: r
                    } : o > 0 && r > 0 ? {
                        spent: t,
                        limit: o,
                        minorSpent: n,
                        minorLimit: r
                    } : o > 0 ? {
                        spent: t,
                        limit: o,
                        minorSpent: n
                    } : r > 0 ? {
                        spent: n,
                        limit: r,
                        minorSpent: t
                    } : {
                        spent: t,
                        minorSpent: n
                    }
                }, t.prototype.getTimerInfoText = function() {
                    var e = this.currentPage;
                    if (!e) return "";
                    var t = this.getDisplayTime(e.timeSpent),
                        n = this.getDisplayTime(this.timeSpent),
                        o = this.getPageMaxTimeToFinish(e),
                        r = this.getDisplayTime(o),
                        i = this.getDisplayTime(this.maxTimeToFinish);
                    return "page" == this.showTimerPanelMode ? this.getTimerInfoPageText(e, t, r) : "survey" == this.showTimerPanelMode ? this.getTimerInfoSurveyText(n, i) : "all" == this.showTimerPanelMode ? o <= 0 && this.maxTimeToFinish <= 0 ? this.getLocalizationFormatString("timerSpentAll", t, n) : o > 0 && this.maxTimeToFinish > 0 ? this.getLocalizationFormatString("timerLimitAll", t, r, n, i) : this.getTimerInfoPageText(e, t, r) + " " + this.getTimerInfoSurveyText(n, i) : ""
                }, t.prototype.getTimerInfoPageText = function(e, t, n) {
                    return this.getPageMaxTimeToFinish(e) > 0 ? this.getLocalizationFormatString("timerLimitPage", t, n) : this.getLocalizationFormatString("timerSpentPage", t, n)
                }, t.prototype.getTimerInfoSurveyText = function(e, t) {
                    var n = this.maxTimeToFinish > 0 ? "timerLimitSurvey" : "timerSpentSurvey";
                    return this.getLocalizationFormatString(n, e, t)
                }, t.prototype.getDisplayClockTime = function(e) {
                    var t = Math.floor(e / 60),
                        n = e % 60,
                        o = n.toString();
                    return n < 10 && (o = "0" + o), "".concat(t, ":").concat(o)
                }, t.prototype.getDisplayTime = function(e) {
                    var t = Math.floor(e / 60),
                        n = e % 60,
                        o = "";
                    return t > 0 && (o += t + " " + this.getLocalizationString("timerMin")), o && 0 == n ? o : (o && (o += " "), o + n + " " + this.getLocalizationString("timerSec"))
                }, Object.defineProperty(t.prototype, "timerModel", {
                    get: function() {
                        return this.timerModelValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.startTimer = function() {
                    this.timerModel.start()
                }, t.prototype.startTimerFromUI = function() {
                    "none" != this.showTimerPanel && "running" === this.state && this.startTimer()
                }, t.prototype.stopTimer = function() {
                    this.timerModel.stop()
                }, Object.defineProperty(t.prototype, "timeSpent", {
                    get: function() {
                        return this.timerModel.spent
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxTimeToFinish", {
                    get: function() {
                        return this.getPropertyValue("maxTimeToFinish", 0)
                    },
                    set: function(e) {
                        this.setPropertyValue("maxTimeToFinish", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxTimeToFinishPage", {
                    get: function() {
                        return this.getPropertyValue("maxTimeToFinishPage", 0)
                    },
                    set: function(e) {
                        this.setPropertyValue("maxTimeToFinishPage", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getPageMaxTimeToFinish = function(e) {
                    return !e || e.maxTimeToFinish < 0 ? 0 : e.maxTimeToFinish > 0 ? e.maxTimeToFinish : this.maxTimeToFinishPage
                }, t.prototype.doTimer = function(e) {
                    if (this.onTimer.fire(this, {}), this.maxTimeToFinish > 0 && this.maxTimeToFinish == this.timeSpent && this.completeLastPage(), e) {
                        var t = this.getPageMaxTimeToFinish(e);
                        t > 0 && t == e.timeSpent && (this.isLastPage ? this.completeLastPage() : this.nextPage())
                    }
                }, Object.defineProperty(t.prototype, "inSurvey", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getSurveyData = function() {
                    return this
                }, t.prototype.getSurvey = function() {
                    return this
                }, t.prototype.getTextProcessor = function() {
                    return this
                }, t.prototype.getObjects = function(e, t) {
                    var n = [];
                    return Array.prototype.push.apply(n, this.getPagesByNames(e)), Array.prototype.push.apply(n, this.getQuestionsByNames(t)), n
                }, t.prototype.setTriggerValue = function(e, t, n) {
                    if (e)
                        if (n) this.setVariable(e, t);
                        else {
                            var o = this.getQuestionByName(e);
                            if (o) o.value = t;
                            else {
                                var r = new _,
                                    i = r.getFirstName(e);
                                if (i == e) this.setValue(e, t);
                                else {
                                    if (!this.getQuestionByName(i)) return;
                                    var s = this.getUnbindValue(this.getFilteredValues());
                                    r.setValue(s, e, t), this.setValue(i, s[i])
                                }
                            }
                        }
                }, t.prototype.copyTriggerValue = function(e, t) {
                    if (e && t) {
                        var n = (new _).getValue(t, this.getFilteredValues());
                        this.setTriggerValue(e, n, !1)
                    }
                }, t.prototype.triggerExecuted = function(e) {
                    this.onTriggerExecuted.fire(this, {
                        trigger: e
                    })
                }, t.prototype.startMovingQuestion = function() {
                    this.isMovingQuestion = !0
                }, t.prototype.stopMovingQuestion = function() {
                    this.isMovingQuestion = !1
                }, t.prototype.focusQuestion = function(e) {
                    var t = this,
                        n = this.getQuestionByName(e, !0);
                    if (!n || !n.isVisible || !n.page) return !1;
                    this.isFocusingQuestion = !0, this.skippedPages.push({
                        from: this.currentPage,
                        to: n.page
                    });
                    var o = this.currentPage !== n.page,
                        r = function() {
                            n.focus(), t.isFocusingQuestion = !1, t.isCurrentPageRendering = !1
                        };
                    return this.afterRenderPageTasks.push(r), this.currentPage = n.page, o || (r(), this.afterRenderPageTasks.splice(this.afterRenderPageTasks.indexOf(r), 1)), !0
                }, t.prototype.getElementWrapperComponentName = function(e, n) {
                    return "logo-image" === n ? "sv-logo-image" : t.TemplateRendererComponentName
                }, t.prototype.getQuestionContentWrapperComponentName = function(e) {
                    return t.TemplateRendererComponentName
                }, t.prototype.getRowWrapperComponentName = function(e) {
                    return t.TemplateRendererComponentName
                }, t.prototype.getElementWrapperComponentData = function(e, t) {
                    return e
                }, t.prototype.getRowWrapperComponentData = function(e) {
                    return e
                }, t.prototype.getItemValueWrapperComponentName = function(e, n) {
                    return t.TemplateRendererComponentName
                }, t.prototype.getItemValueWrapperComponentData = function(e, t) {
                    return e
                }, t.prototype.getMatrixCellTemplateData = function(e) {
                    return e.question
                }, t.prototype.searchText = function(e) {
                    e && (e = e.toLowerCase());
                    for (var t = [], n = 0; n < this.pages.length; n++) this.pages[n].searchText(e, t);
                    return t
                }, t.prototype.getSkeletonComponentName = function(e) {
                    return this.skeletonComponentName
                }, t.prototype.dispose = function() {
                    if (this.currentPage = null, this.destroyResizeObserver(), e.prototype.dispose.call(this), this.editingObj = null, this.pages) {
                        for (var t = 0; t < this.pages.length; t++) this.pages[t].setSurveyImpl(void 0), this.pages[t].dispose();
                        this.pages.splice(0, this.pages.length), this.disposeCallback && this.disposeCallback()
                    }
                }, t.TemplateRendererComponentName = "sv-template-renderer", t.stylesManager = null, t.platform = "unknown", fo([y()], t.prototype, "completedCss", void 0), fo([y()], t.prototype, "containerCss", void 0), fo([y({
                    defaultValue: !1
                })], t.prototype, "showBrandInfo", void 0), fo([y()], t.prototype, "_isMobile", void 0), fo([y()], t.prototype, "rootCss", void 0), fo([y()], t.prototype, "calculatedWidthMode", void 0), t
            }(At);
        I.addClass("survey", [{
            name: "locale",
            choices: function() {
                return u.getLocales(!0)
            },
            onGetValue: function(e) {
                return e.locale == u.defaultLocale ? null : e.locale
            }
        }, {
            name: "title",
            serializationProperty: "locTitle",
            dependsOn: "locale"
        }, {
            name: "description:text",
            serializationProperty: "locDescription",
            dependsOn: "locale"
        }, {
            name: "logo",
            serializationProperty: "locLogo"
        }, {
            name: "logoWidth",
            default: "300px",
            minValue: 0
        }, {
            name: "logoHeight",
            default: "200px",
            minValue: 0
        }, {
            name: "logoFit",
            default: "contain",
            choices: ["none", "contain", "cover", "fill"]
        }, {
            name: "logoPosition",
            default: "left",
            choices: ["none", "left", "right", "top", "bottom"]
        }, {
            name: "focusFirstQuestionAutomatic:boolean",
            default: !0
        }, {
            name: "focusOnFirstError:boolean",
            default: !0
        }, {
            name: "completedHtml:html",
            serializationProperty: "locCompletedHtml"
        }, {
            name: "completedBeforeHtml:html",
            serializationProperty: "locCompletedBeforeHtml"
        }, {
            name: "completedHtmlOnCondition:htmlconditions",
            className: "htmlconditionitem"
        }, {
            name: "loadingHtml:html",
            serializationProperty: "locLoadingHtml"
        }, {
            name: "pages:surveypages",
            className: "page"
        }, {
            name: "questions",
            alternativeName: "elements",
            baseClassName: "question",
            visible: !1,
            isLightSerializable: !1,
            onGetValue: function(e) {
                return null
            },
            onSetValue: function(e, t, n) {
                e.pages.splice(0, e.pages.length);
                var o = e.addNewPage("");
                n.toObject({
                    questions: t
                }, o)
            }
        }, {
            name: "triggers:triggers",
            baseClassName: "surveytrigger",
            classNamePart: "trigger"
        }, {
            name: "calculatedValues:calculatedvalues",
            className: "calculatedvalue"
        }, {
            name: "surveyId",
            visible: !1
        }, {
            name: "surveyPostId",
            visible: !1
        }, {
            name: "surveyShowDataSaving:boolean",
            visible: !1
        }, "cookieName", "sendResultOnPageNext:boolean", {
            name: "showNavigationButtons",
            default: "bottom",
            choices: ["none", "top", "bottom", "both"]
        }, {
            name: "showPrevButton:boolean",
            default: !0
        }, {
            name: "showTitle:boolean",
            default: !0
        }, {
            name: "showPageTitles:boolean",
            default: !0
        }, {
            name: "showCompletedPage:boolean",
            default: !0
        }, "navigateToUrl", {
            name: "navigateToUrlOnCondition:urlconditions",
            className: "urlconditionitem"
        }, {
            name: "questionsOrder",
            default: "initial",
            choices: ["initial", "random"]
        }, "showPageNumbers:boolean", {
            name: "showQuestionNumbers",
            default: "on",
            choices: ["on", "onPage", "off"]
        }, {
            name: "questionTitleLocation",
            default: "top",
            choices: ["top", "bottom", "left"]
        }, {
            name: "questionDescriptionLocation",
            default: "underTitle",
            choices: ["underInput", "underTitle"]
        }, {
            name: "questionErrorLocation",
            default: "top",
            choices: ["top", "bottom"]
        }, {
            name: "showProgressBar",
            default: "off",
            choices: ["off", "top", "bottom", "both"]
        }, {
            name: "progressBarType",
            default: "pages",
            choices: ["pages", "questions", "requiredQuestions", "correctQuestions", "buttons"]
        }, {
            name: "mode",
            default: "edit",
            choices: ["edit", "display"]
        }, {
            name: "storeOthersAsComment:boolean",
            default: !0
        }, {
            name: "maxTextLength:number",
            default: 0,
            minValue: 0
        }, {
            name: "maxOthersLength:number",
            default: 0,
            minValue: 0
        }, {
            name: "goNextPageAutomatic:boolean",
            onSetValue: function(e, t) {
                "autogonext" !== t && (t = a.isTwoValueEquals(t, !0)), e.setPropertyValue("goNextPageAutomatic", t)
            }
        }, {
            name: "clearInvisibleValues",
            default: "onComplete",
            choices: ["none", "onComplete", "onHidden", "onHiddenContainer"]
        }, {
            name: "checkErrorsMode",
            default: "onNextPage",
            choices: ["onNextPage", "onValueChanged", "onValueChanging", "onComplete"]
        }, {
            name: "textUpdateMode",
            default: "onBlur",
            choices: ["onBlur", "onTyping"]
        }, {
            name: "autoGrowComment:boolean",
            default: !1
        }, {
            name: "startSurveyText",
            serializationProperty: "locStartSurveyText"
        }, {
            name: "pagePrevText",
            serializationProperty: "locPagePrevText"
        }, {
            name: "pageNextText",
            serializationProperty: "locPageNextText"
        }, {
            name: "completeText",
            serializationProperty: "locCompleteText"
        }, {
            name: "previewText",
            serializationProperty: "locPreviewText"
        }, {
            name: "editText",
            serializationProperty: "locEditText"
        }, {
            name: "requiredText",
            default: "*"
        }, {
            name: "questionStartIndex",
            dependsOn: ["showQuestionNumbers"],
            visibleIf: function(e) {
                return !e || "off" !== e.showQuestionNumbers
            }
        }, {
            name: "questionTitlePattern",
            default: "numTitleRequire",
            dependsOn: ["questionStartIndex", "requiredText"],
            choices: function(e) {
                return e ? e.getQuestionTitlePatternOptions() : []
            }
        }, {
            name: "questionTitleTemplate",
            visible: !1,
            isSerializable: !1,
            serializationProperty: "locQuestionTitleTemplate"
        }, {
            name: "firstPageIsStarted:boolean",
            default: !1
        }, {
            name: "isSinglePage:boolean",
            default: !1,
            visible: !1,
            isSerializable: !1
        }, {
            name: "questionsOnPageMode",
            default: "standard",
            choices: ["singlePage", "standard", "questionPerPage"]
        }, {
            name: "showPreviewBeforeComplete",
            default: "noPreview",
            choices: ["noPreview", "showAllQuestions", "showAnsweredQuestions"]
        }, {
            name: "maxTimeToFinish:number",
            default: 0,
            minValue: 0
        }, {
            name: "maxTimeToFinishPage:number",
            default: 0,
            minValue: 0
        }, {
            name: "showTimerPanel",
            default: "none",
            choices: ["none", "top", "bottom"]
        }, {
            name: "showTimerPanelMode",
            default: "all",
            choices: ["all", "page", "survey"]
        }, {
            name: "widthMode",
            default: "auto",
            choices: ["auto", "static", "responsive"]
        }, "width", {
            name: "showBrandInfo:boolean",
            default: !1,
            visible: !1
        }]);
        var go = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            yo = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            vo = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    n.otherItemValue = new ze("other"), n.dependedQuestions = [], n.noneItemValue = new ze(s.noneItemValue), n.isSettingDefaultValue = !1, n.isSettingComment = !1, n.isRunningChoices = !1, n.isFirstLoadChoicesFromUrl = !0, n.isUpdatingChoicesDependedQuestions = !1, n.prevIsOtherSelected = !1;
                    var o = n.createLocalizableString("noneText", n.noneItemValue, !0, "noneItemText");
                    n.noneItemValue.locOwner = n, n.noneItemValue.setLocText(o), n.createItemValues("choices"), n.registerPropertyChangedHandlers(["choices"], (function() {
                        n.filterItems() || n.onVisibleChoicesChanged()
                    })), n.registerPropertyChangedHandlers(["choicesFromQuestion", "choicesFromQuestionMode", "showNoneItem"], (function() {
                        n.onVisibleChoicesChanged()
                    })), n.registerPropertyChangedHandlers(["hideIfChoicesEmpty"], (function() {
                        n.updateVisibilityBasedOnChoices()
                    })), n.createNewArray("visibleChoices"), n.setNewRestfulProperty();
                    var r = n.createLocalizableString("otherText", n.otherItemValue, !0, "otherItemText");
                    return n.createLocalizableString("otherErrorText", n, !0, "otherRequiredError"), n.otherItemValue.locOwner = n, n.otherItemValue.setLocText(r), n.choicesByUrl.createItemValue = function(e) {
                        return n.createItemValue(e)
                    }, n.choicesByUrl.beforeSendRequestCallback = function() {
                        n.onBeforeSendRequest()
                    }, n.choicesByUrl.getResultCallback = function(e) {
                        n.onLoadChoicesFromUrl(e)
                    }, n.choicesByUrl.updateResultCallback = function(e, t) {
                        return n.survey ? n.survey.updateChoicesFromServer(n, e, t) : e
                    }, n
                }
                return go(t, e), t.prototype.getType = function() {
                    return "selectbase"
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this);
                    for (var t = 0; t < this.dependedQuestions.length; t++) this.dependedQuestions[t].choicesFromQuestion = "";
                    this.removeFromDependedQuestion(this.getQuestionWithChoices())
                }, Object.defineProperty(t.prototype, "otherId", {
                    get: function() {
                        return this.id + "_other"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getCommentElementsId = function() {
                    return [this.commentId, this.otherId]
                }, t.prototype.getItemValueType = function() {
                    return "itemvalue"
                }, t.prototype.createItemValue = function(e) {
                    return I.createClass(this.getItemValueType(), e)
                }, t.prototype.supportGoNextPageError = function() {
                    return !this.isOtherSelected || !!this.otherValue
                }, t.prototype.isLayoutTypeSupported = function(e) {
                    return !0
                }, t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this), "none" !== this.choicesOrder && this.updateVisibleChoices()
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.choicesFromUrl && (ze.locStrsChanged(this.choicesFromUrl), ze.locStrsChanged(this.visibleChoices))
                }, Object.defineProperty(t.prototype, "otherValue", {
                    get: function() {
                        return this.showCommentArea ? this.otherValueCore : this.comment
                    },
                    set: function(e) {
                        this.showCommentArea ? this.setOtherValueInternally(e) : this.comment = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "otherValueCore", {
                    get: function() {
                        return this.getPropertyValue("otherValue")
                    },
                    set: function(e) {
                        this.setPropertyValue("otherValue", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "otherItem", {
                    get: function() {
                        return this.otherItemValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isOtherSelected", {
                    get: function() {
                        return this.hasOther && this.getHasOther(this.renderedValue)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isNoneSelected", {
                    get: function() {
                        return this.hasNone && this.getIsItemValue(this.renderedValue, this.noneItem)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showNoneItem", {
                    get: function() {
                        return this.getPropertyValue("showNoneItem", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("showNoneItem", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasNone", {
                    get: function() {
                        return this.showNoneItem
                    },
                    set: function(e) {
                        this.showNoneItem = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "noneItem", {
                    get: function() {
                        return this.noneItemValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "noneText", {
                    get: function() {
                        return this.getLocalizableStringText("noneText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("noneText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locNoneText", {
                    get: function() {
                        return this.getLocalizableString("noneText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "choicesVisibleIf", {
                    get: function() {
                        return this.getPropertyValue("choicesVisibleIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("choicesVisibleIf", e), this.filterItems()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "choicesEnableIf", {
                    get: function() {
                        return this.getPropertyValue("choicesEnableIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("choicesEnableIf", e), this.filterItems()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.surveyChoiceItemVisibilityChange = function() {
                    this.filterItems()
                }, t.prototype.runCondition = function(t, n) {
                    e.prototype.runCondition.call(this, t, n), this.runItemsEnableCondition(t, n), this.runItemsCondition(t, n)
                }, t.prototype.isTextValue = function() {
                    return !0
                }, t.prototype.setDefaultValue = function() {
                    this.isSettingDefaultValue = !this.isValueEmpty(this.defaultValue) && this.hasUnknownValue(this.defaultValue), this.prevOtherValue = void 0, e.prototype.setDefaultValue.call(this), this.isSettingDefaultValue = !1
                }, t.prototype.getIsMultipleValue = function() {
                    return !1
                }, t.prototype.convertDefaultValue = function(e) {
                    if (null == e || null == e) return e;
                    if (this.getIsMultipleValue()) {
                        if (!Array.isArray(e)) return [e]
                    } else if (Array.isArray(e) && e.length > 0) return e[0];
                    return e
                }, t.prototype.filterItems = function() {
                    if (this.isLoadingFromJson || !this.data || this.areInvisibleElementsShowing) return !1;
                    var e = this.getDataFilteredValues(),
                        t = this.getDataFilteredProperties();
                    return this.runItemsEnableCondition(e, t), this.runItemsCondition(e, t)
                }, t.prototype.runItemsCondition = function(e, t) {
                    this.setConditionalChoicesRunner();
                    var n = this.runConditionsForItems(e, t);
                    return this.filteredChoicesValue && this.filteredChoicesValue.length === this.activeChoices.length && (this.filteredChoicesValue = void 0), n && (this.onVisibleChoicesChanged(), this.clearIncorrectValues()), n
                }, t.prototype.runItemsEnableCondition = function(e, t) {
                    var n = this;
                    this.setConditionalEnableChoicesRunner(), ze.runEnabledConditionsForItems(this.activeChoices, this.conditionChoicesEnableIfRunner, e, t, (function(e, t) {
                        return t && n.onEnableItemCallBack(e)
                    })) && this.clearDisabledValues(), this.onAfterRunItemsEnableCondition()
                }, t.prototype.onAfterRunItemsEnableCondition = function() {}, t.prototype.onEnableItemCallBack = function(e) {
                    return !0
                }, t.prototype.setConditionalChoicesRunner = function() {
                    this.choicesVisibleIf ? (this.conditionChoicesVisibleIfRunner || (this.conditionChoicesVisibleIfRunner = new se(this.choicesVisibleIf)), this.conditionChoicesVisibleIfRunner.expression = this.choicesVisibleIf) : this.conditionChoicesVisibleIfRunner = null
                }, t.prototype.setConditionalEnableChoicesRunner = function() {
                    this.choicesEnableIf ? (this.conditionChoicesEnableIfRunner || (this.conditionChoicesEnableIfRunner = new se(this.choicesEnableIf)), this.conditionChoicesEnableIfRunner.expression = this.choicesEnableIf) : this.conditionChoicesEnableIfRunner = null
                }, t.prototype.canSurveyChangeItemVisibility = function() {
                    return !!this.survey && this.survey.canChangeChoiceItemsVisibility()
                }, t.prototype.changeItemVisisbility = function() {
                    var e = this;
                    return this.canSurveyChangeItemVisibility() ? function(t, n) {
                        return e.survey.getChoiceItemVisibility(e, t, n)
                    } : null
                }, t.prototype.runConditionsForItems = function(e, t) {
                    this.filteredChoicesValue = [];
                    var n = this.changeItemVisisbility();
                    return ze.runConditionsForItems(this.activeChoices, this.getFilteredChoices(), this.areInvisibleElementsShowing ? null : this.conditionChoicesVisibleIfRunner, e, t, !this.survey || !this.survey.areInvisibleElementsShowing, (function(e, t) {
                        return n ? n(e, t) : t
                    }))
                }, t.prototype.getHasOther = function(e) {
                    return this.getIsItemValue(e, this.otherItem)
                }, t.prototype.getIsItemValue = function(e, t) {
                    return e === t.value
                }, Object.defineProperty(t.prototype, "validatedValue", {
                    get: function() {
                        return this.rendredValueToDataCore(this.value)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createRestful = function() {
                    return new Ut
                }, t.prototype.setNewRestfulProperty = function() {
                    this.setPropertyValue("choicesByUrl", this.createRestful()), this.choicesByUrl.owner = this, this.choicesByUrl.loadingOwner = this
                }, Object.defineProperty(t.prototype, "autoOtherMode", {
                    get: function() {
                        return this.getPropertyValue("autoOtherMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("autoOtherMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionComment = function() {
                    return this.showCommentArea ? e.prototype.getQuestionComment.call(this) : this.otherValueCore ? this.otherValueCore : this.hasComment || this.getStoreOthersAsComment() ? e.prototype.getQuestionComment.call(this) : this.otherValueCore
                }, t.prototype.selectOtherValueFromComment = function(e) {
                    this.value = e ? this.otherItem.value : void 0
                }, t.prototype.setQuestionComment = function(t) {
                    this.showCommentArea ? e.prototype.setQuestionComment.call(this, t) : (this.onUpdateCommentOnAutoOtherMode(t), this.getStoreOthersAsComment() ? e.prototype.setQuestionComment.call(this, t) : this.setOtherValueInternally(t), this.updateChoicesDependedQuestions())
                }, t.prototype.onUpdateCommentOnAutoOtherMode = function(e) {
                    if (this.autoOtherMode) {
                        this.prevOtherValue = void 0;
                        var t = this.isOtherSelected;
                        (!t && e || t && !e) && this.selectOtherValueFromComment(!!e)
                    }
                }, t.prototype.setOtherValueInternally = function(e) {
                    this.isSettingComment || e == this.otherValueCore || (this.isSettingComment = !0, this.otherValueCore = e, this.isOtherSelected && !this.isRenderedValueSetting && (this.value = this.rendredValueToData(this.renderedValue)), this.isSettingComment = !1)
                }, t.prototype.clearValue = function() {
                    e.prototype.clearValue.call(this), this.prevOtherValue = void 0
                }, t.prototype.updateCommentFromSurvey = function(t) {
                    e.prototype.updateCommentFromSurvey.call(this, t), this.prevOtherValue = void 0
                }, Object.defineProperty(t.prototype, "renderedValue", {
                    get: function() {
                        return this.getPropertyValue("renderedValue", null)
                    },
                    set: function(e) {
                        this.setPropertyValue("renderedValue", e);
                        e = this.rendredValueToData(e);
                        this.isTwoValueEquals(e, this.value) || (this.value = e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setQuestionValue = function(t, n, o) {
                    if (void 0 === n && (n = !0), void 0 === o && (o = !0), !this.isLoadingFromJson && !this.isTwoValueEquals(this.value, t) && (e.prototype.setQuestionValue.call(this, t, n), this.setPropertyValue("renderedValue", this.rendredValueFromData(t)), !this.hasComment && o)) {
                        var r = this.isOtherSelected;
                        if (r && this.prevOtherValue) {
                            var i = this.prevOtherValue;
                            this.prevOtherValue = void 0, this.otherValue = i
                        }!r && this.otherValue && (this.getStoreOthersAsComment() && !this.autoOtherMode && (this.prevOtherValue = this.otherValue), this.otherValue = "")
                    }
                }, t.prototype.setNewValue = function(t) {
                    this.resetSelectedItemValues(), t = this.valueFromData(t), (this.choicesByUrl.isRunning || this.choicesByUrl.isWaitingForParameters) && this.isValueEmpty(t) || (this.cachedValueForUrlRequests = t), e.prototype.setNewValue.call(this, t)
                }, t.prototype.valueFromData = function(t) {
                    var n = ze.getItemByValue(this.activeChoices, t);
                    return n ? n.value : e.prototype.valueFromData.call(this, t)
                }, t.prototype.rendredValueFromData = function(e) {
                    return this.getStoreOthersAsComment() ? e : this.renderedValueFromDataCore(e)
                }, t.prototype.rendredValueToData = function(e) {
                    return this.getStoreOthersAsComment() ? e : this.rendredValueToDataCore(e)
                }, t.prototype.renderedValueFromDataCore = function(e) {
                    return this.hasUnknownValue(e, !0, !1) ? (this.otherValue = e, this.otherItem.value) : this.valueFromData(e)
                }, t.prototype.rendredValueToDataCore = function(e) {
                    return e == this.otherItem.value && this.needConvertRenderedOtherToDataValue() && (e = this.otherValue), e
                }, t.prototype.needConvertRenderedOtherToDataValue = function() {
                    var e = this.otherValue;
                    return !!e && (!!(e = e.trim()) && this.hasUnknownValue(e, !0, !1))
                }, t.prototype.updateSelectedItemValues = function() {
                    var e = this;
                    if (this.survey && !this.isEmpty() && 0 === this.choices.length) {
                        var t = this.getIsMultipleValue();
                        this.survey.getChoiceDisplayValue({
                            question: this,
                            values: t ? this.value : [this.value],
                            setItems: function(n) {
                                n && n.length && (e.selectedItemValues = t ? n.map((function(t, n) {
                                    return new ze(e.value[n], t)
                                })) : new ze(e.value, n[0]))
                            }
                        })
                    }
                }, t.prototype.resetSelectedItemValues = function() {
                    this.selectedItemValues = null
                }, t.prototype.hasUnknownValue = function(e, t, n, o) {
                    if (void 0 === t && (t = !1), void 0 === n && (n = !0), void 0 === o && (o = !1), !o && this.isValueEmpty(e)) return !1;
                    if (t && e == this.otherItem.value) return !1;
                    if (this.hasNone && e == this.noneItem.value) return !1;
                    var r = n ? this.getFilteredChoices() : this.activeChoices;
                    return null == ze.getItemByValue(r, e)
                }, t.prototype.isValueDisabled = function(e) {
                    var t = ze.getItemByValue(this.getFilteredChoices(), e);
                    return !!t && !t.isEnabled
                }, Object.defineProperty(t.prototype, "choicesByUrl", {
                    get: function() {
                        return this.getPropertyValue("choicesByUrl")
                    },
                    set: function(e) {
                        e && (this.setNewRestfulProperty(), this.choicesByUrl.fromJSON(e.toJSON()))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "choices", {
                    get: function() {
                        return this.getPropertyValue("choices")
                    },
                    set: function(e) {
                        this.setPropertyValue("choices", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "choicesFromQuestion", {
                    get: function() {
                        return this.getPropertyValue("choicesFromQuestion")
                    },
                    set: function(e) {
                        var t = this.getQuestionWithChoices();
                        t && t.removeFromDependedQuestion(this), this.setPropertyValue("choicesFromQuestion", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.addIntoDependedQuestion = function(e) {
                    !e || e.dependedQuestions.indexOf(this) > -1 || e.dependedQuestions.push(this)
                }, t.prototype.removeFromDependedQuestion = function(e) {
                    if (e) {
                        var t = e.dependedQuestions.indexOf(this);
                        t > -1 && e.dependedQuestions.splice(t, 1)
                    }
                }, Object.defineProperty(t.prototype, "choicesFromQuestionMode", {
                    get: function() {
                        return this.getPropertyValue("choicesFromQuestionMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("choicesFromQuestionMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hideIfChoicesEmpty", {
                    get: function() {
                        return this.getPropertyValue("hideIfChoicesEmpty", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("hideIfChoicesEmpty", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "keepIncorrectValues", {
                    get: function() {
                        return this.getPropertyValue("keepIncorrectValues", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("keepIncorrectValues", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "storeOthersAsComment", {
                    get: function() {
                        return this.getPropertyValue("storeOthersAsComment")
                    },
                    set: function(e) {
                        this.setPropertyValue("storeOthersAsComment", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.hasOtherChanged = function() {
                    this.onVisibleChoicesChanged()
                }, Object.defineProperty(t.prototype, "choicesOrder", {
                    get: function() {
                        return this.getPropertyValue("choicesOrder")
                    },
                    set: function(e) {
                        (e = e.toLowerCase()) != this.choicesOrder && (this.setPropertyValue("choicesOrder", e), this.onVisibleChoicesChanged())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "otherText", {
                    get: function() {
                        return this.getLocalizableStringText("otherText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("otherText", e), this.onVisibleChoicesChanged()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locOtherText", {
                    get: function() {
                        return this.getLocalizableString("otherText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "otherPlaceHolder", {
                    get: function() {
                        return this.otherPlaceholder
                    },
                    set: function(e) {
                        this.otherPlaceholder = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "otherErrorText", {
                    get: function() {
                        return this.getLocalizableStringText("otherErrorText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("otherErrorText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locOtherErrorText", {
                    get: function() {
                        return this.getLocalizableString("otherErrorText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visibleChoices", {
                    get: function() {
                        return this.getPropertyValue("visibleChoices")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "enabledChoices", {
                    get: function() {
                        for (var e = [], t = this.visibleChoices, n = 0; n < t.length; n++) t[n].isEnabled && e.push(t[n]);
                        return e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateVisibleChoices = function() {
                    if (!this.isLoadingFromJson) {
                        var e = new Array,
                            t = this.calcVisibleChoices();
                        t || (t = []);
                        for (var n = 0; n < t.length; n++) e.push(t[n]);
                        this.setPropertyValue("visibleChoices", e)
                    }
                }, t.prototype.calcVisibleChoices = function() {
                    if (this.canUseFilteredChoices()) return this.getFilteredChoices();
                    var e = this.sortVisibleChoices(this.getFilteredChoices().slice());
                    return this.addToVisibleChoices(e, this.isAddDefaultItems), e
                }, t.prototype.canUseFilteredChoices = function() {
                    return !this.isAddDefaultItems && !this.hasNone && !this.hasOther && "none" == this.choicesOrder
                }, t.prototype.setCanShowOptionItemCallback = function(e) {
                    this.canShowOptionItemCallback = e, e && this.onVisibleChoicesChanged()
                }, Object.defineProperty(t.prototype, "newItem", {
                    get: function() {
                        return this.newItemValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.addToVisibleChoices = function(e, t) {
                    t && (this.newItemValue || (this.newItemValue = new ze("newitem")), this.canShowOptionItem(this.newItemValue, t, !1) && e.push(this.newItemValue)), this.supportNone() && this.canShowOptionItem(this.noneItem, t, this.hasNone) && e.push(this.noneItem), this.supportOther() && this.canShowOptionItem(this.otherItem, t, this.hasOther) && e.push(this.otherItem)
                }, t.prototype.canShowOptionItem = function(e, t, n) {
                    var o = t && (!this.canShowOptionItemCallback || this.canShowOptionItemCallback(e)) || n;
                    return this.canSurveyChangeItemVisibility() ? this.changeItemVisisbility()(e, o) : o
                }, t.prototype.isItemInList = function(e) {
                    return e === this.otherItem ? this.hasOther : e === this.noneItem ? this.hasNone : e !== this.newItemValue
                }, Object.defineProperty(t.prototype, "isAddDefaultItems", {
                    get: function() {
                        return !this.customWidget && s.supportCreatorV2 && s.showDefaultItemsInCreatorV2 && this.isDesignMode && !this.isContentElement
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getPlainData = function(t) {
                    var n = this;
                    void 0 === t && (t = {
                        includeEmpty: !0,
                        includeQuestionTypes: !1
                    });
                    var o = e.prototype.getPlainData.call(this, t);
                    if (o) {
                        var r = Array.isArray(this.value) ? this.value : [this.value];
                        o.isNode = !0, o.data = (o.data || []).concat(r.map((function(e, o) {
                            var r = ze.getItemByValue(n.visibleChoices, e),
                                i = {
                                    name: o,
                                    title: "Choice",
                                    value: e,
                                    displayValue: n.getChoicesDisplayValue(n.visibleChoices, e),
                                    getString: function(e) {
                                        return "object" == typeof e ? JSON.stringify(e) : e
                                    },
                                    isNode: !1
                                };
                            return r && (t.calculations || []).forEach((function(e) {
                                i[e.propertyName] = r[e.propertyName]
                            })), n.isOtherSelected && n.otherItemValue === r && (i.isOther = !0, i.displayValue = n.otherValue), i
                        })))
                    }
                    return o
                }, t.prototype.getDisplayValueCore = function(e, t) {
                    return this.getChoicesDisplayValue(this.visibleChoices, t)
                }, t.prototype.getDisplayValueEmpty = function() {
                    return ze.getTextOrHtmlByValue(this.visibleChoices, void 0)
                }, t.prototype.getChoicesDisplayValue = function(e, t) {
                    if (t == this.otherItemValue.value) return this.otherValue ? this.otherValue : this.locOtherText.textOrHtml;
                    var n = ze.getTextOrHtmlByValue(e, t);
                    return "" == n && t ? t : n
                }, t.prototype.getDisplayArrayValue = function(e, t, n) {
                    for (var o = this.visibleChoices, r = [], i = 0; i < t.length; i++) {
                        var s = n ? n(i) : t[i],
                            a = this.getChoicesDisplayValue(o, s);
                        a && r.push(a)
                    }
                    return r.join(", ")
                }, t.prototype.getFilteredChoices = function() {
                    return this.filteredChoicesValue ? this.filteredChoicesValue : this.activeChoices
                }, Object.defineProperty(t.prototype, "activeChoices", {
                    get: function() {
                        var e = this.getQuestionWithChoices();
                        return e ? (this.addIntoDependedQuestion(e), this.getChoicesFromQuestion(e)) : this.choicesFromUrl ? this.choicesFromUrl : this.getChoices()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionWithChoices = function() {
                    if (!this.choicesFromQuestion || !this.survey) return null;
                    var e = this.survey.getQuestionByName(this.choicesFromQuestion);
                    return e && e.visibleChoices && e !== this ? e : null
                }, t.prototype.getChoicesFromQuestion = function(e) {
                    for (var t = [], n = "selected" == this.choicesFromQuestionMode || "unselected" != this.choicesFromQuestionMode && void 0, o = e.visibleChoices, r = 0; r < o.length; r++)
                        if (!this.isBuiltInChoice(o[r], e))
                            if (void 0 !== n) {
                                var i = e.isItemSelected(o[r]);
                                (i && n || !i && !n) && t.push(o[r])
                            } else t.push(o[r]);
                    return t
                }, Object.defineProperty(t.prototype, "hasActiveChoices", {
                    get: function() {
                        var e = this.visibleChoices;
                        e && 0 != e.length || (this.onVisibleChoicesChanged(), e = this.visibleChoices);
                        for (var t = 0; t < e.length; t++)
                            if (!this.isBuiltInChoice(e[t], this)) return !0;
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isHeadChoice = function(e, t) {
                    return !1
                }, t.prototype.isFootChoice = function(e, t) {
                    return e === t.noneItem || e === t.otherItem || e === t.newItemValue
                }, t.prototype.isBuiltInChoice = function(e, t) {
                    return this.isHeadChoice(e, t) || this.isFootChoice(e, t)
                }, t.prototype.getChoices = function() {
                    return this.choices
                }, t.prototype.supportComment = function() {
                    return !0
                }, t.prototype.supportOther = function() {
                    return this.isSupportProperty("showOtherItem")
                }, t.prototype.supportNone = function() {
                    return this.isSupportProperty("showNoneItem")
                }, t.prototype.isSupportProperty = function(e) {
                    return !this.isDesignMode || I.findProperty(this.getType(), e).visible
                }, t.prototype.onCheckForErrors = function(t, n) {
                    var o = this;
                    if (e.prototype.onCheckForErrors.call(this, t, n), this.hasOther && this.isOtherSelected && !this.otherValue) {
                        var r = new Te(this.otherErrorText, this);
                        r.onUpdateErrorTextCallback = function(e) {
                            e.text = o.otherErrorText
                        }, t.push(r)
                    }
                }, t.prototype.setSurveyImpl = function(t, n) {
                    e.prototype.setSurveyImpl.call(this, t, n), this.runChoicesByUrl(), this.isAddDefaultItems && this.updateVisibleChoices()
                }, t.prototype.setSurveyCore = function(t) {
                    e.prototype.setSurveyCore.call(this, t), t && this.choicesFromQuestion && this.onVisibleChoicesChanged()
                }, t.prototype.getStoreOthersAsComment = function() {
                    return !this.isSettingDefaultValue && (!this.showCommentArea && (!0 === this.storeOthersAsComment || "default" == this.storeOthersAsComment && (null == this.survey || this.survey.storeOthersAsComment) || !this.choicesByUrl.isEmpty && !this.choicesFromUrl))
                }, t.prototype.onSurveyLoad = function() {
                    this.runChoicesByUrl(), this.onVisibleChoicesChanged(), e.prototype.onSurveyLoad.call(this)
                }, t.prototype.onAnyValueChanged = function(t) {
                    e.prototype.onAnyValueChanged.call(this, t), t != this.getValueName() && this.runChoicesByUrl(), t && t == this.choicesFromQuestion && this.onVisibleChoicesChanged()
                }, t.prototype.updateValueFromSurvey = function(t) {
                    var n = "";
                    this.hasOther && !this.isRunningChoices && !this.choicesByUrl.isRunning && this.getStoreOthersAsComment() && (this.hasUnknownValue(t) && !this.getHasOther(t) ? (n = this.getCommentFromValue(t), t = this.setOtherValueIntoValue(t)) : n = this.data.getComment(this.getValueName())), e.prototype.updateValueFromSurvey.call(this, t), n && this.setNewComment(n)
                }, t.prototype.getCommentFromValue = function(e) {
                    return e
                }, t.prototype.setOtherValueIntoValue = function(e) {
                    return this.otherItem.value
                }, t.prototype.onOtherValueInput = function(e) {
                    this.isInputTextUpdate ? e.target && (this.otherValue = e.target.value) : this.updateCommentElements()
                }, t.prototype.onOtherValueChange = function(e) {
                    this.otherValue = e.target.value, this.otherValue !== e.target.value && (e.target.value = this.otherValue)
                }, t.prototype.runChoicesByUrl = function() {
                    if (this.choicesByUrl && !this.isLoadingFromJson && !this.isRunningChoices) {
                        var e = this.surveyImpl ? this.surveyImpl.getTextProcessor() : this.textProcessor;
                        e || (e = this.survey), e && (this.isReadyValue = this.isChoicesLoaded || this.choicesByUrl.isEmpty, this.isRunningChoices = !0, this.choicesByUrl.run(e), this.isRunningChoices = !1)
                    }
                }, t.prototype.onBeforeSendRequest = function() {
                    !0 !== s.disableOnGettingChoicesFromWeb || this.isReadOnly || (this.enableOnLoadingChoices = !0, this.readOnly = !0)
                }, t.prototype.onLoadChoicesFromUrl = function(e) {
                    if (this.enableOnLoadingChoices && (this.readOnly = !1), !this.isReadOnly) {
                        var t = [];
                        this.choicesByUrl && this.choicesByUrl.error && t.push(this.choicesByUrl.error), this.errors = t
                    }
                    var n = null,
                        o = !0;
                    this.isFirstLoadChoicesFromUrl && !this.cachedValueForUrlRequests && this.defaultValue && (this.cachedValueForUrlRequests = this.defaultValue, o = !1), this.isValueEmpty(this.cachedValueForUrlRequests) && (this.cachedValueForUrlRequests = this.value), this.isFirstLoadChoicesFromUrl = !1;
                    var r = this.createCachedValueForUrlRequests(this.cachedValueForUrlRequests, o);
                    if (e && (e.length > 0 || this.choicesByUrl.allowEmptyResponse) && (n = new Array, ze.setData(n, e)), n)
                        for (var i = 0; i < n.length; i++) n[i].locOwner = this;
                    if (this.choicesFromUrl = n, this.filterItems(), this.onVisibleChoicesChanged(), n) {
                        var s = this.updateCachedValueForUrlRequests(r, n);
                        if (s && !this.isReadOnly) {
                            var a = !this.isTwoValueEquals(this.value, s.value);
                            try {
                                this.isValueEmpty(s.value) || (this.allowNotifyValueChanged = !1, this.setQuestionValue(void 0, !0, !1)), this.allowNotifyValueChanged = a, a ? this.value = s.value : this.setQuestionValue(s.value)
                            } finally {
                                this.allowNotifyValueChanged = !0
                            }
                        }
                    }
                    this.choicesLoaded()
                }, t.prototype.createCachedValueForUrlRequests = function(e, t) {
                    if (this.isValueEmpty(e)) return null;
                    if (Array.isArray(e)) {
                        for (var n = [], o = 0; o < e.length; o++) n.push(this.createCachedValueForUrlRequests(e[o], !0));
                        return n
                    }
                    return {
                        value: e,
                        isExists: !t || !this.hasUnknownValue(e)
                    }
                }, t.prototype.updateCachedValueForUrlRequests = function(e, t) {
                    if (this.isValueEmpty(e)) return null;
                    if (Array.isArray(e)) {
                        for (var n = [], o = 0; o < e.length; o++) {
                            var r = this.updateCachedValueForUrlRequests(e[o], t);
                            if (r && !this.isValueEmpty(r.value)) {
                                var i = r.value;
                                (s = ze.getItemByValue(t, r.value)) && (i = s.value), n.push(i)
                            }
                        }
                        return {
                            value: n
                        }
                    }
                    var s, a = e.isExists && this.hasUnknownValue(e.value) ? null : e.value;
                    return (s = ze.getItemByValue(t, a)) && (a = s.value), {
                        value: a
                    }
                }, t.prototype.updateChoicesDependedQuestions = function() {
                    if (!this.isUpdatingChoicesDependedQuestions) {
                        this.isUpdatingChoicesDependedQuestions = !0;
                        for (var e = 0; e < this.dependedQuestions.length; e++) this.dependedQuestions[e].onVisibleChoicesChanged(), this.dependedQuestions[e].updateChoicesDependedQuestions();
                        this.isUpdatingChoicesDependedQuestions = !1
                    }
                }, t.prototype.onSurveyValueChanged = function(t) {
                    e.prototype.onSurveyValueChanged.call(this, t), this.isLoadingFromJson || this.updateChoicesDependedQuestions()
                }, t.prototype.onVisibleChoicesChanged = function() {
                    this.isLoadingFromJson || (this.updateVisibleChoices(), this.updateVisibilityBasedOnChoices(), this.visibleChoicesChangedCallback && this.visibleChoicesChangedCallback(), this.updateChoicesDependedQuestions())
                }, t.prototype.updateVisibilityBasedOnChoices = function() {
                    if (this.hideIfChoicesEmpty) {
                        var e = this.getFilteredChoices();
                        this.visible = !e || e.length > 0
                    }
                }, t.prototype.sortVisibleChoices = function(e) {
                    var t = this.choicesOrder.toLowerCase();
                    return "asc" == t ? this.sortArray(e, 1) : "desc" == t ? this.sortArray(e, -1) : "random" == t ? this.randomizeArray(e) : e
                }, t.prototype.sortArray = function(e, t) {
                    return e.sort((function(e, n) {
                        return e.calculatedText < n.calculatedText ? -1 * t : e.calculatedText > n.calculatedText ? 1 * t : 0
                    }))
                }, t.prototype.randomizeArray = function(e) {
                    return a.randomizeArray(e)
                }, t.prototype.clearIncorrectValues = function() {
                    this.hasValueToClearIncorrectValues() && (this.survey && this.survey.questionCountByValueName(this.getValueName()) > 1 || (!this.choicesByUrl || this.choicesByUrl.isEmpty || this.choicesFromUrl && 0 != this.choicesFromUrl.length) && (this.clearIncorrectValuesCallback ? this.clearIncorrectValuesCallback() : this.clearIncorrectValuesCore()))
                }, t.prototype.hasValueToClearIncorrectValues = function() {
                    return (!this.survey || !this.survey.keepIncorrectValues) && (!this.keepIncorrectValues && !this.isEmpty())
                }, t.prototype.clearValueIfInvisibleCore = function() {
                    e.prototype.clearValueIfInvisibleCore.call(this), this.clearIncorrectValues()
                }, t.prototype.isItemSelected = function(e) {
                    return e === this.otherItem ? this.isOtherSelected : this.isItemSelectedCore(e)
                }, t.prototype.isItemSelectedCore = function(e) {
                    return e.value === this.value
                }, t.prototype.clearDisabledValues = function() {
                    this.survey && this.survey.clearValueOnDisableItems && this.clearDisabledValuesCore()
                }, t.prototype.clearIncorrectValuesCore = function() {
                    var e = this.value;
                    this.canClearValueAnUnknow(e) && this.clearValue()
                }, t.prototype.canClearValueAnUnknow = function(e) {
                    return !(!this.getStoreOthersAsComment() && this.isOtherSelected) && this.hasUnknownValue(e, !0, !0, !0)
                }, t.prototype.clearDisabledValuesCore = function() {
                    this.isValueDisabled(this.value) && this.clearValue()
                }, t.prototype.clearUnusedValues = function() {
                    e.prototype.clearUnusedValues.call(this), this.isOtherSelected || (this.otherValue = ""), this.showCommentArea || this.getStoreOthersAsComment() || this.isOtherSelected || (this.comment = "")
                }, t.prototype.getColumnClass = function() {
                    return (new ct).append(this.cssClasses.column).append("sv-q-column-" + this.colCount, this.hasColumns).toString()
                }, t.prototype.getItemIndex = function(e) {
                    return this.visibleChoices.indexOf(e)
                }, t.prototype.getItemClass = function(e) {
                    var t = {
                            item: e
                        },
                        n = this.getItemClassCore(e, t);
                    return t.css = n, this.survey && this.survey.updateChoiceItemCss(this, t), t.css
                }, t.prototype.getCurrentColCount = function() {
                    return this.colCount
                }, t.prototype.getItemClassCore = function(e, t) {
                    var n = (new ct).append(this.cssClasses.item).append(this.cssClasses.itemInline, !this.hasColumns && 0 === this.colCount).append("sv-q-col-" + this.getCurrentColCount(), !this.hasColumns && 0 !== this.colCount).append(this.cssClasses.itemOnError, this.errors.length > 0),
                        o = this.isReadOnly || !e.isEnabled,
                        r = this.isItemSelected(e) || this.isOtherSelected && this.otherItem.value === e.value,
                        i = !(o || r || this.survey && this.survey.isDesignMode),
                        s = e === this.noneItem;
                    return t.isDisabled = o, t.isChecked = r, t.isNone = s, n.append(this.cssClasses.itemDisabled, o).append(this.cssClasses.itemChecked, r).append(this.cssClasses.itemHover, i).append(this.cssClasses.itemNone, s).toString()
                }, t.prototype.getLabelClass = function(e) {
                    return (new ct).append(this.cssClasses.label).append(this.cssClasses.labelChecked, this.isItemSelected(e)).toString()
                }, t.prototype.getControlLabelClass = function(e) {
                    return (new ct).append(this.cssClasses.controlLabel).append(this.cssClasses.controlLabelChecked, this.isItemSelected(e)).toString() || void 0
                }, Object.defineProperty(t.prototype, "headItems", {
                    get: function() {
                        var e = this;
                        return this.separateSpecialChoices || this.isDesignMode ? this.visibleChoices.filter((function(t) {
                            return e.isHeadChoice(t, e)
                        })) : []
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "footItems", {
                    get: function() {
                        var e = this;
                        return this.separateSpecialChoices || this.isDesignMode ? this.visibleChoices.filter((function(t) {
                            return e.isFootChoice(t, e)
                        })) : []
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "dataChoices", {
                    get: function() {
                        var e = this;
                        return this.visibleChoices.filter((function(t) {
                            return !e.isBuiltInChoice(t, e)
                        }))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "bodyItems", {
                    get: function() {
                        return this.hasHeadItems || this.hasFootItems ? this.dataChoices : this.visibleChoices
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasHeadItems", {
                    get: function() {
                        return this.headItems.length > 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasFootItems", {
                    get: function() {
                        return this.footItems.length > 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "columns", {
                    get: function() {
                        var e = [],
                            t = this.getCurrentColCount();
                        if (this.hasColumns && this.visibleChoices.length > 0) {
                            var n = this.separateSpecialChoices || this.isDesignMode ? this.dataChoices : this.visibleChoices;
                            if ("column" == s.showItemsInOrder)
                                for (var o = 0, r = n.length % t, i = 0; i < t; i++) {
                                    for (var a = [], l = o; l < o + Math.floor(n.length / t); l++) a.push(n[l]);
                                    r > 0 && (r--, a.push(n[l]), l++), o = l, e.push(a)
                                } else
                                    for (i = 0; i < t; i++) {
                                        for (a = [], l = i; l < n.length; l += t) a.push(n[l]);
                                        e.push(a)
                                    }
                        }
                        return e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasColumns", {
                    get: function() {
                        return !this.isMobile && this.getCurrentColCount() > 1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rowLayout", {
                    get: function() {
                        return 0 == this.getCurrentColCount() && !(this.hasFootItems || this.hasHeadItems)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "blockedRow", {
                    get: function() {
                        return 0 == this.getCurrentColCount() && (this.hasFootItems || this.hasHeadItems)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.choicesLoaded = function() {
                    this.isChoicesLoaded = !0;
                    var e = this.isReadyValue;
                    this.isReadyValue = !0, this.onReadyChanged && this.onReadyChanged.fire(this, {
                        question: this,
                        isReady: !0,
                        oldIsReady: e
                    }), this.survey && this.survey.loadedChoicesFromServer(this), this.loadedChoicesFromServerCallback && this.loadedChoicesFromServerCallback()
                }, t.prototype.getItemValueWrapperComponentName = function(e) {
                    var t = this.survey;
                    return t ? t.getItemValueWrapperComponentName(e, this) : mo.TemplateRendererComponentName
                }, t.prototype.getItemValueWrapperComponentData = function(e) {
                    var t = this.survey;
                    return t ? t.getItemValueWrapperComponentData(e, this) : e
                }, t.prototype.ariaItemChecked = function(e) {
                    return this.renderedValue === e.value ? "true" : "false"
                }, t.prototype.isOtherItem = function(e) {
                    return this.hasOther && e.value == this.otherItem.value
                }, Object.defineProperty(t.prototype, "itemSvgIcon", {
                    get: function() {
                        return this.cssClasses.itemSvgIconId
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getSelectBaseRootCss = function() {
                    return (new ct).append(this.cssClasses.root).append(this.cssClasses.rootRow, this.rowLayout).toString()
                }, t.prototype.getAriaItemLabel = function(e) {
                    return e.locText.renderedHtml
                }, t.prototype.getItemId = function(e) {
                    return this.inputId + "_" + this.getItemIndex(e)
                }, Object.defineProperty(t.prototype, "questionName", {
                    get: function() {
                        return this.name + "_" + this.id
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getItemEnabled = function(e) {
                    return !this.isInputReadOnly && e.isEnabled
                }, t.prototype.afterRender = function(t) {
                    e.prototype.afterRender.call(this, t), this.rootElement = t
                }, t.prototype.beforeDestroyQuestionElement = function(t) {
                    e.prototype.beforeDestroyQuestionElement.call(this, t), this.rootElement = void 0
                }, t.prototype.focusOtherComment = function() {
                    var e = this;
                    this.rootElement && setTimeout((function() {
                        var t = e.rootElement.querySelector("textarea");
                        t && t.focus()
                    }), 10)
                }, t.prototype.onValueChanged = function() {
                    e.prototype.onValueChanged.call(this), this.isDesignMode || this.prevIsOtherSelected || !this.isOtherSelected || this.focusOtherComment(), this.prevIsOtherSelected = this.isOtherSelected
                }, t.prototype.getDefaultItemComponent = function() {
                    return ""
                }, Object.defineProperty(t.prototype, "itemComponent", {
                    get: function() {
                        return this.getPropertyValue("itemComponent", this.getDefaultItemComponent())
                    },
                    set: function(e) {
                        this.setPropertyValue("itemComponent", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateCssClasses = function(t, n) {
                    if (e.prototype.updateCssClasses.call(this, t, n), this.dropdownListModel) {
                        var o = {};
                        st(n.list, o), st(t.list, o), t.list = o
                    }
                }, t.prototype.calcCssClasses = function(t) {
                    var n = e.prototype.calcCssClasses.call(this, t);
                    return this.dropdownListModel && this.dropdownListModel.updateListCssClasses(n.list), n
                }, yo([y()], t.prototype, "selectedItemValues", void 0), yo([y({
                    defaultValue: !1
                })], t.prototype, "separateSpecialChoices", void 0), yo([y({
                    localizable: !0
                })], t.prototype, "otherPlaceholder", void 0), t
            }(Xt),
            bo = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return go(t, e), Object.defineProperty(t.prototype, "colCount", {
                    get: function() {
                        return this.getPropertyValue("colCount", this.isFlowLayout ? 0 : 1)
                    },
                    set: function(e) {
                        e < 0 || e > 5 || this.isFlowLayout || (this.setPropertyValue("colCount", e), this.fireCallback(this.colCountChangedCallback))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onParentChanged = function() {
                    e.prototype.onParentChanged.call(this), this.isFlowLayout && this.setPropertyValue("colCount", null)
                }, t.prototype.onParentQuestionChanged = function() {
                    this.onVisibleChoicesChanged()
                }, t.prototype.getSearchableItemValueKeys = function(e) {
                    e.push("choices")
                }, t
            }(vo);
        I.addClass("selectbase", [{
            name: "showCommentArea:switch",
            layout: "row",
            visible: !0,
            category: "general"
        }, {
            name: "commentText",
            dependsOn: "showCommentArea",
            visibleIf: function(e) {
                return e.hasComment
            },
            serializationProperty: "locCommentText",
            layout: "row"
        }, "choicesFromQuestion:question_selectbase", {
            name: "choices:itemvalue[]",
            uniqueProperty: "value",
            baseValue: function() {
                return u.getString("choices_Item")
            },
            dependsOn: "choicesFromQuestion",
            visibleIf: function(e) {
                return !e.choicesFromQuestion
            }
        }, {
            name: "choicesFromQuestionMode",
            default: "all",
            choices: ["all", "selected", "unselected"],
            dependsOn: "choicesFromQuestion",
            visibleIf: function(e) {
                return !!e.choicesFromQuestion
            }
        }, {
            name: "choicesOrder",
            default: "none",
            choices: ["none", "asc", "desc", "random"],
            dependsOn: "choicesFromQuestion",
            visibleIf: function(e) {
                return !e.choicesFromQuestion
            }
        }, {
            name: "choicesByUrl:restfull",
            className: "ChoicesRestful",
            onGetValue: function(e) {
                return e.choicesByUrl.getData()
            },
            onSetValue: function(e, t) {
                e.choicesByUrl.setData(t)
            }
        }, "hideIfChoicesEmpty:boolean", {
            name: "choicesVisibleIf:condition",
            dependsOn: "choicesFromQuestion",
            visibleIf: function(e) {
                return !e.choicesFromQuestion
            }
        }, {
            name: "choicesEnableIf:condition",
            dependsOn: "choicesFromQuestion",
            visibleIf: function(e) {
                return !e.choicesFromQuestion
            }
        }, {
            name: "separateSpecialChoices:boolean",
            visible: !1
        }, {
            name: "showOtherItem:boolean",
            alternativeName: "hasOther"
        }, {
            name: "showNoneItem:boolean",
            alternativeName: "hasNone"
        }, {
            name: "otherPlaceholder",
            alternativeName: "otherPlaceHolder",
            serializationProperty: "locOtherPlaceholder",
            dependsOn: "showOtherItem",
            visibleIf: function(e) {
                return e.hasOther
            }
        }, {
            name: "commentPlaceholder",
            alternativeName: "commentPlaceHolder",
            serializationProperty: "locCommentPlaceholder",
            dependsOn: "showCommentArea",
            visibleIf: function(e) {
                return e.hasComment
            }
        }, {
            name: "noneText",
            serializationProperty: "locNoneText",
            dependsOn: "showNoneItem",
            visibleIf: function(e) {
                return e.hasNone
            }
        }, {
            name: "otherText",
            serializationProperty: "locOtherText",
            dependsOn: "showOtherItem",
            visibleIf: function(e) {
                return e.hasOther
            }
        }, {
            name: "otherErrorText",
            serializationProperty: "locOtherErrorText",
            dependsOn: "showOtherItem",
            visibleIf: function(e) {
                return e.hasOther
            }
        }, {
            name: "storeOthersAsComment",
            default: "default",
            choices: ["default", !0, !1],
            visible: !1
        }], null, "question"), I.addClass("checkboxbase", [{
            name: "colCount:number",
            default: 1,
            choices: [0, 1, 2, 3, 4, 5],
            layout: "row"
        }], null, "selectbase");
        var xo = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Co = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            wo = function(e) {
                function t(t, n) {
                    var o = e.call(this) || this;
                    return o.question = t, o.onSelectionChanged = n, o.minPageSize = 25, o.loadingItemHeight = 40, o.focusFirstInputSelector = ".sv-list__item--selected", o.itemsSettings = {
                        skip: 0,
                        take: 0,
                        totalCount: 0,
                        items: []
                    }, o.isRunningLoadQuestionChoices = !1, o.popupCssClasses = "sv-single-select-list", o.listModel = o.createListModel(), o.updateAfterListModelCreated(o.listModel), o.setSearchEnabled(o.question.searchEnabled), o.createPopup(), o.resetItemsSettings(), o
                }
                return xo(t, e), t.prototype.resetItemsSettings = function() {
                    this.itemsSettings.skip = 0, this.itemsSettings.take = Math.max(this.minPageSize, this.question.choicesLazyLoadPageSize), this.itemsSettings.totalCount = 0, this.itemsSettings.items = []
                }, t.prototype.updateListItems = function() {
                    this.listModel.setItems(this.getAvailableItems())
                }, t.prototype.setItems = function(e, t) {
                    this.itemsSettings.items = [].concat(this.itemsSettings.items, e), this.question.choices = this.itemsSettings.items, this.itemsSettings.totalCount = t, this.listModel.isAllDataLoaded = this.question.choicesLazyLoadEnabled && this.question.choices.length == this.itemsSettings.totalCount, this.updateListItems()
                }, t.prototype.updateQuestionChoices = function(e) {
                    var t = this;
                    if (!this.isRunningLoadQuestionChoices) {
                        var n = this.itemsSettings.skip + 1 < this.itemsSettings.totalCount;
                        this.itemsSettings.skip && !n || (this.isRunningLoadQuestionChoices = !0, this.question.survey.loadQuestionChoices({
                            question: this.question,
                            filter: this.filterString,
                            skip: this.itemsSettings.skip,
                            take: this.itemsSettings.take,
                            setItems: function(n, o) {
                                t.isRunningLoadQuestionChoices = !1, t.setItems(n || [], o || 0), t.popupRecalculatePosition(t.itemsSettings.skip === t.itemsSettings.take), e && e()
                            }
                        }), this.itemsSettings.skip += this.itemsSettings.take)
                    }
                }, t.prototype.updatePopupFocusFirstInputSelector = function() {
                    this._popupModel.focusFirstInputSelector = !this.listModel.showFilter && this.question.value ? this.focusFirstInputSelector : ""
                }, t.prototype.createPopup = function() {
                    var e = this;
                    this._popupModel = new wt("sv-list", {
                        model: this.listModel
                    }, "bottom", "center", !1), this._popupModel.displayMode = jn ? "overlay" : "popup", this._popupModel.positionMode = "fixed", this._popupModel.isFocusedContent = jn, this._popupModel.setWidthByTarget = !jn, this.updatePopupFocusFirstInputSelector(), this.listModel.registerPropertyChangedHandlers(["showFilter"], (function() {
                        e.updatePopupFocusFirstInputSelector()
                    })), this._popupModel.cssClass = this.popupCssClasses, this._popupModel.onVisibilityChanged.add((function(t, n) {
                        n.isVisible && e.question.choicesLazyLoadEnabled && (e.listModel.actions = [], e.updateQuestionChoices()), n.isVisible && e.question.onOpenedCallBack && (e.updatePopupFocusFirstInputSelector(), e.question.onOpenedCallBack()), n.isVisible || (e.onHidePopup(), e.question.choicesLazyLoadEnabled && e.resetItemsSettings())
                    }))
                }, t.prototype.setFilterStringToListModel = function(e) {
                    this.listModel.filterString = e, this.listModel.focusedItem && this.listModel.isItemVisible(this.listModel.focusedItem) || this.listModel.focusFirstVisibleItem()
                }, t.prototype.popupRecalculatePosition = function(e) {
                    var t = this;
                    setTimeout((function() {
                        t.popupModel.recalculatePosition(e)
                    }), 1)
                }, t.prototype.onHidePopup = function() {
                    this.resetFilterString(), this.listModel.refresh()
                }, t.prototype.getAvailableItems = function() {
                    var e = this;
                    return this.question.visibleChoices.map((function(t) {
                        return new Et({
                            id: new de((function() {
                                return t.value
                            })),
                            data: t,
                            locTitle: t.locText,
                            component: new de((function() {
                                return e.question.itemComponent
                            })),
                            visible: new de((function() {
                                return t.isVisible
                            })),
                            enabled: new de((function() {
                                return t.isEnabled
                            }))
                        })
                    }))
                }, t.prototype.createListModel = function() {
                    var e = this,
                        t = this.getAvailableItems(),
                        n = this.onSelectionChanged;
                    return n || (n = function(t) {
                        e.question.value = t.id, e._popupModel.toggleVisibility()
                    }), new bt(t, n, !0, this.question.selectedItem)
                }, t.prototype.updateAfterListModelCreated = function(e) {
                    var t = this;
                    e.locOwner = this.question, e.onPropertyChanged.add((function(e, n) {
                        "hasVerticalScroller" == n.name && (t.hasScroll = n.newValue)
                    })), e.isAllDataLoaded = !this.question.choicesLazyLoadEnabled
                }, t.prototype.updateListCssClasses = function(e) {
                    this.listModel.cssClasses = e
                }, t.prototype.resetFilterString = function() {
                    this.filterString && (this.filterString = void 0)
                }, t.prototype.onSetFilterString = function() {
                    var e = this;
                    this.filterString && !this.popupModel.isVisible && (this.popupModel.isVisible = !0), this.setInputHasValue(!!this.filterString);
                    var t = function() {
                        e.setFilterStringToListModel(e.filterString), e.popupRecalculatePosition(!0)
                    };
                    this.question.choicesLazyLoadEnabled ? (this.resetItemsSettings(), this.updateQuestionChoices(t)) : t()
                }, t.prototype.setInputHasValue = function(e) {
                    this.question.inputHasValue = e
                }, Object.defineProperty(t.prototype, "popupModel", {
                    get: function() {
                        return this._popupModel
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "inputReadOnly", {
                    get: function() {
                        return this.question.isInputReadOnly || this.searchEnabled
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "filterStringEnabled", {
                    get: function() {
                        return !this.question.isInputReadOnly && this.searchEnabled
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setSearchEnabled = function(e) {
                    this.listModel.searchEnabled = jn, this.searchEnabled = e
                }, t.prototype.updateItems = function() {
                    this.updateListItems()
                }, t.prototype.onClick = function(e) {
                    if (this._popupModel.toggleVisibility(), this.listModel.focusNextVisibleItem(), this.searchEnabled && e && e.target) {
                        var t = e.target.querySelector("input");
                        t && t.focus()
                    }
                }, t.prototype.onClear = function(e) {
                    this.question.clearValue(), this.resetFilterString(), this.listModel.selectedItem = void 0, e.preventDefault(), e.stopPropagation()
                }, t.prototype.getSelectedAction = function() {
                    var e = this;
                    return this.question.selectedItem ? this.listModel.actions.filter((function(t) {
                        return e.question.selectedItem.value === t.id
                    }))[0] : null
                }, t.prototype.keyHandler = function(e) {
                    var t = e.which || e.keyCode;
                    this.popupModel.isVisible && 38 === e.keyCode ? (this.listModel.focusPrevVisibleItem(), this.scrollToFocusedItem(), e.preventDefault(), e.stopPropagation()) : 40 === e.keyCode ? (this.popupModel.isVisible || this.popupModel.toggleVisibility(), this.listModel.focusNextVisibleItem(), this.scrollToFocusedItem(), e.preventDefault(), e.stopPropagation()) : !this.popupModel.isVisible || 13 !== e.keyCode && 32 !== e.keyCode ? 46 === t ? this.onClear(e) : 27 === e.keyCode ? this.popupModel.isVisible = !1 : (38 !== e.keyCode && 40 !== e.keyCode && 32 !== e.keyCode || (e.preventDefault(), e.stopPropagation()), Xe(e, {
                        processEsc: !1,
                        disableTabStop: this.question.isInputReadOnly
                    })) : (this.listModel.selectFocusedItem(), e.preventDefault(), e.stopPropagation())
                }, t.prototype.onScroll = function(e) {
                    var t = e.target;
                    t.scrollHeight - (t.scrollTop + t.offsetHeight) <= this.loadingItemHeight && this.updateQuestionChoices()
                }, t.prototype.onBlur = function(e) {
                    this.popupModel.isVisible && jn ? this._popupModel.isVisible = !0 : (this.popupModel.isVisible && this.filterString && this.listModel.selectFocusedItem(), this.resetFilterString(), this._popupModel.isVisible = !1, this.setInputHasValue(!1), Ze(e))
                }, t.prototype.scrollToFocusedItem = function() {
                    this.listModel.scrollToFocusedItem()
                }, Co([y({
                    defaultValue: !0
                })], t.prototype, "searchEnabled", void 0), Co([y({
                    defaultValue: "",
                    onSet: function(e, t) {
                        t.onSetFilterString()
                    }
                })], t.prototype, "filterString", void 0), Co([y({
                    defaultValue: !1,
                    onSet: function(e, t) {
                        e ? t.listModel.addScrollEventListener((function(e) {
                            t.onScroll(e)
                        })) : t.listModel.removeScrollEventListener()
                    }
                })], t.prototype, "hasScroll", void 0), t
            }(he),
            Po = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Vo = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            To = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.lastSelectedItemValue = null, n.minMaxChoices = [], n.onOpened = n.addEvent(), n.createLocalizableString("placeholder", n, !1, !0), n.createLocalizableString("clearCaption", n, !1, !0), n.registerPropertyChangedHandlers(["choicesMin", "choicesMax", "choicesStep"], (function() {
                        n.onVisibleChoicesChanged()
                    })), n.registerPropertyChangedHandlers(["value", "renderAs", "showOtherItem", "otherText", "placeholder", "choices"], (function() {
                        n.updateReadOnlyText()
                    })), n.updateReadOnlyText(), n
                }
                return Po(t, e), t.prototype.updateReadOnlyText = function() {
                    var e = this.selectedItem ? "" : this.placeholder;
                    "select" == this.renderAs && (this.isOtherSelected ? e = this.otherText : this.isNoneSelected ? e = this.noneText : this.selectedItem && (e = this.selectedItemText)), this.readOnlyText = e
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.updateReadOnlyText()
                }, Object.defineProperty(t.prototype, "showOptionsCaption", {
                    get: function() {
                        return this.allowClear
                    },
                    set: function(e) {
                        this.allowClear = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "optionsCaption", {
                    get: function() {
                        return this.placeholder
                    },
                    set: function(e) {
                        this.placeholder = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "placeholder", {
                    get: function() {
                        return this.getLocalizableStringText("placeholder")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("placeholder", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPlaceholder", {
                    get: function() {
                        return this.getLocalizableString("placeholder")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "clearCaption", {
                    get: function() {
                        return this.getLocalizableStringText("clearCaption")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("clearCaption", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locClearCaption", {
                    get: function() {
                        return this.getLocalizableString("clearCaption")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "dropdown"
                }, Object.defineProperty(t.prototype, "ariaRole", {
                    get: function() {
                        return "combobox"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "selectedItem", {
                    get: function() {
                        var e = this.selectedItemValues;
                        if (this.isEmpty()) return null;
                        var t = ze.getItemByValue(this.visibleChoices, this.value);
                        return t ? this.lastSelectedItemValue = t : e || this.updateSelectedItemValues(), this.lastSelectedItemValue || e || new ze(this.value)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.supportGoNextPageAutomatic = function() {
                    return !0
                }, t.prototype.getChoices = function() {
                    var t = e.prototype.getChoices.call(this);
                    if (this.choicesMax <= this.choicesMin) return t;
                    for (var n = [], o = 0; o < t.length; o++) n.push(t[o]);
                    if (0 === this.minMaxChoices.length || this.minMaxChoices.length !== (this.choicesMax - this.choicesMin) / this.choicesStep + 1) {
                        this.minMaxChoices = [];
                        for (o = this.choicesMin; o <= this.choicesMax; o += this.choicesStep) this.minMaxChoices.push(new ze(o))
                    }
                    return n = n.concat(this.minMaxChoices)
                }, Object.defineProperty(t.prototype, "choicesMin", {
                    get: function() {
                        return this.getPropertyValue("choicesMin")
                    },
                    set: function(e) {
                        this.setPropertyValue("choicesMin", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "choicesMax", {
                    get: function() {
                        return this.getPropertyValue("choicesMax")
                    },
                    set: function(e) {
                        this.setPropertyValue("choicesMax", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "choicesStep", {
                    get: function() {
                        return this.getPropertyValue("choicesStep")
                    },
                    set: function(e) {
                        e < 1 && (e = 1), this.setPropertyValue("choicesStep", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "autocomplete", {
                    get: function() {
                        return this.getPropertyValue("autocomplete", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("autocomplete", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getControlClass = function() {
                    return (new ct).append(this.cssClasses.control).append(this.cssClasses.controlEmpty, this.isEmpty()).append(this.cssClasses.onError, this.errors.length > 0).append(this.cssClasses.controlDisabled, this.isReadOnly).append(this.cssClasses.controlInputFieldComponent, !!this.inputFieldComponentName).toString()
                }, Object.defineProperty(t.prototype, "selectedItemLocText", {
                    get: function() {
                        var e = this.selectedItem;
                        return null == e ? void 0 : e.locText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "inputFieldComponentName", {
                    get: function() {
                        return this.inputFieldComponent || this.itemComponent
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showSelectedItemLocText", {
                    get: function() {
                        return !this.inputHasValue && !this.inputFieldComponentName && !!this.selectedItemLocText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showInputFieldComponent", {
                    get: function() {
                        return !this.inputHasValue && !!this.inputFieldComponentName && !this.isEmpty()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "selectedItemText", {
                    get: function() {
                        var e = this.selectedItem;
                        return e ? e.text : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "popupModel", {
                    get: function() {
                        var e;
                        return "select" === this.renderAs || this.dropdownListModel || (this.dropdownListModel = new wo(this)), null === (e = this.dropdownListModel) || void 0 === e ? void 0 : e.popupModel
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onOpenedCallBack = function() {
                    this.onOpened.fire(this, {
                        question: this,
                        choices: this.choices
                    })
                }, t.prototype.onVisibleChoicesChanged = function() {
                    e.prototype.onVisibleChoicesChanged.call(this), this.popupModel && this.dropdownListModel.updateItems()
                }, t.prototype.getFirstInputElementId = function() {
                    return this.inputId + (this.searchEnabled ? "_0" : "")
                }, t.prototype.getInputId = function() {
                    return this.inputId + "_0"
                }, t.prototype.clearValue = function() {
                    e.prototype.clearValue.call(this), this.lastSelectedItemValue = null
                }, t.prototype.onClick = function(e) {
                    this.onOpenedCallBack && this.onOpenedCallBack()
                }, t.prototype.onKeyUp = function(e) {
                    46 === (e.which || e.keyCode) && (this.clearValue(), e.preventDefault(), e.stopPropagation())
                }, Vo([y({
                    defaultValue: !0
                })], t.prototype, "allowClear", void 0), Vo([y({
                    defaultValue: !0,
                    onSet: function(e, t) {
                        t.dropdownListModel && t.dropdownListModel.setSearchEnabled(e)
                    }
                })], t.prototype, "searchEnabled", void 0), Vo([y({
                    defaultValue: !1
                })], t.prototype, "inputHasValue", void 0), Vo([y({
                    defaultValue: ""
                })], t.prototype, "readOnlyText", void 0), Vo([y({
                    defaultValue: !1
                })], t.prototype, "choicesLazyLoadEnabled", void 0), Vo([y({
                    defaultValue: 25
                })], t.prototype, "choicesLazyLoadPageSize", void 0), t
            }(vo);
        I.addClass("dropdown", [{
            name: "placeholder",
            alternativeName: "optionsCaption",
            serializationProperty: "locPlaceholder"
        }, {
            name: "allowClear:boolean",
            alternativeName: "showOptionsCaption",
            default: !0
        }, {
            name: "choicesMin:number",
            default: 0
        }, {
            name: "choicesMax:number",
            default: 0
        }, {
            name: "choicesStep:number",
            default: 1,
            minValue: 1
        }, {
            name: "autocomplete",
            alternativeName: "autoComplete",
            choices: s.questions.dataList
        }, {
            name: "renderAs",
            default: "default",
            visible: !1
        }, {
            name: "searchEnabled:boolean",
            default: !0,
            visible: !1
        }, {
            name: "choicesLazyLoadEnabled:boolean",
            default: !1,
            visible: !1
        }, {
            name: "choicesLazyLoadPageSize:number",
            default: 25,
            visible: !1
        }, {
            name: "inputFieldComponent",
            visible: !1
        }, {
            name: "itemComponent",
            visible: !1,
            default: ""
        }], (function() {
            return new To("")
        }), "selectbase"), ln.Instance.registerQuestion("dropdown", (function(e) {
            var t = new To(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var ko = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            So = function(e) {
                function t(t, n, o, r) {
                    var i = e.call(this) || this;
                    return i.fullName = n, i.item = t, i.data = o, i.value = r, i.cellClick = function(e) {
                        i.value = e.value
                    }, i.registerPropertyChangedHandlers(["value"], (function() {
                        i.data && i.data.onMatrixRowChanged(i)
                    })), i
                }
                return ko(t, e), Object.defineProperty(t.prototype, "name", {
                    get: function() {
                        return this.item.value
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "text", {
                    get: function() {
                        return this.item.text
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locText", {
                    get: function() {
                        return this.item.locText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "value", {
                    get: function() {
                        return this.getPropertyValue("value")
                    },
                    set: function(e) {
                        e = this.data.getCorrectedRowValue(e), this.setPropertyValue("value", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rowClasses", {
                    get: function() {
                        var e = this.data.cssClasses,
                            t = !!this.data.getErrorByType("requiredinallrowserror");
                        return (new ct).append(e.row).append(e.rowError, t && this.isValueEmpty(this.value)).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(he),
            Oo = function() {
                function e(e) {
                    this.cellsOwner = e, this.values = {}
                }
                return Object.defineProperty(e.prototype, "isEmpty", {
                    get: function() {
                        return 0 == Object.keys(this.values).length
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.valuesChanged = function() {
                    this.onValuesChanged && this.onValuesChanged()
                }, e.prototype.setCellText = function(e, t, n) {
                    if (e = this.getCellRowColumnValue(e, this.rows), t = this.getCellRowColumnValue(t, this.columns), e && t) {
                        if (n) this.values[e] || (this.values[e] = {}), this.values[e][t] || (this.values[e][t] = this.createString()), this.values[e][t].text = n;
                        else if (this.values[e] && this.values[e][t]) {
                            var o = this.values[e][t];
                            o.text = "", o.isEmpty && (delete this.values[e][t], 0 == Object.keys(this.values[e]).length && delete this.values[e])
                        }
                        this.valuesChanged()
                    }
                }, e.prototype.setDefaultCellText = function(e, t) {
                    this.setCellText(s.matrixDefaultRowName, e, t)
                }, e.prototype.getCellLocText = function(e, t) {
                    return e = this.getCellRowColumnValue(e, this.rows), t = this.getCellRowColumnValue(t, this.columns), e && t && this.values[e] && this.values[e][t] ? this.values[e][t] : null
                }, e.prototype.getDefaultCellLocText = function(e, t) {
                    return this.getCellLocText(s.matrixDefaultRowName, e)
                }, e.prototype.getCellDisplayLocText = function(e, t) {
                    var n = this.getCellLocText(e, t);
                    return n && !n.isEmpty || (n = this.getCellLocText(s.matrixDefaultRowName, t)) && !n.isEmpty ? n : ("number" == typeof t && (t = t >= 0 && t < this.columns.length ? this.columns[t] : null), t && t.locText ? t.locText : null)
                }, e.prototype.getCellText = function(e, t) {
                    var n = this.getCellLocText(e, t);
                    return n ? n.calculatedText : null
                }, e.prototype.getDefaultCellText = function(e) {
                    var t = this.getCellLocText(s.matrixDefaultRowName, e);
                    return t ? t.calculatedText : null
                }, e.prototype.getCellDisplayText = function(e, t) {
                    var n = this.getCellDisplayLocText(e, t);
                    return n ? n.calculatedText : null
                }, Object.defineProperty(e.prototype, "rows", {
                    get: function() {
                        return this.cellsOwner ? this.cellsOwner.getRows() : []
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "columns", {
                    get: function() {
                        return this.cellsOwner ? this.cellsOwner.getColumns() : []
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getCellRowColumnValue = function(e, t) {
                    if (null == e) return null;
                    if ("number" == typeof e) {
                        if (e < 0 || e >= t.length) return null;
                        e = t[e].value
                    }
                    return e.value ? e.value : e
                }, e.prototype.getJson = function() {
                    if (this.isEmpty) return null;
                    var e = {};
                    for (var t in this.values) {
                        var n = {},
                            o = this.values[t];
                        for (var r in o) n[r] = o[r].getJson();
                        e[t] = n
                    }
                    return e
                }, e.prototype.setJson = function(e) {
                    if (this.values = {}, e)
                        for (var t in e)
                            if ("pos" != t) {
                                var n = e[t];
                                for (var o in this.values[t] = {}, n)
                                    if ("pos" != o) {
                                        var r = this.createString();
                                        r.setJson(n[o]), this.values[t][o] = r
                                    }
                            } this.valuesChanged()
                }, e.prototype.locStrsChanged = function() {
                    if (!this.isEmpty)
                        for (var e in this.values) {
                            var t = this.values[e];
                            for (var n in t) t[n].strChanged()
                        }
                }, e.prototype.createString = function() {
                    return new d(this.cellsOwner, !0)
                }, e
            }(),
            Eo = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.isRowChanging = !1, n.emptyLocalizableString = new d(n), n.cellsValue = new Oo(n), n.cellsValue.onValuesChanged = function() {
                        n.updateHasCellText(), n.propertyValueChanged("cells", n.cells, n.cells)
                    }, n.registerPropertyChangedHandlers(["columns"], (function() {
                        n.onColumnsChanged()
                    })), n.registerPropertyChangedHandlers(["rows"], (function() {
                        n.filterItems() || n.onRowsChanged()
                    })), n.registerPropertyChangedHandlers(["hideIfRowsEmpty"], (function() {
                        n.updateVisibilityBasedOnRows()
                    })), n
                }
                return ko(t, e), t.prototype.getType = function() {
                    return "matrix"
                }, Object.defineProperty(t.prototype, "hasSingleInput", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isAllRowRequired", {
                    get: function() {
                        return this.getPropertyValue("isAllRowRequired", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isAllRowRequired", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasRows", {
                    get: function() {
                        return this.rows.length > 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rowsOrder", {
                    get: function() {
                        return this.getPropertyValue("rowsOrder")
                    },
                    set: function(e) {
                        (e = e.toLowerCase()) != this.rowsOrder && (this.setPropertyValue("rowsOrder", e), this.onRowsChanged())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hideIfRowsEmpty", {
                    get: function() {
                        return this.getPropertyValue("hideIfRowsEmpty")
                    },
                    set: function(e) {
                        this.setPropertyValue("hideIfRowsEmpty", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getRows = function() {
                    return this.rows
                }, t.prototype.getColumns = function() {
                    return this.visibleColumns
                }, t.prototype.addColumn = function(e, t) {
                    var n = new ze(e, t);
                    return this.columns.push(n), n
                }, t.prototype.getItemClass = function(e, t) {
                    var n = e.value == t.value,
                        o = this.isReadOnly,
                        r = !n && !o;
                    return (new ct).append(this.cssClasses.cell, this.hasCellText).append(this.hasCellText ? this.cssClasses.cellText : this.cssClasses.label).append(this.cssClasses.itemOnError, !this.hasCellText && this.errors.length > 0).append(this.hasCellText ? this.cssClasses.cellTextSelected : this.cssClasses.itemChecked, n).append(this.hasCellText ? this.cssClasses.cellTextDisabled : this.cssClasses.itemDisabled, o).append(this.cssClasses.itemHover, r && !this.hasCellText).toString()
                }, Object.defineProperty(t.prototype, "itemSvgIcon", {
                    get: function() {
                        return this.cssClasses.itemSvgIconId
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.cells.locStrsChanged()
                }, t.prototype.getQuizQuestionCount = function() {
                    for (var e = 0, t = 0; t < this.rows.length; t++) this.isValueEmpty(this.correctAnswer[this.rows[t].value]) || e++;
                    return e
                }, t.prototype.getCorrectAnswerCount = function() {
                    for (var e = 0, t = this.value, n = 0; n < this.rows.length; n++) {
                        var o = this.rows[n].value;
                        !this.isValueEmpty(t[o]) && this.isTwoValueEquals(this.correctAnswer[o], t[o]) && e++
                    }
                    return e
                }, t.prototype.getVisibleRows = function() {
                    var e = new Array,
                        t = this.value;
                    t || (t = {});
                    for (var n = this.filteredRows ? this.filteredRows : this.rows, o = 0; o < n.length; o++) {
                        var r = n[o];
                        this.isValueEmpty(r.value) || e.push(this.createMatrixRow(r, this.id + "_" + r.value.toString().replace(/\s/g, "_"), t[r.value]))
                    }
                    return 0 != e.length || this.filteredRows || e.push(this.createMatrixRow(new ze(null), this.name.replace(/\s/g, "_"), t)), this.generatedVisibleRows = e, e
                }, t.prototype.sortVisibleRows = function(e) {
                    return this.survey && this.survey.isDesignMode ? e : "random" === this.rowsOrder.toLowerCase() ? a.randomizeArray(e) : e
                }, t.prototype.endLoadingFromJson = function() {
                    e.prototype.endLoadingFromJson.call(this), this.rows = this.sortVisibleRows(this.rows)
                }, t.prototype.processRowsOnSet = function(e) {
                    return this.sortVisibleRows(e)
                }, Object.defineProperty(t.prototype, "visibleRows", {
                    get: function() {
                        return this.getVisibleRows()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cells", {
                    get: function() {
                        return this.cellsValue
                    },
                    set: function(e) {
                        this.cells.setJson(e && e.getJson ? e.getJson() : null)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasCellText", {
                    get: function() {
                        return this.getPropertyValue("hasCellText", !1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateHasCellText = function() {
                    this.setPropertyValue("hasCellText", !this.cells.isEmpty)
                }, t.prototype.setCellText = function(e, t, n) {
                    this.cells.setCellText(e, t, n)
                }, t.prototype.getCellText = function(e, t) {
                    return this.cells.getCellText(e, t)
                }, t.prototype.setDefaultCellText = function(e, t) {
                    this.cells.setDefaultCellText(e, t)
                }, t.prototype.getDefaultCellText = function(e) {
                    return this.cells.getDefaultCellText(e)
                }, t.prototype.getCellDisplayText = function(e, t) {
                    return this.cells.getCellDisplayText(e, t)
                }, t.prototype.getCellDisplayLocText = function(e, t) {
                    var n = this.cells.getCellDisplayLocText(e, t);
                    return n || this.emptyLocalizableString
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    return this.hasValuesInAllRows()
                }, t.prototype.onCheckForErrors = function(t, n) {
                    e.prototype.onCheckForErrors.call(this, t, n), (!n || this.errors.length > 0) && this.hasErrorInRows() && t.push(new Se(null, this))
                }, t.prototype.hasErrorInRows = function() {
                    return !!this.isAllRowRequired && !this.hasValuesInAllRows()
                }, t.prototype.hasValuesInAllRows = function() {
                    var e = this.generatedVisibleRows;
                    if (e || (e = this.visibleRows), !e) return !0;
                    for (var t = 0; t < e.length; t++)
                        if (this.isValueEmpty(e[t].value)) return !1;
                    return !0
                }, t.prototype.getIsAnswered = function() {
                    return e.prototype.getIsAnswered.call(this) && this.hasValuesInAllRows()
                }, t.prototype.createMatrixRow = function(e, t, n) {
                    var o = new So(e, t, this, n);
                    return this.onMatrixRowCreated(o), o
                }, t.prototype.onMatrixRowCreated = function(e) {}, t.prototype.setQuestionValue = function(t, n) {
                    if (void 0 === n && (n = !0), e.prototype.setQuestionValue.call(this, t, this.isRowChanging || n), this.generatedVisibleRows && 0 != this.generatedVisibleRows.length) {
                        this.isRowChanging = !0;
                        var o = this.value;
                        if (o || (o = {}), 0 == this.rows.length) this.generatedVisibleRows[0].value = o;
                        else
                            for (var r = 0; r < this.generatedVisibleRows.length; r++) {
                                var i = o[this.generatedVisibleRows[r].name];
                                this.isValueEmpty(i) && (i = null), this.generatedVisibleRows[r].value = i
                            }
                        this.updateIsAnswered(), this.isRowChanging = !1
                    }
                }, t.prototype.getDisplayValueCore = function(e, t) {
                    var n = {};
                    for (var o in t) {
                        var r = e ? ze.getTextOrHtmlByValue(this.rows, o) : o;
                        r || (r = o);
                        var i = ze.getTextOrHtmlByValue(this.columns, t[o]);
                        i || (i = t[o]), n[r] = i
                    }
                    return n
                }, t.prototype.getPlainData = function(t) {
                    var n = this;
                    void 0 === t && (t = {
                        includeEmpty: !0
                    });
                    var o = e.prototype.getPlainData.call(this, t);
                    if (o) {
                        var r = this.createValueCopy();
                        o.isNode = !0, o.data = Object.keys(r || {}).map((function(e) {
                            var o = n.rows.filter((function(t) {
                                    return t.value === e
                                }))[0],
                                i = {
                                    name: e,
                                    title: o ? o.text : "row",
                                    value: r[e],
                                    displayValue: ze.getTextOrHtmlByValue(n.visibleColumns, r[e]),
                                    getString: function(e) {
                                        return "object" == typeof e ? JSON.stringify(e) : e
                                    },
                                    isNode: !1
                                },
                                s = ze.getItemByValue(n.visibleColumns, r[e]);
                            return s && (t.calculations || []).forEach((function(e) {
                                i[e.propertyName] = s[e.propertyName]
                            })), i
                        }))
                    }
                    return o
                }, t.prototype.addConditionObjectsByContext = function(e, t) {
                    for (var n = 0; n < this.rows.length; n++) {
                        var o = this.rows[n];
                        o.value && e.push({
                            name: this.getValueName() + "." + o.value,
                            text: this.processedTitle + "." + o.calculatedText,
                            question: this
                        })
                    }
                }, t.prototype.getConditionJson = function(t, n) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), !n) return e.prototype.getConditionJson.call(this);
                    var o = new To(n);
                    o.choices = this.columns;
                    var r = (new R).toJsonObject(o);
                    return r.type = o.getType(), r
                }, t.prototype.clearValueIfInvisibleCore = function() {
                    e.prototype.clearValueIfInvisibleCore.call(this), this.hasRows && this.clearInvisibleValuesInRows()
                }, t.prototype.getFirstInputElementId = function() {
                    var t = this.generatedVisibleRows;
                    return t || (t = this.visibleRows), t.length > 0 && this.visibleColumns.length > 0 ? this.inputId + "_" + t[0].name + "_0" : e.prototype.getFirstInputElementId.call(this)
                }, t.prototype.onMatrixRowChanged = function(e) {
                    if (!this.isRowChanging) {
                        if (this.isRowChanging = !0, this.hasRows) {
                            var t = this.value;
                            t || (t = {}), t[e.name] = e.value, this.setNewValue(t)
                        } else this.setNewValue(e.value);
                        this.isRowChanging = !1
                    }
                }, t.prototype.getCorrectedRowValue = function(e) {
                    for (var t = 0; t < this.columns.length; t++)
                        if (e === this.columns[t].value) return e;
                    for (t = 0; t < this.columns.length; t++)
                        if (this.isTwoValueEquals(e, this.columns[t].value)) return this.columns[t].value;
                    return e
                }, t.prototype.getSearchableItemValueKeys = function(e) {
                    e.push("columns"), e.push("rows")
                }, Object.defineProperty(t.prototype, "SurveyModel", {
                    get: function() {
                        return this.survey
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getColumnHeaderWrapperComponentName = function(e) {
                    return this.SurveyModel.getElementWrapperComponentName({
                        column: e
                    }, "column-header")
                }, t.prototype.getColumnHeaderWrapperComponentData = function(e) {
                    return this.SurveyModel.getElementWrapperComponentData({
                        column: e
                    }, "column-header")
                }, t.prototype.getRowHeaderWrapperComponentName = function(e) {
                    return this.SurveyModel.getElementWrapperComponentName({
                        row: e
                    }, "row-header")
                }, t.prototype.getRowHeaderWrapperComponentData = function(e) {
                    return this.SurveyModel.getElementWrapperComponentData({
                        row: e
                    }, "row-header")
                }, t
            }(nn);
        I.addClass("matrix", ["rowTitleWidth", {
            name: "columns:itemvalue[]",
            uniqueProperty: "value",
            baseValue: function() {
                return u.getString("matrix_column")
            }
        }, {
            name: "rows:itemvalue[]",
            uniqueProperty: "value",
            baseValue: function() {
                return u.getString("matrix_row")
            }
        }, {
            name: "cells:cells",
            serializationProperty: "cells"
        }, {
            name: "rowsOrder",
            default: "initial",
            choices: ["initial", "random"]
        }, "isAllRowRequired:boolean", "hideIfRowsEmpty:boolean"], (function() {
            return new Eo("")
        }), "matrixbase"), ln.Instance.registerQuestion("matrix", (function(e) {
            var t = new Eo(e);
            return t.rows = ln.DefaultRows, t.columns = ln.DefaultColums, t
        }));
        var Ro = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Io = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            _o = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return Ro(t, e), t.prototype.isTextValue = function() {
                    return !0
                }, Object.defineProperty(t.prototype, "maxLength", {
                    get: function() {
                        return this.getPropertyValue("maxLength")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxLength", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getMaxLength = function() {
                    return a.getMaxLength(this.maxLength, this.survey ? this.survey.maxTextLength : -1)
                }, Object.defineProperty(t.prototype, "placeHolder", {
                    get: function() {
                        return this.placeholder
                    },
                    set: function(e) {
                        this.placeholder = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPlaceHolder", {
                    get: function() {
                        return this.locPlaceholder
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "textbase"
                }, t.prototype.isEmpty = function() {
                    return e.prototype.isEmpty.call(this) || "" === this.value
                }, Object.defineProperty(t.prototype, "textUpdateMode", {
                    get: function() {
                        return this.getPropertyValue("textUpdateMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("textUpdateMode", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isSurveyInputTextUpdate", {
                    get: function() {
                        return "default" == this.textUpdateMode ? !!this.survey && this.survey.isUpdateValueTextOnTyping : "onTyping" == this.textUpdateMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedPlaceholder", {
                    get: function() {
                        return this.getPropertyValue("renderedPlaceholder")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setRenderedPlaceholder = function(e) {
                    this.setPropertyValue("renderedPlaceholder", e)
                }, t.prototype.onReadOnlyChanged = function() {
                    e.prototype.onReadOnlyChanged.call(this), this.calcRenderedPlaceholder()
                }, t.prototype.onSurveyLoad = function() {
                    this.calcRenderedPlaceholder(), e.prototype.onSurveyLoad.call(this)
                }, t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this), this.calcRenderedPlaceholder()
                }, t.prototype.calcRenderedPlaceholder = function() {
                    var e = this.placeHolder;
                    e && !this.hasPlaceHolder() && (e = void 0), this.setRenderedPlaceholder(e)
                }, t.prototype.hasPlaceHolder = function() {
                    return !this.isReadOnly
                }, t.prototype.getControlClass = function() {
                    return (new ct).append(this.cssClasses.root).append(this.cssClasses.onError, this.errors.length > 0).append(this.cssClasses.controlDisabled, this.isReadOnly).toString()
                }, Object.defineProperty(t.prototype, "ariaRole", {
                    get: function() {
                        return "textbox"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Io([y({
                    localizable: !0,
                    onSet: function(e, t) {
                        return t.calcRenderedPlaceholder()
                    }
                })], t.prototype, "placeholder", void 0), t
            }(Xt);
        I.addClass("textbase", [], (function() {
            return new _o("")
        }), "question");
        var qo = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Do = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n._isWaitingForEnter = !1, n.onCompositionUpdate = function(e) {
                        n.isInputTextUpdate && (e.persist(), setTimeout((function() {
                            n.updateValueOnEvent(e)
                        }), 1))
                    }, n.onKeyUp = function(e) {
                        n.isInputTextUpdate ? n._isWaitingForEnter && 13 !== e.keyCode || (n.updateValueOnEvent(e), n._isWaitingForEnter = !1) : 13 === e.keyCode && n.updateValueOnEvent(e)
                    }, n.onKeyDown = function(e) {
                        n.isInputTextUpdate && (n._isWaitingForEnter = 229 === e.keyCode)
                    }, n.onChange = function(e) {
                        e.target === document.activeElement ? n.isInputTextUpdate && n.updateValueOnEvent(e) : n.updateValueOnEvent(e)
                    }, n.onBlur = function(e) {
                        n.updateValueOnEvent(e)
                    }, n.createLocalizableString("minErrorText", n, !0, "minError"), n.createLocalizableString("maxErrorText", n, !0, "maxError"), n.locDataListValue = new h(n), n.locDataListValue.onValueChanged = function(e, t) {
                        n.propertyValueChanged("dataList", e, t)
                    }, n.registerPropertyChangedHandlers(["min", "max", "inputType", "minValueExpression", "maxValueExpression"], (function() {
                        n.setRenderedMinMax()
                    })), n.registerPropertyChangedHandlers(["inputType", "size"], (function() {
                        n.updateInputSize(), n.calcRenderedPlaceholder()
                    })), n
                }
                return qo(t, e), t.prototype.isTextValue = function() {
                    return ["text", "number", "password"].indexOf(this.inputType) > -1
                }, t.prototype.getType = function() {
                    return "text"
                }, t.prototype.onSurveyLoad = function() {
                    e.prototype.onSurveyLoad.call(this), this.setRenderedMinMax(), this.updateInputSize()
                }, Object.defineProperty(t.prototype, "inputType", {
                    get: function() {
                        return this.getPropertyValue("inputType")
                    },
                    set: function(e) {
                        "datetime_local" == (e = e.toLowerCase()) && (e = "datetime-local"), this.setPropertyValue("inputType", e.toLowerCase()), this.isLoadingFromJson || (this.min = void 0, this.max = void 0, this.step = void 0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.runCondition = function(t, n) {
                    e.prototype.runCondition.call(this, t, n), (this.minValueExpression || this.maxValueExpression) && this.setRenderedMinMax(t, n)
                }, t.prototype.getValidators = function() {
                    var t = e.prototype.getValidators.call(this);
                    return "email" !== this.inputType || this.validators.some((function(e) {
                        return "emailvalidator" === e.getType()
                    })) || t.push(new Ne), t
                }, t.prototype.isLayoutTypeSupported = function(e) {
                    return !0
                }, Object.defineProperty(t.prototype, "size", {
                    get: function() {
                        return this.getPropertyValue("size")
                    },
                    set: function(e) {
                        this.setPropertyValue("size", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isTextInput", {
                    get: function() {
                        return ["text", "search", "tel", "url", "email", "password"].indexOf(this.inputType) > -1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "inputSize", {
                    get: function() {
                        return this.getPropertyValue("inputSize", 0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedInputSize", {
                    get: function() {
                        return this.getPropertyValue("inputSize") || null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "inputWidth", {
                    get: function() {
                        return this.getPropertyValue("inputWidth")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateInputSize = function() {
                    var e = this.isTextInput && this.size > 0 ? this.size : 0;
                    this.isTextInput && e < 1 && this.parent && this.parent.itemSize && (e = this.parent.itemSize), this.setPropertyValue("inputSize", e), this.setPropertyValue("inputWidth", e > 0 ? "auto" : "")
                }, Object.defineProperty(t.prototype, "autocomplete", {
                    get: function() {
                        return this.getPropertyValue("autocomplete", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("autocomplete", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "min", {
                    get: function() {
                        return this.getPropertyValue("min")
                    },
                    set: function(e) {
                        this.isValueExpression(e) ? this.minValueExpression = e.substring(1) : this.setPropertyValue("min", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "max", {
                    get: function() {
                        return this.getPropertyValue("max")
                    },
                    set: function(e) {
                        this.isValueExpression(e) ? this.maxValueExpression = e.substring(1) : this.setPropertyValue("max", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "minValueExpression", {
                    get: function() {
                        return this.getPropertyValue("minValueExpression", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("minValueExpression", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxValueExpression", {
                    get: function() {
                        return this.getPropertyValue("maxValueExpression", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxValueExpression", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedMin", {
                    get: function() {
                        return this.getPropertyValue("renderedMin")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedMax", {
                    get: function() {
                        return this.getPropertyValue("renderedMax")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "minErrorText", {
                    get: function() {
                        return this.getLocalizableStringText("minErrorText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("minErrorText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locMinErrorText", {
                    get: function() {
                        return this.getLocalizableString("minErrorText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxErrorText", {
                    get: function() {
                        return this.getLocalizableStringText("maxErrorText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("maxErrorText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locMaxErrorText", {
                    get: function() {
                        return this.getLocalizableString("maxErrorText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isMinMaxType", {
                    get: function() {
                        return jo(this)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onCheckForErrors = function(t, n) {
                    var o = this;
                    if (e.prototype.onCheckForErrors.call(this, t, n), !n) {
                        if (this.isValueLessMin) {
                            var r = new Re(this.getMinMaxErrorText(this.minErrorText, this.getCalculatedMinMax(this.renderedMin)), this);
                            r.onUpdateErrorTextCallback = function(e) {
                                e.text = o.getMinMaxErrorText(o.minErrorText, o.getCalculatedMinMax(o.renderedMin))
                            }, t.push(r)
                        }
                        if (this.isValueGreaterMax) {
                            var i = new Re(this.getMinMaxErrorText(this.maxErrorText, this.getCalculatedMinMax(this.renderedMax)), this);
                            i.onUpdateErrorTextCallback = function(e) {
                                e.text = o.getMinMaxErrorText(o.maxErrorText, o.getCalculatedMinMax(o.renderedMax))
                            }, t.push(i)
                        }
                    }
                }, t.prototype.canSetValueToSurvey = function() {
                    if (!this.isMinMaxType) return !0;
                    var e = !this.isValueLessMin && !this.isValueGreaterMax;
                    return "number" === this.inputType && this.survey && (this.survey.isValidateOnValueChanging || this.survey.isValidateOnValueChanged) && this.hasErrors(), e
                }, t.prototype.convertFuncValuetoQuestionValue = function(e) {
                    var t = this.inputType.replace("-local", "");
                    return a.convertValToQuestionVal(e, t)
                }, t.prototype.getMinMaxErrorText = function(e, t) {
                    if (a.isValueEmpty(t)) return e;
                    var n = t.toString();
                    return "date" === this.inputType && t.toDateString && (n = t.toDateString()), e.replace("{0}", n)
                }, Object.defineProperty(t.prototype, "isValueLessMin", {
                    get: function() {
                        return !this.isValueEmpty(this.renderedMin) && this.getCalculatedMinMax(this.value) < this.getCalculatedMinMax(this.renderedMin)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isValueGreaterMax", {
                    get: function() {
                        return !this.isValueEmpty(this.renderedMax) && this.getCalculatedMinMax(this.value) > this.getCalculatedMinMax(this.renderedMax)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isDateInputType", {
                    get: function() {
                        return "date" === this.inputType || "datetime-local" === this.inputType
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getCalculatedMinMax = function(e) {
                    return this.isValueEmpty(e) ? e : this.isDateInputType ? new Date(e) : e
                }, t.prototype.setRenderedMinMax = function(e, t) {
                    var n = this;
                    void 0 === e && (e = null), void 0 === t && (t = null), this.minValueRunner = this.getDefaultRunner(this.minValueRunner, this.minValueExpression), this.setValueAndRunExpression(this.minValueRunner, this.min, (function(e) {
                        !e && n.isDateInputType && s.minDate && (e = s.minDate), n.setPropertyValue("renderedMin", e)
                    }), e, t), this.maxValueRunner = this.getDefaultRunner(this.maxValueRunner, this.maxValueExpression), this.setValueAndRunExpression(this.maxValueRunner, this.max, (function(e) {
                        !e && n.isDateInputType && (e = s.maxDate ? s.maxDate : "2999-12-31"), n.setPropertyValue("renderedMax", e)
                    }), e, t)
                }, Object.defineProperty(t.prototype, "step", {
                    get: function() {
                        return this.getPropertyValue("step")
                    },
                    set: function(e) {
                        this.setPropertyValue("step", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedStep", {
                    get: function() {
                        return this.isValueEmpty(this.step) ? "number" !== this.inputType ? void 0 : "any" : this.step
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.supportGoNextPageAutomatic = function() {
                    return ["date", "datetime", "datetime-local"].indexOf(this.inputType) < 0
                }, t.prototype.supportGoNextPageError = function() {
                    return ["date", "datetime", "datetime-local"].indexOf(this.inputType) < 0
                }, Object.defineProperty(t.prototype, "dataList", {
                    get: function() {
                        return this.locDataList.value
                    },
                    set: function(e) {
                        this.locDataList.value = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locDataList", {
                    get: function() {
                        return this.locDataListValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "dataListId", {
                    get: function() {
                        return this.locDataList.hasValue() ? this.id + "_datalist" : void 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canRunValidators = function(e) {
                    return this.errors.length > 0 || !e || this.supportGoNextPageError()
                }, t.prototype.setNewValue = function(t) {
                    t = this.correctValueType(t), e.prototype.setNewValue.call(this, t)
                }, t.prototype.correctValueType = function(e) {
                    return e && ("number" == this.inputType || "range" == this.inputType) ? a.isNumber(e) ? parseFloat(e) : "" : e
                }, t.prototype.hasPlaceHolder = function() {
                    return !this.isReadOnly && "range" !== this.inputType
                }, t.prototype.isReadOnlyRenderDiv = function() {
                    return this.isReadOnly && "div" === s.readOnlyTextRenderMode
                }, Object.defineProperty(t.prototype, "inputStyle", {
                    get: function() {
                        var e = {};
                        return this.inputWidth && (e.width = this.inputWidth), e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateValueOnEvent = function(e) {
                    var t = e.target.value;
                    a.isTwoValueEquals(this.value, t) || (this.value = t)
                }, t
            }(_o),
            Ao = ["number", "date", "datetime", "datetime-local", "month", "time", "week"];

        function jo(e) {
            var t = e ? e.inputType : "";
            return !!t && Ao.indexOf(t) > -1
        }

        function Lo(e, t) {
            var n = e.split(t);
            return 2 !== n.length ? -1 : a.isNumber(n[0]) && a.isNumber(n[1]) ? 60 * parseFloat(n[0]) + parseFloat(n[1]) : -1
        }

        function Mo(e, t, n, o) {
            var r = o ? n : t;
            if (!jo(e)) return r;
            if (a.isValueEmpty(t) || a.isValueEmpty(n)) return r;
            if (0 === e.inputType.indexOf("date") || "month" === e.inputType) {
                var i = "month" === e.inputType,
                    s = new Date(i ? t + "-1" : t),
                    l = new Date(i ? n + "-1" : n);
                if (!s || !l) return r;
                if (s > l) return o ? t : n
            }
            if ("week" === e.inputType || "time" === e.inputType) return function(e, t, n) {
                var o = Lo(e, n),
                    r = Lo(t, n);
                return !(o < 0 || r < 0) && o > r
            }(t, n, "week" === e.inputType ? "-W" : ":") ? o ? t : n : r;
            if ("number" === e.inputType) {
                if (!a.isNumber(t) || !a.isNumber(n)) return r;
                if (parseFloat(t) > parseFloat(n)) return o ? t : n
            }
            return "string" == typeof t || "string" == typeof n ? r : t > n ? o ? t : n : r
        }
        I.addClass("text", [{
            name: "inputType",
            default: "text",
            choices: s.questions.inputTypes
        }, {
            name: "size:number",
            minValue: 0,
            dependsOn: "inputType",
            visibleIf: function(e) {
                return !!e && e.isTextInput
            }
        }, {
            name: "textUpdateMode",
            default: "default",
            choices: ["default", "onBlur", "onTyping"],
            dependsOn: "inputType",
            visibleIf: function(e) {
                return !!e && e.isTextInput
            }
        }, {
            name: "autocomplete",
            alternativeName: "autoComplete",
            choices: s.questions.dataList
        }, {
            name: "min",
            dependsOn: "inputType",
            visibleIf: function(e) {
                return jo(e)
            },
            onPropertyEditorUpdate: function(e, t) {
                e && e.inputType && (t.inputType = e.inputType)
            },
            onSettingValue: function(e, t) {
                return Mo(e, t, e.max, !1)
            }
        }, {
            name: "max",
            dependsOn: "inputType",
            nextToProperty: "*min",
            visibleIf: function(e) {
                return jo(e)
            },
            onSettingValue: function(e, t) {
                return Mo(e, e.min, t, !0)
            },
            onPropertyEditorUpdate: function(e, t) {
                e && e.inputType && (t.inputType = e.inputType)
            }
        }, {
            name: "minValueExpression:expression",
            category: "logic",
            dependsOn: "inputType",
            visibleIf: function(e) {
                return jo(e)
            }
        }, {
            name: "maxValueExpression:expression",
            category: "logic",
            dependsOn: "inputType",
            visibleIf: function(e) {
                return jo(e)
            }
        }, {
            name: "minErrorText",
            serializationProperty: "locMinErrorText",
            dependsOn: "inputType",
            visibleIf: function(e) {
                return jo(e)
            }
        }, {
            name: "maxErrorText",
            serializationProperty: "locMaxErrorText",
            dependsOn: "inputType",
            visibleIf: function(e) {
                return jo(e)
            }
        }, {
            name: "step:number",
            dependsOn: "inputType",
            visibleIf: function(e) {
                return !!e && "number" === e.inputType
            }
        }, {
            name: "maxLength:number",
            default: -1,
            dependsOn: "inputType",
            visibleIf: function(e) {
                return !!e && e.isTextInput
            }
        }, {
            name: "placeholder",
            alternativeName: "placeHolder",
            serializationProperty: "locPlaceholder",
            dependsOn: "inputType",
            visibleIf: function(e) {
                return !!e && e.isTextInput
            }
        }, {
            name: "dataList:string[]",
            serializationProperty: "locDataList",
            dependsOn: "inputType",
            visibleIf: function(e) {
                return !!e && "text" === e.inputType
            }
        }], (function() {
            return new Do("")
        }), "textbase"), ln.Instance.registerQuestion("text", (function(e) {
            return new Do(e)
        }));
        var No = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Fo = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this) || this;
                    return o.editorValue = o.createEditor(t), o.editor.questionTitleTemplateCallback = function() {
                        return ""
                    }, o.editor.titleLocation = "left", n && (o.title = n), o
                }
                return No(t, e), t.prototype.getType = function() {
                    return "multipletextitem"
                }, Object.defineProperty(t.prototype, "id", {
                    get: function() {
                        return this.editor.id
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getOriginalObj = function() {
                    return this.editor
                }, Object.defineProperty(t.prototype, "name", {
                    get: function() {
                        return this.editor.name
                    },
                    set: function(e) {
                        this.editor.name = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "question", {
                    get: function() {
                        return this.data
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "editor", {
                    get: function() {
                        return this.editorValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createEditor = function(e) {
                    return new Do(e)
                }, t.prototype.addUsedLocales = function(t) {
                    e.prototype.addUsedLocales.call(this, t), this.editor.addUsedLocales(t)
                }, t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this), this.editor.localeChanged()
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.editor.locStrsChanged()
                }, t.prototype.setData = function(e) {
                    this.data = e, e && (this.editor.defaultValue = e.getItemDefaultValue(this.name), this.editor.setSurveyImpl(this), this.editor.parent = e)
                }, Object.defineProperty(t.prototype, "isRequired", {
                    get: function() {
                        return this.editor.isRequired
                    },
                    set: function(e) {
                        this.editor.isRequired = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "inputType", {
                    get: function() {
                        return this.editor.inputType
                    },
                    set: function(e) {
                        this.editor.inputType = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "title", {
                    get: function() {
                        return this.editor.title
                    },
                    set: function(e) {
                        this.editor.title = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTitle", {
                    get: function() {
                        return this.editor.locTitle
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "fullTitle", {
                    get: function() {
                        return this.editor.fullTitle
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxLength", {
                    get: function() {
                        return this.editor.maxLength
                    },
                    set: function(e) {
                        this.editor.maxLength = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getMaxLength = function() {
                    var e = this.getSurvey();
                    return a.getMaxLength(this.maxLength, e ? e.maxTextLength : -1)
                }, Object.defineProperty(t.prototype, "placeholder", {
                    get: function() {
                        return this.editor.placeholder
                    },
                    set: function(e) {
                        this.editor.placeholder = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPlaceholder", {
                    get: function() {
                        return this.editor.locPlaceholder
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "placeHolder", {
                    get: function() {
                        return this.placeholder
                    },
                    set: function(e) {
                        this.placeholder = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPlaceHolder", {
                    get: function() {
                        return this.locPlaceholder
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "requiredErrorText", {
                    get: function() {
                        return this.editor.requiredErrorText
                    },
                    set: function(e) {
                        this.editor.requiredErrorText = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locRequiredErrorText", {
                    get: function() {
                        return this.editor.locRequiredErrorText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "size", {
                    get: function() {
                        return this.editor.size
                    },
                    set: function(e) {
                        this.editor.size = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "validators", {
                    get: function() {
                        return this.editor.validators
                    },
                    set: function(e) {
                        this.editor.validators = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getValidators = function() {
                    return this.validators
                }, Object.defineProperty(t.prototype, "value", {
                    get: function() {
                        return this.data ? this.data.getMultipleTextValue(this.name) : null
                    },
                    set: function(e) {
                        null != this.data && this.data.setMultipleTextValue(this.name, e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isEmpty = function() {
                    return this.editor.isEmpty()
                }, t.prototype.onValueChanged = function(e) {
                    this.valueChangedCallback && this.valueChangedCallback(e)
                }, t.prototype.getSurveyData = function() {
                    return this
                }, t.prototype.getSurvey = function() {
                    return this.data ? this.data.getSurvey() : null
                }, t.prototype.getTextProcessor = function() {
                    return this.data ? this.data.getTextProcessor() : null
                }, t.prototype.getValue = function(e) {
                    return this.data ? this.data.getMultipleTextValue(e) : null
                }, t.prototype.setValue = function(e, t) {
                    this.data && this.data.setMultipleTextValue(e, t)
                }, t.prototype.getVariable = function(e) {}, t.prototype.setVariable = function(e, t) {}, t.prototype.getComment = function(e) {
                    return null
                }, t.prototype.setComment = function(e, t) {}, t.prototype.getAllValues = function() {
                    return this.data ? this.data.getAllValues() : this.value
                }, t.prototype.getFilteredValues = function() {
                    return this.getAllValues()
                }, t.prototype.getFilteredProperties = function() {
                    return {
                        survey: this.getSurvey()
                    }
                }, t.prototype.getValidatorTitle = function() {
                    return this.title
                }, Object.defineProperty(t.prototype, "validatedValue", {
                    get: function() {
                        return this.value
                    },
                    set: function(e) {
                        this.value = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDataFilteredValues = function() {
                    return this.getFilteredValues()
                }, t.prototype.getDataFilteredProperties = function() {
                    return this.getFilteredProperties()
                }, t
            }(he),
            Bo = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.isMultipleItemValueChanging = !1, n.createNewArray("items", (function(e) {
                        e.setData(n)
                    })), n.registerPropertyChangedHandlers(["items", "colCount"], (function() {
                        n.fireCallback(n.colCountChangedCallback)
                    })), n.registerPropertyChangedHandlers(["itemSize"], (function() {
                        n.updateItemsSize()
                    })), n
                }
                return No(t, e), t.addDefaultItems = function(e) {
                    for (var t = ln.DefaultMutlipleTextItems, n = 0; n < t.length; n++) e.addItem(t[n])
                }, t.prototype.getType = function() {
                    return "multipletext"
                }, t.prototype.setSurveyImpl = function(t, n) {
                    e.prototype.setSurveyImpl.call(this, t, n);
                    for (var o = 0; o < this.items.length; o++) this.items[o].setData(this)
                }, Object.defineProperty(t.prototype, "isAllowTitleLeft", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasSingleInput", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "id", {
                    get: function() {
                        return this.getPropertyValue("id")
                    },
                    set: function(e) {
                        var t;
                        null === (t = this.items) || void 0 === t || t.map((function(t, n) {
                            return t.editor.id = e + "_" + n
                        })), this.setPropertyValue("id", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onSurveyLoad = function() {
                    this.editorsOnSurveyLoad(), e.prototype.onSurveyLoad.call(this), this.fireCallback(this.colCountChangedCallback)
                }, t.prototype.setQuestionValue = function(t, n) {
                    void 0 === n && (n = !0), e.prototype.setQuestionValue.call(this, t, n), this.performForEveryEditor((function(e) {
                        e.editor.updateValueFromSurvey(e.value)
                    })), this.updateIsAnswered()
                }, t.prototype.onSurveyValueChanged = function(t) {
                    e.prototype.onSurveyValueChanged.call(this, t), this.performForEveryEditor((function(e) {
                        e.editor.onSurveyValueChanged(e.value)
                    }))
                }, t.prototype.updateItemsSize = function() {
                    this.performForEveryEditor((function(e) {
                        e.editor.updateInputSize()
                    }))
                }, t.prototype.editorsOnSurveyLoad = function() {
                    this.performForEveryEditor((function(e) {
                        e.editor.onSurveyLoad()
                    }))
                }, t.prototype.performForEveryEditor = function(e) {
                    for (var t = 0; t < this.items.length; t++) {
                        var n = this.items[t];
                        n.editor && e(n)
                    }
                }, Object.defineProperty(t.prototype, "items", {
                    get: function() {
                        return this.getPropertyValue("items")
                    },
                    set: function(e) {
                        this.setPropertyValue("items", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.addItem = function(e, t) {
                    void 0 === t && (t = null);
                    var n = this.createTextItem(e, t);
                    return this.items.push(n), n
                }, t.prototype.getItemByName = function(e) {
                    for (var t = 0; t < this.items.length; t++)
                        if (this.items[t].name == e) return this.items[t];
                    return null
                }, t.prototype.addConditionObjectsByContext = function(e, t) {
                    for (var n = 0; n < this.items.length; n++) {
                        var o = this.items[n];
                        e.push({
                            name: this.getValueName() + "." + o.name,
                            text: this.processedTitle + "." + o.fullTitle,
                            question: this
                        })
                    }
                }, t.prototype.getConditionJson = function(t, n) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), !n) return e.prototype.getConditionJson.call(this);
                    var o = this.getItemByName(n);
                    if (!o) return null;
                    var r = (new R).toJsonObject(o);
                    return r.type = "text", r
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this);
                    for (var t = 0; t < this.items.length; t++) this.items[t].locStrsChanged()
                }, t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this);
                    for (var t = 0; t < this.items.length; t++) this.items[t].localeChanged()
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    for (var e = 0; e < this.items.length; e++)
                        if (this.items[e].isEmpty()) return !1;
                    return !0
                }, Object.defineProperty(t.prototype, "colCount", {
                    get: function() {
                        return this.getPropertyValue("colCount")
                    },
                    set: function(e) {
                        e < 1 || e > 5 || this.setPropertyValue("colCount", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "itemSize", {
                    get: function() {
                        return this.getPropertyValue("itemSize")
                    },
                    set: function(e) {
                        this.setPropertyValue("itemSize", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getRows = function() {
                    for (var e = this.colCount, t = this.items, n = [], o = 0, r = 0; r < t.length; r++) 0 == o && n.push([]), n[n.length - 1].push(t[r]), ++o >= e && (o = 0);
                    return n
                }, t.prototype.onValueChanged = function() {
                    e.prototype.onValueChanged.call(this), this.onItemValueChanged()
                }, t.prototype.createTextItem = function(e, t) {
                    return new Fo(e, t)
                }, t.prototype.onItemValueChanged = function() {
                    if (!this.isMultipleItemValueChanging)
                        for (var e = 0; e < this.items.length; e++) {
                            var t = null;
                            this.value && this.items[e].name in this.value && (t = this.value[this.items[e].name]), this.items[e].onValueChanged(t)
                        }
                }, t.prototype.getIsRunningValidators = function() {
                    if (e.prototype.getIsRunningValidators.call(this)) return !0;
                    for (var t = 0; t < this.items.length; t++)
                        if (this.items[t].editor.isRunningValidators) return !0;
                    return !1
                }, t.prototype.hasErrors = function(t, n) {
                    var o = this;
                    void 0 === t && (t = !0), void 0 === n && (n = null);
                    for (var r = !1, i = 0; i < this.items.length; i++) this.items[i].editor.onCompletedAsyncValidators = function(e) {
                        o.raiseOnCompletedAsyncValidators()
                    }, n && !0 === n.isOnValueChanged && this.items[i].editor.isEmpty() || (r = this.items[i].editor.hasErrors(t, n) || r);
                    return e.prototype.hasErrors.call(this, t) || r
                }, t.prototype.getAllErrors = function() {
                    for (var t = e.prototype.getAllErrors.call(this), n = 0; n < this.items.length; n++) {
                        var o = this.items[n].editor.getAllErrors();
                        o && o.length > 0 && (t = t.concat(o))
                    }
                    return t
                }, t.prototype.clearErrors = function() {
                    e.prototype.clearErrors.call(this);
                    for (var t = 0; t < this.items.length; t++) this.items[t].editor.clearErrors()
                }, t.prototype.getContainsErrors = function() {
                    var t = e.prototype.getContainsErrors.call(this);
                    if (t) return t;
                    for (var n = this.items, o = 0; o < n.length; o++)
                        if (n[o].editor.containsErrors) return !0;
                    return !1
                }, t.prototype.getIsAnswered = function() {
                    if (!e.prototype.getIsAnswered.call(this)) return !1;
                    for (var t = 0; t < this.items.length; t++) {
                        var n = this.items[t].editor;
                        if (n.isVisible && !n.isAnswered) return !1
                    }
                    return !0
                }, t.prototype.getProgressInfo = function() {
                    for (var e = [], t = 0; t < this.items.length; t++) e.push(this.items[t].editor);
                    return jt.getProgressInfoByElements(e, this.isRequired)
                }, t.prototype.getDisplayValueCore = function(e, t) {
                    if (!t) return t;
                    for (var n = {}, o = 0; o < this.items.length; o++) {
                        var r = this.items[o],
                            i = t[r.name];
                        if (!a.isValueEmpty(i)) {
                            var s = r.name;
                            e && r.title && (s = r.title), n[s] = r.editor.getDisplayValue(e, i)
                        }
                    }
                    return n
                }, t.prototype.getMultipleTextValue = function(e) {
                    return this.value ? this.value[e] : null
                }, t.prototype.setMultipleTextValue = function(e, t) {
                    this.isMultipleItemValueChanging = !0, this.isValueEmpty(t) && (t = void 0);
                    var n = this.value;
                    n || (n = {}), n[e] = t, this.setNewValue(n), this.isMultipleItemValueChanging = !1
                }, t.prototype.getItemDefaultValue = function(e) {
                    return this.defaultValue ? this.defaultValue[e] : null
                }, t.prototype.getTextProcessor = function() {
                    return this.textProcessor
                }, t.prototype.getAllValues = function() {
                    return this.data ? this.data.getAllValues() : null
                }, t.prototype.getIsRequiredText = function() {
                    return this.survey ? this.survey.requiredText : ""
                }, t.prototype.addElement = function(e, t) {}, t.prototype.removeElement = function(e) {
                    return !1
                }, t.prototype.getQuestionTitleLocation = function() {
                    return "left"
                }, t.prototype.getQuestionStartIndex = function() {
                    return this.getStartIndex()
                }, t.prototype.getChildrenLayoutType = function() {
                    return "row"
                }, t.prototype.elementWidthChanged = function(e) {}, Object.defineProperty(t.prototype, "elements", {
                    get: function() {
                        return []
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.indexOf = function(e) {
                    return -1
                }, t.prototype.ensureRowsVisibility = function() {}, t.prototype.getItemLabelCss = function(e) {
                    return (new ct).append(this.cssClasses.itemLabel).append(this.cssClasses.itemLabelOnError, e.editor.errors.length > 0).toString()
                }, t.prototype.getItemCss = function() {
                    return (new ct).append(this.cssClasses.item).toString()
                }, t.prototype.getItemTitleCss = function() {
                    return (new ct).append(this.cssClasses.itemTitle).toString()
                }, t.prototype.getIsTooltipErrorInsideSupported = function() {
                    return !0
                }, t
            }(Xt);
        I.addClass("multipletextitem", ["name", "isRequired:boolean", {
            name: "placeholder",
            alternativeName: "placeHolder",
            serializationProperty: "locPlaceholder"
        }, {
            name: "inputType",
            default: "text",
            choices: s.questions.inputTypes
        }, {
            name: "title",
            serializationProperty: "locTitle"
        }, {
            name: "maxLength:number",
            default: -1
        }, {
            name: "size:number",
            minValue: 0
        }, {
            name: "requiredErrorText:text",
            serializationProperty: "locRequiredErrorText"
        }, {
            name: "validators:validators",
            baseClassName: "surveyvalidator",
            classNamePart: "validator"
        }], (function() {
            return new Fo("")
        })), I.addClass("multipletext", [{
            name: "!items:textitems",
            className: "multipletextitem"
        }, {
            name: "itemSize:number",
            minValue: 0
        }, {
            name: "colCount:number",
            default: 1,
            choices: [1, 2, 3, 4, 5]
        }], (function() {
            return new Bo("")
        }), "question"), ln.Instance.registerQuestion("multipletext", (function(e) {
            var t = new Bo(e);
            return Bo.addDefaultItems(t), t
        }));
        var zo = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ho = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Qo = function(e, t, n) {
                void 0 === n && (n = -1), this.source = e, this.target = t, this.nestedPanelDepth = n
            },
            Uo = function(e) {
                function t(n) {
                    var o = e.call(this) || this;
                    return o.panel = n, o._scrollableParent = void 0, o._updateVisibility = void 0, o.idValue = t.getRowId(), o.visible = n.areInvisibleElementsShowing, o.createNewArray("elements"), o.createNewArray("visibleElements"), o
                }
                return zo(t, e), t.getRowId = function() {
                    return "pr_" + t.rowCounter++
                }, t.prototype.startLazyRendering = function(e, t) {
                    var n = this;
                    void 0 === t && (t = $e), this._scrollableParent = t(e), this._scrollableParent === document.documentElement && (this._scrollableParent = window);
                    var o = this._scrollableParent.scrollHeight > this._scrollableParent.clientHeight;
                    this.isNeedRender = !o, o && (this._updateVisibility = function() {
                        var t = function(e, t) {
                            if (void 0 === t && (t = 0), "undefined" == typeof document) return !1;
                            var n = e.getBoundingClientRect(),
                                o = -t,
                                r = Math.max(document.documentElement.clientHeight, window.innerHeight) + t,
                                i = n.top,
                                s = n.bottom;
                            return Math.max(o, i) <= Math.min(r, s)
                        }(e, 50);
                        !n.isNeedRender && t && (n.isNeedRender = !0, n.stopLazyRendering())
                    }, setTimeout((function() {
                        n._scrollableParent && n._scrollableParent.addEventListener && n._scrollableParent.addEventListener("scroll", n._updateVisibility), n.ensureVisibility()
                    }), 10))
                }, t.prototype.ensureVisibility = function() {
                    this._updateVisibility && this._updateVisibility()
                }, t.prototype.stopLazyRendering = function() {
                    this._scrollableParent && this._updateVisibility && this._scrollableParent.removeEventListener && this._scrollableParent.removeEventListener("scroll", this._updateVisibility), this._scrollableParent = void 0, this._updateVisibility = void 0
                }, t.prototype.setIsLazyRendering = function(e) {
                    this.isLazyRenderingValue = e, this.isNeedRender = !e
                }, t.prototype.isLazyRendering = function() {
                    return !0 === this.isLazyRenderingValue
                }, Object.defineProperty(t.prototype, "id", {
                    get: function() {
                        return this.idValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "elements", {
                    get: function() {
                        return this.getPropertyValue("elements")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visibleElements", {
                    get: function() {
                        return this.getPropertyValue("visibleElements")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visible", {
                    get: function() {
                        return this.getPropertyValue("visible", !0)
                    },
                    set: function(e) {
                        this.setPropertyValue("visible", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isNeedRender", {
                    get: function() {
                        return this.getPropertyValue("isneedrender", !0)
                    },
                    set: function(e) {
                        this.setPropertyValue("isneedrender", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateVisible = function() {
                    var e = this.calcVisible();
                    this.setWidth(), this.visible = e
                }, t.prototype.addElement = function(e) {
                    this.elements.push(e), this.updateVisible()
                }, Object.defineProperty(t.prototype, "index", {
                    get: function() {
                        return this.panel.rows.indexOf(this)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setWidth = function() {
                    var e, t = this.visibleElements.length;
                    if (0 != t) {
                        for (var n = 1 === this.visibleElements.length, o = 0, r = [], i = 0; i < this.elements.length; i++) {
                            var s = this.elements[i];
                            if (this.setElementMaxMinWidth(s), s.isVisible) {
                                s.isSingleInRow = n;
                                var a = this.getElementWidth(s);
                                a && (s.renderWidth = this.getRenderedWidthFromWidth(a), r.push(s)), this.panel.isDefaultV2Theme || (null === (e = this.panel.parentQuestion) || void 0 === e ? void 0 : e.isDefaultV2Theme) || (s.rightIndent = o < t - 1 ? 1 : 0), o++
                            } else s.renderWidth = ""
                        }
                        for (i = 0; i < this.elements.length; i++) {
                            !(s = this.elements[i]).isVisible || r.indexOf(s) > -1 || (0 == r.length ? s.renderWidth = (100 / t).toFixed(6) + "%" : s.renderWidth = this.getRenderedCalcWidth(s, r, t))
                        }
                    }
                }, t.prototype.setElementMaxMinWidth = function(e) {
                    e.width && "string" == typeof e.width && -1 === e.width.indexOf("%") && (e.minWidth = e.width, e.maxWidth = e.width)
                }, t.prototype.getRenderedCalcWidth = function(e, t, n) {
                    for (var o = "100%", r = 0; r < t.length; r++) o += " - " + t[r].renderWidth;
                    var i = n - t.length;
                    return i > 1 && (o = "(" + o + ")/" + i.toString()), "calc(" + o + ")"
                }, t.prototype.getElementWidth = function(e) {
                    var t = e.width;
                    return t && "string" == typeof t ? t.trim() : ""
                }, t.prototype.getRenderedWidthFromWidth = function(e) {
                    return a.isNumber(e) ? e + "px" : e
                }, t.prototype.calcVisible = function() {
                    for (var e = [], t = 0; t < this.elements.length; t++) this.elements[t].isVisible && e.push(this.elements[t]);
                    return this.needToUpdateVisibleElements(e) && this.setPropertyValue("visibleElements", e), e.length > 0
                }, t.prototype.needToUpdateVisibleElements = function(e) {
                    if (e.length !== this.visibleElements.length) return !0;
                    for (var t = 0; t < e.length; t++)
                        if (e[t] !== this.visibleElements[t]) return !0;
                    return !1
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.stopLazyRendering()
                }, t.prototype.getRowCss = function() {
                    return (new ct).append(this.panel.cssClasses.row).append(this.panel.cssClasses.pageRow, this.panel.isPage).append(this.panel.cssClasses.rowMultiple, this.visibleElements.length > 1).toString()
                }, t.rowCounter = 100, t
            }(he),
            Wo = function(e) {
                function t(n) {
                    void 0 === n && (n = "");
                    var o = e.call(this, n) || this;
                    return o.isQuestionsReady = !1, o.questionsValue = new Array, o.isRandomizing = !1, o.createNewArray("rows"), o.elementsValue = o.createNewArray("elements", o.onAddElement.bind(o), o.onRemoveElement.bind(o)), o.id = t.getPanelId(), o.addExpressionProperty("visibleIf", (function(e, t) {
                        o.visible = !0 === t
                    }), (function(e) {
                        return !o.areInvisibleElementsShowing
                    })), o.addExpressionProperty("enableIf", (function(e, t) {
                        o.readOnly = !1 === t
                    })), o.addExpressionProperty("requiredIf", (function(e, t) {
                        o.isRequired = !0 === t
                    })), o.createLocalizableString("requiredErrorText", o), o.registerPropertyChangedHandlers(["questionTitleLocation"], (function() {
                        o.onVisibleChanged.bind(o), o.updateElementCss(!0)
                    })), o.registerPropertyChangedHandlers(["questionStartIndex", "showQuestionNumbers"], (function() {
                        o.updateVisibleIndexes()
                    })), o
                }
                return zo(t, e), t.getPanelId = function() {
                    return "sp_" + t.panelCounter++
                }, t.prototype.getType = function() {
                    return "panelbase"
                }, t.prototype.setSurveyImpl = function(t, n) {
                    e.prototype.setSurveyImpl.call(this, t, n), this.isDesignMode && this.onVisibleChanged();
                    for (var o = 0; o < this.elements.length; o++) this.elements[o].setSurveyImpl(t, n)
                }, t.prototype.endLoadingFromJson = function() {
                    e.prototype.endLoadingFromJson.call(this), this.updateDescriptionVisibility(this.description), this.markQuestionListDirty(), this.onRowsChanged()
                }, Object.defineProperty(t.prototype, "hasTitle", {
                    get: function() {
                        return this.canShowTitle() && this.title.length > 0 || this.showTitle && this.isDesignMode && s.allowShowEmptyTitleInDesignMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canShowTitle = function() {
                    return !0
                }, Object.defineProperty(t.prototype, "_showDescription", {
                    get: function() {
                        return this.survey && this.survey.showPageTitles && this.hasDescription || this.showDescription && this.isDesignMode && s.allowShowEmptyTitleInDesignMode && s.allowShowEmptyDescriptionInDesignMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this);
                    for (var t = 0; t < this.elements.length; t++) this.elements[t].localeChanged()
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this);
                    for (var t = 0; t < this.elements.length; t++) this.elements[t].locStrsChanged()
                }, Object.defineProperty(t.prototype, "requiredText", {
                    get: function() {
                        return null != this.survey && this.isRequired ? this.survey.requiredText : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titlePattern", {
                    get: function() {
                        return this.survey ? this.survey.questionTitlePattern : "numTitleRequire"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRequireTextOnStart", {
                    get: function() {
                        return this.isRequired && "requireNumTitle" == this.titlePattern
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRequireTextBeforeTitle", {
                    get: function() {
                        return this.isRequired && "numRequireTitle" == this.titlePattern
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRequireTextAfterTitle", {
                    get: function() {
                        return this.isRequired && "numTitleRequire" == this.titlePattern
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "requiredErrorText", {
                    get: function() {
                        return this.getLocalizableStringText("requiredErrorText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("requiredErrorText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locRequiredErrorText", {
                    get: function() {
                        return this.getLocalizableString("requiredErrorText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "questionsOrder", {
                    get: function() {
                        return this.getPropertyValue("questionsOrder")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionsOrder", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canRandomize = function(e) {
                    return e && "initial" !== this.questionsOrder || "random" === this.questionsOrder
                }, t.prototype.randomizeElements = function(e) {
                    if (this.canRandomize(e) && !this.isRandomizing) {
                        this.isRandomizing = !0;
                        for (var t = [], n = this.elements, o = 0; o < n.length; o++) t.push(n[o]);
                        var r = a.randomizeArray(t);
                        this.setArrayPropertyDirectly("elements", r, !1), this.updateRows(), this.updateVisibleIndexes(), this.isRandomizing = !1
                    }
                }, Object.defineProperty(t.prototype, "areQuestionsRandomized", {
                    get: function() {
                        return "random" == ("default" == this.questionsOrder && this.survey ? this.survey.questionsOrder : this.questionsOrder)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "parent", {
                    get: function() {
                        return this.getPropertyValue("parent", null)
                    },
                    set: function(e) {
                        this.setPropertyValue("parent", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "depth", {
                    get: function() {
                        return null == this.parent ? 0 : this.parent.depth + 1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visibleIf", {
                    get: function() {
                        return this.getPropertyValue("visibleIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("visibleIf", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.calcCssClasses = function(e) {
                    var t = {
                        panel: {},
                        error: {},
                        row: "",
                        rowMultiple: ""
                    };
                    return this.copyCssClasses(t.panel, e.panel), this.copyCssClasses(t.error, e.error), e.row && (t.row = e.row), e.rowMultiple && (t.rowMultiple = e.rowMultiple), this.survey && this.survey.updatePanelCssClasses(this, t), t
                }, Object.defineProperty(t.prototype, "id", {
                    get: function() {
                        return this.getPropertyValue("id")
                    },
                    set: function(e) {
                        this.setPropertyValue("id", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isPanel", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getPanel = function() {
                    return this
                }, t.prototype.getLayoutType = function() {
                    return "row"
                }, t.prototype.isLayoutTypeSupported = function(e) {
                    return "flow" !== e
                }, Object.defineProperty(t.prototype, "questions", {
                    get: function() {
                        if (!this.isQuestionsReady) {
                            this.questionsValue = [];
                            for (var e = 0; e < this.elements.length; e++) {
                                var t = this.elements[e];
                                if (t.isPanel)
                                    for (var n = t.questions, o = 0; o < n.length; o++) this.questionsValue.push(n[o]);
                                else this.questionsValue.push(t)
                            }
                            this.isQuestionsReady = !0
                        }
                        return this.questionsValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getValidName = function(e) {
                    return e ? e.trim() : e
                }, t.prototype.getQuestionByName = function(e) {
                    for (var t = this.questions, n = 0; n < t.length; n++)
                        if (t[n].name == e) return t[n];
                    return null
                }, t.prototype.getElementByName = function(e) {
                    for (var t = this.elements, n = 0; n < t.length; n++) {
                        var o = t[n];
                        if (o.name == e) return o;
                        var r = o.getPanel();
                        if (r) {
                            var i = r.getElementByName(e);
                            if (i) return i
                        }
                    }
                    return null
                }, t.prototype.getQuestionByValueName = function(e) {
                    for (var t = this.questions, n = 0; n < t.length; n++)
                        if (t[n].getValueName() == e) return t[n];
                    return null
                }, t.prototype.getValue = function() {
                    for (var e = {}, t = this.questions, n = 0; n < t.length; n++) {
                        var o = t[n];
                        if (!o.isEmpty()) {
                            var r = o.getValueName();
                            if (e[r] = o.value, this.data) {
                                var i = this.data.getComment(r);
                                i && (e[r + he.commentSuffix] = i)
                            }
                        }
                    }
                    return e
                }, t.prototype.getDisplayValue = function(e) {
                    for (var t = {}, n = this.questions, o = 0; o < n.length; o++) {
                        var r = n[o];
                        if (!r.isEmpty()) t[e ? r.title : r.getValueName()] = r.getDisplayValue(e)
                    }
                    return t
                }, t.prototype.getComments = function() {
                    var e = {};
                    if (!this.data) return e;
                    for (var t = this.questions, n = 0; n < t.length; n++) {
                        var o = t[n],
                            r = this.data.getComment(o.getValueName());
                        r && (e[o.getValueName()] = r)
                    }
                    return e
                }, t.prototype.clearIncorrectValues = function() {
                    for (var e = 0; e < this.elements.length; e++) this.elements[e].clearIncorrectValues()
                }, t.prototype.clearErrors = function() {
                    for (var e = 0; e < this.elements.length; e++) this.elements[e].clearErrors();
                    this.errors = []
                }, t.prototype.markQuestionListDirty = function() {
                    this.isQuestionsReady = !1, this.parent && this.parent.markQuestionListDirty()
                }, Object.defineProperty(t.prototype, "elements", {
                    get: function() {
                        return this.elementsValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getElementsInDesign = function(e) {
                    return void 0 === e && (e = !1), this.elements
                }, t.prototype.containsElement = function(e) {
                    for (var t = 0; t < this.elements.length; t++) {
                        var n = this.elements[t];
                        if (n == e) return !0;
                        var o = n.getPanel();
                        if (o && o.containsElement(e)) return !0
                    }
                    return !1
                }, Object.defineProperty(t.prototype, "isRequired", {
                    get: function() {
                        return this.getPropertyValue("isRequired", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isRequired", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "requiredIf", {
                    get: function() {
                        return this.getPropertyValue("requiredIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("requiredIf", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.searchText = function(t, n) {
                    e.prototype.searchText.call(this, t, n);
                    for (var o = 0; o < this.elements.length; o++) this.elements[o].searchText(t, n)
                }, t.prototype.hasErrors = function(e, t, n) {
                    return void 0 === e && (e = !0), void 0 === t && (t = !1), void 0 === n && (n = null), n = n || {
                        fireCallback: e,
                        focuseOnFirstError: t,
                        firstErrorQuestion: null,
                        result: !1
                    }, this.hasErrorsCore(n), n.firstErrorQuestion && n.firstErrorQuestion.focus(!0), n.result
                }, t.prototype.hasErrorsInPanels = function(e) {
                    var t = [];
                    if (this.hasRequiredError(e, t), this.survey) {
                        var n = this.survey.validatePanel(this);
                        n && (t.push(n), e.result = !0)
                    }
                    e.fireCallback && (this.survey && this.survey.beforeSettingPanelErrors(this, t), this.errors = t)
                }, t.prototype.getErrorCustomText = function(e, t) {
                    return this.survey ? this.survey.getSurveyErrorCustomText(this, e, t) : e
                }, t.prototype.hasRequiredError = function(e, t) {
                    if (this.isRequired) {
                        var n = [];
                        if (this.addQuestionsToList(n, !0), 0 != n.length) {
                            for (var o = 0; o < n.length; o++)
                                if (!n[o].isEmpty()) return;
                            e.result = !0, t.push(new xe(this.requiredErrorText, this)), e.focuseOnFirstError && !e.firstErrorQuestion && (e.firstErrorQuestion = n[0])
                        }
                    }
                }, t.prototype.hasErrorsCore = function(e) {
                    for (var t = this.elements, n = null, o = 0; o < t.length; o++)
                        if ((n = t[o]).isVisible)
                            if (n.isPanel) n.hasErrorsCore(e);
                            else {
                                var r = n;
                                if (r.isReadOnly) continue;
                                r.hasErrors(e.fireCallback, e) && (e.focuseOnFirstError && null == e.firstErrorQuestion && (e.firstErrorQuestion = r), e.result = !0)
                            } this.hasErrorsInPanels(e), this.updateContainsErrors()
                }, t.prototype.getContainsErrors = function() {
                    var t = e.prototype.getContainsErrors.call(this);
                    if (t) return t;
                    for (var n = this.elements, o = 0; o < n.length; o++)
                        if (n[o].containsErrors) return !0;
                    return !1
                }, t.prototype.updateElementVisibility = function() {
                    for (var e = 0; e < this.elements.length; e++) {
                        var t = this.elements[e];
                        t.setPropertyValue("isVisible", t.isVisible), t.isPanel && t.updateElementVisibility()
                    }
                }, t.prototype.getFirstQuestionToFocus = function(e, t) {
                    if (void 0 === e && (e = !1), void 0 === t && (t = !1), !e && !t && this.isCollapsed) return null;
                    for (var n = this.elements, o = 0; o < n.length; o++) {
                        var r = n[o];
                        if (r.isVisible && (t || !r.isCollapsed))
                            if (r.isPanel) {
                                var i = r.getFirstQuestionToFocus(e, t);
                                if (i) return i
                            } else {
                                var s = r.getFirstQuestionToFocus(e);
                                if (s) return s
                            }
                    }
                    return null
                }, t.prototype.focusFirstQuestion = function() {
                    var e = this.getFirstQuestionToFocus();
                    e && e.focus()
                }, t.prototype.focusFirstErrorQuestion = function() {
                    var e = this.getFirstQuestionToFocus(!0);
                    e && e.focus()
                }, t.prototype.addQuestionsToList = function(e, t, n) {
                    void 0 === t && (t = !1), void 0 === n && (n = !1), this.addElementsToList(e, t, n, !1)
                }, t.prototype.addPanelsIntoList = function(e, t, n) {
                    void 0 === t && (t = !1), void 0 === n && (n = !1), this.addElementsToList(e, t, n, !0)
                }, t.prototype.addElementsToList = function(e, t, n, o) {
                    t && !this.visible || this.addElementsToListCore(e, this.elements, t, n, o)
                }, t.prototype.addElementsToListCore = function(e, t, n, o, r) {
                    for (var i = 0; i < t.length; i++) {
                        var s = t[i];
                        n && !s.visible || ((r && s.isPanel || !r && !s.isPanel) && e.push(s), s.isPanel ? s.addElementsToListCore(e, s.elements, n, o, r) : o && this.addElementsToListCore(e, s.getElementsInDesign(!1), n, o, r))
                    }
                }, t.prototype.updateCustomWidgets = function() {
                    for (var e = 0; e < this.elements.length; e++) this.elements[e].updateCustomWidgets()
                }, Object.defineProperty(t.prototype, "questionTitleLocation", {
                    get: function() {
                        return this.getPropertyValue("questionTitleLocation")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionTitleLocation", e.toLowerCase())
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionTitleLocation = function() {
                    return this.onGetQuestionTitleLocation ? this.onGetQuestionTitleLocation() : "default" != this.questionTitleLocation ? this.questionTitleLocation : this.parent ? this.parent.getQuestionTitleLocation() : this.survey ? this.survey.questionTitleLocation : "top"
                }, t.prototype.getStartIndex = function() {
                    return this.parent ? this.parent.getQuestionStartIndex() : this.survey ? this.survey.questionStartIndex : ""
                }, t.prototype.getQuestionStartIndex = function() {
                    return this.getStartIndex()
                }, t.prototype.getChildrenLayoutType = function() {
                    return "row"
                }, t.prototype.getProgressInfo = function() {
                    return jt.getProgressInfoByElements(this.elements, this.isRequired)
                }, Object.defineProperty(t.prototype, "root", {
                    get: function() {
                        for (var e = this; e.parent;) e = e.parent;
                        return e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.childVisibilityChanged = function() {
                    this.getIsPageVisible(null) !== this.getPropertyValue("isVisible", !0) && this.onVisibleChanged()
                }, t.prototype.createRowAndSetLazy = function(e) {
                    var t = this.createRow();
                    return t.setIsLazyRendering(this.isLazyRenderInRow(e)), t
                }, t.prototype.createRow = function() {
                    return new Uo(this)
                }, t.prototype.onSurveyLoad = function() {
                    for (var e = 0; e < this.elements.length; e++) this.elements[e].onSurveyLoad();
                    this.onElementVisibilityChanged(this)
                }, t.prototype.onFirstRendering = function() {
                    e.prototype.onFirstRendering.call(this);
                    for (var t = 0; t < this.elements.length; t++) this.elements[t].onFirstRendering();
                    this.onRowsChanged()
                }, t.prototype.updateRows = function() {
                    if (!this.isLoadingFromJson) {
                        for (var e = 0; e < this.elements.length; e++) this.elements[e].isPanel && this.elements[e].updateRows();
                        this.onRowsChanged()
                    }
                }, Object.defineProperty(t.prototype, "rows", {
                    get: function() {
                        return this.getPropertyValue("rows")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.ensureRowsVisibility = function() {
                    this.rows.forEach((function(e) {
                        e.ensureVisibility()
                    }))
                }, t.prototype.onRowsChanged = function() {
                    this.isLoadingFromJson || this.setArrayPropertyDirectly("rows", this.buildRows())
                }, t.prototype.onAddElement = function(e, t) {
                    var n = this;
                    if (e.setSurveyImpl(this.surveyImpl), e.parent = this, this.markQuestionListDirty(), this.updateRowsOnElementAdded(e, t), e.isPanel) {
                        var o = e;
                        this.survey && this.survey.panelAdded(o, t, this, this.root)
                    } else if (this.survey) {
                        var r = e;
                        this.survey.questionAdded(r, t, this, this.root)
                    }
                    this.addElementCallback && this.addElementCallback(e);
                    e.registerPropertyChangedHandlers(["visible", "isVisible"], (function() {
                        n.onElementVisibilityChanged(e)
                    }), this.id), e.registerPropertyChangedHandlers(["startWithNewLine"], (function() {
                        n.onElementStartWithNewLineChanged(e)
                    }), this.id), this.onElementVisibilityChanged(this)
                }, t.prototype.onRemoveElement = function(e) {
                    e.parent = null, this.markQuestionListDirty(), e.unregisterPropertyChangedHandlers(["visible", "isVisible", "startWithNewLine"], this.id), this.updateRowsOnElementRemoved(e), this.isRandomizing || (e.isPanel ? this.survey && this.survey.panelRemoved(e) : this.survey && this.survey.questionRemoved(e), this.removeElementCallback && this.removeElementCallback(e), this.onElementVisibilityChanged(this))
                }, t.prototype.onElementVisibilityChanged = function(e) {
                    this.isLoadingFromJson || this.isRandomizing || (this.updateRowsVisibility(e), this.childVisibilityChanged(), this.parent && this.parent.onElementVisibilityChanged(this))
                }, t.prototype.onElementStartWithNewLineChanged = function(e) {
                    this.onRowsChanged()
                }, t.prototype.updateRowsVisibility = function(e) {
                    for (var t = this.rows, n = 0; n < t.length; n++) {
                        var o = t[n];
                        if (o.elements.indexOf(e) > -1) {
                            o.updateVisible(), o.visible && !o.isNeedRender && (o.isNeedRender = !0);
                            break
                        }
                    }
                }, t.prototype.canBuildRows = function() {
                    return !this.isLoadingFromJson && "row" == this.getChildrenLayoutType()
                }, t.prototype.buildRows = function() {
                    if (!this.canBuildRows()) return [];
                    for (var e = new Array, t = 0; t < this.elements.length; t++) {
                        var n = this.elements[t],
                            o = 0 == t || n.startWithNewLine,
                            r = o ? this.createRowAndSetLazy(e.length) : e[e.length - 1];
                        o && e.push(r), r.addElement(n)
                    }
                    for (t = 0; t < e.length; t++) e[t].updateVisible();
                    return e
                }, t.prototype.isLazyRenderInRow = function(e) {
                    return !(!this.survey || !this.survey.isLazyRendering) && (e >= s.lazyRowsRenderingStartRow || !this.canRenderFirstRows())
                }, t.prototype.canRenderFirstRows = function() {
                    return this.isPage
                }, t.prototype.getDragDropInfo = function() {
                    var e = this.getPage(this.parent);
                    return e ? e.getDragDropInfo() : void 0
                }, t.prototype.updateRowsOnElementAdded = function(e, t) {
                    if (this.canBuildRows()) {
                        var n = s.supportCreatorV2 ? this.getDragDropInfo() : void 0;
                        n || ((n = new Qo(null, e)).target = e, n.isEdge = this.elements.length > 1, this.elements.length < 2 ? n.destination = this : (n.isBottom = t > 0, n.destination = 0 == t ? this.elements[1] : this.elements[t - 1])), this.dragDropAddTargetToRow(n, null)
                    }
                }, t.prototype.updateRowsOnElementRemoved = function(e) {
                    this.canBuildRows() && this.updateRowsRemoveElementFromRow(e, this.findRowByElement(e))
                }, t.prototype.updateRowsRemoveElementFromRow = function(e, t) {
                    if (t && t.panel) {
                        var n = t.elements.indexOf(e);
                        n < 0 || (t.elements.splice(n, 1), t.elements.length > 0 ? (t.elements[0].startWithNewLine = !0, t.updateVisible()) : t.index >= 0 && t.panel.rows.splice(t.index, 1))
                    }
                }, t.prototype.findRowByElement = function(e) {
                    for (var t = this.rows, n = 0; n < t.length; n++)
                        if (t[n].elements.indexOf(e) > -1) return t[n];
                    return null
                }, t.prototype.elementWidthChanged = function(e) {
                    if (!this.isLoadingFromJson) {
                        var t = this.findRowByElement(e);
                        t && t.updateVisible()
                    }
                }, Object.defineProperty(t.prototype, "processedTitle", {
                    get: function() {
                        return this.getRenderedTitle(this.locTitle.textOrHtml)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getRenderedTitle = function(e) {
                    return null != this.textProcessor ? this.textProcessor.processText(e, !0) : e
                }, Object.defineProperty(t.prototype, "visible", {
                    get: function() {
                        return this.getPropertyValue("visible", !0)
                    },
                    set: function(e) {
                        e !== this.visible && (this.setPropertyValue("visible", e), this.setPropertyValue("isVisible", this.isVisible), this.isLoadingFromJson || this.onVisibleChanged())
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onVisibleChanged = function() {
                    if (!this.isRandomizing && (this.setPropertyValue("isVisible", this.isVisible), this.survey && this.survey.isClearValueOnHiddenContainer && !this.isLoadingFromJson))
                        for (var e = this.questions, t = 0; t < e.length; t++) this.isVisible ? e[t].updateValueWithDefaults() : e[t].clearValueIfInvisible()
                }, Object.defineProperty(t.prototype, "isVisible", {
                    get: function() {
                        return this.areInvisibleElementsShowing || this.getIsPageVisible(null)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getIsPageVisible = function(e) {
                    if (!this.visible) return !1;
                    for (var t = 0; t < this.elements.length; t++)
                        if (this.elements[t] != e && this.elements[t].isVisible) return !0;
                    return !1
                }, t.prototype.setVisibleIndex = function(e) {
                    if (!this.isVisible || e < 0) return this.resetVisibleIndexes(), 0;
                    this.lastVisibleIndex = e;
                    var t = e;
                    e += this.beforeSetVisibleIndex(e);
                    for (var n = this.getPanelStartIndex(e), o = n, r = 0; r < this.elements.length; r++) o += this.elements[r].setVisibleIndex(o);
                    return this.isContinueNumbering() && (e += o - n), e - t
                }, t.prototype.updateVisibleIndexes = function() {
                    void 0 !== this.lastVisibleIndex && (this.resetVisibleIndexes(), this.setVisibleIndex(this.lastVisibleIndex))
                }, t.prototype.resetVisibleIndexes = function() {
                    for (var e = 0; e < this.elements.length; e++) this.elements[e].setVisibleIndex(-1)
                }, t.prototype.beforeSetVisibleIndex = function(e) {
                    return 0
                }, t.prototype.getPanelStartIndex = function(e) {
                    return e
                }, t.prototype.isContinueNumbering = function() {
                    return !0
                }, Object.defineProperty(t.prototype, "isReadOnly", {
                    get: function() {
                        var e = !!this.parent && this.parent.isReadOnly,
                            t = !!this.survey && this.survey.isDisplayMode;
                        return this.readOnly || e || t
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onReadOnlyChanged = function() {
                    for (var t = 0; t < this.elements.length; t++) {
                        var n = this.elements[t];
                        n.setPropertyValue("isReadOnly", n.isReadOnly)
                    }
                    e.prototype.onReadOnlyChanged.call(this)
                }, t.prototype.updateElementCss = function(t) {
                    e.prototype.updateElementCss.call(this, t);
                    for (var n = 0; n < this.elements.length; n++) {
                        this.elements[n].updateElementCss(t)
                    }
                }, Object.defineProperty(t.prototype, "enableIf", {
                    get: function() {
                        return this.getPropertyValue("enableIf", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("enableIf", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.addElement = function(e, t) {
                    return void 0 === t && (t = -1), !!this.canAddElement(e) && (t < 0 || t >= this.elements.length ? this.elements.push(e) : this.elements.splice(t, 0, e), !0)
                }, t.prototype.insertElementAfter = function(e, t) {
                    var n = this.elements.indexOf(t);
                    n >= 0 && this.addElement(e, n + 1)
                }, t.prototype.insertElementBefore = function(e, t) {
                    var n = this.elements.indexOf(t);
                    n >= 0 && this.addElement(e, n)
                }, t.prototype.canAddElement = function(e) {
                    return !!e && e.isLayoutTypeSupported(this.getChildrenLayoutType())
                }, t.prototype.addQuestion = function(e, t) {
                    return void 0 === t && (t = -1), this.addElement(e, t)
                }, t.prototype.addPanel = function(e, t) {
                    return void 0 === t && (t = -1), this.addElement(e, t)
                }, t.prototype.addNewQuestion = function(e, t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = -1);
                    var o = ln.Instance.createQuestion(e, t);
                    return this.addQuestion(o, n) ? o : null
                }, t.prototype.addNewPanel = function(e) {
                    void 0 === e && (e = null);
                    var t = this.createNewPanel(e);
                    return this.addPanel(t) ? t : null
                }, t.prototype.indexOf = function(e) {
                    return this.elements.indexOf(e)
                }, t.prototype.createNewPanel = function(e) {
                    var t = I.createClass("panel");
                    return t.name = e, t
                }, t.prototype.removeElement = function(e) {
                    var t = this.elements.indexOf(e);
                    if (t < 0) {
                        for (var n = 0; n < this.elements.length; n++)
                            if (this.elements[n].removeElement(e)) return !0;
                        return !1
                    }
                    return this.elements.splice(t, 1), !0
                }, t.prototype.removeQuestion = function(e) {
                    this.removeElement(e)
                }, t.prototype.runCondition = function(e, t) {
                    if (!this.isDesignMode && !this.isLoadingFromJson) {
                        for (var n = this.elements.slice(), o = 0; o < n.length; o++) n[o].runCondition(e, t);
                        this.runConditionCore(e, t)
                    }
                }, t.prototype.onAnyValueChanged = function(e) {
                    for (var t = this.elements, n = 0; n < t.length; n++) t[n].onAnyValueChanged(e)
                }, t.prototype.checkBindings = function(e, t) {
                    for (var n = this.elements, o = 0; o < n.length; o++) n[o].checkBindings(e, t)
                }, t.prototype.dragDropAddTarget = function(e) {
                    var t = this.dragDropFindRow(e.target);
                    this.dragDropAddTargetToRow(e, t) && this.updateRowsRemoveElementFromRow(e.target, t)
                }, t.prototype.dragDropFindRow = function(e) {
                    if (!e || e.isPage) return null;
                    for (var t = e, n = this.rows, o = 0; o < n.length; o++)
                        if (n[o].elements.indexOf(t) > -1) return n[o];
                    for (o = 0; o < this.elements.length; o++) {
                        var r = this.elements[o].getPanel();
                        if (r) {
                            var i = r.dragDropFindRow(t);
                            if (i) return i
                        }
                    }
                    return null
                }, t.prototype.dragDropAddTargetToRow = function(e, t) {
                    if (!e.destination) return !0;
                    if (this.dragDropAddTargetToEmptyPanel(e)) return !0;
                    var n = e.destination,
                        o = this.dragDropFindRow(n);
                    return !o || (s.supportCreatorV2 && this.isDesignMode ? o.elements.length > 1 ? this.dragDropAddTargetToExistingRow(e, o, t) : this.dragDropAddTargetToNewRow(e, o, t) : e.target.startWithNewLine ? this.dragDropAddTargetToNewRow(e, o, t) : this.dragDropAddTargetToExistingRow(e, o, t))
                }, t.prototype.dragDropAddTargetToEmptyPanel = function(e) {
                    if (e.destination.isPage) return this.dragDropAddTargetToEmptyPanelCore(this.root, e.target, e.isBottom), !0;
                    var t = e.destination;
                    if (t.isPanel && !e.isEdge) {
                        var n = t;
                        if (e.target.template === t) return !1;
                        if (e.nestedPanelDepth < 0 || e.nestedPanelDepth >= n.depth) return this.dragDropAddTargetToEmptyPanelCore(t, e.target, e.isBottom), !0
                    }
                    return !1
                }, t.prototype.dragDropAddTargetToExistingRow = function(e, t, n) {
                    var o = t.elements.indexOf(e.destination);
                    if (0 == o && !e.isBottom)
                        if (this.isDesignMode && s.supportCreatorV2);
                        else if (t.elements[0].startWithNewLine) return t.index > 0 ? (e.isBottom = !0, t = t.panel.rows[t.index - 1], e.destination = t.elements[t.elements.length - 1], this.dragDropAddTargetToExistingRow(e, t, n)) : this.dragDropAddTargetToNewRow(e, t, n);
                    var r = -1;
                    n == t && (r = t.elements.indexOf(e.target)), e.isBottom && o++;
                    var i = this.findRowByElement(e.source);
                    return (i != t || i.elements.indexOf(e.source) != o) && (o != r && (r > -1 && (t.elements.splice(r, 1), r < o && o--), t.elements.splice(o, 0, e.target), t.updateVisible(), r < 0))
                }, t.prototype.dragDropAddTargetToNewRow = function(e, t, n) {
                    var o = t.panel.createRowAndSetLazy(t.panel.rows.length);
                    this.isDesignMode && s.supportCreatorV2 && o.setIsLazyRendering(!1), o.addElement(e.target);
                    var r = t.index;
                    if (e.isBottom && r++, n && n.panel == o.panel && n.index == r) return !1;
                    var i = this.findRowByElement(e.source);
                    return (!i || i.panel != o.panel || 1 != i.elements.length || i.index != r) && (t.panel.rows.splice(r, 0, o), !0)
                }, t.prototype.dragDropAddTargetToEmptyPanelCore = function(e, t, n) {
                    var o = e.createRow();
                    o.addElement(t), 0 == e.elements.length || n ? e.rows.push(o) : e.rows.splice(0, 0, o)
                }, t.prototype.dragDropMoveElement = function(e, t, n) {
                    n > e.parent.elements.indexOf(e) && n--, this.removeElement(e), this.addElement(t, n)
                }, t.prototype.needResponsiveWidth = function() {
                    var e = !1;
                    return this.elements.forEach((function(t) {
                        t.needResponsiveWidth() && (e = !0)
                    })), this.rows.forEach((function(t) {
                        t.elements.length > 1 && (e = !0)
                    })), e
                }, Object.defineProperty(t.prototype, "hasDescriptionUnderTitle", {
                    get: function() {
                        return this.hasDescription
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssHeader", {
                    get: function() {
                        return this.cssClasses.panel.header
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssDescription", {
                    get: function() {
                        return this.cssClasses.panel.description
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "no", {
                    get: function() {
                        return ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.dispose = function() {
                    if (e.prototype.dispose.call(this), this.rows) {
                        for (var t = 0; t < this.rows.length; t++) this.rows[t].dispose();
                        this.rows.splice(0, this.rows.length)
                    }
                    for (t = 0; t < this.elements.length; t++) this.elements[t].dispose();
                    this.elements.splice(0, this.elements.length)
                }, t.panelCounter = 100, Ho([y({
                    defaultValue: !0
                })], t.prototype, "showTitle", void 0), Ho([y({
                    defaultValue: !0
                })], t.prototype, "showDescription", void 0), t
            }(jt),
            $o = function(e) {
                function t(t) {
                    void 0 === t && (t = "");
                    var n = e.call(this, t) || this;
                    return n.focusIn = function() {
                        n.survey.whenPanelFocusIn(n)
                    }, n.createNewArray("footerActions"), n.registerPropertyChangedHandlers(["width"], (function() {
                        n.parent && n.parent.elementWidthChanged(n)
                    })), n.registerPropertyChangedHandlers(["indent", "innerIndent", "rightIndent"], (function() {
                        n.onIndentChanged()
                    })), n
                }
                return zo(t, e), t.prototype.getType = function() {
                    return "panel"
                }, Object.defineProperty(t.prototype, "contentId", {
                    get: function() {
                        return this.id + "_content"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getSurvey = function(t) {
                    return void 0 === t && (t = !1), t ? this.parent ? this.parent.getSurvey(t) : null : e.prototype.getSurvey.call(this, t)
                }, t.prototype.onSurveyLoad = function() {
                    e.prototype.onSurveyLoad.call(this), this.onIndentChanged()
                }, t.prototype.onSetData = function() {
                    e.prototype.onSetData.call(this), this.onIndentChanged()
                }, Object.defineProperty(t.prototype, "isPanel", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "page", {
                    get: function() {
                        return this.getPage(this.parent)
                    },
                    set: function(e) {
                        this.setPage(this.parent, e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.delete = function() {
                    this.parent && this.removeSelfFromList(this.parent.elements)
                }, t.prototype.moveTo = function(e, t) {
                    return void 0 === t && (t = null), this.moveToBase(this.parent, e, t)
                }, Object.defineProperty(t.prototype, "visibleIndex", {
                    get: function() {
                        return this.getPropertyValue("visibleIndex", -1)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getTitleOwner = function() {
                    return this
                }, Object.defineProperty(t.prototype, "showNumber", {
                    get: function() {
                        return this.getPropertyValue("showNumber", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("showNumber", e), this.notifySurveyOnVisibilityChanged()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showQuestionNumbers", {
                    get: function() {
                        return this.getPropertyValue("showQuestionNumbers")
                    },
                    set: function(e) {
                        this.setPropertyValue("showQuestionNumbers", e), this.notifySurveyOnVisibilityChanged()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "questionStartIndex", {
                    get: function() {
                        return this.getPropertyValue("questionStartIndex", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("questionStartIndex", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionStartIndex = function() {
                    return this.questionStartIndex ? this.questionStartIndex : e.prototype.getQuestionStartIndex.call(this)
                }, Object.defineProperty(t.prototype, "no", {
                    get: function() {
                        return this.getPropertyValue("no", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setNo = function(e) {
                    this.setPropertyValue("no", a.getNumberByIndex(this.visibleIndex, this.getStartIndex()))
                }, t.prototype.beforeSetVisibleIndex = function(e) {
                    var t = -1;
                    return !this.showNumber || !this.isDesignMode && this.locTitle.isEmpty || (t = e), this.setPropertyValue("visibleIndex", t), this.setNo(t), t < 0 ? 0 : 1
                }, t.prototype.getPanelStartIndex = function(e) {
                    return "off" == this.showQuestionNumbers ? -1 : "onpanel" == this.showQuestionNumbers ? 0 : e
                }, t.prototype.isContinueNumbering = function() {
                    return "off" != this.showQuestionNumbers && "onpanel" != this.showQuestionNumbers
                }, t.prototype.notifySurveyOnVisibilityChanged = function() {
                    null == this.survey || this.isLoadingFromJson || this.survey.panelVisibilityChanged(this, this.isVisible)
                }, t.prototype.hasErrorsCore = function(t) {
                    e.prototype.hasErrorsCore.call(this, t), this.isCollapsed && t.result && t.fireCallback && this.expand()
                }, t.prototype.getRenderedTitle = function(t) {
                    if (!t) {
                        if (this.isCollapsed || this.isExpanded) return this.name;
                        if (this.isDesignMode) return "[" + this.name + "]"
                    }
                    return e.prototype.getRenderedTitle.call(this, t)
                }, Object.defineProperty(t.prototype, "innerIndent", {
                    get: function() {
                        return this.getPropertyValue("innerIndent")
                    },
                    set: function(e) {
                        this.setPropertyValue("innerIndent", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "startWithNewLine", {
                    get: function() {
                        return this.getPropertyValue("startWithNewLine")
                    },
                    set: function(e) {
                        this.setPropertyValue("startWithNewLine", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowAdaptiveActions", {
                    get: function() {
                        return this.getPropertyValue("allowAdaptiveActions")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowAdaptiveActions", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "innerPaddingLeft", {
                    get: function() {
                        return this.getPropertyValue("innerPaddingLeft", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("innerPaddingLeft", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onIndentChanged = function() {
                    this.getSurvey() && (this.innerPaddingLeft = this.getIndentSize(this.innerIndent), this.paddingLeft = this.getIndentSize(this.indent), this.paddingRight = this.getIndentSize(this.rightIndent))
                }, t.prototype.getIndentSize = function(e) {
                    if (e < 1) return "";
                    var t = this.survey.css;
                    return t && t.question.indent ? e * t.question.indent + "px" : ""
                }, t.prototype.clearOnDeletingContainer = function() {
                    this.elements.forEach((function(e) {
                        (e instanceof Xt || e instanceof t) && e.clearOnDeletingContainer()
                    }))
                }, Object.defineProperty(t.prototype, "footerActions", {
                    get: function() {
                        return this.getPropertyValue("footerActions")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "footerToolbarCss", {
                    get: function() {
                        var e;
                        return this.footerToolbarCssValue || (null === (e = this.cssClasses.panel) || void 0 === e ? void 0 : e.footer)
                    },
                    set: function(e) {
                        this.footerToolbarCssValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getFooterToolbar = function() {
                    var e, t = this;
                    if (!this.footerToolbarValue) {
                        var n = this.footerActions;
                        this.hasEditButton && n.push({
                            id: "cancel-preview",
                            title: this.survey.editText,
                            innerCss: this.survey.cssNavigationEdit,
                            action: function() {
                                t.cancelPreview()
                            }
                        }), n = this.onGetFooterActionsCallback ? this.onGetFooterActionsCallback() : null === (e = this.survey) || void 0 === e ? void 0 : e.getUpdatedPanelFooterActions(this, n), this.footerToolbarValue = this.createActionContainer(this.allowAdaptiveActions), this.footerToolbarValue.containerCss = this.footerToolbarCss, this.footerToolbarValue.setItems(n)
                    }
                    return this.footerToolbarValue
                }, Object.defineProperty(t.prototype, "hasEditButton", {
                    get: function() {
                        return !(!this.survey || "preview" !== this.survey.state) && 1 === this.depth
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.cancelPreview = function() {
                    this.hasEditButton && this.survey.cancelPreviewByPage(this)
                }, Object.defineProperty(t.prototype, "cssTitle", {
                    get: function() {
                        return (new ct).append(this.cssClasses.panel.title).append(this.cssClasses.panel.titleExpandable, "default" !== this.state).append(this.cssClasses.panel.titleExpanded, this.isExpanded).append(this.cssClasses.panel.titleCollapsed, this.isCollapsed).append(this.cssClasses.panel.titleDisabled, this.isReadOnly).append(this.cssClasses.panel.titleOnError, this.containsErrors).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssError", {
                    get: function() {
                        return this.getCssError(this.cssClasses)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getCssError = function(e) {
                    var t = (new ct).append(this.cssClasses.error.root);
                    return t.append("panel-error-root", t.isEmpty()).toString()
                }, t.prototype.onVisibleChanged = function() {
                    e.prototype.onVisibleChanged.call(this), this.notifySurveyOnVisibilityChanged()
                }, t.prototype.needResponsiveWidth = function() {
                    return !this.startWithNewLine || e.prototype.needResponsiveWidth.call(this)
                }, t.prototype.getContainerCss = function() {
                    return (new ct).append(this.cssClasses.panel.container).append(this.cssClasses.panel.withFrame, this.hasFrameV2).append(this.cssClasses.panel.nested, !(!(this.parent && this.parent.isPanel || !this.isSingleInRow) || this.isDesignMode)).append(this.cssClasses.panel.collapsed, !!this.isCollapsed).append(this.cssClasses.panel.expanded, !!this.isExpanded).append(this.cssClasses.panel.invisible, !this.isDesignMode && this.areInvisibleElementsShowing && !this.visible).toString()
                }, t
            }(Wo);
        I.addClass("panelbase", ["name", {
            name: "elements",
            alternativeName: "questions",
            baseClassName: "question",
            visible: !1,
            isLightSerializable: !1
        }, {
            name: "visible:switch",
            default: !0
        }, "visibleIf:condition", "enableIf:condition", "requiredIf:condition", "readOnly:boolean", {
            name: "questionTitleLocation",
            default: "default",
            choices: ["default", "top", "bottom", "left", "hidden"]
        }, {
            name: "title:text",
            serializationProperty: "locTitle"
        }, {
            name: "description:text",
            serializationProperty: "locDescription"
        }, {
            name: "questionsOrder",
            default: "default",
            choices: ["default", "initial", "random"]
        }], (function() {
            return new Wo
        })), I.addClass("panel", [{
            name: "state",
            default: "default",
            choices: ["default", "collapsed", "expanded"]
        }, "isRequired:switch", {
            name: "requiredErrorText:text",
            serializationProperty: "locRequiredErrorText"
        }, {
            name: "startWithNewLine:boolean",
            default: !0
        }, "width", {
            name: "minWidth",
            default: "auto"
        }, {
            name: "maxWidth",
            default: s.maxWidth
        }, {
            name: "innerIndent:number",
            default: 0,
            choices: [0, 1, 2, 3]
        }, {
            name: "indent:number",
            default: 0,
            choices: [0, 1, 2, 3]
        }, {
            name: "page",
            isSerializable: !1,
            visibleIf: function(e) {
                var t = e ? e.survey : null;
                return !t || !t.pages || t.pages.length > 1
            },
            choices: function(e) {
                var t = e ? e.survey : null;
                return t ? t.pages.map((function(e) {
                    return {
                        value: e.name,
                        text: e.title
                    }
                })) : []
            }
        }, "showNumber:boolean", {
            name: "showQuestionNumbers",
            default: "default",
            choices: ["default", "onpanel", "off"]
        }, "questionStartIndex", {
            name: "allowAdaptiveActions:boolean",
            default: !0,
            visible: !1
        }], (function() {
            return new $o
        }), "panelbase"), un.Instance.registerElement("panel", (function(e) {
            return new $o(e)
        }));
        var Go = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Jo = function(e) {
                function t(t) {
                    void 0 === t && (t = "");
                    var n = e.call(this, t) || this;
                    return n.createLocalizableString("content", n, !0), n.registerPropertyChangedHandlers(["content"], (function() {
                        n.onContentChanged()
                    })), n
                }
                return Go(t, e), t.prototype.getType = function() {
                    return "flowpanel"
                }, t.prototype.getChildrenLayoutType = function() {
                    return "flow"
                }, t.prototype.onSurveyLoad = function() {
                    e.prototype.onSurveyLoad.call(this), this.onContentChanged()
                }, Object.defineProperty(t.prototype, "content", {
                    get: function() {
                        return this.getLocalizableStringText("content")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("content", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locContent", {
                    get: function() {
                        return this.getLocalizableString("content")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "html", {
                    get: function() {
                        return this.getPropertyValue("html", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("html", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onContentChanged = function() {
                    var e = "";
                    e = this.onCustomHtmlProducing ? this.onCustomHtmlProducing() : this.produceHtml(), this.html = e, this.contentChangedCallback && this.contentChangedCallback()
                }, t.prototype.produceHtml = function() {
                    for (var e = [], t = /{(.*?(element:)[^$].*?)}/g, n = this.content, o = 0, r = null; null !== (r = t.exec(n));) {
                        r.index > o && (e.push(n.substring(o, r.index)), o = r.index);
                        var i = this.getQuestionFromText(r[0]);
                        i ? e.push(this.getHtmlForQuestion(i)) : e.push(n.substring(o, r.index + r[0].length)), o = r.index + r[0].length
                    }
                    return o < n.length && e.push(n.substring(o, n.length)), e.join("").replace(new RegExp("<br>", "g"), "<br/>")
                }, t.prototype.getQuestionFromText = function(e) {
                    return e = (e = e.substring(1, e.length - 1)).replace(t.contentElementNamePrefix, "").trim(), this.getQuestionByName(e)
                }, t.prototype.getHtmlForQuestion = function(e) {
                    return this.onGetHtmlForQuestion ? this.onGetHtmlForQuestion(e) : ""
                }, t.prototype.getQuestionHtmlId = function(e) {
                    return this.name + "_" + e.id
                }, t.prototype.onAddElement = function(t, n) {
                    e.prototype.onAddElement.call(this, t, n), this.addElementToContent(t), t.renderWidth = ""
                }, t.prototype.onRemoveElement = function(t) {
                    var n = this.getElementContentText(t);
                    this.content = this.content.replace(n, ""), e.prototype.onRemoveElement.call(this, t)
                }, t.prototype.dragDropMoveElement = function(e, t, n) {}, t.prototype.addElementToContent = function(e) {
                    if (!this.isLoadingFromJson) {
                        var t = this.getElementContentText(e);
                        this.insertTextAtCursor(t) || (this.content = this.content + t)
                    }
                }, t.prototype.insertTextAtCursor = function(e, t) {
                    if (void 0 === t && (t = null), !this.isDesignMode || "undefined" == typeof document || !window.getSelection) return !1;
                    var n = window.getSelection();
                    if (n.getRangeAt && n.rangeCount) {
                        var o = n.getRangeAt(0);
                        o.deleteContents(), o.insertNode(document.createTextNode(e));
                        if (this.getContent) {
                            var r = this.getContent(t);
                            this.content = r
                        }
                        return !0
                    }
                    return !1
                }, t.prototype.getElementContentText = function(e) {
                    return "{" + t.contentElementNamePrefix + e.name + "}"
                }, t.contentElementNamePrefix = "element:", t
            }($o);
        I.addClass("flowpanel", [{
            name: "content:html",
            serializationProperty: "locContent"
        }], (function() {
            return new Jo
        }), "panel");
        var Ko = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Zo = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Xo = function(e) {
                function t(t) {
                    void 0 === t && (t = "");
                    var n = e.call(this, t) || this;
                    return n.hasShownValue = !1, n.timeSpent = 0, n.locTitle.onGetTextCallback = function(e) {
                        return n.canShowPageNumber() && e ? n.num + ". " + e : e
                    }, n.createLocalizableString("navigationTitle", n, !0), n.createLocalizableString("navigationDescription", n, !0), n
                }
                return Ko(t, e), t.prototype.getType = function() {
                    return "page"
                }, t.prototype.toString = function() {
                    return this.name
                }, Object.defineProperty(t.prototype, "isPage", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canShowPageNumber = function() {
                    return this.survey && this.survey.showPageNumbers
                }, t.prototype.canShowTitle = function() {
                    return this.survey && this.survey.showPageTitles
                }, Object.defineProperty(t.prototype, "navigationTitle", {
                    get: function() {
                        return this.getLocalizableStringText("navigationTitle")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("navigationTitle", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locNavigationTitle", {
                    get: function() {
                        return this.getLocalizableString("navigationTitle")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "navigationDescription", {
                    get: function() {
                        return this.getLocalizableStringText("navigationDescription")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("navigationDescription", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locNavigationDescription", {
                    get: function() {
                        return this.getLocalizableString("navigationDescription")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.navigationLocStrChanged = function() {
                    this.locNavigationTitle.strChanged(), this.locNavigationDescription.strChanged()
                }, Object.defineProperty(t.prototype, "passed", {
                    get: function() {
                        return this.getPropertyValue("passed", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("passed", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.delete = function() {
                    this.survey && this.removeSelfFromList(this.survey.pages)
                }, t.prototype.onFirstRendering = function() {
                    this.wasShown || e.prototype.onFirstRendering.call(this)
                }, Object.defineProperty(t.prototype, "visibleIndex", {
                    get: function() {
                        return this.getPropertyValue("visibleIndex", -1)
                    },
                    set: function(e) {
                        this.setPropertyValue("visibleIndex", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canRenderFirstRows = function() {
                    return !this.isDesignMode || 0 == this.visibleIndex
                }, Object.defineProperty(t.prototype, "isStarted", {
                    get: function() {
                        return this.survey && this.survey.isPageStarted(this)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.calcCssClasses = function(e) {
                    var t = {
                        page: {},
                        pageTitle: "",
                        pageDescription: "",
                        row: "",
                        rowMultiple: "",
                        pageRow: ""
                    };
                    return this.copyCssClasses(t.page, e.page), e.pageTitle && (t.pageTitle = e.pageTitle), e.pageDescription && (t.pageDescription = e.pageDescription), e.row && (t.row = e.row), e.pageRow && (t.pageRow = e.pageRow), e.rowMultiple && (t.rowMultiple = e.rowMultiple), this.survey && this.survey.updatePageCssClasses(this, t), t
                }, Object.defineProperty(t.prototype, "cssTitle", {
                    get: function() {
                        return this.cssClasses.page ? (new ct).append(this.cssClasses.page.title).toString() : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssRoot", {
                    get: function() {
                        return this.cssClasses.page && this.survey ? (new ct).append(this.cssClasses.page.root).append(this.cssClasses.page.emptyHeaderRoot, !(this.survey.renderedHasHeader || this.survey.isShowProgressBarOnTop && !this.survey.isStaring)).toString() : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "navigationButtonsVisibility", {
                    get: function() {
                        return this.getPropertyValue("navigationButtonsVisibility")
                    },
                    set: function(e) {
                        this.setPropertyValue("navigationButtonsVisibility", e.toLowerCase())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isActive", {
                    get: function() {
                        return !!this.survey && this.survey.currentPage === this
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "wasShown", {
                    get: function() {
                        return this.hasShownValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasShown", {
                    get: function() {
                        return this.wasShown
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setWasShown = function(e) {
                    if (e != this.hasShownValue && (this.hasShownValue = e, !this.isDesignMode && !0 === e)) {
                        for (var t = this.elements, n = 0; n < t.length; n++) t[n].isPanel && t[n].randomizeElements(this.areQuestionsRandomized);
                        this.randomizeElements(this.areQuestionsRandomized)
                    }
                }, t.prototype.scrollToTop = function() {
                    this.survey && this.survey.scrollElementToTop(this, null, this, this.id)
                }, t.prototype.getPanels = function(e, t) {
                    void 0 === e && (e = !1), void 0 === t && (t = !1);
                    var n = new Array;
                    return this.addPanelsIntoList(n, e, t), n
                }, Object.defineProperty(t.prototype, "maxTimeToFinish", {
                    get: function() {
                        return this.getPropertyValue("maxTimeToFinish", 0)
                    },
                    set: function(e) {
                        this.setPropertyValue("maxTimeToFinish", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onNumChanged = function(e) {}, t.prototype.onVisibleChanged = function() {
                    this.isRandomizing || (e.prototype.onVisibleChanged.call(this), null != this.survey && this.survey.pageVisibilityChanged(this, this.isVisible))
                }, t.prototype.getDragDropInfo = function() {
                    return this.dragDropInfo
                }, t.prototype.dragDropStart = function(e, t, n) {
                    void 0 === n && (n = -1), this.dragDropInfo = new Qo(e, t, n)
                }, t.prototype.dragDropMoveTo = function(e, t, n) {
                    if (void 0 === t && (t = !1), void 0 === n && (n = !1), !this.dragDropInfo) return !1;
                    if (this.dragDropInfo.destination = e, this.dragDropInfo.isBottom = t, this.dragDropInfo.isEdge = n, this.correctDragDropInfo(this.dragDropInfo), !this.dragDropCanDropTagert()) return !1;
                    if (!this.dragDropCanDropSource() || !this.dragDropAllowFromSurvey()) {
                        if (this.dragDropInfo.source) {
                            var o = this.dragDropFindRow(this.dragDropInfo.target);
                            this.updateRowsRemoveElementFromRow(this.dragDropInfo.target, o)
                        }
                        return !1
                    }
                    return this.dragDropAddTarget(this.dragDropInfo), !0
                }, t.prototype.correctDragDropInfo = function(e) {
                    if (e.destination) {
                        var t = e.destination.isPanel ? e.destination : null;
                        t && (e.target.isLayoutTypeSupported(t.getChildrenLayoutType()) || (e.isEdge = !0))
                    }
                }, t.prototype.dragDropAllowFromSurvey = function() {
                    var e = this.dragDropInfo.destination;
                    if (!e || !this.survey) return !0;
                    var t = null,
                        n = null,
                        o = e.isPage || !this.dragDropInfo.isEdge && e.isPanel ? e : e.parent;
                    if (!e.isPage) {
                        var r = e.parent;
                        if (r) {
                            var i = r.elements,
                                s = i.indexOf(e);
                            s > -1 && (t = e, n = e, this.dragDropInfo.isBottom ? t = s < i.length - 1 ? i[s + 1] : null : n = s > 0 ? i[s - 1] : null)
                        }
                    }
                    var a = {
                        target: this.dragDropInfo.target,
                        source: this.dragDropInfo.source,
                        parent: o,
                        insertAfter: n,
                        insertBefore: t
                    };
                    return this.survey.dragAndDropAllow(a)
                }, t.prototype.dragDropFinish = function(e) {
                    if (void 0 === e && (e = !1), this.dragDropInfo) {
                        var t = this.dragDropInfo.target,
                            n = this.dragDropInfo.source,
                            o = this.dragDropInfo.destination,
                            r = this.dragDropFindRow(t),
                            i = this.dragDropGetElementIndex(t, r);
                        this.updateRowsRemoveElementFromRow(t, r);
                        var a = [],
                            l = [];
                        if (!e && r) {
                            if (this.isDesignMode && s.supportCreatorV2) {
                                var u = n && n.parent && n.parent.dragDropFindRow(n);
                                r.panel.elements[i] && r.panel.elements[i].startWithNewLine && r.elements.length > 1 && r.panel.elements[i] === o && (a.push(t), l.push(r.panel.elements[i])), !(t.startWithNewLine && r.elements.length > 1) || r.panel.elements[i] && r.panel.elements[i].startWithNewLine || l.push(t), u && u.elements[0] === n && u.elements[1] && a.push(u.elements[1]), r.elements.length <= 1 && a.push(t), t.startWithNewLine && r.elements.length > 1 && r.elements[0] !== o && l.push(t)
                            }
                            n && n.parent && (this.survey.startMovingQuestion(), r.panel == n.parent ? (r.panel.dragDropMoveElement(n, t, i), i = -1) : n.parent.removeElement(n)), i > -1 && r.panel.addElement(t, i), this.survey.stopMovingQuestion()
                        }
                        return a.map((function(e) {
                            e.startWithNewLine = !0
                        })), l.map((function(e) {
                            e.startWithNewLine = !1
                        })), this.dragDropInfo = null, e ? null : t
                    }
                }, t.prototype.dragDropGetElementIndex = function(e, t) {
                    if (!t) return -1;
                    var n = t.elements.indexOf(e);
                    if (0 == t.index) return n;
                    var o = t.panel.rows[t.index - 1],
                        r = o.elements[o.elements.length - 1];
                    return n + t.panel.elements.indexOf(r) + 1
                }, t.prototype.dragDropCanDropTagert = function() {
                    var e = this.dragDropInfo.destination;
                    return !(e && !e.isPage) || this.dragDropCanDropCore(this.dragDropInfo.target, e)
                }, t.prototype.dragDropCanDropSource = function() {
                    var e = this.dragDropInfo.source;
                    if (!e) return !0;
                    var t = this.dragDropInfo.destination;
                    if (!this.dragDropCanDropCore(e, t)) return !1;
                    if (this.isDesignMode && s.supportCreatorV2) {
                        if (this.dragDropFindRow(e) !== this.dragDropFindRow(t)) {
                            if (!e.startWithNewLine && t.startWithNewLine) return !0;
                            if (e.startWithNewLine && !t.startWithNewLine) return !0
                        }
                        var n = this.dragDropFindRow(t);
                        if (n && 1 == n.elements.length) return !0
                    }
                    return this.dragDropCanDropNotNext(e, t, this.dragDropInfo.isEdge, this.dragDropInfo.isBottom)
                }, t.prototype.dragDropCanDropCore = function(e, t) {
                    if (!t) return !0;
                    if (this.dragDropIsSameElement(t, e)) return !1;
                    if (e.isPanel) {
                        var n = e;
                        if (n.containsElement(t) || n.getElementByName(t.name)) return !1
                    }
                    return !0
                }, t.prototype.dragDropCanDropNotNext = function(e, t, n, o) {
                    if (!t || t.isPanel && !n) return !0;
                    if (void 0 === e.parent || e.parent !== t.parent) return !0;
                    var r = e.parent,
                        i = r.elements.indexOf(e),
                        s = r.elements.indexOf(t);
                    return s < i && !o && s--, o && s++, i < s ? s - i > 1 : i - s > 0
                }, t.prototype.dragDropIsSameElement = function(e, t) {
                    return e == t || e.name == t.name
                }, t.prototype.ensureRowsVisibility = function() {
                    e.prototype.ensureRowsVisibility.call(this), this.getPanels().forEach((function(e) {
                        return e.ensureRowsVisibility()
                    }))
                }, Zo([y({
                    defaultValue: -1,
                    onSet: function(e, t) {
                        return t.onNumChanged(e)
                    }
                })], t.prototype, "num", void 0), t
            }(Wo);
        I.addClass("page", [{
            name: "navigationButtonsVisibility",
            default: "inherit",
            choices: ["inherit", "show", "hide"]
        }, {
            name: "maxTimeToFinish:number",
            default: 0,
            minValue: 0
        }, {
            name: "navigationTitle",
            visibleIf: function(e) {
                return !!e.survey && "buttons" === e.survey.progressBarType
            },
            serializationProperty: "locNavigationTitle"
        }, {
            name: "navigationDescription",
            visibleIf: function(e) {
                return !!e.survey && "buttons" === e.survey.progressBarType
            },
            serializationProperty: "locNavigationDescription"
        }, {
            name: "title:text",
            serializationProperty: "locTitle"
        }, {
            name: "description:text",
            serializationProperty: "locDescription"
        }], (function() {
            return new Xo
        }), "panelbase");
        var Yo = function() {
                function e() {}
                return e.getIconCss = function(e, t) {
                    return (new ct).append(e.icon).append(e.iconExpanded, !t).toString()
                }, e
            }(),
            er = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            tr = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return er(t, e), t.prototype.getType = function() {
                    return "nonvalue"
                }, Object.defineProperty(t.prototype, "hasInput", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitle", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getTitleLocation = function() {
                    return ""
                }, Object.defineProperty(t.prototype, "hasComment", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.hasErrors = function(e, t) {
                    return void 0 === e && (e = !0), void 0 === t && (t = null), !1
                }, t.prototype.getAllErrors = function() {
                    return []
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    return !1
                }, t.prototype.addConditionObjectsByContext = function(e, t) {}, t.prototype.getConditionJson = function(e, t) {
                    return void 0 === e && (e = null), void 0 === t && (t = null), null
                }, t
            }(Xt);
        I.addClass("nonvalue", [{
            name: "title",
            visible: !1
        }, {
            name: "description",
            visible: !1
        }, {
            name: "valueName",
            visible: !1
        }, {
            name: "enableIf",
            visible: !1
        }, {
            name: "defaultValue",
            visible: !1
        }, {
            name: "correctAnswer",
            visible: !1
        }, {
            name: "clearIfInvisible",
            visible: !1
        }, {
            name: "isRequired",
            visible: !1,
            isSerializable: !1
        }, {
            name: "requiredErrorText",
            visible: !1
        }, {
            name: "readOnly",
            visible: !1
        }, {
            name: "requiredIf",
            visible: !1
        }, {
            name: "validators",
            visible: !1
        }, {
            name: "titleLocation",
            visible: !1
        }, {
            name: "useDisplayValuesInDynamicTexts",
            alternativeName: "useDisplayValuesInTitle",
            visible: !1
        }], (function() {
            return new tr("")
        }), "question");
        var nr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            or = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return nr(t, e), t.prototype.getType = function() {
                    return "empty"
                }, t
            }(Xt);
        I.addClass("empty", [], (function() {
            return new or("")
        }), "question");
        var rr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ir = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    n.selectAllItemValue = new ze("selectall"), n.invisibleOldValues = {}, n.isChangingValueOnClearIncorrect = !1;
                    var o = n.createLocalizableString("selectAllText", n.selectAllItem, !0, "selectAllItemText");
                    return n.selectAllItem.locOwner = n, n.selectAllItem.setLocText(o), n.registerPropertyChangedHandlers(["showSelectAllItem", "selectAllText"], (function() {
                        n.onVisibleChoicesChanged()
                    })), n
                }
                return rr(t, e), t.prototype.getDefaultItemComponent = function() {
                    return "survey-checkbox-item"
                }, Object.defineProperty(t.prototype, "ariaRole", {
                    get: function() {
                        return "listbox"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "checkbox"
                }, t.prototype.onCreating = function() {
                    e.prototype.onCreating.call(this), this.createNewArray("renderedValue"), this.createNewArray("value")
                }, t.prototype.getFirstInputElementId = function() {
                    return this.inputId + "_0"
                }, Object.defineProperty(t.prototype, "valuePropertyName", {
                    get: function() {
                        return this.getPropertyValue("valuePropertyName")
                    },
                    set: function(e) {
                        this.setPropertyValue("valuePropertyName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionFromArray = function(e, t) {
                    if (e && e === this.valuePropertyName) {
                        var n = this.value;
                        if (Array.isArray(n) && t < n.length) return this
                    }
                    return null
                }, Object.defineProperty(t.prototype, "selectAllItem", {
                    get: function() {
                        return this.selectAllItemValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "selectAllText", {
                    get: function() {
                        return this.getLocalizableStringText("selectAllText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("selectAllText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locSelectAllText", {
                    get: function() {
                        return this.getLocalizableString("selectAllText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showSelectAllItem", {
                    get: function() {
                        return this.getPropertyValue("showSelectAllItem", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("showSelectAllItem", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasSelectAll", {
                    get: function() {
                        return this.showSelectAllItem
                    },
                    set: function(e) {
                        this.showSelectAllItem = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isAllSelected", {
                    get: function() {
                        var e = this.value;
                        if (!e || !Array.isArray(e)) return !1;
                        if (this.isItemSelected(this.noneItem)) return !1;
                        var t = this.visibleChoices.length;
                        this.hasOther && t--, this.hasNone && t--, this.hasSelectAll && t--;
                        var n = e.length;
                        return this.isOtherSelected && n--, n === t
                    },
                    set: function(e) {
                        e ? this.selectAll() : this.clearValue()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.toggleSelectAll = function() {
                    this.isAllSelected = !this.isAllSelected
                }, t.prototype.selectAll = function() {
                    for (var e = [], t = 0; t < this.visibleChoices.length; t++) {
                        var n = this.visibleChoices[t];
                        n !== this.noneItem && n !== this.otherItem && n !== this.selectAllItem && e.push(n.value)
                    }
                    this.renderedValue = e
                }, t.prototype.isItemSelectedCore = function(e) {
                    if (e === this.selectAllItem) return this.isAllSelected;
                    var t = this.renderedValue;
                    if (!t || !Array.isArray(t)) return !1;
                    for (var n = 0; n < t.length; n++)
                        if (this.isTwoValueEquals(t[n], e.value)) return !0;
                    return !1
                }, t.prototype.getRealValue = function(e) {
                    return e && this.valuePropertyName ? e[this.valuePropertyName] : e
                }, Object.defineProperty(t.prototype, "maxSelectedChoices", {
                    get: function() {
                        return this.getPropertyValue("maxSelectedChoices")
                    },
                    set: function(e) {
                        e < 0 && (e = 0), this.setPropertyValue("maxSelectedChoices", e), this.filterItems()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "selectedChoices", {
                    get: function() {
                        var e = this.selectedItemValues;
                        if (this.isEmpty()) return [];
                        var t = this.renderedValue,
                            n = this.initialSelectedItemValues ? [].concat(this.initialSelectedItemValues, this.visibleChoices) : this.visibleChoices,
                            o = t.map((function(e) {
                                return ze.getItemByValue(n, e)
                            })).filter((function(e) {
                                return !!e
                            }));
                        return o.length || e || this.updateSelectedItemValues(), o.length ? o : e && e.length ? (this.initialSelectedItemValues = [].concat(e), e) : t.map((function(e) {
                            return new ze(e)
                        }))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "selectedItems", {
                    get: function() {
                        return this.selectedChoices
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onEnableItemCallBack = function(e) {
                    return !this.shouldCheckMaxSelectedChoices() || this.isItemSelected(e)
                }, t.prototype.onAfterRunItemsEnableCondition = function() {
                    if (this.maxSelectedChoices < 1) return this.selectAllItem.setIsEnabled(!0), void this.otherItem.setIsEnabled(!0);
                    this.hasSelectAll && this.selectAllItem.setIsEnabled(this.maxSelectedChoices >= this.activeChoices.length), this.hasOther && this.otherItem.setIsEnabled(!this.shouldCheckMaxSelectedChoices() || this.isOtherSelected)
                }, t.prototype.shouldCheckMaxSelectedChoices = function() {
                    if (this.maxSelectedChoices < 1) return !1;
                    var e = this.value;
                    return (Array.isArray(e) ? e.length : 0) >= this.maxSelectedChoices
                }, t.prototype.getItemClassCore = function(t, n) {
                    this.value;
                    return n.isSelectAllItem = t === this.selectAllItem, (new ct).append(e.prototype.getItemClassCore.call(this, t, n)).append(this.cssClasses.itemSelectAll, n.isSelectAllItem).toString()
                }, t.prototype.updateValueFromSurvey = function(t) {
                    e.prototype.updateValueFromSurvey.call(this, t), this.invisibleOldValues = {}
                }, t.prototype.setDefaultValue = function() {
                    e.prototype.setDefaultValue.call(this);
                    var t = this.defaultValue;
                    if (Array.isArray(t))
                        for (var n = 0; n < t.length; n++) {
                            var o = this.getRealValue(t[n]);
                            this.canClearValueAnUnknow(o) && this.addIntoInvisibleOldValues(o)
                        }
                }, t.prototype.addIntoInvisibleOldValues = function(e) {
                    this.invisibleOldValues[e] = e
                }, t.prototype.hasValueToClearIncorrectValues = function() {
                    return e.prototype.hasValueToClearIncorrectValues.call(this) || !a.isValueEmpty(this.invisibleOldValues)
                }, t.prototype.setNewValue = function(t) {
                    this.isChangingValueOnClearIncorrect || (this.invisibleOldValues = {}), t = this.valueFromData(t);
                    var n = this.value;
                    if (t || (t = []), n || (n = []), !this.isTwoValueEquals(n, t)) {
                        if (this.hasNone) {
                            var o = this.noneIndexInArray(n),
                                r = this.noneIndexInArray(t);
                            o > -1 ? r > -1 && t.length > 1 && t.splice(r, 1) : r > -1 && (t.splice(0, t.length), t.push(this.noneItem.value))
                        }
                        e.prototype.setNewValue.call(this, t)
                    }
                }, t.prototype.getIsMultipleValue = function() {
                    return !0
                }, t.prototype.getCommentFromValue = function(e) {
                    var t = this.getFirstUnknownIndex(e);
                    return t < 0 ? "" : e[t]
                }, t.prototype.setOtherValueIntoValue = function(e) {
                    var t = this.getFirstUnknownIndex(e);
                    return t < 0 || e.splice(t, 1, this.otherItem.value), e
                }, t.prototype.getFirstUnknownIndex = function(e) {
                    if (!Array.isArray(e)) return -1;
                    for (var t = 0; t < e.length; t++)
                        if (this.hasUnknownValue(e[t], !1, !1)) return t;
                    return -1
                }, t.prototype.noneIndexInArray = function(e) {
                    if (!e || !Array.isArray(e)) return -1;
                    for (var t = this.noneItem.value, n = 0; n < e.length; n++)
                        if (e[n] == t) return n;
                    return -1
                }, t.prototype.canUseFilteredChoices = function() {
                    return !this.hasSelectAll && e.prototype.canUseFilteredChoices.call(this)
                }, t.prototype.supportSelectAll = function() {
                    return this.isSupportProperty("showSelectAllItem")
                }, t.prototype.addToVisibleChoices = function(t, n) {
                    this.supportSelectAll() && this.canShowOptionItem(this.selectAllItem, n, this.hasSelectAll) && t.unshift(this.selectAllItem), e.prototype.addToVisibleChoices.call(this, t, n)
                }, t.prototype.isHeadChoice = function(e, t) {
                    return e === t.selectAllItem
                }, t.prototype.isItemInList = function(t) {
                    return t == this.selectAllItem ? this.hasSelectAll : e.prototype.isItemInList.call(this, t)
                }, t.prototype.getDisplayValueCore = function(t, n) {
                    if (!Array.isArray(n)) return e.prototype.getDisplayValueCore.call(this, t, n);
                    var o = this.valuePropertyName;
                    return this.getDisplayArrayValue(t, n, (function(e) {
                        var t = n[e];
                        return o && t[o] && (t = t[o]), t
                    }))
                }, t.prototype.clearIncorrectValuesCore = function() {
                    this.clearIncorrectAndDisabledValues(!1)
                }, t.prototype.clearDisabledValuesCore = function() {
                    this.clearIncorrectAndDisabledValues(!0)
                }, t.prototype.clearIncorrectAndDisabledValues = function(e) {
                    var t = this.value,
                        n = !1,
                        o = this.restoreValuesFromInvisible();
                    if (t || 0 != o.length) {
                        if (!Array.isArray(t) || 0 == t.length) {
                            if (this.isChangingValueOnClearIncorrect = !0, e || (this.hasComment ? this.value = null : this.clearValue()), this.isChangingValueOnClearIncorrect = !1, 0 == o.length) return;
                            t = []
                        }
                        for (var r = [], i = 0; i < t.length; i++) {
                            var s = this.getRealValue(t[i]),
                                a = this.canClearValueAnUnknow(s);
                            !e && !a || e && !this.isValueDisabled(s) ? r.push(t[i]) : (n = !0, a && this.addIntoInvisibleOldValues(t[i]))
                        }
                        for (i = 0; i < o.length; i++) r.push(o[i]), n = !0;
                        n && (this.isChangingValueOnClearIncorrect = !0, 0 == r.length ? this.clearValue() : this.value = r, this.isChangingValueOnClearIncorrect = !1)
                    }
                }, t.prototype.restoreValuesFromInvisible = function() {
                    for (var e = [], t = this.visibleChoices, n = 0; n < t.length; n++) {
                        var o = t[n].value;
                        a.isTwoValueEquals(o, this.invisibleOldValues[o]) && (this.isItemSelected(t[n]) || e.push(o), delete this.invisibleOldValues[o])
                    }
                    return e
                }, t.prototype.getConditionJson = function(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.prototype.getConditionJson.call(this);
                    return "contains" != t && "notcontains" != t || (o.type = "radiogroup"), o
                }, t.prototype.isAnswerCorrect = function() {
                    return a.isArrayContainsEqual(this.value, this.correctAnswer)
                }, t.prototype.setDefaultValueWithOthers = function() {
                    this.value = this.renderedValueFromDataCore(this.defaultValue)
                }, t.prototype.getIsItemValue = function(e, t) {
                    return !(!e || !Array.isArray(e)) && e.indexOf(t.value) >= 0
                }, t.prototype.valueFromData = function(t) {
                    if (!t) return t;
                    if (!Array.isArray(t)) return [e.prototype.valueFromData.call(this, t)];
                    for (var n = [], o = 0; o < t.length; o++) {
                        var r = ze.getItemByValue(this.activeChoices, t[o]);
                        r ? n.push(r.value) : n.push(t[o])
                    }
                    return n
                }, t.prototype.rendredValueFromData = function(t) {
                    return t = this.convertValueFromObject(t), e.prototype.rendredValueFromData.call(this, t)
                }, t.prototype.rendredValueToData = function(t) {
                    return t = e.prototype.rendredValueToData.call(this, t), this.convertValueToObject(t)
                }, t.prototype.convertValueFromObject = function(e) {
                    return this.valuePropertyName ? a.convertArrayObjectToValue(e, this.valuePropertyName) : e
                }, t.prototype.convertValueToObject = function(e) {
                    if (!this.valuePropertyName) return e;
                    var t = void 0;
                    return this.survey && this.survey.questionCountByValueName(this.getValueName()) > 1 && (t = this.data.getValue(this.getValueName())), a.convertArrayValueToObject(e, this.valuePropertyName, t)
                }, t.prototype.renderedValueFromDataCore = function(e) {
                    if (e && Array.isArray(e) || (e = []), !this.hasActiveChoices) return e;
                    for (var t = 0; t < e.length; t++) {
                        if (e[t] == this.otherItem.value) return e;
                        if (this.hasUnknownValue(e[t], !0, !1)) {
                            this.otherValue = e[t];
                            var n = e.slice();
                            return n[t] = this.otherItem.value, n
                        }
                    }
                    return e
                }, t.prototype.rendredValueToDataCore = function(e) {
                    if (!e || !e.length) return e;
                    for (var t = 0; t < e.length; t++)
                        if (e[t] == this.otherItem.value && this.needConvertRenderedOtherToDataValue()) {
                            var n = e.slice();
                            return n[t] = this.otherValue, n
                        } return e
                }, t.prototype.selectOtherValueFromComment = function(e) {
                    var t = [],
                        n = this.renderedValue;
                    if (Array.isArray(n))
                        for (var o = 0; o < n.length; o++) n[o] !== this.otherItem.value && t.push(n[o]);
                    e && t.push(this.otherItem.value), this.value = t
                }, Object.defineProperty(t.prototype, "checkBoxSvgPath", {
                    get: function() {
                        return "M5,13l2-2l3,3l7-7l2,2l-9,9L5,13z"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(bo);
        I.addClass("checkbox", [{
            name: "showSelectAllItem:boolean",
            alternativeName: "hasSelectAll"
        }, {
            name: "separateSpecialChoices",
            visible: !0
        }, {
            name: "maxSelectedChoices:number",
            default: 0
        }, {
            name: "selectAllText",
            serializationProperty: "locSelectAllText",
            dependsOn: "showSelectAllItem",
            visibleIf: function(e) {
                return e.hasSelectAll
            }
        }, {
            name: "valuePropertyName",
            category: "data"
        }, {
            name: "itemComponent",
            visible: !1,
            default: "survey-checkbox-item"
        }], (function() {
            return new ir("")
        }), "checkboxbase"), ln.Instance.registerQuestion("checkbox", (function(e) {
            var t = new ir(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var sr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ar = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            lr = function(e) {
                function t(t, n, o, r, i) {
                    var s = e.call(this, t, n, o, void 0, i) || this;
                    return s.onItemClick = function(e) {
                        if (s.isExpanded = !1, s.isItemSelected(e)) {
                            var t = s.selectedItems.splice(s.selectedItems.indexOf(e), 1)[0];
                            s.onSelectionChanged && s.onSelectionChanged(t, "removed")
                        } else s.selectedItems.push(e), s.onSelectionChanged && s.onSelectionChanged(e, "added")
                    }, s.isItemDisabled = function(e) {
                        return void 0 !== e.enabled && !e.enabled
                    }, s.isItemSelected = function(e) {
                        return !!s.allowSelection && s.selectedItems.filter((function(t) {
                            return t.id == e.id
                        })).length > 0
                    }, s.setSelectedItems(r || []), s
                }
                return sr(t, e), t.prototype.updateItemState = function() {
                    var e = this;
                    this.actions.forEach((function(t) {
                        var n = e.isItemSelected(t);
                        t.active = n, t.visible = !e.hideSelectedItems || !n
                    }))
                }, t.prototype.setSelectedItems = function(e) {
                    var t = this;
                    this.selectedItems = e, this.updateItemState(), this.isEmpty = 0 === this.renderedActions.filter((function(e) {
                        return t.isItemVisible(e)
                    })).length
                }, t.prototype.initFocusedItem = function() {
                    var e = this;
                    this.hideSelectedItems || !this.selectedItems.length ? this.focusFirstVisibleItem() : this.selectedItems.length && (this.focusedItem = this.visibleItems.filter((function(t) {
                        return t.id === e.selectedItems[0].id
                    }))[0])
                }, t.prototype.selectFocusedItem = function() {
                    e.prototype.selectFocusedItem.call(this), this.hideSelectedItems && this.focusNextVisibleItem()
                }, ar([y()], t.prototype, "hideSelectedItems", void 0), t
            }(bt),
            ur = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            cr = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            pr = function(e) {
                function t(t, n) {
                    var o = e.call(this, t, n) || this;
                    return o.setHideSelectedItems(t.hideSelectedItems), o.syncFilterStringPlaceholder(), o.closeOnSelect = t.closeOnSelect, o
                }
                return ur(t, e), t.prototype.syncFilterStringPlaceholder = function(e) {
                    (e || this.getSelectedActions()).length || this.question.selectedItems.length ? this.filterStringPlaceholder = void 0 : this.filterStringPlaceholder = this.question.placeholder
                }, t.prototype.getSelectedActions = function(e) {
                    var t = this;
                    return (e || this.listModel.actions).filter((function(e) {
                        return t.question.isAllSelected && "selectall" === e.id || !!ze.getItemByValue(t.question.selectedItems, e.id)
                    }))
                }, t.prototype.syncSelectedItemsFromQuestion = function() {
                    var e = this.getSelectedActions();
                    this.listModel.setSelectedItems(e), this.syncFilterStringPlaceholder(e)
                }, t.prototype.createListModel = function() {
                    var e = this,
                        t = this.getAvailableItems(),
                        n = this.onSelectionChanged;
                    return n || (n = function(t, n) {
                        e.resetFilterString(), "selectall" === t.id ? e.selectAllItems() : "added" === n && t.id === s.noneItemValue ? e.selectNoneItem() : "added" === n ? e.selectItem(t.id) : "removed" === n && e.deselectItem(t.id), e.popupRecalculatePosition(!1), e.closeOnSelect && (e.popupModel.isVisible = !1)
                    }), new lr(t, n, !0, this.getSelectedActions(t))
                }, t.prototype.selectAllItems = function() {
                    this.question.toggleSelectAll(), this.syncSelectedItemsFromQuestion()
                }, t.prototype.selectNoneItem = function() {
                    this.question.renderedValue = [s.noneItemValue], this.syncSelectedItemsFromQuestion()
                }, t.prototype.selectItem = function(e) {
                    var t = [].concat(this.question.renderedValue || []);
                    t.push(e), this.question.renderedValue = t, this.syncSelectedItemsFromQuestion()
                }, t.prototype.deselectItem = function(e) {
                    var t = [].concat(this.question.renderedValue || []);
                    t.splice(t.indexOf(e), 1), this.question.renderedValue = t, this.syncSelectedItemsFromQuestion()
                }, t.prototype.onClear = function(t) {
                    e.prototype.onClear.call(this, t), this.syncSelectedItemsFromQuestion()
                }, t.prototype.setHideSelectedItems = function(e) {
                    this.listModel.hideSelectedItems = e, this.syncSelectedItemsFromQuestion()
                }, t.prototype.removeLastSelectedItem = function() {
                    this.deselectItem(this.question.renderedValue[this.question.renderedValue.length - 1]), this.popupRecalculatePosition(!1)
                }, t.prototype.inputKeyHandler = function(e) {
                    8 !== e.keyCode || this.filterString || (this.removeLastSelectedItem(), e.preventDefault(), e.stopPropagation())
                }, cr([y({
                    defaultValue: ""
                })], t.prototype, "filterStringPlaceholder", void 0), cr([y({
                    defaultValue: !0
                })], t.prototype, "closeOnSelect", void 0), t
            }(wo),
            dr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            hr = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            fr = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.onOpened = n.addEvent(), n.createLocalizableString("placeholder", n, !1, !0), n.createLocalizableString("clearCaption", n, !1, !0), n
                }
                return dr(t, e), t.prototype.getDefaultItemComponent = function() {
                    return ""
                }, Object.defineProperty(t.prototype, "readOnlyText", {
                    get: function() {
                        return this.displayValue || this.placeholder
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onSurveyLoad = function() {
                    e.prototype.onSurveyLoad.call(this), this.dropdownListModel || (this.dropdownListModel = new pr(this))
                }, Object.defineProperty(t.prototype, "placeholder", {
                    get: function() {
                        return this.getLocalizableStringText("placeholder")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("placeholder", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPlaceholder", {
                    get: function() {
                        return this.getLocalizableString("placeholder")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "clearCaption", {
                    get: function() {
                        return this.getLocalizableStringText("clearCaption")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("clearCaption", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locClearCaption", {
                    get: function() {
                        return this.getLocalizableString("clearCaption")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "tagbox"
                }, Object.defineProperty(t.prototype, "ariaRole", {
                    get: function() {
                        return "combobox"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "popupModel", {
                    get: function() {
                        var e;
                        return null === (e = this.dropdownListModel) || void 0 === e ? void 0 : e.popupModel
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getControlClass = function() {
                    return (new ct).append(this.cssClasses.control).append(this.cssClasses.controlEmpty, this.isEmpty()).append(this.cssClasses.onError, this.errors.length > 0).append(this.cssClasses.controlDisabled, this.isReadOnly).toString()
                }, t.prototype.onOpenedCallBack = function() {
                    this.onOpened.fire(this, {
                        question: this,
                        choices: this.choices
                    })
                }, t.prototype.onVisibleChoicesChanged = function() {
                    e.prototype.onVisibleChoicesChanged.call(this), this.popupModel && this.dropdownListModel.updateItems()
                }, t.prototype.getFirstInputElementId = function() {
                    return this.inputId + (this.searchEnabled ? "_0" : "")
                }, t.prototype.getInputId = function() {
                    return this.inputId + "_0"
                }, hr([y({
                    defaultValue: !0
                })], t.prototype, "allowClear", void 0), hr([y({
                    defaultValue: !0,
                    onSet: function(e, t) {
                        t.dropdownListModel && t.dropdownListModel.setSearchEnabled(e)
                    }
                })], t.prototype, "searchEnabled", void 0), hr([y({
                    defaultValue: !1,
                    onSet: function(e, t) {
                        t.dropdownListModel && t.dropdownListModel.setHideSelectedItems(e)
                    }
                })], t.prototype, "hideSelectedItems", void 0), hr([y({
                    defaultValue: !1
                })], t.prototype, "choicesLazyLoadEnabled", void 0), hr([y({
                    defaultValue: 25
                })], t.prototype, "choicesLazyLoadPageSize", void 0), t
            }(ir);
        I.addClass("tagbox", [{
            name: "placeholder",
            serializationProperty: "locPlaceholder"
        }, {
            name: "allowClear:boolean",
            default: !0
        }, {
            name: "searchEnabled:boolean",
            default: !0
        }, {
            name: "choicesLazyLoadEnabled:boolean",
            default: !1,
            visible: !1
        }, {
            name: "choicesLazyLoadPageSize:number",
            default: 25,
            visible: !1
        }, {
            name: "hideSelectedItems:boolean",
            default: !1
        }, {
            name: "closeOnSelect:boolean",
            default: !0,
            visible: !1
        }, {
            name: "itemComponent",
            visible: !1,
            default: ""
        }], (function() {
            return new fr("")
        }), "checkbox"), ln.Instance.registerQuestion("tagbox", (function(e) {
            var t = new fr(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var mr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            gr = function(e) {
                function t() {
                    var t = null !== e && e.apply(this, arguments) || this;
                    return t.doDragOver = function() {
                        "imagepicker" !== t.parentElement.getType() && (t.draggedElementShortcut.querySelector(".svc-item-value-controls__button").style.cursor = "grabbing")
                    }, t.doBanDropHere = function() {
                        "imagepicker" !== t.parentElement.getType() && (t.draggedElementShortcut.querySelector(".svc-item-value-controls__button").style.cursor = "not-allowed")
                    }, t
                }
                return mr(t, e), Object.defineProperty(t.prototype, "draggedElementType", {
                    get: function() {
                        return "item-value"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createDraggedElementShortcut = function(e, t, n) {
                    if ("imagepicker" === this.parentElement.getType()) return this.createImagePickerShortcut(this.draggedElement, e, t, n);
                    var o = document.createElement("div");
                    o.style.cssText = ' \n          cursor: grabbing;\n          position: absolute;\n          z-index: 1000;\n          font-family: "Open Sans";\n        ';
                    var r = t.closest("[data-sv-drop-target-item-value]").cloneNode(!0);
                    r.style.cssText = "\n      min-width: 100px;\n      box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1);\n      background-color: var(--background, white);\n      border-radius: 36px;\n      padding-right: 16px;\n      margin-left: 0;\n    ", r.querySelector(".svc-item-value-controls__drag-icon").style.visibility = "visible", r.querySelector(".svc-item-value-controls__remove").style.backgroundColor = "transparent", r.classList.remove("svc-item-value--moveup"), r.classList.remove("svc-item-value--movedown"), this.draggedElement.isDragDropMoveDown = !1, this.draggedElement.isDragDropMoveUp = !1, o.appendChild(r);
                    var i = t.getBoundingClientRect();
                    return o.shortcutXOffset = n.clientX - i.x, o.shortcutYOffset = n.clientY - i.y, this.isBottom = null, o
                }, t.prototype.createImagePickerShortcut = function(e, t, n, o) {
                    var r = document.createElement("div");
                    r.style.cssText = " \n      cursor: grabbing;\n      position: absolute;\n      z-index: 1000;\n      box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1);\n      padding: 4px;\n      border-radius: 4px;\n      background: white;\n    ";
                    var i = n.closest("[data-sv-drop-target-item-value]"),
                        s = i.querySelector(".svc-image-item-value-controls"),
                        a = i.querySelector(".sd-imagepicker__image-container"),
                        l = i.querySelector(e.imageLink ? "img" : ".sd-imagepicker__no-image").cloneNode(!0);
                    return s.style.display = "none", a.style.width = l.width + "px", a.style.height = l.height + "px", l.style.objectFit = "cover", l.style.borderRadius = "4px", r.appendChild(l), r
                }, t.prototype.findDropTargetNodeByDragOverNode = function(e) {
                    return e.closest(this.dropTargetDataAttributeName)
                }, t.prototype.getDropTargetByDataAttributeValue = function(e) {
                    return this.parentElement.choices.filter((function(t) {
                        return "" + t.value == e
                    }))[0]
                }, t.prototype.getVisibleChoices = function() {
                    var e = this.parentElement;
                    return "ranking" === e.getType() ? e.rankingChoices : e.visibleChoices
                }, t.prototype.isDropTargetValid = function(e) {
                    var t = this.getVisibleChoices();
                    if ("imagepicker" !== this.parentElement.getType()) {
                        var n = t.indexOf(this.dropTarget),
                            o = t.indexOf(this.draggedElement);
                        if (o > n && this.dropTarget.isDragDropMoveUp) return this.dropTarget.isDragDropMoveUp = !1, !1;
                        if (o < n && this.dropTarget.isDragDropMoveDown) return this.dropTarget.isDragDropMoveDown = !1, !1
                    }
                    return -1 !== t.indexOf(e)
                }, t.prototype.calculateIsBottom = function(e) {
                    var t = this.getVisibleChoices();
                    return t.indexOf(this.dropTarget) - t.indexOf(this.draggedElement) > 0
                }, t.prototype.afterDragOver = function(t) {
                    if (!this.isDropTargetDoesntChanged(this.isBottom) && this.dropTarget !== this.draggedElement) {
                        var n = this.getVisibleChoices(),
                            o = n.indexOf(this.dropTarget),
                            r = n.indexOf(this.draggedElement);
                        n.splice(r, 1), n.splice(o, 0, this.draggedElement), "imagepicker" !== this.parentElement.getType() && (r !== o && (t.classList.remove("svc-item-value--moveup"), t.classList.remove("svc-item-value--movedown"), this.dropTarget.isDragDropMoveDown = !1, this.dropTarget.isDragDropMoveUp = !1), r > o && (this.dropTarget.isDragDropMoveDown = !0), r < o && (this.dropTarget.isDragDropMoveUp = !0), e.prototype.ghostPositionChanged.call(this))
                    }
                }, t.prototype.doDrop = function() {
                    var e = this.parentElement.choices,
                        t = this.getVisibleChoices().filter((function(t) {
                            return -1 !== e.indexOf(t)
                        })),
                        n = e.indexOf(this.draggedElement),
                        o = t.indexOf(this.draggedElement);
                    return e.splice(n, 1), e.splice(o, 0, this.draggedElement), this.parentElement
                }, t.prototype.doClear = function() {
                    this.updateVisibleChoices()
                }, t.prototype.updateVisibleChoices = function() {
                    var e = this.parentElement;
                    "ranking" === this.parentElement.getType() ? e.updateRankingChoices() : e.updateVisibleChoices()
                }, t
            }(Nn),
            yr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            vr = function(e) {
                function t() {
                    var t = null !== e && e.apply(this, arguments) || this;
                    return t.isDragOverRootNode = !1, t.doDragOver = function() {
                        t.draggedElementShortcut.querySelector(".sv-ranking-item").style.cursor = "grabbing"
                    }, t.doBanDropHere = function() {
                        t.isDragOverRootNode ? t.allowDropHere = !0 : t.draggedElementShortcut.querySelector(".sv-ranking-item").style.cursor = "not-allowed"
                    }, t.doDrop = function() {
                        return t.parentElement.setValue(), t.parentElement
                    }, t.doClear = function() {
                        t.parentElement.dropTargetNodeMove = null, t.parentElement.updateRankingChoices(!0)
                    }, t
                }
                return yr(t, e), Object.defineProperty(t.prototype, "draggedElementType", {
                    get: function() {
                        return "ranking-item"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createDraggedElementShortcut = function(e, t, n) {
                    var o = document.createElement("div");
                    o.className = this.shortcutClass + " sv-ranking-shortcut", o.style.cssText = ' \n          cursor: grabbing;\n          position: absolute;\n          z-index: 1000;\n          border-radius: 36px;\n          min-width: 100px;\n          box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.1);\n          background-color: var(--background, white);\n          font-family: "Open Sans";\n        ';
                    var r = t.cloneNode(!0);
                    o.appendChild(r);
                    var i = t.getBoundingClientRect();
                    return o.shortcutXOffset = n.clientX - i.x, o.shortcutYOffset = n.clientY - i.y, o
                }, Object.defineProperty(t.prototype, "shortcutClass", {
                    get: function() {
                        return (new ct).append(this.parentElement.cssClasses.root).append(this.parentElement.cssClasses.rootMobileMod, Dn).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDropTargetByDataAttributeValue = function(e) {
                    return this.parentElement.rankingChoices[e]
                }, t.prototype.findDropTargetNodeByDragOverNode = function(e) {
                    return this.isDragOverRootNode = this.getIsDragOverRootNode(e), e.closest(this.dropTargetDataAttributeName)
                }, t.prototype.getIsDragOverRootNode = function(e) {
                    return "string" == typeof e.className && -1 !== e.className.indexOf("sv-ranking")
                }, t.prototype.isDropTargetValid = function(e, t) {
                    var n = this.parentElement.rankingChoices,
                        o = n.indexOf(this.dropTarget),
                        r = n.indexOf(this.draggedElement);
                    return r > o && t.classList.contains("sv-dragdrop-moveup") || r < o && t.classList.contains("sv-dragdrop-movedown") ? (this.parentElement.dropTargetNodeMove = null, !1) : -1 !== n.indexOf(e)
                }, t.prototype.calculateIsBottom = function(e) {
                    var t = this.parentElement.rankingChoices;
                    return t.indexOf(this.dropTarget) - t.indexOf(this.draggedElement) > 0
                }, t.prototype.afterDragOver = function(e) {
                    var t = this.parentElement.rankingChoices,
                        n = t.indexOf(this.dropTarget),
                        o = t.indexOf(this.draggedElement);
                    t.splice(o, 1), t.splice(n, 0, this.draggedElement), this.parentElement.setPropertyValue("rankingChoices", t), this.updateDraggedElementShortcut(n + 1), o !== n && (e.classList.remove("sv-dragdrop-moveup"), e.classList.remove("sv-dragdrop-movedown"), this.parentElement.dropTargetNodeMove = null), o > n && (this.parentElement.dropTargetNodeMove = "down"), o < n && (this.parentElement.dropTargetNodeMove = "up")
                }, t.prototype.updateDraggedElementShortcut = function(e) {
                    var t = e + "";
                    this.draggedElementShortcut.querySelector(".sv-ranking-item__index").innerText = t
                }, t.prototype.ghostPositionChanged = function() {
                    this.parentElement.currentDropTarget = this.draggedElement, e.prototype.ghostPositionChanged.call(this)
                }, t
            }(gr),
            br = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            xr = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Cr = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.domNode = null, n.onVisibleChoicesChanged = function() {
                        if (e.prototype.onVisibleChoicesChanged.call(n), 1 === n.visibleChoices.length) return n.value = [], void n.updateRankingChoices();
                        n.isEmpty() || (n.visibleChoices.length > n.value.length && n.addToValueByVisibleChoices(), n.visibleChoices.length < n.value.length && n.removeFromValueByVisibleChoices()), n.updateRankingChoices()
                    }, n.localeChanged = function() {
                        e.prototype.localeChanged.call(n), n.updateRankingChoices()
                    }, n.handlePointerDown = function(e, t, o) {
                        n.allowStartDrag && n.dragDropRankingChoices.startDrag(e, t, n, o)
                    }, n.handleKeydown = function(e, t) {
                        if (!n.isDesignMode) {
                            var o = e.key,
                                r = n.rankingChoices.indexOf(t);
                            "ArrowUp" === o && r && (n.handleArrowUp(r, t), e.preventDefault()), "ArrowDown" === o && r !== n.rankingChoices.length - 1 && (n.handleArrowDown(r, t), e.preventDefault())
                        }
                    }, n.handleArrowUp = function(e, t) {
                        var o = n.rankingChoices;
                        o.splice(e, 1), o.splice(e - 1, 0, t), n.setValue(), setTimeout((function() {
                            n.focusItem(e - 1)
                        }), 1)
                    }, n.handleArrowDown = function(e, t) {
                        var o = n.rankingChoices;
                        o.splice(e, 1), o.splice(e + 1, 0, t), n.setValue(), setTimeout((function() {
                            n.focusItem(e + 1)
                        }), 1)
                    }, n.focusItem = function(e) {
                        n.domNode.querySelectorAll("." + n.cssClasses.item)[e].focus()
                    }, n.setValue = function() {
                        var e = [];
                        n.rankingChoices.forEach((function(t) {
                            e.push(t.value)
                        })), n.value = e
                    }, n.setValueFromUI = function() {
                        var e = [];
                        n.domNode.querySelectorAll("." + n.cssClasses.controlLabel).forEach((function(t, o) {
                            var r = t.innerText;
                            n.visibleChoices.forEach((function(t) {
                                r === t.text && e.push(t.value)
                            }))
                        })), n.value = e
                    }, n.syncNumbers = function() {
                        if (n.domNode) {
                            var e = "." + n.cssClasses.item + ":not(." + n.cssClasses.itemDragMod + ") ." + n.cssClasses.itemIndex;
                            n.domNode.querySelectorAll(e).forEach((function(e, t) {
                                e.innerText = n.getNumberByIndex(t)
                            }))
                        }
                    }, n.setGhostText = function(e) {
                        var t = n.domNode.querySelectorAll("." + n.cssClasses.itemIndex);
                        t[t.length - 1].innerText = e
                    }, n.createNewArray("rankingChoices"), n
                }
                return br(t, e), t.prototype.getDefaultItemComponent = function() {
                    return ""
                }, t.prototype.getType = function() {
                    return "ranking"
                }, t.prototype.getItemTabIndex = function(e) {
                    return this.isDesignMode ? void 0 : 0
                }, Object.defineProperty(t.prototype, "rootClass", {
                    get: function() {
                        return (new ct).append(this.cssClasses.root).append(this.cssClasses.rootMobileMod, Dn).append(this.cssClasses.rootDisabled, this.isReadOnly).append(this.cssClasses.rootDesignMode, !!this.isDesignMode).append(this.cssClasses.itemOnError, this.errors.length > 0).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getItemClassCore = function(t, n) {
                    var o = this.rankingChoices.indexOf(t),
                        r = this.rankingChoices.indexOf(this.currentDropTarget);
                    return (new ct).append(e.prototype.getItemClassCore.call(this, t, n)).append(this.cssClasses.itemGhostMod, this.currentDropTarget === t).append("sv-dragdrop-movedown", o === r + 1 && "down" === this.dropTargetNodeMove).append("sv-dragdrop-moveup", o === r - 1 && "up" === this.dropTargetNodeMove).toString()
                }, t.prototype.isItemCurrentDropTarget = function(e) {
                    return this.dragDropRankingChoices.dropTarget === e
                }, Object.defineProperty(t.prototype, "ghostPositionCssClass", {
                    get: function() {
                        return "top" === this.ghostPosition ? this.cssClasses.dragDropGhostPositionTop : "bottom" === this.ghostPosition ? this.cssClasses.dragDropGhostPositionBottom : ""
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getNumberByIndex = function(e) {
                    return this.isEmpty() ? "–" : e + 1 + ""
                }, t.prototype.setSurveyImpl = function(t, n) {
                    e.prototype.setSurveyImpl.call(this, t, n), this.updateRankingChoices()
                }, t.prototype.isAnswerCorrect = function() {
                    return a.isArraysEqual(this.value, this.correctAnswer, !1)
                }, t.prototype.onSurveyValueChanged = function(t) {
                    e.prototype.onSurveyValueChanged.call(this, t), this.isLoadingFromJson || this.updateRankingChoices()
                }, t.prototype.addToValueByVisibleChoices = function() {
                    var e = this.value.slice();
                    this.visibleChoices.forEach((function(t) {
                        -1 === e.indexOf(t.value) && e.push(t.value)
                    })), this.value = e
                }, t.prototype.removeFromValueByVisibleChoices = function() {
                    var e = this,
                        t = this.value.slice();
                    this.value.forEach((function(n, o) {
                        var r = !0;
                        e.visibleChoices.forEach((function(e) {
                            e.value === n && (r = !1)
                        })), r && t.splice(o, 1)
                    })), this.value = t
                }, Object.defineProperty(t.prototype, "rankingChoices", {
                    get: function() {
                        return this.getPropertyValue("rankingChoices", [])
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateRankingChoices = function(e) {
                    var t = this;
                    void 0 === e && (e = !1);
                    var n = [];
                    1 !== this.visibleChoices.length ? (e && this.setPropertyValue("rankingChoices", []), this.isEmpty() ? this.setPropertyValue("rankingChoices", this.visibleChoices) : (this.value.forEach((function(e) {
                        t.visibleChoices.forEach((function(t) {
                            t.value === e && n.push(t)
                        }))
                    })), this.setPropertyValue("rankingChoices", n))) : this.setPropertyValue("rankingChoices", n)
                }, t.prototype.endLoadingFromJson = function() {
                    e.prototype.endLoadingFromJson.call(this), this.dragDropRankingChoices = new vr(this.survey, null, this.longTap)
                }, Object.defineProperty(t.prototype, "allowStartDrag", {
                    get: function() {
                        return !this.isReadOnly && !this.isDesignMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.afterRenderQuestionElement = function(t) {
                    this.domNode = t, e.prototype.afterRenderQuestionElement.call(this, t)
                }, t.prototype.beforeDestroyQuestionElement = function(t) {
                    e.prototype.beforeDestroyQuestionElement.call(this, t)
                }, t.prototype.supportSelectAll = function() {
                    return !1
                }, t.prototype.supportOther = function() {
                    return !1
                }, t.prototype.supportNone = function() {
                    return !1
                }, t.prototype.getChoicesFromQuestion = function(t) {
                    var n = e.prototype.getChoicesFromQuestion.call(this, t);
                    return "selected" === this.choicesFromQuestionMode && t.isOtherSelected && t.comment && n.push(new ze(t.otherItem.value, t.comment)), n
                }, t.prototype.getIconHoverCss = function() {
                    return (new ct).append(this.cssClasses.itemIcon).append(this.cssClasses.itemIconHoverMod).toString()
                }, t.prototype.getIconFocusCss = function() {
                    return (new ct).append(this.cssClasses.itemIcon).append(this.cssClasses.itemIconFocusMod).toString()
                }, Object.defineProperty(t.prototype, "longTap", {
                    get: function() {
                        return this.getPropertyValue("longTap")
                    },
                    set: function(e) {
                        this.setPropertyValue("longTap", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), xr([y({
                    defaultValue: null
                })], t.prototype, "currentDropTarget", void 0), xr([y({
                    defaultValue: null
                })], t.prototype, "dropTargetNodeMove", void 0), t
            }(ir);
        I.addClass("ranking", [{
            name: "showOtherItem",
            visible: !1,
            isSerializable: !1
        }, {
            name: "otherText",
            visible: !1,
            isSerializable: !1
        }, {
            name: "otherErrorText",
            visible: !1,
            isSerializable: !1
        }, {
            name: "storeOthersAsComment",
            visible: !1,
            isSerializable: !1
        }, {
            name: "showNoneItem",
            visible: !1,
            isSerializable: !1
        }, {
            name: "noneText",
            visible: !1,
            isSerializable: !1
        }, {
            name: "showSelectAllItem",
            visible: !1,
            isSerializable: !1
        }, {
            name: "selectAllText",
            visible: !1,
            isSerializable: !1
        }, {
            name: "colCount:number",
            visible: !1,
            isSerializable: !1
        }, {
            name: "maxSelectedChoices",
            visible: !1,
            isSerializable: !1
        }, {
            name: "longTap",
            default: !0,
            visible: !1,
            isSerializable: !1
        }, {
            name: "itemComponent",
            visible: !1,
            default: ""
        }], (function() {
            return new Cr("")
        }), "checkbox"), ln.Instance.registerQuestion("ranking", (function(e) {
            var t = new Cr(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var wr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Pr = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return wr(t, e), Object.defineProperty(t.prototype, "rows", {
                    get: function() {
                        return this.getPropertyValue("rows")
                    },
                    set: function(e) {
                        this.setPropertyValue("rows", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cols", {
                    get: function() {
                        return this.getPropertyValue("cols")
                    },
                    set: function(e) {
                        this.setPropertyValue("cols", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "acceptCarriageReturn", {
                    get: function() {
                        return this.getPropertyValue("acceptCarriageReturn")
                    },
                    set: function(e) {
                        this.setPropertyValue("acceptCarriageReturn", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "autoGrow", {
                    get: function() {
                        return this.getPropertyValue("autoGrow") || this.survey && this.survey.autoGrowComment
                    },
                    set: function(e) {
                        this.setPropertyValue("autoGrow", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "comment"
                }, t.prototype.afterRenderQuestionElement = function(t) {
                    this.element = document.getElementById(this.inputId) || t, this.updateElement(), e.prototype.afterRenderQuestionElement.call(this, t)
                }, t.prototype.updateElement = function() {
                    var e = this;
                    this.element && this.autoGrow && setTimeout((function() {
                        return et(e.element)
                    }), 1)
                }, t.prototype.beforeDestroyQuestionElement = function(t) {
                    e.prototype.beforeDestroyQuestionElement.call(this, t), this.element = void 0
                }, t.prototype.onInput = function(e) {
                    this.isInputTextUpdate ? this.value = e.target.value : this.updateElement()
                }, t.prototype.onKeyDown = function(e) {
                    this.acceptCarriageReturn || "Enter" !== e.key && 13 !== e.keyCode || (e.preventDefault(), e.stopPropagation())
                }, t.prototype.onValueChanged = function() {
                    e.prototype.onValueChanged.call(this), this.updateElement()
                }, t.prototype.setNewValue = function(t) {
                    !this.acceptCarriageReturn && t && (t = t.replace(new RegExp("(\r\n|\n|\r)", "gm"), "")), e.prototype.setNewValue.call(this, t)
                }, Object.defineProperty(t.prototype, "className", {
                    get: function() {
                        return (this.cssClasses ? this.getControlClass() : "panel-comment-root") || void 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(_o);
        I.addClass("comment", [{
            name: "maxLength:number",
            default: -1
        }, {
            name: "cols:number",
            default: 50
        }, {
            name: "rows:number",
            default: 4
        }, {
            name: "placeholder",
            alternativeName: "placeHolder",
            serializationProperty: "locPlaceholder"
        }, {
            name: "textUpdateMode",
            default: "default",
            choices: ["default", "onBlur", "onTyping"]
        }, {
            name: "autoGrow:boolean"
        }, {
            name: "acceptCarriageReturn:boolean",
            default: !0,
            visible: !1
        }], (function() {
            return new Pr("")
        }), "textbase"), ln.Instance.registerQuestion("comment", (function(e) {
            return new Pr(e)
        }));
        var Vr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Tr = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            kr = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.isUploading = !1, n.isDragging = !1, n.onUploadStateChanged = n.addEvent(), n.onStateChanged = n.addEvent(), n.mobileFileNavigator = new ft, n.dragCounter = 0, n.onDragEnter = function(e) {
                        n.isInputReadOnly || (e.preventDefault(), n.isDragging = !0, n.dragCounter++)
                    }, n.onDragOver = function(e) {
                        if (n.isInputReadOnly) return e.returnValue = !1, !1;
                        e.dataTransfer.dropEffect = "copy", e.preventDefault()
                    }, n.onDrop = function(e) {
                        if (!n.isInputReadOnly) {
                            n.isDragging = !1, n.dragCounter = 0, e.preventDefault();
                            var t = e.dataTransfer;
                            n.onChange(t)
                        }
                    }, n.onDragLeave = function(e) {
                        n.isInputReadOnly || (n.dragCounter--, 0 === n.dragCounter && (n.isDragging = !1))
                    }, n.doChange = function(e) {
                        var t = e.target || e.srcElement;
                        n.onChange(t)
                    }, n.doClean = function(e) {
                        e.currentTarget || e.srcElement;
                        if (n.needConfirmRemoveFile && !Qe(n.confirmRemoveAllMessage)) return;
                        n.rootElement && (n.rootElement.querySelectorAll("input")[0].value = ""), n.clear()
                    }, n.doDownloadFile = function(e, t) {
                        Ue() && (e.preventDefault(), We(t.content, t.name))
                    }, n.fileIndexAction = new Et({
                        id: "fileIndex",
                        title: n.getFileIndexCaption(),
                        enabled: !1
                    }), n.prevFileAction = new Et({
                        id: "prevPage",
                        iconSize: 16,
                        action: function() {
                            n.indexToShow = n.previewValue.length && (n.indexToShow - 1 + n.previewValue.length) % n.previewValue.length || 0, n.fileIndexAction.title = n.getFileIndexCaption()
                        }
                    }), n.nextFileAction = new Et({
                        id: "nextPage",
                        iconSize: 16,
                        action: function() {
                            n.indexToShow = n.previewValue.length && (n.indexToShow + 1) % n.previewValue.length || 0, n.fileIndexAction.title = n.getFileIndexCaption()
                        }
                    }), n.mobileFileNavigator.actions = [n.prevFileAction, n.fileIndexAction, n.nextFileAction], n
                }
                return Vr(t, e), Object.defineProperty(t.prototype, "mobileFileNavigatorVisible", {
                    get: function() {
                        return this.isMobile && this.containsMultiplyFiles
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateElementCssCore = function(t) {
                    e.prototype.updateElementCssCore.call(this, t), this.prevFileAction.iconName = this.cssClasses.leftIconId, this.nextFileAction.iconName = this.cssClasses.rightIconId
                }, t.prototype.getFileIndexCaption = function() {
                    return this.getLocalizationFormatString("indexText", this.indexToShow + 1, this.previewValue.length)
                }, t.prototype.isPreviewVisible = function(e) {
                    return !this.isMobile || e === this.indexToShow
                }, t.prototype.getType = function() {
                    return "file"
                }, t.prototype.clearOnDeletingContainer = function() {
                    this.survey && this.survey.clearFiles(this, this.name, this.value, null, (function() {}))
                }, Object.defineProperty(t.prototype, "showPreview", {
                    get: function() {
                        return this.getPropertyValue("showPreview")
                    },
                    set: function(e) {
                        this.setPropertyValue("showPreview", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowMultiple", {
                    get: function() {
                        return this.getPropertyValue("allowMultiple", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("allowMultiple", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "imageHeight", {
                    get: function() {
                        return this.getPropertyValue("imageHeight")
                    },
                    set: function(e) {
                        this.setPropertyValue("imageHeight", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "imageWidth", {
                    get: function() {
                        return this.getPropertyValue("imageWidth")
                    },
                    set: function(e) {
                        this.setPropertyValue("imageWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "acceptedTypes", {
                    get: function() {
                        return this.getPropertyValue("acceptedTypes")
                    },
                    set: function(e) {
                        this.setPropertyValue("acceptedTypes", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "storeDataAsText", {
                    get: function() {
                        return this.getPropertyValue("storeDataAsText")
                    },
                    set: function(e) {
                        this.setPropertyValue("storeDataAsText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "waitForUpload", {
                    get: function() {
                        return this.getPropertyValue("waitForUpload")
                    },
                    set: function(e) {
                        this.setPropertyValue("waitForUpload", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowImagesPreview", {
                    get: function() {
                        return this.getPropertyValue("allowImagesPreview")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowImagesPreview", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxSize", {
                    get: function() {
                        return this.getPropertyValue("maxSize")
                    },
                    set: function(e) {
                        this.setPropertyValue("maxSize", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "needConfirmRemoveFile", {
                    get: function() {
                        return this.getPropertyValue("needConfirmRemoveFile")
                    },
                    set: function(e) {
                        this.setPropertyValue("needConfirmRemoveFile", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getConfirmRemoveMessage = function(e) {
                    return this.confirmRemoveMessage.format(e)
                }, Object.defineProperty(t.prototype, "inputTitle", {
                    get: function() {
                        return this.isUploading ? this.loadingFileTitle : this.isEmpty() ? this.chooseFileTitle : " "
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.clear = function(e) {
                    var t = this;
                    this.survey && (this.containsMultiplyFiles = !1, this.survey.clearFiles(this, this.name, this.value, null, (function(n, o) {
                        "success" === n && (t.value = void 0, t.errors = [], e && e(), t.indexToShow = 0, t.fileIndexAction.title = t.getFileIndexCaption())
                    })))
                }, Object.defineProperty(t.prototype, "multipleRendered", {
                    get: function() {
                        return this.allowMultiple ? "multiple" : void 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showRemoveButton", {
                    get: function() {
                        return !this.isReadOnly && !this.isEmpty() && this.cssClasses.removeButton
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showRemoveButtonBottom", {
                    get: function() {
                        return !this.isReadOnly && !this.isEmpty() && this.cssClasses.removeButtonBottom
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.defaultImage = function(e) {
                    return !this.canPreviewImage(e) && !!this.cssClasses.defaultImage
                }, t.prototype.removeFile = function(e) {
                    this.removeFileByContent(this.value.filter((function(t) {
                        return t.name === e
                    }))[0])
                }, t.prototype.removeFileByContent = function(e) {
                    var t = this;
                    this.survey && this.survey.clearFiles(this, this.name, this.value, e.name, (function(n, o) {
                        if ("success" === n) {
                            var r = t.value;
                            Array.isArray(r) ? t.value = r.filter((function(t) {
                                return !a.isTwoValueEquals(t, e, !0)
                            })) : t.value = void 0
                        }
                    }))
                }, t.prototype.loadFiles = function(e) {
                    var t = this;
                    if (this.survey && (this.errors = [], this.allFilesOk(e))) {
                        var n = function() {
                            t.stateChanged("loading");
                            var n = [];
                            t.storeDataAsText ? e.forEach((function(o) {
                                var r = new FileReader;
                                r.onload = function(i) {
                                    (n = n.concat([{
                                        name: o.name,
                                        type: o.type,
                                        content: r.result
                                    }])).length === e.length && (t.value = (t.value || []).concat(n))
                                }, r.readAsDataURL(o)
                            })) : t.survey && t.survey.uploadFiles(t, t.name, e, (function(e, n) {
                                "error" === e && t.stateChanged("error"), "success" === e && (t.value = (t.value || []).concat(n.map((function(e) {
                                    return {
                                        name: e.file.name,
                                        type: e.file.type,
                                        content: e.content
                                    }
                                }))))
                            }))
                        };
                        this.allowMultiple ? n() : this.clear(n)
                    }
                }, t.prototype.canPreviewImage = function(e) {
                    return this.allowImagesPreview && !!e && this.isFileImage(e)
                }, t.prototype.loadPreview = function(e) {
                    var t = this;
                    if (this.previewValue.splice(0, this.previewValue.length), this.showPreview && e) {
                        var n = Array.isArray(e) ? e : e ? [e] : [];
                        this.storeDataAsText ? n.forEach((function(e) {
                            var n = e.content || e;
                            t.previewValue.push({
                                name: e.name,
                                type: e.type,
                                content: n
                            })
                        })) : (this._previewLoader && this._previewLoader.dispose(), this.isReadyValue = !1, this._previewLoader = new Sr(this, (function(e, n) {
                            "loaded" === e && n.forEach((function(e) {
                                t.previewValue.push(e)
                            })), t.isReadyValue = !0, t.onReadyChanged && t.onReadyChanged.fire(t, {
                                question: t,
                                isReady: !0,
                                oldIsReady: !1
                            }), t._previewLoader.dispose(), t._previewLoader = void 0
                        })), this._previewLoader.load(n)), this.indexToShow = this.previewValue.length > 0 && this.indexToShow > 0 ? this.indexToShow - 1 : 0, this.fileIndexAction.title = this.getFileIndexCaption(), this.containsMultiplyFiles = this.previewValue.length > 1
                    }
                }, t.prototype.onCheckForErrors = function(t, n) {
                    e.prototype.onCheckForErrors.call(this, t, n), this.isUploading && this.waitForUpload && t.push(new ke(this.getLocalizationString("uploadingFile"), this))
                }, t.prototype.stateChanged = function(e) {
                    this.currentState != e && ("loading" === e && (this.isUploading = !0), "loaded" === e && (this.isUploading = !1), "error" === e && (this.isUploading = !1), this.currentState = e, this.onStateChanged.fire(this, {
                        state: e
                    }), this.onUploadStateChanged.fire(this, {
                        state: e
                    }))
                }, t.prototype.allFilesOk = function(e) {
                    var t = this,
                        n = this.errors ? this.errors.length : 0;
                    return (e || []).forEach((function(e) {
                        t.maxSize > 0 && e.size > t.maxSize && t.errors.push(new we(t.maxSize, t))
                    })), n === this.errors.length
                }, t.prototype.isFileImage = function(e) {
                    if (!e) return !1;
                    var t = e.content && e.content.substring(0, "data:image".length);
                    return "data:image" === (t = t && t.toLowerCase()) || !!e.type && 0 === e.type.toLowerCase().indexOf("image/")
                }, t.prototype.getPlainData = function(t) {
                    void 0 === t && (t = {
                        includeEmpty: !0
                    });
                    var n = e.prototype.getPlainData.call(this, t);
                    if (n && !this.isEmpty()) {
                        n.isNode = !1;
                        var o = Array.isArray(this.value) ? this.value : [this.value];
                        n.data = o.map((function(e, t) {
                            return {
                                name: t,
                                title: "File",
                                value: e.content && e.content || e,
                                displayValue: e.name && e.name || e,
                                getString: function(e) {
                                    return "object" == typeof e ? JSON.stringify(e) : e
                                },
                                isNode: !1
                            }
                        }))
                    }
                    return n
                }, t.prototype.supportComment = function() {
                    return !0
                }, t.prototype.getChooseFileCss = function() {
                    var e = this.isAnswered;
                    return (new ct).append(this.cssClasses.chooseFile).append(this.cssClasses.controlDisabled, this.isReadOnly).append(this.cssClasses.chooseFileAsText, !e).append(this.cssClasses.chooseFileAsTextDisabled, !e && this.isInputReadOnly).append(this.cssClasses.chooseFileAsIcon, e).toString()
                }, t.prototype.getReadOnlyFileCss = function() {
                    return (new ct).append("form-control").append(this.cssClasses.placeholderInput).toString()
                }, Object.defineProperty(t.prototype, "fileRootCss", {
                    get: function() {
                        return (new ct).append(this.cssClasses.root).append(this.cssClasses.single, !this.allowMultiple).append(this.cssClasses.singleImage, !this.allowMultiple && this.isAnswered && this.canPreviewImage(this.value[0])).append(this.cssClasses.mobile, this.isMobile).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getFileDecoratorCss = function() {
                    return (new ct).append(this.cssClasses.fileDecorator).append(this.cssClasses.onError, this.errors.length > 0).append(this.cssClasses.fileDecoratorDrag, this.isDragging).toString()
                }, t.prototype.onChange = function(e) {
                    if (window.FileReader && e && e.files && !(e.files.length < 1)) {
                        for (var t = [], n = this.allowMultiple ? e.files.length : 1, o = 0; o < n; o++) t.push(e.files[o]);
                        e.value = "", this.loadFiles(t)
                    }
                }, t.prototype.onChangeQuestionValue = function(t) {
                    e.prototype.onChangeQuestionValue.call(this, t), this.stateChanged(this.isEmpty() ? "empty" : "loaded"), this.loadPreview(t)
                }, t.prototype.afterRender = function(t) {
                    this.rootElement = t, e.prototype.afterRender.call(this, t)
                }, t.prototype.doRemoveFile = function(e) {
                    if (this.needConfirmRemoveFile && !Qe(this.getConfirmRemoveMessage(e.name))) return;
                    var t = this.previewValue.indexOf(e);
                    this.removeFileByContent(-1 === t ? e : this.value[t])
                }, Tr([y()], t.prototype, "isDragging", void 0), Tr([b({})], t.prototype, "previewValue", void 0), Tr([y({
                    defaultValue: "empty"
                })], t.prototype, "currentState", void 0), Tr([y({
                    defaultValue: 0
                })], t.prototype, "indexToShow", void 0), Tr([y({
                    defaultValue: !1
                })], t.prototype, "containsMultiplyFiles", void 0), Tr([y({
                    localizable: {
                        defaultStr: "confirmRemoveFile"
                    }
                })], t.prototype, "confirmRemoveMessage", void 0), Tr([y({
                    localizable: {
                        defaultStr: "confirmRemoveAllFiles"
                    }
                })], t.prototype, "confirmRemoveAllMessage", void 0), Tr([y({
                    localizable: {
                        defaultStr: "noFileChosen"
                    }
                })], t.prototype, "noFileChosenCaption", void 0), Tr([y({
                    localizable: {
                        defaultStr: "chooseFileCaption"
                    }
                })], t.prototype, "chooseButtonCaption", void 0), Tr([y({
                    localizable: {
                        defaultStr: "clearCaption"
                    }
                })], t.prototype, "clearButtonCaption", void 0), Tr([y({
                    localizable: {
                        defaultStr: "removeFileCaption"
                    }
                })], t.prototype, "removeFileCaption", void 0), Tr([y({
                    localizable: {
                        defaultStr: "loadingFile"
                    }
                })], t.prototype, "loadingFileTitle", void 0), Tr([y({
                    localizable: {
                        defaultStr: "chooseFile"
                    }
                })], t.prototype, "chooseFileTitle", void 0), Tr([y({
                    localizable: {
                        defaultStr: "fileDragAreaPlaceholder"
                    }
                })], t.prototype, "dragAreaPlaceholder", void 0), t
            }(Xt);
        I.addClass("file", [{
            name: "showCommentArea:switch",
            layout: "row",
            visible: !0,
            category: "general"
        }, {
            name: "commentText",
            dependsOn: "showCommentArea",
            visibleIf: function(e) {
                return e.hasComment
            },
            serializationProperty: "locCommentText",
            layout: "row"
        }, {
            name: "commentPlaceholder",
            alternativeName: "commentPlaceHolder",
            serializationProperty: "locCommentPlaceholder",
            dependsOn: "showCommentArea",
            visibleIf: function(e) {
                return e.hasComment
            }
        }, {
            name: "showPreview:boolean",
            default: !0
        }, "allowMultiple:boolean", {
            name: "allowImagesPreview:boolean",
            default: !0
        }, "imageHeight", "imageWidth", "acceptedTypes", {
            name: "storeDataAsText:boolean",
            default: !0
        }, {
            name: "waitForUpload:boolean",
            default: !1
        }, {
            name: "maxSize:number",
            default: 0
        }, {
            name: "defaultValue",
            visible: !1
        }, {
            name: "correctAnswer",
            visible: !1
        }, {
            name: "validators",
            visible: !1
        }, {
            name: "needConfirmRemoveFile:boolean"
        }], (function() {
            return new kr("")
        }), "question"), ln.Instance.registerQuestion("file", (function(e) {
            return new kr(e)
        }));
        var Sr = function() {
                function e(e, t) {
                    this.fileQuestion = e, this.callback = t, this.loaded = []
                }
                return e.prototype.load = function(e) {
                    var t = this;
                    e.forEach((function(n) {
                        t.fileQuestion.survey && t.fileQuestion.survey.downloadFile(t.fileQuestion, t.fileQuestion.name, n, (function(o, r) {
                            t.fileQuestion && t.callback && ("success" === o ? (t.loaded.push({
                                content: r,
                                name: n.name,
                                type: n.type
                            }), t.loaded.length === e.length && t.callback("loaded", t.loaded)) : t.callback("error", t.loaded))
                        }))
                    }))
                }, e.prototype.dispose = function() {
                    this.fileQuestion = void 0, this.callback = void 0
                }, e
            }(),
            Or = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Er = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.createLocalizableString("html", n).onGetTextCallback = function(e) {
                        return n.survey && !n.ignoreHtmlProgressing ? n.survey.processHtml(e) : e
                    }, n
                }
                return Or(t, e), t.prototype.getType = function() {
                    return "html"
                }, Object.defineProperty(t.prototype, "isCompositeQuestion", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getProcessedText = function(t) {
                    return this.ignoreHtmlProgressing ? t : e.prototype.getProcessedText.call(this, t)
                }, Object.defineProperty(t.prototype, "html", {
                    get: function() {
                        return this.getLocalizableStringText("html", "")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("html", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locHtml", {
                    get: function() {
                        return this.getLocalizableString("html")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "processedHtml", {
                    get: function() {
                        return this.survey ? this.survey.processHtml(this.html) : this.html
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(tr);
        I.addClass("html", [{
            name: "html:html",
            serializationProperty: "locHtml"
        }], (function() {
            return new Er("")
        }), "nonvalue"), ln.Instance.registerQuestion("html", (function(e) {
            return new Er(e)
        }));
        var Rr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ir = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return Rr(t, e), t.prototype.getDefaultItemComponent = function() {
                    return "survey-radiogroup-item"
                }, t.prototype.getType = function() {
                    return "radiogroup"
                }, Object.defineProperty(t.prototype, "ariaRole", {
                    get: function() {
                        return "radiogroup"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "titleAriaLabel", {
                    get: function() {
                        return null
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getFirstInputElementId = function() {
                    return this.inputId + "_0"
                }, Object.defineProperty(t.prototype, "selectedItem", {
                    get: function() {
                        var e = this.selectedItemValues;
                        if (this.isEmpty()) return null;
                        var t = ze.getItemByValue(this.visibleChoices, this.value);
                        return t || e || this.updateSelectedItemValues(), t || e || new ze(this.value)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showClearButton", {
                    get: function() {
                        return this.getPropertyValue("showClearButton")
                    },
                    set: function(e) {
                        this.setPropertyValue("showClearButton", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "canShowClearButton", {
                    get: function() {
                        return this.showClearButton && !this.isReadOnly
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "clearButtonCaption", {
                    get: function() {
                        return this.getLocalizationString("clearCaption")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.supportGoNextPageAutomatic = function() {
                    return !0
                }, Object.defineProperty(t.prototype, "showClearButtonInContent", {
                    get: function() {
                        return !this.isDefaultV2Theme && this.canShowClearButton
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDefaultTitleActions = function() {
                    var e = this,
                        t = [];
                    if (this.isDefaultV2Theme && !this.isDesignMode) {
                        var n = new Et({
                            title: this.clearButtonCaption,
                            id: "sv-clr-btn-".concat(this.id),
                            action: function() {
                                e.clearValue()
                            },
                            innerCss: this.cssClasses.clearButton,
                            visible: new de((function() {
                                return e.canShowClearButton
                            }))
                        });
                        t.push(n)
                    }
                    return t
                }, t
            }(bo);
        I.addClass("radiogroup", [{
            name: "showClearButton:boolean",
            default: !1
        }, {
            name: "separateSpecialChoices",
            visible: !0
        }, {
            name: "itemComponent",
            visible: !1,
            default: "survey-radiogroup-item"
        }], (function() {
            return new Ir("")
        }), "checkboxbase"), ln.Instance.registerQuestion("radiogroup", (function(e) {
            var t = new Ir(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var _r = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            qr = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Dr = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this) || this;
                    return o.itemValue = t, o.locString = n, o
                }
                return _r(t, e), Object.defineProperty(t.prototype, "value", {
                    get: function() {
                        return this.itemValue.getPropertyValue("value")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locText", {
                    get: function() {
                        return this.locString || this.itemValue.locText
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(he),
            Ar = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.createItemValues("rateValues"), n.createRenderedRateItems(), n.createLocalizableString("ratingOptionsCaption", n, !1, !0), n.registerFunctionOnPropertiesValueChanged(["rateValues", "rateMin", "rateMax", "minRateDescription", "maxRateDescription", "rateStep", "displayRateDescriptionsAsExtremeItems"], (function() {
                        return n.createRenderedRateItems()
                    })), n.createLocalizableString("minRateDescription", n, !0), n.createLocalizableString("maxRateDescription", n, !0), n
                }
                return _r(t, e), t.prototype.endLoadingFromJson = function() {
                    e.prototype.endLoadingFromJson.call(this), this.hasMinRateDescription = !!this.minRateDescription, this.hasMaxRateDescription = !!this.maxRateDescription, this.createRenderedRateItems()
                }, Object.defineProperty(t.prototype, "rateValues", {
                    get: function() {
                        return this.getPropertyValue("rateValues")
                    },
                    set: function(e) {
                        this.setPropertyValue("rateValues", e), this.createRenderedRateItems()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rateMin", {
                    get: function() {
                        return this.getPropertyValue("rateMin")
                    },
                    set: function(e) {
                        this.setPropertyValue("rateMin", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rateMax", {
                    get: function() {
                        return this.getPropertyValue("rateMax")
                    },
                    set: function(e) {
                        this.setPropertyValue("rateMax", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "rateStep", {
                    get: function() {
                        return this.getPropertyValue("rateStep")
                    },
                    set: function(e) {
                        this.setPropertyValue("rateStep", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDisplayValueCore = function(e, t) {
                    var n = ze.getTextOrHtmlByValue(this.visibleRateValues, t);
                    return n || t
                }, Object.defineProperty(t.prototype, "visibleRateValues", {
                    get: function() {
                        return this.renderedRateItems.map((function(e) {
                            return e.itemValue
                        }))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.itemValuePropertyChanged = function(t, n, o, r) {
                    0 === this.rateValues.length && void 0 !== r && this.setPropertyValue("rateValues", this.visibleRateValues), e.prototype.itemValuePropertyChanged.call(this, t, n, o, r)
                }, t.prototype.createRenderedRateItems = function() {
                    var e = this,
                        t = [];
                    if (this.rateValues.length > 0) t = this.rateValues;
                    else {
                        for (var n = [], o = this.rateMin, r = this.rateStep; o <= this.rateMax && n.length < s.ratingMaximumRateValueCount;) {
                            var i = new ze(o);
                            i.locOwner = this, i.ownerPropertyName = "rateValues", n.push(i), o = this.correctValue(o + r, r)
                        }
                        t = n
                    }
                    this.renderedRateItems = t.map((function(n, o) {
                        if (e.displayRateDescriptionsAsExtremeItems) {
                            if (0 == o) return new Dr(n, e.minRateDescription && e.locMinRateDescription || n.locText);
                            if (o == t.length - 1) return new Dr(n, e.maxRateDescription && e.locMaxRateDescription || n.locText)
                        }
                        return new Dr(n)
                    }))
                }, t.prototype.correctValue = function(e, t) {
                    if (!e) return e;
                    if (Math.round(e) == e) return e;
                    for (var n = 0; Math.round(t) != t;) t *= 10, n++;
                    return parseFloat(e.toFixed(n))
                }, t.prototype.getType = function() {
                    return "rating"
                }, t.prototype.getFirstInputElementId = function() {
                    return this.inputId + "_0"
                }, t.prototype.getInputId = function(e) {
                    return this.inputId + "_" + e
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    return !0
                }, t.prototype.supportComment = function() {
                    return !0
                }, t.prototype.supportOther = function() {
                    return !1
                }, Object.defineProperty(t.prototype, "minRateDescription", {
                    get: function() {
                        return this.getLocalizableStringText("minRateDescription")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("minRateDescription", e), this.hasMinRateDescription = !!this.minRateDescription
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locMinRateDescription", {
                    get: function() {
                        return this.getLocalizableString("minRateDescription")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxRateDescription", {
                    get: function() {
                        return this.getLocalizableStringText("maxRateDescription")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("maxRateDescription", e), this.hasMaxRateDescription = !!this.maxRateDescription
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locMaxRateDescription", {
                    get: function() {
                        return this.getLocalizableString("maxRateDescription")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasMinLabel", {
                    get: function() {
                        return !this.displayRateDescriptionsAsExtremeItems && !!this.hasMinRateDescription
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasMaxLabel", {
                    get: function() {
                        return !this.displayRateDescriptionsAsExtremeItems && !!this.hasMaxRateDescription
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.valueToData = function(e) {
                    if (this.rateValues.length > 0) {
                        var t = ze.getItemByValue(this.rateValues, e);
                        return t ? t.value : e
                    }
                    return isNaN(e) ? e : parseFloat(e)
                }, t.prototype.setValueFromClick = function(e) {
                    this.value === parseFloat(e) ? this.clearValue() : this.value = e
                }, Object.defineProperty(t.prototype, "ratingRootCss", {
                    get: function() {
                        return ("buttons" == this.displayMode || this.survey && this.survey.isDesignMode) && this.cssClasses.rootWrappable ? this.cssClasses.rootWrappable : this.cssClasses.root
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getItemClass = function(e) {
                    var t = this.value == e.value,
                        n = !(this.isReadOnly || !e.isEnabled || t || this.survey && this.survey.isDesignMode);
                    return (new ct).append(this.cssClasses.item).append(this.cssClasses.selected, this.value == e.value).append(this.cssClasses.itemDisabled, this.isReadOnly).append(this.cssClasses.itemHover, n).append(this.cssClasses.itemOnError, this.errors.length > 0).toString()
                }, t.prototype.getControlClass = function() {
                    return this.isEmpty(), (new ct).append(this.cssClasses.control).append(this.cssClasses.controlEmpty, this.isEmpty()).append(this.cssClasses.onError, this.errors.length > 0).append(this.cssClasses.controlDisabled, this.isReadOnly).toString()
                }, Object.defineProperty(t.prototype, "placeholder", {
                    get: function() {
                        return this.getLocalizableStringText("ratingOptionsCaption")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("ratingOptionsCaption", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPlaceholder", {
                    get: function() {
                        return this.getLocalizableString("ratingOptionsCaption")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowClear", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "searchEnabled", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedValue", {
                    get: function() {
                        return this.value
                    },
                    set: function(e) {
                        this.value = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "visibleChoices", {
                    get: function() {
                        return this.visibleRateValues
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "readOnlyText", {
                    get: function() {
                        return this.displayValue || this.placeholder
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.needResponsiveWidth = function() {
                    this.getPropertyValue("rateValues");
                    var e = this.getPropertyValue("rateStep"),
                        t = this.getPropertyValue("rateMax"),
                        n = this.getPropertyValue("rateMin");
                    return "dropdown" != this.displayMode && !!(this.hasMinRateDescription || this.hasMaxRateDescription || e && (t - n) / e > 9)
                }, t.prototype.supportResponsiveness = function() {
                    return !0
                }, t.prototype.getCompactRenderAs = function() {
                    return "buttons" == this.displayMode ? "default" : "dropdown"
                }, t.prototype.getDesktopRenderAs = function() {
                    return "dropdown" == this.displayMode ? "dropdown" : "default"
                }, qr([b()], t.prototype, "renderedRateItems", void 0), qr([y({
                    defaultValue: !1
                })], t.prototype, "hasMinRateDescription", void 0), qr([y({
                    defaultValue: !1
                })], t.prototype, "hasMaxRateDescription", void 0), qr([y({
                    defaultValue: !1
                })], t.prototype, "displayRateDescriptionsAsExtremeItems", void 0), qr([y({
                    defaultValue: "auto",
                    onSet: function(e, t) {
                        t.isDesignMode || (t.renderAs = "dropdown" === e ? "dropdown" : "default")
                    }
                })], t.prototype, "displayMode", void 0), t
            }(Xt);
        I.addClass("rating", [{
            name: "showCommentArea:switch",
            layout: "row",
            visible: !0,
            category: "general"
        }, {
            name: "commentText",
            dependsOn: "showCommentArea",
            visibleIf: function(e) {
                return e.hasComment
            },
            serializationProperty: "locCommentText",
            layout: "row"
        }, {
            name: "commentPlaceholder",
            alternativeName: "commentPlaceHolder",
            serializationProperty: "locCommentPlaceholder",
            dependsOn: "showCommentArea",
            visibleIf: function(e) {
                return e.hasComment
            }
        }, {
            name: "rateValues:itemvalue[]",
            baseValue: function() {
                return u.getString("choices_Item")
            }
        }, {
            name: "rateMin:number",
            default: 1,
            onSettingValue: function(e, t) {
                return t > e.rateMax - e.rateStep ? e.rateMax - e.rateStep : t
            }
        }, {
            name: "rateMax:number",
            default: 5,
            onSettingValue: function(e, t) {
                return t < e.rateMin + e.rateStep ? e.rateMin + e.rateStep : t
            }
        }, {
            name: "rateStep:number",
            default: 1,
            minValue: .1,
            onSettingValue: function(e, t) {
                return t <= 0 && (t = 1), t > e.rateMax - e.rateMin && (t = e.rateMax - e.rateMin), t
            }
        }, {
            name: "minRateDescription",
            alternativeName: "mininumRateDescription",
            serializationProperty: "locMinRateDescription"
        }, {
            name: "maxRateDescription",
            alternativeName: "maximumRateDescription",
            serializationProperty: "locMaxRateDescription"
        }, {
            name: "displayRateDescriptionsAsExtremeItems:boolean",
            default: !1
        }, {
            name: "displayMode",
            default: "auto",
            choices: ["auto", "buttons", "dropdown"]
        }], (function() {
            return new Ar("")
        }), "question"), ln.Instance.registerQuestion("rating", (function(e) {
            return new Ar(e)
        }));
        var jr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Lr = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Mr = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.createLocalizableString("labelFalse", n, !0, "booleanUncheckedLabel"), n.createLocalizableString("labelTrue", n, !0, "booleanCheckedLabel"), n
                }
                return jr(t, e), t.prototype.getType = function() {
                    return "boolean"
                }, t.prototype.isLayoutTypeSupported = function(e) {
                    return !0
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    return "checkbox" !== this.renderAs
                }, Object.defineProperty(t.prototype, "isIndeterminate", {
                    get: function() {
                        return this.isEmpty()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "hasTitle", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "booleanValue", {
                    get: function() {
                        return this.isEmpty() ? null : this.value == this.getValueTrue()
                    },
                    set: function(e) {
                        this.isReadOnly || this.setBooleanValue(e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "checkedValue", {
                    get: function() {
                        return this.booleanValue
                    },
                    set: function(e) {
                        this.booleanValue = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setBooleanValue = function(e) {
                    this.isValueEmpty(e) ? this.value = null : this.value = 1 == e ? this.getValueTrue() : this.getValueFalse()
                }, Object.defineProperty(t.prototype, "defaultValue", {
                    get: function() {
                        return this.getPropertyValue("defaultValue")
                    },
                    set: function(e) {
                        !0 === e && (e = "true"), !1 === e && (e = "false"), void 0 === e && (e = "indeterminate"), this.setPropertyValue("defaultValue", e), this.updateValueWithDefaults()
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getDefaultValue = function() {
                    return "indeterminate" == this.defaultValue || void 0 === this.defaultValue ? null : "true" == this.defaultValue ? this.getValueTrue() : this.getValueFalse()
                }, Object.defineProperty(t.prototype, "locTitle", {
                    get: function() {
                        var e = this.getLocalizableString("title");
                        return !this.isValueEmpty(this.locLabel.text) && (this.isValueEmpty(e.text) || this.isLabelRendered && !this.showTitle) ? this.locLabel : e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "labelRenderedAriaID", {
                    get: function() {
                        return this.isLabelRendered ? this.ariaTitleId : null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isLabelRendered", {
                    get: function() {
                        return "hidden" === this.titleLocation
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "canRenderLabelDescription", {
                    get: function() {
                        return this.isLabelRendered && this.hasDescription && (this.hasDescriptionUnderTitle || this.hasDescriptionUnderInput)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "labelTrue", {
                    get: function() {
                        return this.getLocalizableStringText("labelTrue")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("labelTrue", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locLabelTrue", {
                    get: function() {
                        return this.getLocalizableString("labelTrue")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isDeterminated", {
                    get: function() {
                        return null !== this.booleanValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "labelFalse", {
                    get: function() {
                        return this.getLocalizableStringText("labelFalse")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("labelFalse", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locLabelFalse", {
                    get: function() {
                        return this.getLocalizableString("labelFalse")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getValueTrue = function() {
                    return void 0 === this.valueTrue || this.valueTrue
                }, t.prototype.getValueFalse = function() {
                    return void 0 !== this.valueFalse && this.valueFalse
                }, t.prototype.setDefaultValue = function() {
                    this.isDefaultValueSet("true", this.valueTrue) && this.setBooleanValue(!0), this.isDefaultValueSet("false", this.valueFalse) && this.setBooleanValue(!1), "indeterminate" == this.defaultValue && this.setBooleanValue(null)
                }, t.prototype.isDefaultValueSet = function(e, t) {
                    return this.defaultValue == e || void 0 !== t && this.defaultValue === t
                }, t.prototype.getDisplayValueCore = function(e, t) {
                    return t == this.getValueTrue() ? this.locLabelTrue.textOrHtml : this.locLabelFalse.textOrHtml
                }, t.prototype.getItemCssValue = function(e) {
                    return (new ct).append(e.item).append(e.itemOnError, this.errors.length > 0).append(e.itemDisabled, this.isReadOnly).append(e.itemChecked, !!this.booleanValue).append(e.itemIndeterminate, null === this.booleanValue).toString()
                }, t.prototype.getItemCss = function() {
                    return this.getItemCssValue(this.cssClasses)
                }, t.prototype.getCheckboxItemCss = function() {
                    return this.getItemCssValue({
                        item: this.cssClasses.checkboxItem,
                        itemOnError: this.cssClasses.checkboxItemOnError,
                        itemDisabled: this.cssClasses.checkboxItemDisabled,
                        itemChecked: this.cssClasses.checkboxItemChecked,
                        itemIndeterminate: this.cssClasses.checkboxItemIndeterminate
                    })
                }, t.prototype.getLabelCss = function(e) {
                    return (new ct).append(this.cssClasses.label).append(this.cssClasses.disabledLabel, this.booleanValue === !e || this.isReadOnly).toString()
                }, Object.defineProperty(t.prototype, "svgIcon", {
                    get: function() {
                        return this.booleanValue && this.cssClasses.svgIconCheckedId ? this.cssClasses.svgIconCheckedId : null === this.booleanValue && this.cssClasses.svgIconIndId ? this.cssClasses.svgIconIndId : !this.booleanValue && this.cssClasses.svgIconUncheckedId ? this.cssClasses.svgIconUncheckedId : this.cssClasses.svgIconId
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowClick", {
                    get: function() {
                        return this.isIndeterminate && !this.isInputReadOnly
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getCheckedLabel = function() {
                    return !0 === this.booleanValue ? this.locLabelTrue : !1 === this.booleanValue ? this.locLabelFalse : void 0
                }, t.prototype.setQuestionValue = function(t, n) {
                    void 0 === n && (n = !0), "true" === t && "true" !== this.valueTrue && (t = !0), "false" === t && "false" !== this.valueFalse && (t = !1), "indeterminate" === t && (t = null), e.prototype.setQuestionValue.call(this, t, n)
                }, t.prototype.onLabelClick = function(e, t) {
                    return this.allowClick && (nt(e), this.booleanValue = t), !0
                }, t.prototype.calculateBooleanValueByEvent = function(e, t) {
                    var n = "rtl" == document.defaultView.getComputedStyle(e.target).direction;
                    this.booleanValue = n ? !t : t
                }, t.prototype.onSwitchClickModel = function(e) {
                    if (!this.allowClick) return !0;
                    nt(e);
                    var t = e.offsetX / e.target.offsetWidth > .5;
                    this.calculateBooleanValueByEvent(e, t)
                }, t.prototype.onKeyDownCore = function(e) {
                    return "ArrowLeft" !== e.key && "ArrowRight" !== e.key || (nt(e), void this.calculateBooleanValueByEvent(e, "ArrowRight" === e.key))
                }, t.prototype.getRadioItemClass = function(e, t) {
                    var n = void 0;
                    return e.radioItem && (n = e.radioItem), e.radioItemChecked && t === this.value && (n = (n ? n + " " : "") + e.radioItemChecked), n
                }, t.prototype.supportResponsiveness = function() {
                    return !0
                }, t.prototype.getCompactRenderAs = function() {
                    return "radio"
                }, Lr([y()], t.prototype, "showTitle", void 0), Lr([y({
                    localizable: !0
                })], t.prototype, "label", void 0), Lr([y()], t.prototype, "valueTrue", void 0), Lr([y()], t.prototype, "valueFalse", void 0), t
            }(Xt);
        I.addClass("boolean", [{
            name: "showCommentArea:switch",
            layout: "row",
            visible: !0,
            category: "general"
        }, {
            name: "label:text",
            serializationProperty: "locLabel",
            isSerializable: !1,
            visible: !1
        }, {
            name: "labelTrue:text",
            serializationProperty: "locLabelTrue"
        }, {
            name: "labelFalse:text",
            serializationProperty: "locLabelFalse"
        }, "valueTrue", "valueFalse", {
            name: "renderAs",
            default: "default",
            visible: !1
        }], (function() {
            return new Mr("")
        }), "question"), ln.Instance.registerQuestion("boolean", (function(e) {
            return new Mr(e)
        }));
        var Nr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Fr = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Br = function(e) {
                function t(t, n, o) {
                    void 0 === n && (n = null), void 0 === o && (o = "imageitemvalue");
                    var r = e.call(this, t, n, o) || this;
                    return r.typeName = o, r.createLocalizableString("imageLink", r, !1), r
                }
                return Nr(t, e), t.prototype.getType = function() {
                    return this.typeName ? this.typeName : "itemvalue"
                }, Object.defineProperty(t.prototype, "imageLink", {
                    get: function() {
                        return this.getLocalizableStringText("imageLink")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("imageLink", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locImageLink", {
                    get: function() {
                        return this.getLocalizableString("imageLink")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getLocale = function() {
                    return this.locOwner ? this.locOwner.getLocale() : ""
                }, t.prototype.getMarkdownHtml = function(e, t) {
                    return this.locOwner ? this.locOwner.getMarkdownHtml(e, t) : void 0
                }, t.prototype.getRenderer = function(e) {
                    return this.locOwner ? this.locOwner.getRenderer(e) : null
                }, t.prototype.getRendererContext = function(e) {
                    return this.locOwner ? this.locOwner.getRendererContext(e) : e
                }, t.prototype.getProcessedText = function(e) {
                    return this.locOwner ? this.locOwner.getProcessedText(e) : e
                }, t
            }(ze),
            zr = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.isResponsiveValue = !1, n.onContentLoaded = function(e, t) {
                        var o = t.target;
                        "video" == n.contentMode ? e.aspectRatio = o.videoWidth / o.videoHeight : e.aspectRatio = o.naturalWidth / o.naturalHeight, n._width && n.processResponsiveness(0, n._width)
                    }, n.colCount = 0, n.registerPropertyChangedHandlers(["minImageWidth", "maxImageWidth", "minImageHeight", "maxImageHeight", "visibleChoices", "colCount", "isResponsiveValue"], (function() {
                        n._width && n.processResponsiveness(0, n._width)
                    })), n.registerPropertyChangedHandlers(["imageWidth", "imageHeight"], (function() {
                        n.calcIsResponsive()
                    })), n.calcIsResponsive(), n
                }
                return Nr(t, e), t.prototype.getType = function() {
                    return "imagepicker"
                }, t.prototype.supportGoNextPageAutomatic = function() {
                    return !this.multiSelect
                }, Object.defineProperty(t.prototype, "hasSingleInput", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getItemValueType = function() {
                    return "imageitemvalue"
                }, Object.defineProperty(t.prototype, "isCompositeQuestion", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.supportOther = function() {
                    return !1
                }, t.prototype.supportNone = function() {
                    return !1
                }, t.prototype.isAnswerCorrect = function() {
                    return this.multiSelect ? a.isArrayContainsEqual(this.value, this.correctAnswer) : e.prototype.isAnswerCorrect.call(this)
                }, Object.defineProperty(t.prototype, "multiSelect", {
                    get: function() {
                        return this.getPropertyValue("multiSelect")
                    },
                    set: function(e) {
                        this.setPropertyValue("multiSelect", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isItemSelected = function(e) {
                    var t = this.value;
                    if (this.isValueEmpty(t)) return !1;
                    if (!this.multiSelect) return this.isTwoValueEquals(t, e.value);
                    if (!Array.isArray(t)) return !1;
                    for (var n = 0; n < t.length; n++)
                        if (this.isTwoValueEquals(t[n], e.value)) return !0;
                    return !1
                }, t.prototype.clearIncorrectValues = function() {
                    if (this.multiSelect) {
                        var t = this.value;
                        if (!t) return;
                        if (!Array.isArray(t) || 0 == t.length) return void this.clearValue();
                        for (var n = [], o = 0; o < t.length; o++) this.hasUnknownValue(t[o], !0) || n.push(t[o]);
                        if (n.length == t.length) return;
                        0 == n.length ? this.clearValue() : this.value = n
                    } else e.prototype.clearIncorrectValues.call(this)
                }, t.prototype.getDisplayValueCore = function(t, n) {
                    return this.multiSelect || Array.isArray(n) ? this.getDisplayArrayValue(t, n) : e.prototype.getDisplayValueCore.call(this, t, n)
                }, Object.defineProperty(t.prototype, "showLabel", {
                    get: function() {
                        return this.getPropertyValue("showLabel")
                    },
                    set: function(e) {
                        this.setPropertyValue("showLabel", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.endLoadingFromJson = function() {
                    e.prototype.endLoadingFromJson.call(this), !this.isDesignMode && this.multiSelect && (this.createNewArray("renderedValue"), this.createNewArray("value")), this.calcIsResponsive()
                }, t.prototype.getValueCore = function() {
                    var t = e.prototype.getValueCore.call(this);
                    return void 0 !== t ? t : this.multiSelect ? [] : t
                }, t.prototype.convertValToArrayForMultSelect = function(e) {
                    return this.multiSelect ? this.isValueEmpty(e) || Array.isArray(e) ? e : [e] : e
                }, t.prototype.renderedValueFromDataCore = function(e) {
                    return this.convertValToArrayForMultSelect(e)
                }, t.prototype.rendredValueToDataCore = function(e) {
                    return this.convertValToArrayForMultSelect(e)
                }, Object.defineProperty(t.prototype, "imageHeight", {
                    get: function() {
                        return this.getPropertyValue("imageHeight")
                    },
                    set: function(e) {
                        this.setPropertyValue("imageHeight", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedImageHeight", {
                    get: function() {
                        var e = this.isResponsive ? this.responsiveImageHeight : this.imageHeight;
                        return (e || 150) + "px"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "imageWidth", {
                    get: function() {
                        return this.getPropertyValue("imageWidth")
                    },
                    set: function(e) {
                        this.setPropertyValue("imageWidth", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedImageWidth", {
                    get: function() {
                        var e = this.isResponsive ? this.responsiveImageWidth : this.imageWidth;
                        return (e || 200) + "px"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "imageFit", {
                    get: function() {
                        return this.getPropertyValue("imageFit")
                    },
                    set: function(e) {
                        this.setPropertyValue("imageFit", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "contentMode", {
                    get: function() {
                        return this.getPropertyValue("contentMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("contentMode", e), "video" === e && (this.showLabel = !0)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.convertDefaultValue = function(e) {
                    return e
                }, Object.defineProperty(t.prototype, "inputType", {
                    get: function() {
                        return this.multiSelect ? "checkbox" : "radio"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isFootChoice = function(e, t) {
                    return !1
                }, t.prototype.getSelectBaseRootCss = function() {
                    return (new ct).append(e.prototype.getSelectBaseRootCss.call(this)).append(this.cssClasses.rootColumn, 1 == this.getCurrentColCount()).toString()
                }, Object.defineProperty(t.prototype, "isResponsive", {
                    get: function() {
                        return this.isResponsiveValue && this.isDefaultV2Theme
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "exactSizesAreEmpty", {
                    get: function() {
                        var e = this;
                        return !["imageHeight", "imageWidth"].some((function(t) {
                            return void 0 !== e[t] && null !== e[t]
                        }))
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.calcIsResponsive = function() {
                    this.isResponsiveValue = this.exactSizesAreEmpty
                }, t.prototype.getObservedElementSelector = function() {
                    return this.cssClasses.root.replace(/\s*?([\w-]+)\s*?/g, ".$1")
                }, t.prototype.supportResponsiveness = function() {
                    return !0
                }, t.prototype.needResponsiveness = function() {
                    return this.supportResponsiveness() && this.isDefaultV2Theme
                }, t.prototype.getCurrentColCount = function() {
                    return void 0 === this.responsiveColCount || 0 === this.colCount ? this.colCount : this.responsiveColCount
                }, t.prototype.processResponsiveness = function(e, t) {
                    this._width = t = Math.floor(t);
                    var n = function(e, t, n) {
                        var o = Math.floor(e / (t + n));
                        return (o + 1) * (t + n) - n <= e && o++, o
                    };
                    if (this.isResponsive) {
                        var o, r = this.choices.length + (this.isDesignMode ? 1 : 0),
                            i = this.gapBetweenItems || 0,
                            s = this.minImageWidth,
                            a = this.maxImageWidth,
                            l = this.maxImageHeight,
                            u = this.minImageHeight,
                            c = this.colCount;
                        if (0 === c)
                            if ((i + s) * r - i > t) {
                                var p = n(t, s, i);
                                o = Math.floor((t - i * (p - 1)) / p)
                            } else o = Math.floor((t - i * (r - 1)) / r);
                        else {
                            var d = n(t, s, i);
                            d < c ? (this.responsiveColCount = d >= 1 ? d : 1, c = this.responsiveColCount) : this.responsiveColCount = c, o = Math.floor((t - i * (c - 1)) / c)
                        }
                        o = Math.max(s, Math.min(o, a));
                        var h = Number.MIN_VALUE;
                        this.choices.forEach((function(e) {
                            var t = o / e.aspectRatio;
                            h = t > h ? t : h
                        })), h > l ? h = l : h < u && (h = u);
                        var f = this.responsiveImageWidth,
                            m = this.responsiveImageHeight;
                        return this.responsiveImageWidth = o, this.responsiveImageHeight = h, f !== this.responsiveImageWidth || m !== this.responsiveImageHeight
                    }
                    return !1
                }, t.prototype.afterRender = function(t) {
                    e.prototype.afterRender.call(this, t);
                    var n = this.survey.getCss().variables;
                    n && (this.gapBetweenItems = Number.parseInt(window.getComputedStyle(t).getPropertyValue(n.imagepickerGapBetweenItems)) || 0)
                }, Fr([y({})], t.prototype, "responsiveImageHeight", void 0), Fr([y({})], t.prototype, "responsiveImageWidth", void 0), Fr([y({})], t.prototype, "isResponsiveValue", void 0), Fr([y({})], t.prototype, "maxImageWidth", void 0), Fr([y({})], t.prototype, "minImageWidth", void 0), Fr([y({})], t.prototype, "maxImageHeight", void 0), Fr([y({})], t.prototype, "minImageHeight", void 0), Fr([y({})], t.prototype, "responsiveColCount", void 0), t
            }(bo);
        I.addClass("imageitemvalue", [], (function(e) {
            return new Br(e)
        }), "itemvalue"), I.addProperty("imageitemvalue", {
            name: "imageLink",
            serializationProperty: "locImageLink"
        }), I.addClass("responsiveImageSize", [], void 0, "number"), I.addClass("imagepicker", [{
            name: "showOtherItem",
            visible: !1
        }, {
            name: "otherText",
            visible: !1
        }, {
            name: "showNoneItem",
            visible: !1
        }, {
            name: "noneText",
            visible: !1
        }, {
            name: "optionsCaption",
            visible: !1
        }, {
            name: "otherErrorText",
            visible: !1
        }, {
            name: "storeOthersAsComment",
            visible: !1
        }, {
            name: "contentMode",
            default: "image",
            choices: ["image", "video"]
        }, {
            name: "imageFit",
            default: "contain",
            choices: ["none", "contain", "cover", "fill"]
        }, {
            name: "imageHeight:number",
            minValue: 0
        }, {
            name: "imageWidth:number",
            minValue: 0
        }, {
            name: "minImageWidth:responsiveImageSize",
            default: 200,
            minValue: 0,
            visibleIf: function() {
                return s.supportCreatorV2
            }
        }, {
            name: "minImageHeight:responsiveImageSize",
            default: 133,
            minValue: 0,
            visibleIf: function() {
                return s.supportCreatorV2
            }
        }, {
            name: "maxImageWidth:responsiveImageSize",
            default: 400,
            minValue: 0,
            visibleIf: function() {
                return s.supportCreatorV2
            }
        }, {
            name: "maxImageHeight:responsiveImageSize",
            default: 266,
            minValue: 0,
            visibleIf: function() {
                return s.supportCreatorV2
            }
        }], (function() {
            return new zr("")
        }), "checkboxbase"), I.addProperty("imagepicker", {
            name: "showLabel:boolean",
            default: !1
        }), I.addProperty("imagepicker", {
            name: "colCount:number",
            default: 0,
            choices: [0, 1, 2, 3, 4, 5]
        }), I.addProperty("imagepicker", {
            name: "multiSelect:boolean",
            default: !1
        }), I.addProperty("imagepicker", {
            name: "choices:imageitemvalue[]"
        }), ln.Instance.registerQuestion("imagepicker", (function(e) {
            return new zr(e)
        }));
        var Hr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Qr = ["youtube.com", "youtu.be"],
            Ur = [".mp4", ".mov", ".wmv", ".flv", ".avi", ".mkv"];

        function Wr(e) {
            if (!e) return !1;
            e = e.toLowerCase();
            for (var t = 0; t < Qr.length; t++)
                if (-1 !== e.indexOf(Qr[t])) return !0;
            return !1
        }
        var $r = function(e) {
            function t(t) {
                var n = e.call(this, t) || this;
                return n.createLocalizableString("imageLink", n, !1).onGetTextCallback = function(e) {
                    return function(e) {
                        if (!e || !Wr(e)) return e;
                        if (e.toLocaleLowerCase().indexOf("embed") > -1) return e;
                        for (var t = "", n = e.length - 1; n >= 0 && ("=" !== e[n] && "/" !== e[n]); n--) t = e[n] + t;
                        return "https://www.youtube.com/embed/" + t
                    }(e)
                }, n.createLocalizableString("altText", n, !1), n.registerPropertyChangedHandlers(["contentMode", "imageLink"], (function() {
                    return n.calculateRenderedMode()
                })), n
            }
            return Hr(t, e), t.prototype.getType = function() {
                return "image"
            }, Object.defineProperty(t.prototype, "isCompositeQuestion", {
                get: function() {
                    return !1
                },
                enumerable: !1,
                configurable: !0
            }), t.prototype.onSurveyLoad = function() {
                e.prototype.onSurveyLoad.call(this), this.calculateRenderedMode()
            }, Object.defineProperty(t.prototype, "imageLink", {
                get: function() {
                    return this.getLocalizableStringText("imageLink")
                },
                set: function(e) {
                    this.setLocalizableStringText("imageLink", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "locImageLink", {
                get: function() {
                    return this.getLocalizableString("imageLink")
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "altText", {
                get: function() {
                    return this.getLocalizableStringText("altText")
                },
                set: function(e) {
                    this.setLocalizableStringText("altText", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "locAltText", {
                get: function() {
                    return this.getLocalizableString("altText")
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "imageHeight", {
                get: function() {
                    return this.getPropertyValue("imageHeight")
                },
                set: function(e) {
                    this.setPropertyValue("imageHeight", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "renderedHeight", {
                get: function() {
                    return this.imageHeight ? this.imageHeight + "px" : void 0
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "imageWidth", {
                get: function() {
                    return this.getPropertyValue("imageWidth")
                },
                set: function(e) {
                    this.setPropertyValue("imageWidth", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "renderedWidth", {
                get: function() {
                    return this.imageWidth ? this.imageWidth + "px" : void 0
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "imageFit", {
                get: function() {
                    return this.getPropertyValue("imageFit")
                },
                set: function(e) {
                    this.setPropertyValue("imageFit", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "contentMode", {
                get: function() {
                    return this.getPropertyValue("contentMode")
                },
                set: function(e) {
                    this.setPropertyValue("contentMode", e), "video" === e && (this.showLabel = !0)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "renderedMode", {
                get: function() {
                    return this.getPropertyValue("renderedMode", "image")
                },
                enumerable: !1,
                configurable: !0
            }), t.prototype.getImageCss = function() {
                var e = I.findProperty("image", "imageHeight"),
                    t = I.findProperty("image", "imageWidth"),
                    n = e.isDefaultValue(this.imageHeight) && t.isDefaultValue(this.imageWidth);
                return (new ct).append(this.cssClasses.image).append(this.cssClasses.adaptive, n).toString()
            }, t.prototype.setRenderedMode = function(e) {
                this.setPropertyValue("renderedMode", e)
            }, t.prototype.calculateRenderedMode = function() {
                "auto" !== this.contentMode ? this.setRenderedMode(this.contentMode) : this.isYoutubeVideo() ? this.setRenderedMode("youtube") : this.isVideo() ? this.setRenderedMode("video") : this.setRenderedMode("image")
            }, t.prototype.isYoutubeVideo = function() {
                return Wr(this.imageLink)
            }, t.prototype.isVideo = function() {
                var e = this.imageLink;
                if (!e) return !1;
                e = e.toLowerCase();
                for (var t = 0; t < Ur.length; t++)
                    if (e.endsWith(Ur[t])) return !0;
                return !1
            }, t
        }(tr);
        /*!
         * Signature Pad v2.3.2
         * https://github.com/szimek/signature_pad
         *
         * Copyright 2017 Szymon Nowak
         * Released under the MIT license
         *
         * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from:
         * http://corner.squareup.com/2012/07/smoother-signatures.html
         *
         * Implementation of interpolation using cubic Bézier curves is taken from:
         * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript
         *
         * Algorithm for approximated length of a Bézier curve is taken from:
         * http://www.lemoda.net/maths/bezier-length/index.html
         *
         */
        function Gr(e, t, n) {
            this.x = e, this.y = t, this.time = n || (new Date).getTime()
        }

        function Jr(e, t, n, o) {
            this.startPoint = e, this.control1 = t, this.control2 = n, this.endPoint = o
        }

        function Kr(e, t) {
            var n = this,
                o = t || {};
            this.velocityFilterWeight = o.velocityFilterWeight || .7, this.minWidth = o.minWidth || .5, this.maxWidth = o.maxWidth || 2.5, this.throttle = "throttle" in o ? o.throttle : 16, this.minDistance = "minDistance" in o ? o.minDistance : 5, this.throttle ? this._strokeMoveUpdate = function(e, t, n) {
                var o, r, i, s = null,
                    a = 0;
                n || (n = {});
                var l = function() {
                    a = !1 === n.leading ? 0 : Date.now(), s = null, i = e.apply(o, r), s || (o = r = null)
                };
                return function() {
                    var u = Date.now();
                    a || !1 !== n.leading || (a = u);
                    var c = t - (u - a);
                    return o = this, r = arguments, c <= 0 || c > t ? (s && (clearTimeout(s), s = null), a = u, i = e.apply(o, r), s || (o = r = null)) : s || !1 === n.trailing || (s = setTimeout(l, c)), i
                }
            }(Kr.prototype._strokeUpdate, this.throttle) : this._strokeMoveUpdate = Kr.prototype._strokeUpdate, this.dotSize = o.dotSize || function() {
                return (this.minWidth + this.maxWidth) / 2
            }, this.penColor = o.penColor || "black", this.backgroundColor = o.backgroundColor || "rgba(0,0,0,0)", this.onBegin = o.onBegin, this.onEnd = o.onEnd, this._canvas = e, this._ctx = e.getContext("2d"), this.clear(), this._handleMouseDown = function(e) {
                1 === e.which && (n._mouseButtonDown = !0, n._strokeBegin(e))
            }, this._handleMouseMove = function(e) {
                n._mouseButtonDown && n._strokeMoveUpdate(e)
            }, this._handleMouseUp = function(e) {
                1 === e.which && n._mouseButtonDown && (n._mouseButtonDown = !1, n._strokeEnd(e))
            }, this._handleTouchStart = function(e) {
                if (1 === e.targetTouches.length) {
                    var t = e.changedTouches[0];
                    n._strokeBegin(t)
                }
            }, this._handleTouchMove = function(e) {
                e.preventDefault();
                var t = e.targetTouches[0];
                n._strokeMoveUpdate(t)
            }, this._handleTouchEnd = function(e) {
                e.target === n._canvas && (e.preventDefault(), n._strokeEnd(e))
            }, this.on()
        }
        I.addClass("image", [{
            name: "imageLink",
            serializationProperty: "locImageLink"
        }, {
            name: "altText",
            serializationProperty: "locAltText",
            alternativeName: "text",
            category: "general"
        }, {
            name: "contentMode",
            default: "auto",
            choices: ["auto", "image", "video", "youtube"]
        }, {
            name: "imageFit",
            default: "contain",
            choices: ["none", "contain", "cover", "fill"]
        }, {
            name: "imageHeight:number",
            default: 150,
            minValue: 0
        }, {
            name: "imageWidth:number",
            default: 200,
            minValue: 0
        }], (function() {
            return new $r("")
        }), "nonvalue"), ln.Instance.registerQuestion("image", (function(e) {
            return new $r(e)
        })), Gr.prototype.velocityFrom = function(e) {
            return this.time !== e.time ? this.distanceTo(e) / (this.time - e.time) : 1
        }, Gr.prototype.distanceTo = function(e) {
            return Math.sqrt(Math.pow(this.x - e.x, 2) + Math.pow(this.y - e.y, 2))
        }, Gr.prototype.equals = function(e) {
            return this.x === e.x && this.y === e.y && this.time === e.time
        }, Jr.prototype.length = function() {
            for (var e = 0, t = void 0, n = void 0, o = 0; o <= 10; o += 1) {
                var r = o / 10,
                    i = this._point(r, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x),
                    s = this._point(r, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);
                if (o > 0) {
                    var a = i - t,
                        l = s - n;
                    e += Math.sqrt(a * a + l * l)
                }
                t = i, n = s
            }
            return e
        }, Jr.prototype._point = function(e, t, n, o, r) {
            return t * (1 - e) * (1 - e) * (1 - e) + 3 * n * (1 - e) * (1 - e) * e + 3 * o * (1 - e) * e * e + r * e * e * e
        }, Kr.prototype.clear = function() {
            var e = this._ctx,
                t = this._canvas;
            e.fillStyle = this.backgroundColor, e.clearRect(0, 0, t.width, t.height), e.fillRect(0, 0, t.width, t.height), this._data = [], this._reset(), this._isEmpty = !0
        }, Kr.prototype.fromDataURL = function(e) {
            var t = this,
                n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                o = new Image,
                r = n.ratio || window.devicePixelRatio || 1,
                i = n.width || this._canvas.width / r,
                s = n.height || this._canvas.height / r;
            this._reset(), o.src = e, o.onload = function() {
                t._ctx.drawImage(o, 0, 0, i, s)
            }, this._isEmpty = !1
        }, Kr.prototype.toDataURL = function(e) {
            var t;
            switch (e) {
                case "image/svg+xml":
                    return this._toSVG();
                default:
                    for (var n = arguments.length, o = Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) o[r - 1] = arguments[r];
                    return (t = this._canvas).toDataURL.apply(t, [e].concat(o))
            }
        }, Kr.prototype.on = function() {
            this._handleMouseEvents(), this._handleTouchEvents()
        }, Kr.prototype.off = function() {
            this._canvas.removeEventListener("mousedown", this._handleMouseDown), this._canvas.removeEventListener("mousemove", this._handleMouseMove), document.removeEventListener("mouseup", this._handleMouseUp), this._canvas.removeEventListener("touchstart", this._handleTouchStart), this._canvas.removeEventListener("touchmove", this._handleTouchMove), this._canvas.removeEventListener("touchend", this._handleTouchEnd)
        }, Kr.prototype.isEmpty = function() {
            return this._isEmpty
        }, Kr.prototype._strokeBegin = function(e) {
            this._data.push([]), this._reset(), this._strokeUpdate(e), "function" == typeof this.onBegin && this.onBegin(e)
        }, Kr.prototype._strokeUpdate = function(e) {
            var t = e.clientX,
                n = e.clientY,
                o = this._createPoint(t, n),
                r = this._data[this._data.length - 1],
                i = r && r[r.length - 1],
                s = i && o.distanceTo(i) < this.minDistance;
            if (!i || !s) {
                var a = this._addPoint(o),
                    l = a.curve,
                    u = a.widths;
                l && u && this._drawCurve(l, u.start, u.end), this._data[this._data.length - 1].push({
                    x: o.x,
                    y: o.y,
                    time: o.time,
                    color: this.penColor
                })
            }
        }, Kr.prototype._strokeEnd = function(e) {
            var t = this.points.length > 2,
                n = this.points[0];
            if (!t && n && this._drawDot(n), n) {
                var o = this._data[this._data.length - 1],
                    r = o[o.length - 1];
                n.equals(r) || o.push({
                    x: n.x,
                    y: n.y,
                    time: n.time,
                    color: this.penColor
                })
            }
            "function" == typeof this.onEnd && this.onEnd(e)
        }, Kr.prototype._handleMouseEvents = function() {
            this._mouseButtonDown = !1, this._canvas.addEventListener("mousedown", this._handleMouseDown), this._canvas.addEventListener("mousemove", this._handleMouseMove), document.addEventListener("mouseup", this._handleMouseUp)
        }, Kr.prototype._handleTouchEvents = function() {
            this._canvas.style.msTouchAction = "none", this._canvas.style.touchAction = "none", this._canvas.addEventListener("touchstart", this._handleTouchStart), this._canvas.addEventListener("touchmove", this._handleTouchMove), this._canvas.addEventListener("touchend", this._handleTouchEnd)
        }, Kr.prototype._reset = function() {
            this.points = [], this._lastVelocity = 0, this._lastWidth = (this.minWidth + this.maxWidth) / 2, this._ctx.fillStyle = this.penColor
        }, Kr.prototype._createPoint = function(e, t, n) {
            var o = this._canvas.getBoundingClientRect();
            return new Gr(e - o.left, t - o.top, n || (new Date).getTime())
        }, Kr.prototype._addPoint = function(e) {
            var t = this.points;
            if (t.push(e), t.length > 2) {
                3 === t.length && t.unshift(t[0]);
                var n = this._calculateCurveControlPoints(t[0], t[1], t[2]).c2,
                    o = this._calculateCurveControlPoints(t[1], t[2], t[3]).c1,
                    r = new Jr(t[1], n, o, t[2]),
                    i = this._calculateCurveWidths(r);
                return t.shift(), {
                    curve: r,
                    widths: i
                }
            }
            return {}
        }, Kr.prototype._calculateCurveControlPoints = function(e, t, n) {
            var o = e.x - t.x,
                r = e.y - t.y,
                i = t.x - n.x,
                s = t.y - n.y,
                a = (e.x + t.x) / 2,
                l = (e.y + t.y) / 2,
                u = (t.x + n.x) / 2,
                c = (t.y + n.y) / 2,
                p = Math.sqrt(o * o + r * r),
                d = Math.sqrt(i * i + s * s),
                h = d / (p + d),
                f = u + (a - u) * h,
                m = c + (l - c) * h,
                g = t.x - f,
                y = t.y - m;
            return {
                c1: new Gr(a + g, l + y),
                c2: new Gr(u + g, c + y)
            }
        }, Kr.prototype._calculateCurveWidths = function(e) {
            var t = e.startPoint,
                n = e.endPoint,
                o = {
                    start: null,
                    end: null
                },
                r = this.velocityFilterWeight * n.velocityFrom(t) + (1 - this.velocityFilterWeight) * this._lastVelocity,
                i = this._strokeWidth(r);
            return o.start = this._lastWidth, o.end = i, this._lastVelocity = r, this._lastWidth = i, o
        }, Kr.prototype._strokeWidth = function(e) {
            return Math.max(this.maxWidth / (e + 1), this.minWidth)
        }, Kr.prototype._drawPoint = function(e, t, n) {
            var o = this._ctx;
            o.moveTo(e, t), o.arc(e, t, n, 0, 2 * Math.PI, !1), this._isEmpty = !1
        }, Kr.prototype._drawCurve = function(e, t, n) {
            var o = this._ctx,
                r = n - t,
                i = Math.floor(e.length());
            o.beginPath();
            for (var s = 0; s < i; s += 1) {
                var a = s / i,
                    l = a * a,
                    u = l * a,
                    c = 1 - a,
                    p = c * c,
                    d = p * c,
                    h = d * e.startPoint.x;
                h += 3 * p * a * e.control1.x, h += 3 * c * l * e.control2.x, h += u * e.endPoint.x;
                var f = d * e.startPoint.y;
                f += 3 * p * a * e.control1.y, f += 3 * c * l * e.control2.y, f += u * e.endPoint.y;
                var m = t + u * r;
                this._drawPoint(h, f, m)
            }
            o.closePath(), o.fill()
        }, Kr.prototype._drawDot = function(e) {
            var t = this._ctx,
                n = "function" == typeof this.dotSize ? this.dotSize() : this.dotSize;
            t.beginPath(), this._drawPoint(e.x, e.y, n), t.closePath(), t.fill()
        }, Kr.prototype._fromData = function(e, t, n) {
            for (var o = 0; o < e.length; o += 1) {
                var r = e[o];
                if (r.length > 1)
                    for (var i = 0; i < r.length; i += 1) {
                        var s = r[i],
                            a = new Gr(s.x, s.y, s.time),
                            l = s.color;
                        if (0 === i) this.penColor = l, this._reset(), this._addPoint(a);
                        else if (i !== r.length - 1) {
                            var u = this._addPoint(a),
                                c = u.curve,
                                p = u.widths;
                            c && p && t(c, p, l)
                        }
                    } else this._reset(), n(r[0])
            }
        }, Kr.prototype._toSVG = function() {
            var e = this,
                t = this._data,
                n = this._canvas,
                o = Math.max(window.devicePixelRatio || 1, 1),
                r = n.width / o,
                i = n.height / o,
                s = document.createElementNS("http://www.w3.org/2000/svg", "svg");
            s.setAttributeNS(null, "width", n.width), s.setAttributeNS(null, "height", n.height), this._fromData(t, (function(e, t, n) {
                var o = document.createElement("path");
                if (!(isNaN(e.control1.x) || isNaN(e.control1.y) || isNaN(e.control2.x) || isNaN(e.control2.y))) {
                    var r = "M " + e.startPoint.x.toFixed(3) + "," + e.startPoint.y.toFixed(3) + " C " + e.control1.x.toFixed(3) + "," + e.control1.y.toFixed(3) + " " + e.control2.x.toFixed(3) + "," + e.control2.y.toFixed(3) + " " + e.endPoint.x.toFixed(3) + "," + e.endPoint.y.toFixed(3);
                    o.setAttribute("d", r), o.setAttribute("stroke-width", (2.25 * t.end).toFixed(3)), o.setAttribute("stroke", n), o.setAttribute("fill", "none"), o.setAttribute("stroke-linecap", "round"), s.appendChild(o)
                }
            }), (function(t) {
                var n = document.createElement("circle"),
                    o = "function" == typeof e.dotSize ? e.dotSize() : e.dotSize;
                n.setAttribute("r", o), n.setAttribute("cx", t.x), n.setAttribute("cy", t.y), n.setAttribute("fill", t.color), s.appendChild(n)
            }));
            var a = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 ' + r + " " + i + '" width="' + r + '" height="' + i + '">',
                l = s.innerHTML;
            if (void 0 === l) {
                var u = document.createElement("dummy"),
                    c = s.childNodes;
                u.innerHTML = "";
                for (var p = 0; p < c.length; p += 1) u.appendChild(c[p].cloneNode(!0));
                l = u.innerHTML
            }
            return "data:image/svg+xml;base64," + btoa(a + l + "</svg>")
        }, Kr.prototype.fromData = function(e) {
            var t = this;
            this.clear(), this._fromData(e, (function(e, n) {
                return t._drawCurve(e, n.start, n.end)
            }), (function(e) {
                return t._drawDot(e)
            })), this._data = e
        }, Kr.prototype.toData = function() {
            return this._data
        };
        var Zr = Kr,
            Xr = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Yr = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            };
        var ei = function(e) {
            function t(t) {
                return e.call(this, t) || this
            }
            return Xr(t, e), t.prototype.getCssRoot = function(t) {
                return (new ct).append(e.prototype.getCssRoot.call(this, t)).append(t.small, "300" === this.signatureWidth.toString()).toString()
            }, t.prototype.updateValue = function() {
                if (this.signaturePad) {
                    var e = this.signaturePad.toDataURL(this.dataFormat);
                    this.value = e
                }
            }, t.prototype.getType = function() {
                return "signaturepad"
            }, t.prototype.afterRenderQuestionElement = function(t) {
                t && this.initSignaturePad(t), e.prototype.afterRenderQuestionElement.call(this, t)
            }, t.prototype.beforeDestroyQuestionElement = function(e) {
                e && this.destroySignaturePad(e)
            }, t.prototype.initSignaturePad = function(e) {
                var t = this,
                    n = e.getElementsByTagName("canvas")[0],
                    o = new Zr(n, {
                        backgroundColor: "#ffffff"
                    });
                this.isInputReadOnly && o.off(), this.readOnlyChangedCallback = function() {
                    t.isInputReadOnly ? o.off() : o.on()
                }, o.penColor = this.penColor, o.backgroundColor = this.backgroundColor, o.onBegin = function() {
                    t.isDrawingValue = !0, n.focus()
                }, o.onEnd = function() {
                    t.isDrawingValue = !1, t.updateValue()
                };
                var r = function() {
                    var e = t.value;
                    n.width = t.signatureWidth || 300, n.height = t.signatureHeight || 200,
                        function(e) {
                            var t = e.getContext("2d"),
                                n = (window.devicePixelRatio || 1) / (t.webkitBackingStorePixelRatio || t.mozBackingStorePixelRatio || t.msBackingStorePixelRatio || t.oBackingStorePixelRatio || t.backingStorePixelRatio || 1),
                                o = e.width,
                                r = e.height;
                            e.width = o * n, e.height = r * n, e.style.width = o + "px", e.style.height = r + "px", t.scale(n, n)
                        }(n), e ? o.fromDataURL(e) : o.clear()
                };
                r(), this.readOnlyChangedCallback(), this.signaturePad = o;
                var i = function(e, t) {
                    "signatureWidth" !== t.name && "signatureHeight" !== t.name && "value" !== t.name || r()
                };
                this.onPropertyChanged.add(i), this.signaturePad.propertyChangedHandler = i
            }, t.prototype.destroySignaturePad = function(e) {
                this.signaturePad && (this.onPropertyChanged.remove(this.signaturePad.propertyChangedHandler), this.signaturePad.off()), this.readOnlyChangedCallback = null, this.signaturePad = null
            }, Object.defineProperty(t.prototype, "signatureWidth", {
                get: function() {
                    return this.getPropertyValue("signatureWidth")
                },
                set: function(e) {
                    this.setPropertyValue("signatureWidth", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "signatureHeight", {
                get: function() {
                    return this.getPropertyValue("signatureHeight")
                },
                set: function(e) {
                    this.setPropertyValue("signatureHeight", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "height", {
                get: function() {
                    return this.getPropertyValue("height")
                },
                set: function(e) {
                    this.setPropertyValue("height", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "allowClear", {
                get: function() {
                    return this.getPropertyValue("allowClear")
                },
                set: function(e) {
                    this.setPropertyValue("allowClear", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "canShowClearButton", {
                get: function() {
                    return !this.isInputReadOnly && this.allowClear
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "penColor", {
                get: function() {
                    return this.getPropertyValue("penColor")
                },
                set: function(e) {
                    this.setPropertyValue("penColor", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "backgroundColor", {
                get: function() {
                    return this.getPropertyValue("backgroundColor")
                },
                set: function(e) {
                    this.setPropertyValue("backgroundColor", e)
                },
                enumerable: !1,
                configurable: !0
            }), Object.defineProperty(t.prototype, "clearButtonCaption", {
                get: function() {
                    return this.getLocalizationString("clearCaption")
                },
                enumerable: !1,
                configurable: !0
            }), t.prototype.needShowPlaceholder = function() {
                return !this.isDrawingValue && this.isEmpty()
            }, Object.defineProperty(t.prototype, "placeHolderText", {
                get: function() {
                    return this.getLocalizationString("signaturePlaceHolder")
                },
                enumerable: !1,
                configurable: !0
            }), t.prototype.endLoadingFromJson = function() {
                e.prototype.endLoadingFromJson.call(this), 300 === this.signatureWidth && this.width && "number" == typeof this.width && this.width && (console.warn("Use signatureWidth property to set width for the signature pad"), this.signatureWidth = this.width, this.width = void 0), 200 === this.signatureHeight && this.height && (console.warn("Use signatureHeight property to set width for the signature pad"), this.signatureHeight = this.height, this.height = void 0)
            }, Yr([y({
                defaultValue: !1
            })], t.prototype, "isDrawingValue", void 0), Yr([y({
                defaultValue: ""
            })], t.prototype, "dataFormat", void 0), t
        }(Xt);
        I.addClass("signaturepad", [{
            name: "signatureWidth:number",
            category: "general",
            default: 300
        }, {
            name: "signatureHeight:number",
            category: "general",
            default: 200
        }, {
            name: "height:number",
            category: "general",
            visible: !1
        }, {
            name: "allowClear:boolean",
            category: "general",
            default: !0
        }, {
            name: "penColor:color",
            category: "general",
            default: "#1ab394"
        }, {
            name: "backgroundColor:color",
            category: "general",
            default: "#ffffff"
        }, {
            name: "dataFormat",
            category: "general",
            default: "",
            choices: [{
                value: "",
                text: "PNG"
            }, {
                value: "image/jpeg",
                text: "JPEG"
            }, {
                value: "image/svg+xml",
                text: "SVG"
            }]
        }, {
            name: "defaultValue",
            visible: !1
        }, {
            name: "correctAnswer",
            visible: !1
        }], (function() {
            return new ei("")
        }), "question"), ln.Instance.registerQuestion("signaturepad", (function(e) {
            return new ei(e)
        }));
        var ti = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ni = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            oi = function(e, t, n) {
                if (n || 2 === arguments.length)
                    for (var o, r = 0, i = t.length; r < i; r++) !o && r in t || (o || (o = Array.prototype.slice.call(t, 0, r)), o[r] = t[r]);
                return e.concat(o || Array.prototype.slice.call(t))
            },
            ri = function(e) {
                function t(t, n, o) {
                    var r = e.call(this, o) || this;
                    return r.data = t, r.panelItem = n, r.variableName = o, r.sharedQuestions = {}, r
                }
                return ti(t, e), Object.defineProperty(t.prototype, "survey", {
                    get: function() {
                        return this.panelItem.getSurvey()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panel", {
                    get: function() {
                        return this.panelItem.panel
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panelIndex", {
                    get: function() {
                        return this.data ? this.data.getItemIndex(this.panelItem) : -1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getValues = function() {
                    return this.panelItem.getAllValues()
                }, t.prototype.getQuestionByName = function(t) {
                    var n = e.prototype.getQuestionByName.call(this, t);
                    if (n) return n;
                    var o = this.panelIndex,
                        r = (n = o > -1 ? this.data.getSharedQuestionFromArray(t, o) : void 0) ? n.name : t;
                    return this.sharedQuestions[r] = t, n
                }, t.prototype.getQuestionDisplayText = function(t) {
                    var n = this.sharedQuestions[t.name];
                    if (!n) return e.prototype.getQuestionDisplayText.call(this, t);
                    var o = this.panelItem.getValue(n);
                    return t.getDisplayValue(!0, o)
                }, t.prototype.onCustomProcessText = function(e) {
                    if (e.name == ii.IndexVariableName) {
                        var n = this.panelIndex;
                        if (n > -1) return e.isExists = !0, e.value = n + 1, !0
                    }
                    if (0 == e.name.toLowerCase().indexOf(ii.ParentItemVariableName + ".")) {
                        var o = this.data;
                        if (o && o.parentQuestion && o.parent && o.parent.data) {
                            var r = new t(o.parentQuestion, o.parent.data, ii.ItemVariableName),
                                i = ii.ItemVariableName + e.name.substring(ii.ParentItemVariableName.length),
                                s = r.processValue(i, e.returnDisplayValue);
                            e.isExists = s.isExists, e.value = s.value
                        }
                        return !0
                    }
                    return !1
                }, t
            }(an),
            ii = function() {
                function e(t, n) {
                    this.data = t, this.panelValue = n, this.textPreProcessor = new ri(t, this, e.ItemVariableName), this.setSurveyImpl()
                }
                return Object.defineProperty(e.prototype, "panel", {
                    get: function() {
                        return this.panelValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.setSurveyImpl = function() {
                    this.panel.setSurveyImpl(this)
                }, e.prototype.getValue = function(e) {
                    return this.getAllValues()[e]
                }, e.prototype.setValue = function(e, t) {
                    var n = this.data.getPanelItemData(this),
                        o = n ? n[e] : void 0;
                    if ("object" == typeof o || !a.isTwoValueEquals(t, o)) {
                        this.data.setPanelItemData(this, e, t);
                        for (var r = this.panel.questions, i = 0; i < r.length; i++) r[i].getValueName() !== e && r[i].checkBindings(e, t)
                    }
                }, e.prototype.getVariable = function(e) {}, e.prototype.setVariable = function(e, t) {}, e.prototype.getComment = function(e) {
                    var t = this.getValue(e + s.commentSuffix);
                    return t || ""
                }, e.prototype.setComment = function(e, t, n) {
                    this.setValue(e + s.commentSuffix, t)
                }, e.prototype.getAllValues = function() {
                    return this.data.getPanelItemData(this)
                }, e.prototype.getFilteredValues = function() {
                    var t = {},
                        n = this.data && this.data.getRootData() ? this.data.getRootData().getFilteredValues() : {};
                    for (var o in n) t[o] = n[o];
                    if (t[e.ItemVariableName] = this.getAllValues(), this.data) {
                        t[e.IndexVariableName.toLowerCase()] = this.data.getItemIndex(this);
                        var r = this.data;
                        r && r.parentQuestion && r.parent && (t[e.ParentItemVariableName] = r.parent.getValue())
                    }
                    return t
                }, e.prototype.getFilteredProperties = function() {
                    return this.data && this.data.getRootData() ? this.data.getRootData().getFilteredProperties() : {
                        survey: this.getSurvey()
                    }
                }, e.prototype.getSurveyData = function() {
                    return this
                }, e.prototype.getSurvey = function() {
                    return this.data ? this.data.getSurvey() : null
                }, e.prototype.getTextProcessor = function() {
                    return this.textPreProcessor
                }, e.ItemVariableName = "panel", e.ParentItemVariableName = "parentpanel", e.IndexVariableName = "panelIndex", e
            }(),
            si = function() {
                function e(e) {
                    this.data = e
                }
                return e.prototype.getSurveyData = function() {
                    return null
                }, e.prototype.getSurvey = function() {
                    return this.data.getSurvey()
                }, e.prototype.getTextProcessor = function() {
                    return null
                }, e
            }(),
            ai = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.loadingPanelCount = 0, n.currentIndexValue = -1, n.isAddingNewPanels = !1, n.onReadyChangedCallback = function() {
                        n.recalculateIsReadyValue()
                    }, n.createNewArray("panels"), n.templateValue = n.createAndSetupNewPanelObject(), n.template.renderWidth = "100%", n.template.selectedElementInDesign = n, n.template.addElementCallback = function(e) {
                        n.addOnPropertyChangedCallback(e), n.rebuildPanels()
                    }, n.template.removeElementCallback = function() {
                        n.rebuildPanels()
                    }, n.createLocalizableString("confirmDeleteText", n, !1, "confirmDelete"), n.createLocalizableString("keyDuplicationError", n, !1, !0), n.createLocalizableString("panelAddText", n, !1, "addPanel"), n.createLocalizableString("panelRemoveText", n, !1, "removePanel"), n.createLocalizableString("panelPrevText", n, !1, "pagePrevText"), n.createLocalizableString("panelNextText", n, !1, "pageNextText"), n.createLocalizableString("noEntriesText", n, !1, "noEntriesText"), n.registerPropertyChangedHandlers(["panelsState"], (function() {
                        n.setPanelsState()
                    })), n.registerPropertyChangedHandlers(["isMobile"], (function() {
                        n.updateFooterActions()
                    })), n
                }
                return ti(t, e), Object.defineProperty(t.prototype, "hasSingleInput", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getFirstQuestionToFocus = function(e) {
                    for (var t = 0; t < this.panels.length; t++) {
                        var n = this.panels[t].getFirstQuestionToFocus(e);
                        if (n) return n
                    }
                    return null
                }, t.prototype.setSurveyImpl = function(t, n) {
                    e.prototype.setSurveyImpl.call(this, t, n), this.setTemplatePanelSurveyImpl(), this.setPanelsSurveyImpl()
                }, t.prototype.assignOnPropertyChangedToTemplate = function() {
                    for (var e = this.template.elements, t = 0; t < e.length; t++) this.addOnPropertyChangedCallback(e[t])
                }, t.prototype.addOnPropertyChangedCallback = function(e) {
                    var t = this;
                    e.isQuestion && e.setParentQuestion(this), e.onPropertyChanged.add((function(e, n) {
                        t.onTemplateElementPropertyChanged(e, n)
                    })), e.isPanel && (e.addElementCallback = function(e) {
                        t.addOnPropertyChangedCallback(e)
                    })
                }, t.prototype.onTemplateElementPropertyChanged = function(e, t) {
                    if (!this.isLoadingFromJson && !this.useTemplatePanel && 0 != this.panels.length && I.findProperty(e.getType(), t.name))
                        for (var n = this.panels, o = 0; o < n.length; o++) {
                            var r = n[o].getQuestionByName(e.name);
                            r && r[t.name] !== t.newValue && (r[t.name] = t.newValue)
                        }
                }, Object.defineProperty(t.prototype, "useTemplatePanel", {
                    get: function() {
                        return this.isDesignMode && !this.isContentElement
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "paneldynamic"
                }, Object.defineProperty(t.prototype, "isCompositeQuestion", {
                    get: function() {
                        return !0
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.clearOnDeletingContainer = function() {
                    this.panels.forEach((function(e) {
                        e.clearOnDeletingContainer()
                    }))
                }, Object.defineProperty(t.prototype, "isAllowTitleLeft", {
                    get: function() {
                        return !1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.removeElement = function(e) {
                    return this.template.removeElement(e)
                }, Object.defineProperty(t.prototype, "template", {
                    get: function() {
                        return this.templateValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getPanel = function() {
                    return this.template
                }, Object.defineProperty(t.prototype, "templateElements", {
                    get: function() {
                        return this.template.elements
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "templateTitle", {
                    get: function() {
                        return this.template.title
                    },
                    set: function(e) {
                        this.template.title = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTemplateTitle", {
                    get: function() {
                        return this.template.locTitle
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "templateDescription", {
                    get: function() {
                        return this.template.description
                    },
                    set: function(e) {
                        this.template.description = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTemplateDescription", {
                    get: function() {
                        return this.template.locDescription
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "items", {
                    get: function() {
                        for (var e = [], t = 0; t < this.panels.length; t++) e.push(this.panels[t].data);
                        return e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panels", {
                    get: function() {
                        return this.getPropertyValue("panels")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "currentIndex", {
                    get: function() {
                        return this.isRenderModeList ? -1 : this.useTemplatePanel ? 0 : (this.currentIndexValue < 0 && this.panelCount > 0 && (this.currentIndexValue = 0), this.currentIndexValue >= this.panelCount && (this.currentIndexValue = this.panelCount - 1), this.currentIndexValue)
                    },
                    set: function(e) {
                        this.currentIndexValue !== e && (e >= this.panelCount && (e = this.panelCount - 1), this.currentIndexValue = e, this.updateFooterActions(), this.fireCallback(this.currentIndexChangedCallback))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "currentPanel", {
                    get: function() {
                        var e = this.currentIndex;
                        return e < 0 || e >= this.panels.length ? null : this.panels[e]
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "confirmDelete", {
                    get: function() {
                        return this.getPropertyValue("confirmDelete", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("confirmDelete", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "keyName", {
                    get: function() {
                        return this.getPropertyValue("keyName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("keyName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "confirmDeleteText", {
                    get: function() {
                        return this.getLocalizableStringText("confirmDeleteText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("confirmDeleteText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locConfirmDeleteText", {
                    get: function() {
                        return this.getLocalizableString("confirmDeleteText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "keyDuplicationError", {
                    get: function() {
                        return this.getLocalizableStringText("keyDuplicationError")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("keyDuplicationError", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locKeyDuplicationError", {
                    get: function() {
                        return this.getLocalizableString("keyDuplicationError")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panelPrevText", {
                    get: function() {
                        return this.getLocalizableStringText("panelPrevText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("panelPrevText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPanelPrevText", {
                    get: function() {
                        return this.getLocalizableString("panelPrevText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panelNextText", {
                    get: function() {
                        return this.getLocalizableStringText("panelNextText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("panelNextText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPanelNextText", {
                    get: function() {
                        return this.getLocalizableString("panelNextText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panelAddText", {
                    get: function() {
                        return this.getLocalizableStringText("panelAddText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("panelAddText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPanelAddText", {
                    get: function() {
                        return this.getLocalizableString("panelAddText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panelRemoveText", {
                    get: function() {
                        return this.getLocalizableStringText("panelRemoveText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("panelRemoveText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locPanelRemoveText", {
                    get: function() {
                        return this.getLocalizableString("panelRemoveText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isProgressTopShowing", {
                    get: function() {
                        return "progressTop" === this.renderMode || "progressTopBottom" === this.renderMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isProgressBottomShowing", {
                    get: function() {
                        return "progressBottom" === this.renderMode || "progressTopBottom" === this.renderMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isPrevButtonVisible", {
                    get: function() {
                        return this.currentIndex > 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isPrevButtonShowing", {
                    get: function() {
                        return this.isPrevButtonVisible
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isNextButtonVisible", {
                    get: function() {
                        return this.currentIndex >= 0 && this.currentIndex < this.panelCount - 1
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isNextButtonShowing", {
                    get: function() {
                        return this.isNextButtonVisible
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRangeShowing", {
                    get: function() {
                        return this.showRangeInProgress && this.currentIndex >= 0 && this.panelCount > 1
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getElementsInDesign = function(e) {
                    return void 0 === e && (e = !1), e ? [this.template] : this.templateElements
                }, t.prototype.prepareValueForPanelCreating = function() {
                    this.addingNewPanelsValue = this.value, this.isAddingNewPanels = !0, this.isNewPanelsValueChanged = !1
                }, t.prototype.setValueAfterPanelsCreating = function() {
                    this.isAddingNewPanels = !1, this.isNewPanelsValueChanged && (this.isValueChangingInternally = !0, this.value = this.addingNewPanelsValue, this.isValueChangingInternally = !1)
                }, t.prototype.getValueCore = function() {
                    return this.isAddingNewPanels ? this.addingNewPanelsValue : e.prototype.getValueCore.call(this)
                }, t.prototype.setValueCore = function(t) {
                    this.isAddingNewPanels ? (this.isNewPanelsValueChanged = !0, this.addingNewPanelsValue = t) : e.prototype.setValueCore.call(this, t)
                }, Object.defineProperty(t.prototype, "panelCount", {
                    get: function() {
                        return this.isLoadingFromJson || this.useTemplatePanel ? this.loadingPanelCount : this.panels.length
                    },
                    set: function(e) {
                        if (!(e < 0))
                            if (this.isLoadingFromJson || this.useTemplatePanel) this.loadingPanelCount = e;
                            else if (e != this.panels.length && !this.useTemplatePanel) {
                            this.updateBindings("panelCount", e), this.prepareValueForPanelCreating();
                            for (var t = this.panelCount; t < e; t++) {
                                var n = this.createNewPanel();
                                this.panels.push(n), "list" == this.renderMode && "default" != this.panelsState && ("expand" === this.panelsState ? n.expand() : n.title && n.collapse())
                            }
                            e < this.panelCount && this.panels.splice(e, this.panelCount - e), this.setValueAfterPanelsCreating(), this.setValueBasedOnPanelCount(), this.reRunCondition(), this.updateFooterActions(), this.fireCallback(this.panelCountChangedCallback)
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panelsState", {
                    get: function() {
                        return this.getPropertyValue("panelsState")
                    },
                    set: function(e) {
                        this.setPropertyValue("panelsState", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setTemplatePanelSurveyImpl = function() {
                    this.template.setSurveyImpl(this.useTemplatePanel ? this.surveyImpl : new si(this))
                }, t.prototype.setPanelsSurveyImpl = function() {
                    for (var e = 0; e < this.panels.length; e++) {
                        var t = this.panels[e];
                        t != this.template && t.setSurveyImpl(t.data)
                    }
                }, t.prototype.setPanelsState = function() {
                    if (!this.useTemplatePanel && "list" == this.renderMode && this.templateTitle)
                        for (var e = 0; e < this.panels.length; e++) {
                            var t = this.panelsState;
                            "firstExpanded" === t && (t = 0 === e ? "expanded" : "collapsed"), this.panels[e].state = t
                        }
                }, t.prototype.setValueBasedOnPanelCount = function() {
                    var e = this.value;
                    if (e && Array.isArray(e) || (e = []), e.length != this.panelCount) {
                        for (var t = e.length; t < this.panelCount; t++) e.push({});
                        e.length > this.panelCount && e.splice(this.panelCount, e.length - this.panelCount), this.isValueChangingInternally = !0, this.value = e, this.isValueChangingInternally = !1
                    }
                }, Object.defineProperty(t.prototype, "minPanelCount", {
                    get: function() {
                        return this.getPropertyValue("minPanelCount")
                    },
                    set: function(e) {
                        e < 0 && (e = 0), e != this.minPanelCount && (this.setPropertyValue("minPanelCount", e), e > this.maxPanelCount && (this.maxPanelCount = e), this.panelCount < e && (this.panelCount = e))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "maxPanelCount", {
                    get: function() {
                        return this.getPropertyValue("maxPanelCount")
                    },
                    set: function(e) {
                        e <= 0 || (e > s.panelMaximumPanelCount && (e = s.panelMaximumPanelCount), e != this.maxPanelCount && (this.setPropertyValue("maxPanelCount", e), e < this.minPanelCount && (this.minPanelCount = e), this.panelCount > e && (this.panelCount = e)))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowAddPanel", {
                    get: function() {
                        return this.getPropertyValue("allowAddPanel")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowAddPanel", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "allowRemovePanel", {
                    get: function() {
                        return this.getPropertyValue("allowRemovePanel")
                    },
                    set: function(e) {
                        this.setPropertyValue("allowRemovePanel", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "templateTitleLocation", {
                    get: function() {
                        return this.getPropertyValue("templateTitleLocation")
                    },
                    set: function(e) {
                        this.setPropertyValue("templateTitleLocation", e.toLowerCase())
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showQuestionNumbers", {
                    get: function() {
                        return this.getPropertyValue("showQuestionNumbers")
                    },
                    set: function(e) {
                        this.setPropertyValue("showQuestionNumbers", e), !this.isLoadingFromJson && this.survey && this.survey.questionVisibilityChanged(this, this.visible)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panelRemoveButtonLocation", {
                    get: function() {
                        return this.getPropertyValue("panelRemoveButtonLocation")
                    },
                    set: function(e) {
                        this.setPropertyValue("panelRemoveButtonLocation", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showRangeInProgress", {
                    get: function() {
                        return this.getPropertyValue("showRangeInProgress")
                    },
                    set: function(e) {
                        this.setPropertyValue("showRangeInProgress", e), this.updateFooterActions(), this.fireCallback(this.currentIndexChangedCallback)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderMode", {
                    get: function() {
                        return this.getPropertyValue("renderMode")
                    },
                    set: function(e) {
                        this.setPropertyValue("renderMode", e), this.updateFooterActions(), this.fireCallback(this.renderModeChangedCallback)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isRenderModeList", {
                    get: function() {
                        return "list" === this.renderMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setVisibleIndex = function(t) {
                    if (!this.isVisible) return 0;
                    for (var n = "onSurvey" == this.showQuestionNumbers ? t : 0, o = 0; o < this.panels.length; o++) {
                        var r = this.setPanelVisibleIndex(this.panels[o], n, "off" != this.showQuestionNumbers);
                        "onSurvey" == this.showQuestionNumbers && (n += r)
                    }
                    return e.prototype.setVisibleIndex.call(this, "onSurvey" != this.showQuestionNumbers ? t : -1), "onSurvey" != this.showQuestionNumbers ? 1 : n - t
                }, t.prototype.setPanelVisibleIndex = function(e, t, n) {
                    return n ? e.setVisibleIndex(t) : (e.setVisibleIndex(-1), 0)
                }, Object.defineProperty(t.prototype, "canAddPanel", {
                    get: function() {
                        return !this.isDesignMode && (!(this.isDefaultV2Theme && !this.legacyNavigation && !this.isRenderModeList && this.currentIndex < this.panelCount - 1) && (this.allowAddPanel && !this.isReadOnly && this.panelCount < this.maxPanelCount))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "canRemovePanel", {
                    get: function() {
                        return !this.isDesignMode && (this.allowRemovePanel && !this.isReadOnly && this.panelCount > this.minPanelCount)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.rebuildPanels = function() {
                    var e;
                    if (!this.isLoadingFromJson) {
                        this.prepareValueForPanelCreating();
                        var t = [];
                        if (this.useTemplatePanel) new ii(this, this.template), t.push(this.template);
                        else
                            for (var n = 0; n < this.panelCount; n++) this.createNewPanel(), t.push(this.createNewPanel());
                        (e = this.panels).splice.apply(e, oi([0, this.panels.length], t, !1)), this.setValueAfterPanelsCreating(), this.setPanelsState(), this.reRunCondition(), this.updateFooterActions(), this.fireCallback(this.panelCountChangedCallback)
                    }
                }, Object.defineProperty(t.prototype, "defaultPanelValue", {
                    get: function() {
                        return this.getPropertyValue("defaultPanelValue")
                    },
                    set: function(e) {
                        this.setPropertyValue("defaultPanelValue", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "defaultValueFromLastPanel", {
                    get: function() {
                        return this.getPropertyValue("defaultValueFromLastPanel", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("defaultValueFromLastPanel", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.isDefaultValueEmpty = function() {
                    return e.prototype.isDefaultValueEmpty.call(this) && this.isValueEmpty(this.defaultPanelValue)
                }, t.prototype.setDefaultValue = function() {
                    if (!this.isValueEmpty(this.defaultPanelValue) && this.isValueEmpty(this.defaultValue)) {
                        if (this.isEmpty() && 0 != this.panelCount) {
                            for (var t = [], n = 0; n < this.panelCount; n++) t.push(this.defaultPanelValue);
                            this.value = t
                        }
                    } else e.prototype.setDefaultValue.call(this)
                }, t.prototype.isEmpty = function() {
                    var e = this.value;
                    if (!e || !Array.isArray(e)) return !0;
                    for (var t = 0; t < e.length; t++)
                        if (!this.isRowEmpty(e[t])) return !1;
                    return !0
                }, t.prototype.getProgressInfo = function() {
                    return jt.getProgressInfoByElements(this.panels, this.isRequired)
                }, t.prototype.isRowEmpty = function(e) {
                    for (var t in e)
                        if (e.hasOwnProperty(t)) return !1;
                    return !0
                }, t.prototype.addPanelUI = function() {
                    if (!this.canAddPanel) return null;
                    if (!this.canLeaveCurrentPanel()) return null;
                    var e = this.addPanel();
                    return "list" === this.renderMode && "default" !== this.panelsState && e.expand(), e
                }, t.prototype.addPanel = function() {
                    this.panelCount++, this.isRenderModeList || (this.currentIndex = this.panelCount - 1);
                    var e = this.value,
                        t = !1;
                    return this.isValueEmpty(this.defaultPanelValue) || e && Array.isArray(e) && e.length == this.panelCount && (t = !0, this.copyValue(e[e.length - 1], this.defaultPanelValue)), this.defaultValueFromLastPanel && e && Array.isArray(e) && e.length > 1 && e.length == this.panelCount && (t = !0, this.copyValue(e[e.length - 1], e[e.length - 2])), t && (this.value = e), this.survey && this.survey.dynamicPanelAdded(this), this.panels[this.panelCount - 1]
                }, t.prototype.canLeaveCurrentPanel = function() {
                    return !("list" !== this.renderMode && this.currentPanel && this.currentPanel.hasErrors(!0, !0))
                }, t.prototype.copyValue = function(e, t) {
                    for (var n in t) e[n] = t[n]
                }, t.prototype.removePanelUI = function(e) {
                    this.canRemovePanel && (this.confirmDelete && !Qe(this.confirmDeleteText) || this.removePanel(e))
                }, t.prototype.goToNextPanel = function() {
                    return !(this.currentIndex < 0) && (!!this.canLeaveCurrentPanel() && (this.currentIndex++, !0))
                }, t.prototype.goToPrevPanel = function() {
                    this.currentIndex < 0 || this.currentIndex--
                }, t.prototype.removePanel = function(e) {
                    var t = this.getPanelIndex(e);
                    if (!(t < 0 || t >= this.panelCount)) {
                        var n = this.panels[t];
                        if (!this.survey || this.survey.dynamicPanelRemoving(this, t, n)) this.panels.splice(t, 1), this.updateBindings("panelCount", this.panelCount), !(e = this.value) || !Array.isArray(e) || t >= e.length || (this.isValueChangingInternally = !0, e.splice(t, 1), this.value = e, this.updateFooterActions(), this.fireCallback(this.panelCountChangedCallback), this.survey && this.survey.dynamicPanelRemoved(this, t, n), this.isValueChangingInternally = !1)
                    }
                }, t.prototype.getPanelIndex = function(e) {
                    if (a.isNumber(e)) return e;
                    for (var t = this.items, n = 0; n < this.panels.length; n++)
                        if (this.panels[n] === e || t[n] === e) return n;
                    return -1
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this);
                    for (var t = this.panels, n = 0; n < t.length; n++) t[n].locStrsChanged()
                }, t.prototype.clearIncorrectValues = function() {
                    for (var e = 0; e < this.panels.length; e++) this.clearIncorrectValuesInPanel(e)
                }, t.prototype.clearErrors = function() {
                    e.prototype.clearErrors.call(this);
                    for (var t = 0; t < this.panels.length; t++) this.panels[t].clearErrors()
                }, t.prototype.getQuestionFromArray = function(e, t) {
                    return t >= this.panelCount ? null : this.panels[t].getQuestionByName(e)
                }, t.prototype.clearIncorrectValuesInPanel = function(e) {
                    var t = this.panels[e];
                    t.clearIncorrectValues();
                    var n = this.value,
                        o = n && e < n.length ? n[e] : null;
                    if (o) {
                        var r = !1;
                        for (var i in o) {
                            if (!this.getSharedQuestionFromArray(i, e)) t.getQuestionByName(i) || this.iscorrectValueWithPostPrefix(t, i, s.commentSuffix) || this.iscorrectValueWithPostPrefix(t, i, s.matrixTotalValuePostFix) || (delete o[i], r = !0)
                        }
                        r && (n[e] = o, this.value = n)
                    }
                }, t.prototype.iscorrectValueWithPostPrefix = function(e, t, n) {
                    return t.indexOf(n) === t.length - n.length && !!e.getQuestionByName(t.substring(0, t.indexOf(n)))
                }, t.prototype.getSharedQuestionFromArray = function(e, t) {
                    return this.survey && this.valueName ? this.survey.getQuestionByValueNameFromArray(this.valueName, e, t) : null
                }, t.prototype.addConditionObjectsByContext = function(e, t) {
                    for (var n = !!t && (!0 === t || this.template.questions.indexOf(t) > -1), o = this.getValueName() + "[0].", r = this.processedTitle + "[0].", i = new Array, s = this.template.questions, a = 0; a < s.length; a++) s[a].addConditionObjectsByContext(i, t);
                    for (a = 0; a < i.length; a++) e.push({
                        name: o + i[a].name,
                        text: r + i[a].text,
                        question: i[a].question
                    });
                    if (n) {
                        var l = !0 === t ? this.getValueName() + "." : "",
                            u = !0 === t ? this.processedTitle + "." : "";
                        for (a = 0; a < i.length; a++)
                            if (i[a].question != t) {
                                var c = {
                                    name: l + "panel." + i[a].name,
                                    text: u + "panel." + i[a].text,
                                    question: i[a].question
                                };
                                !0 === t && (c.context = this), e.push(c)
                            }
                    }
                }, t.prototype.getConditionJson = function(t, n) {
                    if (void 0 === t && (t = null), void 0 === n && (n = null), !n) return e.prototype.getConditionJson.call(this, t, n);
                    var o = n,
                        r = n.indexOf(".");
                    r > -1 && (o = n.substring(0, r), n = n.substring(r + 1));
                    var i = this.template.getQuestionByName(o);
                    return i ? i.getConditionJson(t, n) : null
                }, t.prototype.onReadOnlyChanged = function() {
                    var t = this.isReadOnly;
                    this.template.readOnly = t;
                    for (var n = 0; n < this.panels.length; n++) this.panels[n].readOnly = t;
                    e.prototype.onReadOnlyChanged.call(this)
                }, t.prototype.onSurveyLoad = function() {
                    if (this.template.readOnly = this.isReadOnly, this.template.onSurveyLoad(), this.loadingPanelCount > 0 && (this.panelCount = this.loadingPanelCount), this.useTemplatePanel && this.rebuildPanels(), this.setPanelsSurveyImpl(), this.setPanelsState(), this.assignOnPropertyChangedToTemplate(), this.survey)
                        for (var t = 0; t < this.panelCount; t++) this.survey.dynamicPanelAdded(this);
                    this.recalculateIsReadyValue(), e.prototype.onSurveyLoad.call(this)
                }, t.prototype.onFirstRendering = function() {
                    this.template.onFirstRendering();
                    for (var t = 0; t < this.panels.length; t++) this.panels[t].onFirstRendering();
                    e.prototype.onFirstRendering.call(this)
                }, t.prototype.localeChanged = function() {
                    e.prototype.localeChanged.call(this);
                    for (var t = 0; t < this.panels.length; t++) this.panels[t].localeChanged()
                }, t.prototype.runCondition = function(t, n) {
                    e.prototype.runCondition.call(this, t, n), this.runPanelsCondition(t, n)
                }, t.prototype.reRunCondition = function() {
                    this.data && this.runCondition(this.getDataFilteredValues(), this.getDataFilteredProperties())
                }, t.prototype.runPanelsCondition = function(e, t) {
                    var n = {};
                    e && e instanceof Object && (n = JSON.parse(JSON.stringify(e))), this.parentQuestion && this.parent && (n[ii.ParentItemVariableName] = this.parent.getValue());
                    for (var o = 0; o < this.panels.length; o++) {
                        var r = this.getPanelItemData(this.panels[o].data),
                            i = a.createCopy(n);
                        i[ii.ItemVariableName.toLowerCase()] = r, i[ii.IndexVariableName.toLowerCase()] = o, this.panels[o].runCondition(i, t)
                    }
                }, t.prototype.onAnyValueChanged = function(t) {
                    e.prototype.onAnyValueChanged.call(this, t);
                    for (var n = 0; n < this.panels.length; n++) this.panels[n].onAnyValueChanged(t), this.panels[n].onAnyValueChanged(ii.ItemVariableName)
                }, t.prototype.hasKeysDuplicated = function(e, t) {
                    void 0 === t && (t = null);
                    for (var n, o = [], r = 0; r < this.panels.length; r++) n = this.isValueDuplicated(this.panels[r], o, t, e) || n;
                    return n
                }, t.prototype.updatePanelsContainsErrors = function() {
                    for (var e = this.changingValueQuestion.parent; e;) e.updateContainsErrors(), e = e.parent;
                    this.updateContainsErrors()
                }, t.prototype.hasErrors = function(t, n) {
                    if (void 0 === t && (t = !0), void 0 === n && (n = null), this.isValueChangingInternally) return !1;
                    var o = !1;
                    if (this.changingValueQuestion) {
                        o = this.changingValueQuestion.hasErrors(t, n);
                        return o = this.hasKeysDuplicated(t, n) || o, this.updatePanelsContainsErrors(), o
                    }
                    var r = this.hasErrorInPanels(t, n);
                    return e.prototype.hasErrors.call(this, t) || r
                }, t.prototype.getContainsErrors = function() {
                    var t = e.prototype.getContainsErrors.call(this);
                    if (t) return t;
                    for (var n = this.panels, o = 0; o < n.length; o++)
                        if (n[o].containsErrors) return !0;
                    return !1
                }, t.prototype.getIsAnswered = function() {
                    if (!e.prototype.getIsAnswered.call(this)) return !1;
                    for (var t = this.panels, n = 0; n < t.length; n++) {
                        var o = [];
                        t[n].addQuestionsToList(o, !0);
                        for (var r = 0; r < o.length; r++)
                            if (!o[r].isAnswered) return !1
                    }
                    return !0
                }, t.prototype.clearValueIfInvisibleCore = function() {
                    for (var t = 0; t < this.panels.length; t++) {
                        var n = this.panels[t].questions;
                        this.isSetPanelItemData = [];
                        for (var o = 0; o < n.length; o++) {
                            var r = n[o];
                            r.clearValueIfInvisible(), this.isSetPanelItemData.push(r.getValueName())
                        }
                    }
                    this.isSetPanelItemData = void 0, e.prototype.clearValueIfInvisibleCore.call(this)
                }, t.prototype.getIsRunningValidators = function() {
                    if (e.prototype.getIsRunningValidators.call(this)) return !0;
                    for (var t = 0; t < this.panels.length; t++)
                        for (var n = this.panels[t].questions, o = 0; o < n.length; o++)
                            if (n[o].isRunningValidators) return !0;
                    return !1
                }, t.prototype.getAllErrors = function() {
                    for (var t = e.prototype.getAllErrors.call(this), n = 0; n < this.panels.length; n++)
                        for (var o = this.panels[n].questions, r = 0; r < o.length; r++) {
                            var i = o[r].getAllErrors();
                            i && i.length > 0 && (t = t.concat(i))
                        }
                    return t
                }, t.prototype.getDisplayValueCore = function(e, t) {
                    var n = this.getUnbindValue(t);
                    if (!n || !Array.isArray(n)) return n;
                    for (var o = 0; o < this.panels.length && o < n.length; o++) {
                        var r = n[o];
                        r && (n[o] = this.getPanelDisplayValue(o, r, e))
                    }
                    return n
                }, t.prototype.getPanelDisplayValue = function(e, t, n) {
                    if (!t) return t;
                    for (var o = this.panels[e], r = Object.keys(t), i = 0; i < r.length; i++) {
                        var s = r[i],
                            a = o.getQuestionByValueName(s);
                        if (a || (a = this.getSharedQuestionFromArray(s, e)), a) {
                            var l = a.getDisplayValue(n, t[s]);
                            t[s] = l, n && a.title && a.title !== s && (t[a.title] = l, delete t[s])
                        }
                    }
                    return t
                }, t.prototype.hasErrorInPanels = function(e, t) {
                    for (var n = !1, o = this.panels, r = [], i = 0; i < o.length; i++) this.setOnCompleteAsyncInPanel(o[i]);
                    for (i = 0; i < o.length; i++) {
                        var s = o[i].hasErrors(e, !!t && t.focuseOnFirstError, t);
                        s = this.isValueDuplicated(o[i], r, t, e) || s, this.isRenderModeList || !s || n || (this.currentIndex = i), n = s || n
                    }
                    return n
                }, t.prototype.setOnCompleteAsyncInPanel = function(e) {
                    for (var t = this, n = e.questions, o = 0; o < n.length; o++) n[o].onCompletedAsyncValidators = function(e) {
                        t.raiseOnCompletedAsyncValidators()
                    }
                }, t.prototype.isValueDuplicated = function(e, t, n, o) {
                    if (!this.keyName) return !1;
                    var r = e.getQuestionByValueName(this.keyName);
                    if (!r || r.isEmpty()) return !1;
                    var i = r.value;
                    this.changingValueQuestion && r != this.changingValueQuestion && r.hasErrors(o, n);
                    for (var s = 0; s < t.length; s++)
                        if (i == t[s]) return o && r.addError(new Ee(this.keyDuplicationError, this)), n && !n.firstErrorQuestion && (n.firstErrorQuestion = r), !0;
                    return t.push(i), !1
                }, t.prototype.getPanelActions = function(e) {
                    var t = this,
                        n = e.footerActions;
                    return "right" !== this.panelRemoveButtonLocation && n.push(new Et({
                        id: "remove-panel-".concat(e.id),
                        component: "sv-paneldynamic-remove-btn",
                        visible: new de((function() {
                            return [t.canRemovePanel, "collapsed" !== e.state, "right" !== t.panelRemoveButtonLocation].every((function(e) {
                                return !0 === e
                            }))
                        })),
                        data: {
                            question: this,
                            panel: e
                        }
                    })), this.survey && (n = this.survey.getUpdatedPanelFooterActions(e, n, this)), n
                }, t.prototype.createNewPanel = function() {
                    var e = this,
                        t = this.createAndSetupNewPanelObject(),
                        n = this.template.toJSON();
                    (new R).toObject(n, t), t.renderWidth = "100%", t.updateCustomWidgets(), new ii(this, t), t.onFirstRendering();
                    for (var o = t.questions, r = 0; r < o.length; r++) o[r].setParentQuestion(this);
                    return t.locStrsChanged(), t.onGetFooterActionsCallback = function() {
                        return e.getPanelActions(t)
                    }, t.footerToolbarCss = this.cssClasses.panelFooter, t
                }, t.prototype.createAndSetupNewPanelObject = function() {
                    var e = this.createNewPanelObject();
                    e.isInteractiveDesignElement = !1, e.setParentQuestion(this);
                    var t = this;
                    return e.onGetQuestionTitleLocation = function() {
                        return t.getTemplateQuestionTitleLocation()
                    }, e
                }, t.prototype.getTemplateQuestionTitleLocation = function() {
                    return "default" != this.templateTitleLocation ? this.templateTitleLocation : this.getTitleLocationCore()
                }, t.prototype.createNewPanelObject = function() {
                    return I.createClass("panel")
                }, t.prototype.setPanelCountBasedOnValue = function() {
                    if (!this.isValueChangingInternally && !this.useTemplatePanel) {
                        var e = this.value,
                            t = e && Array.isArray(e) ? e.length : 0;
                        0 == t && this.loadingPanelCount > 0 && (t = this.loadingPanelCount), this.panelCount = t
                    }
                }, t.prototype.setQuestionValue = function(t) {
                    e.prototype.setQuestionValue.call(this, t, !1), this.setPanelCountBasedOnValue();
                    for (var n = 0; n < this.panels.length; n++) this.panelUpdateValueFromSurvey(this.panels[n]);
                    this.updateIsAnswered()
                }, t.prototype.onSurveyValueChanged = function(t) {
                    e.prototype.onSurveyValueChanged.call(this, t);
                    for (var n = 0; n < this.panels.length; n++) this.panelSurveyValueChanged(this.panels[n]);
                    void 0 === t && this.setValueBasedOnPanelCount(), this.recalculateIsReadyValue()
                }, t.prototype.panelUpdateValueFromSurvey = function(e) {
                    for (var t = e.questions, n = this.getPanelItemData(e.data), o = 0; o < t.length; o++) {
                        var r = t[o];
                        r.updateValueFromSurvey(n[r.getValueName()]), r.updateCommentFromSurvey(n[r.getValueName() + s.commentSuffix])
                    }
                }, t.prototype.panelSurveyValueChanged = function(e) {
                    for (var t = e.questions, n = this.getPanelItemData(e.data), o = 0; o < t.length; o++) {
                        var r = t[o];
                        r.onSurveyValueChanged(n[r.getValueName()])
                    }
                }, t.prototype.recalculateIsReadyValue = function() {
                    var e = this,
                        t = this.isReadyValue,
                        n = !0;
                    this.panels.forEach((function(t) {
                        t.questions.forEach((function(t) {
                            t.isReady ? t.onReadyChanged.remove(e.onReadyChangedCallback) : (n = !1, t.onReadyChanged.add(e.onReadyChangedCallback))
                        }))
                    })), this.isReadyValue = n, t != this.isReadyValue && this.onReadyChanged.fire(this, {
                        question: this,
                        oldIsReady: t,
                        isReady: this.isReadyValue
                    })
                }, t.prototype.onSetData = function() {
                    e.prototype.onSetData.call(this), this.useTemplatePanel && (this.setTemplatePanelSurveyImpl(), this.rebuildPanels())
                }, t.prototype.getItemIndex = function(e) {
                    var t = this.items.indexOf(e);
                    return t > -1 ? t : this.items.length
                }, t.prototype.getPanelItemData = function(e) {
                    var t = this.items,
                        n = t.indexOf(e),
                        o = this.value;
                    return n < 0 && Array.isArray(o) && o.length > t.length && (n = t.length), n < 0 || !o || !Array.isArray(o) || o.length <= n ? {} : o[n]
                }, t.prototype.setPanelItemData = function(e, t, n) {
                    if (!(this.isSetPanelItemData && this.isSetPanelItemData.indexOf(t) > -1)) {
                        this.isSetPanelItemData || (this.isSetPanelItemData = []), this.isSetPanelItemData.push(t);
                        var o = this.items;
                        (r = o.indexOf(e)) < 0 && (r = o.length);
                        var r, i = this.getUnbindValue(this.value);
                        if (i && Array.isArray(i) || (i = []), i.length <= r)
                            for (var s = i.length; s <= r; s++) i.push({});
                        if (i[r] || (i[r] = {}), this.isValueEmpty(n) ? delete i[r][t] : i[r][t] = n, r >= 0 && r < this.panels.length && (this.changingValueQuestion = this.panels[r].getQuestionByValueName(t)), this.value = i, this.changingValueQuestion = null, this.survey) {
                            var a = {
                                question: this,
                                panel: e.panel,
                                name: t,
                                itemIndex: r,
                                itemValue: i[r],
                                value: n
                            };
                            this.survey.dynamicPanelItemValueChanged(this, a)
                        }(r = this.isSetPanelItemData.indexOf(t)) > -1 && this.isSetPanelItemData.splice(r, 1)
                    }
                }, t.prototype.getRootData = function() {
                    return this.data
                }, t.prototype.getPlainData = function(t) {
                    void 0 === t && (t = {
                        includeEmpty: !0
                    });
                    var n = e.prototype.getPlainData.call(this, t);
                    return n && (n.isNode = !0, n.data = this.panels.map((function(e, n) {
                        var o = {
                            name: e.name || n,
                            title: e.title || "Panel",
                            value: e.getValue(),
                            displayValue: e.getValue(),
                            getString: function(e) {
                                return "object" == typeof e ? JSON.stringify(e) : e
                            },
                            isNode: !0,
                            data: e.questions.map((function(e) {
                                return e.getPlainData(t)
                            })).filter((function(e) {
                                return !!e
                            }))
                        };
                        return (t.calculations || []).forEach((function(t) {
                            o[t.propertyName] = e[t.propertyName]
                        })), o
                    }))), n
                }, t.prototype.updateElementCss = function(t) {
                    e.prototype.updateElementCss.call(this, t);
                    for (var n = 0; n < this.panels.length; n++) {
                        this.panels[n].updateElementCss(t)
                    }
                }, Object.defineProperty(t.prototype, "progressText", {
                    get: function() {
                        var e = this.panelCount;
                        return this.getLocalizationFormatString("panelDynamicProgressText", this.currentIndex + 1, e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "progress", {
                    get: function() {
                        return (this.currentIndex + 1) / this.panelCount * 100 + "%"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getRootCss = function() {
                    return (new ct).append(e.prototype.getRootCss.call(this)).append(this.cssClasses.empty, this.getShowNoEntriesPlaceholder()).toString()
                }, t.prototype.getPanelWrapperCss = function() {
                    return (new ct).append(this.cssClasses.panelWrapper).append(this.cssClasses.panelWrapperInRow, "right" === this.panelRemoveButtonLocation).toString()
                }, t.prototype.getPanelRemoveButtonCss = function() {
                    return (new ct).append(this.cssClasses.button).append(this.cssClasses.buttonRemove).append(this.cssClasses.buttonRemoveRight, "right" === this.panelRemoveButtonLocation).toString()
                }, t.prototype.getAddButtonCss = function() {
                    return (new ct).append(this.cssClasses.button).append(this.cssClasses.buttonAdd).append(this.cssClasses.buttonAdd + "--list-mode", "list" === this.renderMode).toString()
                }, t.prototype.getPrevButtonCss = function() {
                    return (new ct).append(this.cssClasses.buttonPrev).append(this.cssClasses.buttonPrevDisabled, !this.isPrevButtonVisible).toString()
                }, t.prototype.getNextButtonCss = function() {
                    return (new ct).append(this.cssClasses.buttonNext).append(this.cssClasses.buttonNextDisabled, !this.isNextButtonVisible).toString()
                }, Object.defineProperty(t.prototype, "noEntriesText", {
                    get: function() {
                        return this.getLocalizableStringText("noEntriesText")
                    },
                    set: function(e) {
                        this.setLocalizableStringText("noEntriesText", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locNoEntriesText", {
                    get: function() {
                        return this.getLocalizableString("noEntriesText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getShowNoEntriesPlaceholder = function() {
                    return !!this.cssClasses.noEntriesPlaceholder && !this.isDesignMode && 0 === this.panelCount
                }, t.prototype.needResponsiveWidth = function() {
                    var e = this.getPanel();
                    return !(!e || !e.needResponsiveWidth())
                }, Object.defineProperty(t.prototype, "footerToolbar", {
                    get: function() {
                        return this.footerToolbarValue || this.initFooterToolbar(), this.footerToolbarValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateFooterActions = function() {
                    this.updateFooterActionsCallback && this.updateFooterActionsCallback()
                }, t.prototype.initFooterToolbar = function() {
                    var e = this;
                    this.footerToolbarValue = this.createActionContainer();
                    var t = [],
                        n = new Et({
                            id: "sv-pd-prev-btn",
                            title: this.panelPrevText,
                            action: function() {
                                e.goToPrevPanel()
                            }
                        }),
                        o = new Et({
                            id: "sv-pd-next-btn",
                            title: this.panelNextText,
                            action: function() {
                                e.goToNextPanel()
                            }
                        }),
                        r = new Et({
                            id: "sv-pd-add-btn",
                            component: "sv-paneldynamic-add-btn",
                            data: {
                                question: this
                            }
                        }),
                        i = new Et({
                            id: "sv-prev-btn-icon",
                            component: "sv-paneldynamic-prev-btn",
                            data: {
                                question: this
                            }
                        }),
                        s = new Et({
                            id: "sv-pd-progress-text",
                            component: "sv-paneldynamic-progress-text",
                            data: {
                                question: this
                            }
                        }),
                        a = new Et({
                            id: "sv-pd-next-btn-icon",
                            component: "sv-paneldynamic-next-btn",
                            data: {
                                question: this
                            }
                        });
                    t.push(n, o, r, i, s, a), this.updateFooterActionsCallback = function() {
                        var t = e.legacyNavigation,
                            l = e.isRenderModeList,
                            u = e.isMobile,
                            c = !t && !l;
                        n.visible = c && e.currentIndex > 0, o.visible = c && e.currentIndex < e.panelCount - 1, o.needSpace = u && o.visible && n.visible, r.needSpace = e.isMobile && !o.visible && n.visible, s.visible = !e.isRenderModeList && !u, s.needSpace = !t && !e.isMobile;
                        var p = t && !l;
                        i.visible = p, a.visible = p, i.needSpace = p
                    }, this.updateFooterActionsCallback(), this.footerToolbarValue.setItems(t)
                }, Object.defineProperty(t.prototype, "showLegacyNavigation", {
                    get: function() {
                        return !this.isDefaultV2Theme
                    },
                    enumerable: !1,
                    configurable: !0
                }), ni([y({
                    defaultValue: !1,
                    onSet: function(e, t) {
                        t.updateFooterActions()
                    }
                })], t.prototype, "legacyNavigation", void 0), t
            }(Xt);
        I.addClass("paneldynamic", [{
            name: "showCommentArea:switch",
            layout: "row",
            visible: !0,
            category: "general"
        }, {
            name: "templateElements",
            alternativeName: "questions",
            baseClassName: "question",
            visible: !1,
            isLightSerializable: !1
        }, {
            name: "templateTitle:text",
            serializationProperty: "locTemplateTitle"
        }, {
            name: "templateDescription:text",
            serializationProperty: "locTemplateDescription"
        }, {
            name: "minWidth",
            default: "auto"
        }, {
            name: "noEntriesText:text",
            serializationProperty: "locNoEntriesText"
        }, {
            name: "allowAddPanel:boolean",
            default: !0
        }, {
            name: "allowRemovePanel:boolean",
            default: !0
        }, {
            name: "panelCount:number",
            isBindable: !0,
            default: 0,
            choices: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        }, {
            name: "minPanelCount:number",
            default: 0,
            minValue: 0
        }, {
            name: "maxPanelCount:number",
            default: s.panelMaximumPanelCount
        }, "defaultPanelValue:panelvalue", "defaultValueFromLastPanel:boolean", {
            name: "panelsState",
            default: "default",
            choices: ["default", "collapsed", "expanded", "firstExpanded"]
        }, {
            name: "keyName"
        }, {
            name: "keyDuplicationError",
            serializationProperty: "locKeyDuplicationError"
        }, {
            name: "confirmDelete:boolean"
        }, {
            name: "confirmDeleteText",
            serializationProperty: "locConfirmDeleteText"
        }, {
            name: "panelAddText",
            serializationProperty: "locPanelAddText"
        }, {
            name: "panelRemoveText",
            serializationProperty: "locPanelRemoveText"
        }, {
            name: "panelPrevText",
            serializationProperty: "locPanelPrevText"
        }, {
            name: "panelNextText",
            serializationProperty: "locPanelNextText"
        }, {
            name: "showQuestionNumbers",
            default: "off",
            choices: ["off", "onPanel", "onSurvey"]
        }, {
            name: "showRangeInProgress:boolean",
            default: !0
        }, {
            name: "renderMode",
            default: "list",
            choices: ["list", "progressTop", "progressBottom", "progressTopBottom"]
        }, {
            name: "templateTitleLocation",
            default: "default",
            choices: ["default", "top", "bottom", "left"]
        }, {
            name: "panelRemoveButtonLocation",
            default: "bottom",
            choices: ["bottom", "right"]
        }], (function() {
            return new ai("")
        }), "question"), ln.Instance.registerQuestion("paneldynamic", (function(e) {
            return new ai(e)
        }));
        var li = function() {
                function e() {}
                return e.getProgressTextInBarCss = function(e) {
                    return (new ct).append(e.progressText).append(e.progressTextInBar).toString()
                }, e.getProgressTextUnderBarCss = function(e) {
                    return (new ct).append(e.progressText).append(e.progressTextUnderBar).toString()
                }, e
            }(),
            ui = function() {
                function e(e) {
                    this.survey = e
                }
                return e.prototype.isListElementClickable = function(e) {
                    return !(this.survey.onServerValidateQuestions && !this.survey.onServerValidateQuestions.isEmpty && "onComplete" !== this.survey.checkErrorsMode) || e <= this.survey.currentPageNo + 1
                }, e.prototype.getListElementCss = function(e) {
                    if (!(e >= this.survey.visiblePages.length)) return (new ct).append(this.survey.css.progressButtonsListElementPassed, this.survey.visiblePages[e].passed).append(this.survey.css.progressButtonsListElementCurrent, this.survey.currentPageNo === e).append(this.survey.css.progressButtonsListElementNonClickable, !this.isListElementClickable(e)).toString()
                }, e.prototype.getScrollButtonCss = function(e, t) {
                    return (new ct).append(this.survey.css.progressButtonsImageButtonLeft, t).append(this.survey.css.progressButtonsImageButtonRight, !t).append(this.survey.css.progressButtonsImageButtonHidden, !e).toString()
                }, e.prototype.clickListElement = function(e) {
                    if (!this.survey.isDesignMode)
                        if (e < this.survey.currentPageNo) this.survey.currentPageNo = e;
                        else if (e > this.survey.currentPageNo)
                        for (var t = this.survey.currentPageNo; t < e && this.survey.nextPage(); t++);
                }, e
            }(),
            ci = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            pi = function(e) {
                function t() {
                    var t = e.call(this) || this;
                    return t.usedNames = [], t.registerPropertyChangedHandlers(["operator", "value", "name"], (function() {
                        t.oldPropertiesChanged()
                    })), t.registerPropertyChangedHandlers(["expression"], (function() {
                        t.onExpressionChanged()
                    })), t
                }
                return ci(t, e), Object.defineProperty(t, "operators", {
                    get: function() {
                        return null != t.operatorsValue || (t.operatorsValue = {
                            empty: function(e, t) {
                                return !e
                            },
                            notempty: function(e, t) {
                                return !!e
                            },
                            equal: function(e, t) {
                                return e == t
                            },
                            notequal: function(e, t) {
                                return e != t
                            },
                            contains: function(e, t) {
                                return e && e.indexOf && e.indexOf(t) > -1
                            },
                            notcontains: function(e, t) {
                                return !e || !e.indexOf || -1 == e.indexOf(t)
                            },
                            greater: function(e, t) {
                                return e > t
                            },
                            less: function(e, t) {
                                return e < t
                            },
                            greaterorequal: function(e, t) {
                                return e >= t
                            },
                            lessorequal: function(e, t) {
                                return e <= t
                            }
                        }), t.operatorsValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "triggerbase"
                }, t.prototype.toString = function() {
                    var e = this.getType().replace("trigger", ""),
                        t = this.expression ? this.expression : this.buildExpression();
                    return t && (e += ", " + t), e
                }, Object.defineProperty(t.prototype, "operator", {
                    get: function() {
                        return this.getPropertyValue("operator", "equal")
                    },
                    set: function(e) {
                        e && (e = e.toLowerCase(), t.operators[e] && this.setPropertyValue("operator", e))
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "value", {
                    get: function() {
                        return this.getPropertyValue("value", null)
                    },
                    set: function(e) {
                        this.setPropertyValue("value", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "name", {
                    get: function() {
                        return this.getPropertyValue("name", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("name", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "expression", {
                    get: function() {
                        return this.getPropertyValue("expression", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("expression", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canBeExecuted = function(e) {
                    return !0
                }, t.prototype.checkExpression = function(e, t, n, o) {
                    void 0 === o && (o = null), this.isExecutingOnNextPage = e, this.canBeExecuted(e) && this.isCheckRequired(t) && this.conditionRunner && this.perform(n, o)
                }, t.prototype.check = function(e) {
                    t.operators[this.operator](e, this.value) ? this.onSuccess({}, null) : this.onFailure()
                }, t.prototype.perform = function(e, t) {
                    var n = this;
                    this.conditionRunner.onRunComplete = function(o) {
                        n.triggerResult(o, e, t)
                    }, this.conditionRunner.run(e, t)
                }, t.prototype.triggerResult = function(e, t, n) {
                    e ? (this.onSuccess(t, n), this.onSuccessExecuted()) : this.onFailure()
                }, t.prototype.onSuccess = function(e, t) {}, t.prototype.onFailure = function() {}, t.prototype.onSuccessExecuted = function() {}, t.prototype.endLoadingFromJson = function() {
                    e.prototype.endLoadingFromJson.call(this), this.oldPropertiesChanged()
                }, t.prototype.oldPropertiesChanged = function() {
                    this.onExpressionChanged()
                }, t.prototype.onExpressionChanged = function() {
                    this.usedNames = [], this.hasFunction = !1, this.conditionRunner = null
                }, t.prototype.buildExpression = function() {
                    return this.name ? this.isValueEmpty(this.value) && this.isRequireValue ? "" : "{" + this.name + "} " + this.operator + " " + Z.toOperandString(this.value) : ""
                }, t.prototype.isCheckRequired = function(e) {
                    if (!e) return !1;
                    if (this.buildUsedNames(), !0 === this.hasFunction) return !0;
                    for (var t = new _, n = 0; n < this.usedNames.length; n++) {
                        var o = this.usedNames[n];
                        if (e.hasOwnProperty(o)) return !0;
                        var r = t.getFirstName(o);
                        if (e.hasOwnProperty(r)) {
                            if (o == r) return !0;
                            var i = e[r];
                            if (null != i) {
                                if (!i.hasOwnProperty("oldValue") || !i.hasOwnProperty("newValue")) return !0;
                                var s = {};
                                s[r] = i.oldValue;
                                var a = t.getValue(o, s);
                                s[r] = i.newValue;
                                var l = t.getValue(o, s);
                                return !this.isTwoValueEquals(a, l)
                            }
                        }
                    }
                    return !1
                }, t.prototype.buildUsedNames = function() {
                    if (!this.conditionRunner) {
                        var e = this.expression;
                        e || (e = this.buildExpression()), e && (this.conditionRunner = new se(e), this.hasFunction = this.conditionRunner.hasFunction(), this.usedNames = this.conditionRunner.getVariables())
                    }
                }, Object.defineProperty(t.prototype, "isRequireValue", {
                    get: function() {
                        return "empty" !== this.operator && "notempty" != this.operator
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.operatorsValue = null, t
            }(he),
            di = function(e) {
                function t() {
                    var t = e.call(this) || this;
                    return t.ownerValue = null, t
                }
                return ci(t, e), Object.defineProperty(t.prototype, "owner", {
                    get: function() {
                        return this.ownerValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.setOwner = function(e) {
                    this.ownerValue = e
                }, t.prototype.getSurvey = function(e) {
                    return void 0 === e && (e = !1), this.owner && this.owner.getSurvey ? this.owner.getSurvey() : null
                }, t.prototype.isRealExecution = function() {
                    return !0
                }, t.prototype.onSuccessExecuted = function() {
                    this.owner && this.isRealExecution() && this.owner.triggerExecuted(this)
                }, t
            }(pi),
            hi = function(e) {
                function t() {
                    var t = e.call(this) || this;
                    return t.pages = [], t.questions = [], t
                }
                return ci(t, e), t.prototype.getType = function() {
                    return "visibletrigger"
                }, t.prototype.onSuccess = function(e, t) {
                    this.onTrigger(this.onItemSuccess)
                }, t.prototype.onFailure = function() {
                    this.onTrigger(this.onItemFailure)
                }, t.prototype.onTrigger = function(e) {
                    if (this.owner)
                        for (var t = this.owner.getObjects(this.pages, this.questions), n = 0; n < t.length; n++) e(t[n])
                }, t.prototype.onItemSuccess = function(e) {
                    e.visible = !0
                }, t.prototype.onItemFailure = function(e) {
                    e.visible = !1
                }, t
            }(di),
            fi = function(e) {
                function t() {
                    return e.call(this) || this
                }
                return ci(t, e), t.prototype.getType = function() {
                    return "completetrigger"
                }, t.prototype.isRealExecution = function() {
                    return !s.executeCompleteTriggerOnValueChanged === this.isExecutingOnNextPage
                }, t.prototype.onSuccess = function(e, t) {
                    this.owner && (this.isRealExecution() ? this.owner.setCompleted() : this.owner.canBeCompleted())
                }, t
            }(di),
            mi = function(e) {
                function t() {
                    return e.call(this) || this
                }
                return ci(t, e), t.prototype.getType = function() {
                    return "setvaluetrigger"
                }, t.prototype.canBeExecuted = function(e) {
                    return !e && !!this.setToName
                }, t.prototype.onPropertyValueChanged = function(t, n, o) {
                    if (e.prototype.onPropertyValueChanged.call(this, t, n, o), "setToName" === t) {
                        var r = this.getSurvey();
                        r && !r.isLoadingFromJson && r.isDesignMode && (this.setValue = void 0)
                    }
                }, Object.defineProperty(t.prototype, "setToName", {
                    get: function() {
                        return this.getPropertyValue("setToName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("setToName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "setValue", {
                    get: function() {
                        return this.getPropertyValue("setValue")
                    },
                    set: function(e) {
                        this.setPropertyValue("setValue", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isVariable", {
                    get: function() {
                        return this.getPropertyValue("isVariable", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isVariable", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onSuccess = function(e, t) {
                    this.setToName && this.owner && this.owner.setTriggerValue(this.setToName, this.setValue, this.isVariable)
                }, t
            }(di),
            gi = function(e) {
                function t() {
                    return e.call(this) || this
                }
                return ci(t, e), t.prototype.getType = function() {
                    return "skiptrigger"
                }, Object.defineProperty(t.prototype, "gotoName", {
                    get: function() {
                        return this.getPropertyValue("gotoName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("gotoName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.canBeExecuted = function(e) {
                    return e === !s.executeSkipTriggerOnValueChanged
                }, t.prototype.onSuccess = function(e, t) {
                    this.gotoName && this.owner && this.owner.focusQuestion(this.gotoName)
                }, t
            }(di),
            yi = function(e) {
                function t() {
                    return e.call(this) || this
                }
                return ci(t, e), t.prototype.getType = function() {
                    return "runexpressiontrigger"
                }, Object.defineProperty(t.prototype, "setToName", {
                    get: function() {
                        return this.getPropertyValue("setToName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("setToName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "runExpression", {
                    get: function() {
                        return this.getPropertyValue("runExpression", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("runExpression", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onSuccess = function(e, t) {
                    var n = this;
                    if (this.owner && this.runExpression) {
                        var o = new ae(this.runExpression);
                        o.canRun && (o.onRunComplete = function(e) {
                            n.onCompleteRunExpression(e)
                        }, o.run(e, t))
                    }
                }, t.prototype.onCompleteRunExpression = function(e) {
                    this.setToName && void 0 !== e && this.owner.setTriggerValue(this.setToName, a.convertValToQuestionVal(e), !1)
                }, t
            }(di),
            vi = function(e) {
                function t() {
                    return e.call(this) || this
                }
                return ci(t, e), t.prototype.canBeExecuted = function(e) {
                    return !e && !!this.setToName && !!this.fromName
                }, Object.defineProperty(t.prototype, "setToName", {
                    get: function() {
                        return this.getPropertyValue("setToName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("setToName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "fromName", {
                    get: function() {
                        return this.getPropertyValue("fromName", "")
                    },
                    set: function(e) {
                        this.setPropertyValue("fromName", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getType = function() {
                    return "copyvaluetrigger"
                }, t.prototype.onSuccess = function(e, t) {
                    this.setToName && this.owner && this.owner.copyTriggerValue(this.setToName, this.fromName)
                }, t
            }(di);
        I.addClass("trigger", [{
            name: "operator",
            default: "equal",
            visible: !1
        }, {
            name: "value",
            visible: !1
        }, "expression:condition"]), I.addClass("surveytrigger", [{
            name: "name",
            visible: !1
        }], null, "trigger"), I.addClass("visibletrigger", ["pages:pages", "questions:questions"], (function() {
            return new hi
        }), "surveytrigger"), I.addClass("completetrigger", [], (function() {
            return new fi
        }), "surveytrigger"), I.addClass("setvaluetrigger", [{
            name: "!setToName:questionvalue"
        }, {
            name: "setValue:triggervalue",
            dependsOn: "setToName",
            visibleIf: function(e) {
                return !!e && !!e.setToName
            }
        }, {
            name: "isVariable:boolean",
            visible: !1
        }], (function() {
            return new mi
        }), "surveytrigger"), I.addClass("copyvaluetrigger", [{
            name: "!fromName:questionvalue"
        }, {
            name: "!setToName:questionvalue"
        }], (function() {
            return new vi
        }), "surveytrigger"), I.addClass("skiptrigger", [{
            name: "!gotoName:question"
        }], (function() {
            return new gi
        }), "surveytrigger"), I.addClass("runexpressiontrigger", [{
            name: "setToName:questionvalue"
        }, "runExpression:expression"], (function() {
            return new yi
        }), "surveytrigger");
        var bi = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            xi = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Ci = function(e) {
                function t(t, n) {
                    void 0 === n && (n = null);
                    var o = e.call(this) || this;
                    return o.closeOnCompleteTimeout = 0, o.surveyValue = n || o.createSurvey(t), o.surveyValue.showTitle = !1, "undefined" != typeof document && (o.windowElement = document.createElement("div")), o.survey.onComplete.add((function(e, t) {
                        o.onSurveyComplete()
                    })), o.registerPropertyChangedHandlers(["isShowing"], (function() {
                        o.showingChangedCallback && o.showingChangedCallback()
                    })), o.registerPropertyChangedHandlers(["isExpanded"], (function() {
                        o.onExpandedChanged()
                    })), o.width = new de((function() {
                        return o.survey.width
                    })), o.width = o.survey.width, o.updateCss(), o.onCreating(), o
                }
                return bi(t, e), t.prototype.onCreating = function() {}, t.prototype.getType = function() {
                    return "popupsurvey"
                }, Object.defineProperty(t.prototype, "survey", {
                    get: function() {
                        return this.surveyValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isShowing", {
                    get: function() {
                        return this.getPropertyValue("isShowing", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isShowing", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.show = function() {
                    this.isShowing = !0
                }, t.prototype.hide = function() {
                    this.isShowing = !1
                }, Object.defineProperty(t.prototype, "isExpanded", {
                    get: function() {
                        return this.getPropertyValue("isExpanded", !1)
                    },
                    set: function(e) {
                        this.setPropertyValue("isExpanded", e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onExpandedChanged = function() {
                    this.expandedChangedCallback && this.expandedChangedCallback(), this.updateCssButton()
                }, Object.defineProperty(t.prototype, "title", {
                    get: function() {
                        return this.survey.title
                    },
                    set: function(e) {
                        this.survey.title = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "locTitle", {
                    get: function() {
                        return this.survey.locTitle
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.expand = function() {
                    this.isExpanded = !0
                }, t.prototype.collapse = function() {
                    this.isExpanded = !1
                }, t.prototype.changeExpandCollapse = function() {
                    this.isExpanded = !this.isExpanded
                }, Object.defineProperty(t.prototype, "css", {
                    get: function() {
                        return this.survey.css
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssButton", {
                    get: function() {
                        return this.getPropertyValue("cssButton", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssRoot", {
                    get: function() {
                        return this.getPropertyValue("cssRoot", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssBody", {
                    get: function() {
                        return this.getPropertyValue("cssBody", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssHeaderRoot", {
                    get: function() {
                        return this.getPropertyValue("cssHeaderRoot", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cssHeaderTitle", {
                    get: function() {
                        return this.getPropertyValue("cssHeaderTitle", "")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "renderedWidth", {
                    get: function() {
                        var e = this.getPropertyValue("width", "60%");
                        return e && !isNaN(e) && (e += "px"), e
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.updateCss = function() {
                    if (this.css && this.css.window) {
                        var e = this.css.window;
                        this.setPropertyValue("cssRoot", e.root), this.setPropertyValue("cssBody", e.body);
                        var t = e.header;
                        t && (this.setPropertyValue("cssHeaderRoot", t.root), this.setPropertyValue("cssHeaderTitle", t.title), this.updateCssButton())
                    }
                }, t.prototype.updateCssButton = function() {
                    var e = this.css.window ? this.css.window.header : null;
                    e && this.setCssButton(this.isExpanded ? e.buttonExpanded : e.buttonCollapsed)
                }, t.prototype.setCssButton = function(e) {
                    e && this.setPropertyValue("cssButton", e)
                }, t.prototype.createSurvey = function(e) {
                    return new mo(e)
                }, t.prototype.onSurveyComplete = function() {
                    if (!(this.closeOnCompleteTimeout < 0))
                        if (0 == this.closeOnCompleteTimeout) this.hide();
                        else {
                            var e = this,
                                t = null;
                            t = "undefined" != typeof window ? window.setInterval((function() {
                                e.hide(), "undefined" != typeof window && window.clearInterval(t)
                            }), 1e3 * this.closeOnCompleteTimeout) : 0
                        }
                }, xi([y()], t.prototype, "width", void 0), t
            }(he),
            wi = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return bi(t, e), t
            }(Ci),
            Pi = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Vi = function() {
                function e(e, t) {
                    this.name = e, this.json = t;
                    var n = this;
                    I.addClass(e, [], (function(e) {
                        return Ti.Instance.createQuestion(e ? e.name : "", n)
                    }), "question"), this.onInit()
                }
                return e.prototype.onInit = function() {
                    this.json.onInit && this.json.onInit()
                }, e.prototype.onCreated = function(e) {
                    this.json.onCreated && this.json.onCreated(e)
                }, e.prototype.onLoaded = function(e) {
                    this.json.onLoaded && this.json.onLoaded(e)
                }, e.prototype.onAfterRender = function(e, t) {
                    this.json.onAfterRender && this.json.onAfterRender(e, t)
                }, e.prototype.onAfterRenderContentElement = function(e, t, n) {
                    this.json.onAfterRenderContentElement && this.json.onAfterRenderContentElement(e, t, n)
                }, e.prototype.onPropertyChanged = function(e, t, n) {
                    this.json.onPropertyChanged && this.json.onPropertyChanged(e, t, n)
                }, e.prototype.onValueChanged = function(e, t, n) {
                    this.json.onValueChanged && this.json.onValueChanged(e, t, n)
                }, e.prototype.onItemValuePropertyChanged = function(e, t, n, o, r) {
                    this.json.onItemValuePropertyChanged && this.json.onItemValuePropertyChanged(e, {
                        obj: t,
                        propertyName: n,
                        name: o,
                        newValue: r
                    })
                }, e.prototype.getDisplayValue = function(e, t, n) {
                    return this.json.getDisplayValue ? this.json.getDisplayValue(n) : n.getDisplayValue(e, t)
                }, Object.defineProperty(e.prototype, "isComposite", {
                    get: function() {
                        return !!this.json.elementsJSON || !!this.json.createElements
                    },
                    enumerable: !1,
                    configurable: !0
                }), e
            }(),
            Ti = function() {
                function e() {
                    this.customQuestionValues = []
                }
                return e.prototype.add = function(e) {
                    if (e) {
                        var t = e.name;
                        if (!t) throw "Attribute name is missed";
                        if (t = t.toLowerCase(), this.getCustomQuestionByName(t)) throw "There is already registered custom question with name '" + t + "'";
                        if (I.findClass(t)) throw "There is already class with name '" + t + "'";
                        var n = new Vi(t, e);
                        this.onAddingJson && this.onAddingJson(t, n.isComposite), this.customQuestionValues.push(n)
                    }
                }, Object.defineProperty(e.prototype, "items", {
                    get: function() {
                        return this.customQuestionValues
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.getCustomQuestionByName = function(e) {
                    for (var t = 0; t < this.customQuestionValues.length; t++)
                        if (this.customQuestionValues[t].name == e) return this.customQuestionValues[t];
                    return null
                }, e.prototype.clear = function() {
                    for (var e = 0; e < this.customQuestionValues.length; e++) I.removeClass(this.customQuestionValues[e].name);
                    this.customQuestionValues = []
                }, e.prototype.createQuestion = function(e, t) {
                    return t.isComposite ? this.createCompositeModel(e, t) : this.createCustomModel(e, t)
                }, e.prototype.createCompositeModel = function(e, t) {
                    return this.onCreateComposite ? this.onCreateComposite(e, t) : new Ei(e, t)
                }, e.prototype.createCustomModel = function(e, t) {
                    return this.onCreateCustom ? this.onCreateCustom(e, t) : new Si(e, t)
                }, e.Instance = new e, e
            }(),
            ki = function(e) {
                function t(t, n) {
                    var o = e.call(this, t) || this;
                    return o.customQuestion = n, C.createProperties(o), jt.CreateDisabledDesignElements = !0, o.createWrapper(), jt.CreateDisabledDesignElements = !1, o.customQuestion && o.customQuestion.onCreated(o), o
                }
                return Pi(t, e), t.prototype.getType = function() {
                    return this.customQuestion ? this.customQuestion.name : "custom"
                }, t.prototype.locStrsChanged = function() {
                    e.prototype.locStrsChanged.call(this), this.getElement() && this.getElement().locStrsChanged()
                }, t.prototype.createWrapper = function() {}, t.prototype.onPropertyValueChanged = function(t, n, o) {
                    e.prototype.onPropertyValueChanged.call(this, t, n, o), this.customQuestion && !this.isLoadingFromJson && this.customQuestion.onPropertyChanged(this, t, o)
                }, t.prototype.itemValuePropertyChanged = function(t, n, o, r) {
                    e.prototype.itemValuePropertyChanged.call(this, t, n, o, r), this.customQuestion && !this.isLoadingFromJson && this.customQuestion.onItemValuePropertyChanged(this, t, t.ownerPropertyName, n, r)
                }, t.prototype.onFirstRendering = function() {
                    var t = this.getElement();
                    t && t.onFirstRendering(), e.prototype.onFirstRendering.call(this)
                }, t.prototype.getProgressInfo = function() {
                    var t = e.prototype.getProgressInfo.call(this);
                    return this.getElement() && (t = this.getElement().getProgressInfo()), this.isRequired && 0 == t.requiredQuestionCount && (t.requiredQuestionCount = 1, this.isEmpty() || (t.answeredQuestionCount = 1)), t
                }, t.prototype.initElement = function(e) {
                    e && (e.setSurveyImpl(this), e.disableDesignActions = !0)
                }, t.prototype.setSurveyImpl = function(t, n) {
                    e.prototype.setSurveyImpl.call(this, t, n), this.initElement(this.getElement())
                }, t.prototype.onSurveyLoad = function() {
                    e.prototype.onSurveyLoad.call(this), this.getElement() && (this.getElement().onSurveyLoad(), this.customQuestion.onLoaded(this))
                }, t.prototype.afterRenderQuestionElement = function(e) {}, t.prototype.afterRender = function(t) {
                    e.prototype.afterRender.call(this, t), this.customQuestion && this.customQuestion.onAfterRender(this, t)
                }, t.prototype.setQuestionValue = function(t, n) {
                    void 0 === n && (n = !0), e.prototype.setQuestionValue.call(this, t, n), this.updateElementCss()
                }, t.prototype.setNewValue = function(t) {
                    e.prototype.setNewValue.call(this, t), this.updateElementCss()
                }, t.prototype.getSurveyData = function() {
                    return this
                }, t.prototype.getTextProcessor = function() {
                    return this.textProcessor
                }, t.prototype.getValue = function(e) {
                    return this.value
                }, t.prototype.setValue = function(e, t, n, o) {
                    if (this.data) {
                        var r = this.convertDataName(e);
                        this.data.setValue(r, this.convertDataValue(e, t), n, o), this.updateIsAnswered(), this.updateElementCss(), this.customQuestion && this.customQuestion.onValueChanged(this, e, t)
                    }
                }, t.prototype.convertDataName = function(e) {
                    return this.getValueName()
                }, t.prototype.convertDataValue = function(e, t) {
                    return t
                }, t.prototype.getVariable = function(e) {
                    return this.data ? this.data.getVariable(e) : null
                }, t.prototype.setVariable = function(e, t) {
                    this.data && this.data.setVariable(e, t)
                }, t.prototype.getComment = function(e) {
                    return this.data ? this.data.getComment(this.getValueName()) : ""
                }, t.prototype.setComment = function(e, t, n) {
                    this.data && this.data.setComment(this.getValueName(), t, n)
                }, t.prototype.getAllValues = function() {
                    return this.data ? this.data.getAllValues() : {}
                }, t.prototype.getFilteredValues = function() {
                    return this.data ? this.data.getFilteredValues() : {}
                }, t.prototype.getFilteredProperties = function() {
                    return this.data ? this.data.getFilteredProperties() : {}
                }, t.prototype.addElement = function(e, t) {}, t.prototype.removeElement = function(e) {
                    return !1
                }, t.prototype.getQuestionTitleLocation = function() {
                    return "left"
                }, t.prototype.getQuestionStartIndex = function() {
                    return this.getStartIndex()
                }, t.prototype.getChildrenLayoutType = function() {
                    return "row"
                }, t.prototype.elementWidthChanged = function(e) {}, Object.defineProperty(t.prototype, "elements", {
                    get: function() {
                        return []
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.indexOf = function(e) {
                    return -1
                }, t.prototype.ensureRowsVisibility = function() {}, t.prototype.getContentDisplayValueCore = function(t, n, o) {
                    return o ? this.customQuestion.getDisplayValue(t, n, o) : e.prototype.getDisplayValueCore.call(this, t, n)
                }, t
            }(Xt),
            Si = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return Pi(t, e), t.prototype.getTemplate = function() {
                    return "custom"
                }, t.prototype.createWrapper = function() {
                    this.questionWrapper = this.createQuestion()
                }, t.prototype.getElement = function() {
                    return this.contentQuestion
                }, t.prototype.onAnyValueChanged = function(t) {
                    e.prototype.onAnyValueChanged.call(this, t), this.contentQuestion && this.contentQuestion.onAnyValueChanged(t)
                }, t.prototype.hasErrors = function(t, n) {
                    if (void 0 === t && (t = !0), void 0 === n && (n = null), !this.contentQuestion) return !1;
                    var o = this.contentQuestion.hasErrors(t, n);
                    this.errors = [];
                    for (var r = 0; r < this.contentQuestion.errors.length; r++) this.errors.push(this.contentQuestion.errors[r]);
                    return o || (o = e.prototype.hasErrors.call(this, t, n)), this.updateElementCss(), o
                }, t.prototype.focus = function(t) {
                    void 0 === t && (t = !1), this.contentQuestion ? this.contentQuestion.focus(t) : e.prototype.focus.call(this, t)
                }, Object.defineProperty(t.prototype, "contentQuestion", {
                    get: function() {
                        return this.questionWrapper
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.createQuestion = function() {
                    var e = this.customQuestion.json,
                        t = null;
                    if (e.questionJSON) {
                        var n = e.questionJSON.type;
                        if (!n || !I.findClass(n)) throw "type attribute in questionJSON is empty or incorrect";
                        t = I.createClass(n), this.initElement(t), t.fromJSON(e.questionJSON)
                    } else e.createQuestion && (t = e.createQuestion(), this.initElement(t));
                    return t && (t.isContentElement = !0, t.name || (t.name = "question")), t
                }, t.prototype.onSurveyLoad = function() {
                    e.prototype.onSurveyLoad.call(this), this.contentQuestion && this.isEmpty() && !this.contentQuestion.isEmpty() && (this.value = this.contentQuestion.value)
                }, t.prototype.runCondition = function(t, n) {
                    e.prototype.runCondition.call(this, t, n), this.contentQuestion && this.contentQuestion.runCondition(t, n)
                }, t.prototype.convertDataName = function(t) {
                    if (!this.contentQuestion) return e.prototype.convertDataName.call(this, t);
                    var n = t.replace(this.contentQuestion.getValueName(), this.getValueName());
                    return 0 == n.indexOf(this.getValueName()) ? n : e.prototype.convertDataName.call(this, t)
                }, t.prototype.convertDataValue = function(t, n) {
                    return this.convertDataName(t) == e.prototype.convertDataName.call(this, t) ? this.contentQuestion.value : n
                }, t.prototype.canSetValueToSurvey = function() {
                    return !1
                }, t.prototype.setQuestionValue = function(t, n) {
                    void 0 === n && (n = !0), e.prototype.setQuestionValue.call(this, t, n), this.isLoadingFromJson || !this.contentQuestion || this.isTwoValueEquals(this.contentQuestion.value, t) || (this.contentQuestion.value = this.getUnbindValue(t))
                }, t.prototype.onSurveyValueChanged = function(t) {
                    e.prototype.onSurveyValueChanged.call(this, t), this.contentQuestion && this.contentQuestion.onSurveyValueChanged(t)
                }, t.prototype.getValueCore = function() {
                    return this.contentQuestion ? this.contentQuestion.value : e.prototype.getValueCore.call(this)
                }, t.prototype.initElement = function(t) {
                    var n = this;
                    e.prototype.initElement.call(this, t), t && (t.parent = this, t.afterRenderQuestionCallback = function(e, t) {
                        n.customQuestion && n.customQuestion.onAfterRenderContentElement(n, e, t)
                    })
                }, t.prototype.updateElementCss = function(t) {
                    this.contentQuestion && this.questionWrapper.updateElementCss(t), e.prototype.updateElementCss.call(this, t)
                }, t.prototype.updateElementCssCore = function(t) {
                    this.contentQuestion && (t = this.contentQuestion.cssClasses), e.prototype.updateElementCssCore.call(this, t)
                }, t.prototype.getDisplayValueCore = function(t, n) {
                    return e.prototype.getContentDisplayValueCore.call(this, t, n, this.contentQuestion)
                }, t
            }(ki),
            Oi = function(e) {
                function t(t, n) {
                    var o = e.call(this, n) || this;
                    return o.composite = t, o.variableName = n, o
                }
                return Pi(t, e), Object.defineProperty(t.prototype, "survey", {
                    get: function() {
                        return this.composite.survey
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "panel", {
                    get: function() {
                        return this.composite.contentPanel
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(an),
            Ei = function(e) {
                function t(n, o) {
                    var r = e.call(this, n, o) || this;
                    return r.customQuestion = o, r.settingNewValue = !1, r.textProcessing = new Oi(r, t.ItemVariableName), r
                }
                return Pi(t, e), t.prototype.createWrapper = function() {
                    this.panelWrapper = this.createPanel()
                }, t.prototype.getTemplate = function() {
                    return "composite"
                }, t.prototype.getElement = function() {
                    return this.contentPanel
                }, t.prototype.getCssRoot = function(t) {
                    return (new ct).append(e.prototype.getCssRoot.call(this, t)).append(t.composite).toString()
                }, Object.defineProperty(t.prototype, "contentPanel", {
                    get: function() {
                        return this.panelWrapper
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.hasErrors = function(t, n) {
                    void 0 === t && (t = !0), void 0 === n && (n = null);
                    var o = e.prototype.hasErrors.call(this, t, n);
                    return this.contentPanel && this.contentPanel.hasErrors(t, !1, n) || o
                }, t.prototype.updateElementCss = function(t) {
                    e.prototype.updateElementCss.call(this, t), this.contentPanel && this.contentPanel.updateElementCss(t)
                }, t.prototype.getTextProcessor = function() {
                    return this.textProcessing
                }, t.prototype.clearValueIfInvisibleCore = function() {
                    e.prototype.clearValueIfInvisibleCore.call(this);
                    for (var t = this.contentPanel.questions, n = 0; n < t.length; n++) t[n].clearValueIfInvisible()
                }, t.prototype.onAnyValueChanged = function(t) {
                    e.prototype.onAnyValueChanged.call(this, t);
                    for (var n = this.contentPanel.questions, o = 0; o < n.length; o++) n[o].onAnyValueChanged(t)
                }, t.prototype.createPanel = function() {
                    var e = I.createClass("panel");
                    e.showQuestionNumbers = "off", e.renderWidth = "100%";
                    var t = this.customQuestion.json;
                    return t.elementsJSON && e.fromJSON({
                        elements: t.elementsJSON
                    }), t.createElements && t.createElements(e, this), this.initElement(e), e.readOnly = this.isReadOnly, this.setAfterRenderCallbacks(e), e
                }, t.prototype.onReadOnlyChanged = function() {
                    this.contentPanel && (this.contentPanel.readOnly = this.isReadOnly), e.prototype.onReadOnlyChanged.call(this)
                }, t.prototype.onSurveyLoad = function() {
                    if (this.contentPanel && (this.contentPanel.readOnly = this.isReadOnly, this.setIsContentElement(this.contentPanel)), e.prototype.onSurveyLoad.call(this), this.contentPanel) {
                        var t = this.contentPanel.getValue();
                        a.isValueEmpty(t) || (this.value = t)
                    }
                }, t.prototype.setIsContentElement = function(e) {
                    e.isContentElement = !0;
                    for (var t = e.elements, n = 0; n < t.length; n++) {
                        var o = t[n];
                        o.isPanel ? this.setIsContentElement(o) : o.isContentElement = !0
                    }
                }, t.prototype.setVisibleIndex = function(t) {
                    var n = e.prototype.setVisibleIndex.call(this, t);
                    return this.isVisible && this.contentPanel && (n += this.contentPanel.setVisibleIndex(t)), n
                }, t.prototype.runCondition = function(n, o) {
                    if (e.prototype.runCondition.call(this, n, o), this.contentPanel) {
                        var r = n[t.ItemVariableName];
                        n[t.ItemVariableName] = this.contentPanel.getValue(), this.contentPanel.runCondition(n, o), delete n[t.ItemVariableName], r && (n[t.ItemVariableName] = r)
                    }
                }, t.prototype.getValue = function(e) {
                    var t = this.value;
                    return t ? t[e] : null
                }, t.prototype.setValue = function(t, n, o, r) {
                    if (!this.settingNewValue) {
                        if (this.settingNewValue = !0, !this.isEditingSurveyElement && this.contentPanel) {
                            var i = this.contentPanel.getValue();
                            this.isTwoValueEquals(this.getValueCore(), i) || this.setValueCore(i)
                        }
                        if (e.prototype.setValue.call(this, t, n, o, r), this.contentPanel) {
                            var s = this.contentPanel.getQuestionByName(t);
                            s && !this.isTwoValueEquals(n, s.value) && (s.value = n)
                        }
                        this.settingNewValue = !1
                    }
                }, t.prototype.addConditionObjectsByContext = function(e, t) {
                    if (this.contentPanel)
                        for (var n = this.contentPanel.questions, o = this.name, r = this.title, i = 0; i < n.length; i++) e.push({
                            name: o + "." + n[i].name,
                            text: r + "." + n[i].title,
                            question: n[i]
                        })
                }, t.prototype.convertDataValue = function(e, t) {
                    var n = this.value;
                    return n || (n = {}), this.isValueEmpty(t) && !this.isEditingSurveyElement ? delete n[e] : n[e] = t, n
                }, t.prototype.setQuestionValue = function(t, n) {
                    void 0 === n && (n = !0), e.prototype.setQuestionValue.call(this, t, n), this.settingNewValue = !0;
                    for (var o = this.contentPanel.questions, r = 0; r < o.length; r++) {
                        var i = o[r].getValueName();
                        o[r].value = t ? t[i] : void 0
                    }
                    this.settingNewValue = !1
                }, t.prototype.getDisplayValueCore = function(t, n) {
                    return e.prototype.getContentDisplayValueCore.call(this, t, n, this.contentPanel)
                }, t.prototype.setAfterRenderCallbacks = function(e) {
                    var t = this;
                    if (e && this.customQuestion)
                        for (var n = e.questions, o = 0; o < n.length; o++) n[o].afterRenderQuestionCallback = function(e, n) {
                            t.customQuestion.onAfterRenderContentElement(t, e, n)
                        }
                }, t.ItemVariableName = "composite", t
            }(ki),
            Ri = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ii = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            _i = 'input:not(:disabled):not([readonly]):not([type=hidden]),select:not(:disabled):not([readonly]),textarea:not(:disabled):not([readonly]), button:not(:disabled):not([readonly]), [tabindex]:not([tabindex^="-"])',
            qi = function(e) {
                function t(t) {
                    var n = e.call(this) || this;
                    return n.model = t, n
                }
                return Ri(t, e), t.prototype.getLocale = function() {
                    return this.locale ? this.locale : e.prototype.getLocale.call(this)
                }, t.prototype.hidePopup = function() {
                    this.model.isVisible = !1
                }, t.prototype.getStyleClass = function() {
                    return (new ct).append(this.model.cssClass).append("sv-popup--".concat(this.model.displayMode), this.isOverlay)
                }, t.prototype.getShowFooter = function() {
                    return this.isOverlay
                }, t.prototype.getShowHeader = function() {
                    return !1
                }, t.prototype.getPopupHeaderTemplate = function() {}, t.prototype.createFooterActionBar = function() {
                    var e = this;
                    this.footerToolbarValue = new ft, this.footerToolbar.updateCallback = function(t) {
                        e.footerToolbarValue.actions.forEach((function(e) {
                            return e.cssClasses = {}
                        }))
                    }, this.footerToolbarValue.addAction({
                        id: "cancel",
                        visibleIndex: 10,
                        title: this.cancelButtonText,
                        innerCss: "sv-popup__body-footer-item sv-popup__button sv-popup__button--cancel",
                        action: function() {
                            e.cancel()
                        }
                    })
                }, t.prototype.setupModel = function(e) {
                    var t = this;
                    this.model && this.model.unregisterPropertyChangedHandlers(["isVisible"], "PopupBaseViewModel"), this._model = e;
                    var n = function() {
                        e.isVisible || t.updateOnHiding(), t.isVisible = e.isVisible
                    };
                    e.registerPropertyChangedHandlers(["isVisible"], n, "PopupBaseViewModel"), n()
                }, Object.defineProperty(t.prototype, "model", {
                    get: function() {
                        return this._model
                    },
                    set: function(e) {
                        this.setupModel(e)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "title", {
                    get: function() {
                        return this.model.title
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "contentComponentName", {
                    get: function() {
                        return this.model.contentComponentName
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "contentComponentData", {
                    get: function() {
                        return this.model.contentComponentData
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isModal", {
                    get: function() {
                        return this.model.isModal
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isFocusedContent", {
                    get: function() {
                        return this.model.isFocusedContent
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showFooter", {
                    get: function() {
                        return this.getShowFooter()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "showHeader", {
                    get: function() {
                        return this.getShowHeader()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "popupHeaderTemplate", {
                    get: function() {
                        return this.getPopupHeaderTemplate()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "isOverlay", {
                    get: function() {
                        return "overlay" === this.model.displayMode
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "styleClass", {
                    get: function() {
                        return this.getStyleClass().toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "cancelButtonText", {
                    get: function() {
                        return this.getLocalizationString("modalCancelButtonText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(t.prototype, "footerToolbar", {
                    get: function() {
                        return this.footerToolbarValue || this.createFooterActionBar(), this.footerToolbarValue
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.onKeyDown = function(e) {
                    "Tab" === e.key || 9 === e.keyCode ? this.trapFocus(e) : "Escape" !== e.key && 27 !== e.keyCode || this.hidePopup()
                }, t.prototype.trapFocus = function(e) {
                    var t = this.container.querySelectorAll(_i),
                        n = t[0],
                        o = t[t.length - 1];
                    e.shiftKey ? document.activeElement === n && (o.focus(), e.preventDefault()) : document.activeElement === o && (n.focus(), e.preventDefault())
                }, t.prototype.switchFocus = function() {
                    this.isFocusedContent && this.focusFirstInput()
                }, t.prototype.updateOnShowing = function() {
                    this.prevActiveElement = document.activeElement, this.isOverlay && (this.top = null, this.left = null, this.height = null, this.width = null, this.minWidth = null), this.switchFocus()
                }, t.prototype.updateOnHiding = function() {
                    this.prevActiveElement && this.prevActiveElement.focus()
                }, t.prototype.focusFirstInput = function() {
                    var e = this;
                    setTimeout((function() {
                        if (e.container) {
                            var t = e.container.querySelector(e.model.focusFirstInputSelector || _i);
                            t ? t.focus() : e.container.children[0].focus()
                        }
                    }), 100)
                }, t.prototype.clickOutside = function() {
                    this.hidePopup()
                }, t.prototype.cancel = function() {
                    this.model.onCancel(), this.hidePopup()
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.unmountPopupContainer(), this.container = void 0, this.model.onVisibilityChanged.clear(), this.model.onRecalculatePosition.clear()
                }, t.prototype.initializePopupContainer = function() {
                    if (!this.container) {
                        var e = document.createElement("div");
                        this.container = e
                    }
                    document.body.appendChild(this.container)
                }, t.prototype.unmountPopupContainer = function() {
                    this.container.remove()
                }, Ii([y({
                    defaultValue: "0px"
                })], t.prototype, "top", void 0), Ii([y({
                    defaultValue: "0px"
                })], t.prototype, "left", void 0), Ii([y({
                    defaultValue: "auto"
                })], t.prototype, "height", void 0), Ii([y({
                    defaultValue: "auto"
                })], t.prototype, "width", void 0), Ii([y({
                    defaultValue: "auto"
                })], t.prototype, "minWidth", void 0), Ii([y({
                    defaultValue: !1
                })], t.prototype, "isVisible", void 0), Ii([y()], t.prototype, "locale", void 0), t
            }(he),
            Di = function() {
                function e() {}
                return e.calculatePosition = function(e, t, n, o, r, i, s) {
                    void 0 === s && (s = "flex");
                    var a = e.left,
                        l = e.top;
                    return "flex" === s && (a = "center" == r ? (e.left + e.right - n) / 2 : "left" == r ? e.left - n : e.right), l = "middle" == o ? (e.top + e.bottom - t) / 2 : "top" == o ? e.top - t : e.bottom, i && "center" != r && "middle" != o && ("top" == o ? l += e.height : l -= e.height), {
                        left: Math.round(a),
                        top: Math.round(l)
                    }
                }, e.updateVerticalDimensions = function(t, n, o) {
                    var r;
                    if (t < 0) r = {
                        height: n + t,
                        top: 0
                    };
                    else if (n + t > o) {
                        r = {
                            height: Math.min(n, o - t - e.bottomIndent),
                            top: t
                        }
                    }
                    return r
                }, e.updateHorizontalDimensions = function(e, t, n, o, r, i) {
                    void 0 === r && (r = "flex"), void 0 === i && (i = {
                        left: 0,
                        right: 0
                    }), t += i.left + i.right;
                    var s = void 0,
                        a = e;
                    return "center" === o && ("fixed" === r ? (e + t > n && (s = n - e), a -= i.left) : e < 0 ? (a = i.left, s = Math.min(t, n)) : t + e > n && (a = n - t, a = Math.max(a, i.left), s = Math.min(t, n))), "left" === o && e < 0 && (a = i.left, s = Math.min(t, n)), "right" === o && t + e > n && (s = n - e), {
                        width: s - i.left - i.right,
                        left: a
                    }
                }, e.updateVerticalPosition = function(e, t, n, o, r) {
                    var i = t - (e.top + (o ? e.height : 0)),
                        s = t + e.bottom - (o ? e.height : 0) - r;
                    return i > 0 && s <= 0 && "top" == n ? n = "bottom" : s > 0 && i <= 0 && "bottom" == n ? n = "top" : s > 0 && i > 0 && (n = i < s ? "top" : "bottom"), n
                }, e.calculatePopupDirection = function(e, t) {
                    var n;
                    return "center" == t && "middle" != e ? n = e : "center" != t && (n = t), n
                }, e.calculatePointerTarget = function(e, t, n, o, r, i, s) {
                    void 0 === i && (i = 0), void 0 === s && (s = 0);
                    var a = {};
                    return "center" != r ? (a.top = e.top + e.height / 2, a.left = e[r]) : "middle" != o && (a.top = e[o], a.left = e.left + e.width / 2), a.left = Math.round(a.left - n), a.top = Math.round(a.top - t), "left" == r && (a.left -= i + s), "center" === r && (a.left -= i), a
                }, e.bottomIndent = 16, e
            }(),
            Ai = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ji = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Li = function(e) {
                function t(t, n) {
                    var o = e.call(this, t) || this;
                    return o.targetElement = n, o.scrollEventCallBack = function(e) {
                        if (o.isOverlay && jn) return e.stopPropagation(), void e.preventDefault();
                        o.hidePopup()
                    }, o.resizeEventCallback = function() {
                        o.isOverlay && jn && document.documentElement.style.setProperty("--sv-popup-overlay-height", "".concat(window.innerHeight, "px"))
                    }, o.model.onRecalculatePosition.add((function(e, t) {
                        o.isOverlay || o.updatePosition(t.isResetHeight)
                    })), o
                }
                return Ai(t, e), t.prototype._updatePosition = function() {
                    if (this.targetElement) {
                        var e = this.targetElement.getBoundingClientRect(),
                            t = this.container.children[0],
                            n = t.children[0],
                            o = t.children[0].querySelector(".sv-popup__scrolling-content"),
                            r = window.getComputedStyle(n),
                            i = parseFloat(r.marginLeft) || 0,
                            s = parseFloat(r.marginRight) || 0,
                            a = n.offsetHeight - o.offsetHeight + o.scrollHeight,
                            l = n.getBoundingClientRect().width;
                        this.model.setWidthByTarget && (this.minWidth = e.width + "px");
                        var u = this.model.verticalPosition,
                            c = this.getActualHorizontalPosition();
                        window && (a = Math.ceil(Math.min(a, .9 * window.innerHeight, window.visualViewport.height)), u = Di.updateVerticalPosition(e, a, this.model.verticalPosition, this.model.showPointer, window.innerHeight)), this.popupDirection = Di.calculatePopupDirection(u, c);
                        var p = Di.calculatePosition(e, a, l + i + s, u, c, this.showHeader, this.model.positionMode);
                        if (window) {
                            var d = Di.updateVerticalDimensions(p.top, a, window.innerHeight);
                            d && (this.height = d.height + "px", p.top = d.top);
                            var h = Di.updateHorizontalDimensions(p.left, l, window.innerWidth, c, this.model.positionMode, {
                                left: i,
                                right: s
                            });
                            h && (this.width = h.width ? h.width + "px" : void 0, p.left = h.left)
                        }
                        this.left = p.left + "px", this.top = p.top + "px", this.showHeader && (this.pointerTarget = Di.calculatePointerTarget(e, p.top, p.left, u, c, i, s)), this.pointerTarget.top += "px", this.pointerTarget.left += "px"
                    }
                }, t.prototype.getActualHorizontalPosition = function() {
                    var e = this.model.horizontalPosition;
                    return !!document && "rtl" == document.defaultView.getComputedStyle(document.body).direction && ("left" === this.model.horizontalPosition ? e = "right" : "right" === this.model.horizontalPosition && (e = "left")), e
                }, t.prototype.getStyleClass = function() {
                    return e.prototype.getStyleClass.call(this).append("sv-popup--dropdown", !this.isOverlay).append("sv-popup--show-pointer", !this.isOverlay && this.showHeader).append("sv-popup--".concat(this.popupDirection), !this.isOverlay && this.showHeader)
                }, t.prototype.getShowHeader = function() {
                    return this.model.showPointer && !this.isOverlay
                }, t.prototype.getPopupHeaderTemplate = function() {
                    return "popup-pointer"
                }, t.prototype.updateOnShowing = function() {
                    this.prevActiveElement = document.activeElement, this.isOverlay ? (this.top = null, this.left = null, this.height = null, this.width = null, this.minWidth = null) : this.updatePosition(!0, !1), this.switchFocus(), window.addEventListener("resize", this.resizeEventCallback), this.resizeEventCallback(), window.addEventListener("scroll", this.scrollEventCallBack)
                }, t.prototype.updatePosition = function(e, t) {
                    var n = this;
                    void 0 === t && (t = !0), e && (this.height = "auto"), t ? setTimeout((function() {
                        n._updatePosition()
                    }), 1) : this._updatePosition()
                }, t.prototype.updateOnHiding = function() {
                    e.prototype.updateOnHiding.call(this), window.removeEventListener("resize", this.resizeEventCallback), window.removeEventListener("scroll", this.scrollEventCallBack), this.isDisposed || (this.top = void 0, this.left = void 0, this.height = void 0, this.width = void 0, this.minWidth = void 0)
                }, ji([y({
                    defaultValue: "left"
                })], t.prototype, "popupDirection", void 0), ji([y({
                    defaultValue: {
                        left: "0px",
                        top: "0px"
                    }
                })], t.prototype, "pointerTarget", void 0), t
            }(qi),
            Mi = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ni = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return Mi(t, e), t.prototype.getStyleClass = function() {
                    return e.prototype.getStyleClass.call(this).append("sv-popup--modal", !this.isOverlay)
                }, t.prototype.getShowFooter = function() {
                    return !0
                }, t.prototype.createFooterActionBar = function() {
                    var t = this;
                    e.prototype.createFooterActionBar.call(this), this.footerToolbarValue.addAction({
                        id: "apply",
                        visibleIndex: 20,
                        title: this.applyButtonText,
                        innerCss: "sv-popup__body-footer-item sv-popup__button sv-popup__button--apply",
                        action: function() {
                            t.apply()
                        }
                    })
                }, Object.defineProperty(t.prototype, "applyButtonText", {
                    get: function() {
                        return this.getLocalizationString("modalApplyButtonText")
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.apply = function() {
                    this.model.onApply && !this.model.onApply() || this.hidePopup()
                }, t.prototype.clickOutside = function() {}, t.prototype.onKeyDown = function(t) {
                    "Escape" !== t.key && 27 !== t.keyCode || this.model.onCancel(), e.prototype.onKeyDown.call(this, t)
                }, t
            }(qi);

        function Fi(e) {
            var t = new wt(e.componentName, e.data, "top", "left", !1, !0, e.onCancel, e.onApply, e.onHide, e.onShow, e.cssClass, e.title);
            t.displayMode = e.displayMode || "popup";
            var n = new Ni(t);
            return n.initializePopupContainer(), n
        }

        function Bi(e, t) {
            return e.isModal ? new Ni(e) : new Li(e, t)
        }
        var zi = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Hi = function(e, t, n, o) {
                var r, i = arguments.length,
                    s = i < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
                if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) s = Reflect.decorate(e, t, n, o);
                else
                    for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (s = (i < 3 ? r(s) : i > 3 ? r(t, n, s) : r(t, n)) || s);
                return i > 3 && s && Object.defineProperty(t, n, s), s
            },
            Qi = function(e) {
                function t(t, n, o) {
                    void 0 === n && (n = null), void 0 === o && (o = "buttongroupitemvalue");
                    var r = e.call(this, t, n, o) || this;
                    return r.typeName = o, r
                }
                return zi(t, e), t.prototype.getType = function() {
                    return this.typeName ? this.typeName : "buttongroupitemvalue"
                }, Hi([y()], t.prototype, "iconName", void 0), Hi([y()], t.prototype, "iconSize", void 0), Hi([y()], t.prototype, "showCaption", void 0), t
            }(ze),
            Ui = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return zi(t, e), t.prototype.getType = function() {
                    return "buttongroup"
                }, t.prototype.getItemValueType = function() {
                    return "buttongroupitemvalue"
                }, t.prototype.supportOther = function() {
                    return !1
                }, t
            }(bo);
        I.addClass("buttongroup", [{
            name: "choices:buttongroupitemvalue[]"
        }], (function() {
            return new Ui("")
        }), "checkboxbase"), I.addClass("buttongroupitemvalue", [{
            name: "showCaption:boolean",
            default: !0
        }, {
            name: "iconName:text"
        }, {
            name: "iconSize:number"
        }], (function(e) {
            return new Qi(e)
        }), "itemvalue");
        var Wi, $i = function() {
                function e(e, t, n) {
                    this.question = e, this.item = t, this.index = n
                }
                return Object.defineProperty(e.prototype, "value", {
                    get: function() {
                        return this.item.value
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "iconName", {
                    get: function() {
                        return this.item.iconName
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "iconSize", {
                    get: function() {
                        return this.item.iconSize || 24
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "caption", {
                    get: function() {
                        return this.item.locText
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "showCaption", {
                    get: function() {
                        return this.item.showCaption || void 0 === this.item.showCaption
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "isRequired", {
                    get: function() {
                        return this.question.isRequired
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "selected", {
                    get: function() {
                        return this.question.isItemSelected(this.item)
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "readOnly", {
                    get: function() {
                        return this.question.isInputReadOnly || !this.item.isEnabled
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "name", {
                    get: function() {
                        return this.question.name + "_" + this.question.id
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "id", {
                    get: function() {
                        return this.question.inputId + "_" + this.index
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "hasErrors", {
                    get: function() {
                        return this.question.errors.length > 0
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "describedBy", {
                    get: function() {
                        return this.question.errors.length > 0 ? this.question.id + "_errors" : null
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "labelClass", {
                    get: function() {
                        return (new ct).append(this.question.cssClasses.item).append(this.question.cssClasses.itemSelected, this.selected).append(this.question.cssClasses.itemHover, !this.readOnly && !this.selected).append(this.question.cssClasses.itemDisabled, this.question.isReadOnly || !this.item.isEnabled).toString()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "css", {
                    get: function() {
                        return {
                            label: this.labelClass,
                            icon: this.question.cssClasses.itemIcon,
                            control: this.question.cssClasses.itemControl,
                            caption: this.question.cssClasses.itemCaption,
                            decorator: this.question.cssClasses.itemDecorator
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.onChange = function() {
                    this.question.renderedValue = this.item.value
                }, e
            }(),
            Gi = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ji = function(e) {
                function t() {
                    var t = null !== e && e.apply(this, arguments) || this;
                    return t.isEdge = !1, t.prevIsEdge = null, t.ghostSurveyElement = null, t.isDraggedElementSelected = !1, t.doBanDropHere = function() {
                        t.removeGhostElementFromSurvey(), t.isEdge = null
                    }, t.doDrop = function() {
                        return t.dropTarget ? (document.activeElement.blur(), t.insertRealElementIntoSurvey()) : null
                    }, t.doClear = function() {
                        t.removeGhostElementFromSurvey(), t.isEdge = null, t.ghostSurveyElement = null, t.draggedElement && (t.draggedElement.isDragMe = !1), t.isRight = null
                    }, t
                }
                return Gi(t, e), Object.defineProperty(t.prototype, "draggedElementType", {
                    get: function() {
                        return "survey-element"
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.startDragToolboxItem = function(e, t, n) {
                    var o = this.createElementFromJson(t);
                    o.toolboxItemTitle = n, this.startDrag(e, o, null, null, !0)
                }, t.prototype.startDragSurveyElement = function(e, t, n) {
                    this.isDraggedElementSelected = n, this.startDrag(e, t)
                }, t.prototype.getShortcutText = function(t) {
                    return t.toolboxItemTitle || e.prototype.getShortcutText.call(this, t)
                }, t.prototype.createDraggedElementShortcut = function(e, t, n) {
                    var o = document.createElement("div"),
                        r = document.createElement("span");
                    return r.className = "svc-dragged-element-shortcut__text", r.innerText = e, o.appendChild(this.createDraggedElementIcon()), o.appendChild(r), o.className = this.getDraggedElementClass(), o
                }, t.prototype.createDraggedElementIcon = function() {
                    var e = document.createElement("span"),
                        t = this.draggedElement.getType(),
                        n = '<svg class="sv-svg-icon" role="img" style="width: 24px; height: 24px;"><use xlink:href="#icon-'.concat(t, '"></use></svg>');
                    return e.className = "svc-dragged-element-shortcut__icon", e.innerHTML = n, e
                }, t.prototype.getDraggedElementClass = function() {
                    var e = "svc-dragged-element-shortcut";
                    return this.isDraggedElementSelected && (e += " svc-dragged-element-shortcut--selected"), e
                }, t.prototype.createElementFromJson = function(e) {
                    var t = this.createNewElement(e);
                    return t.setSurveyImpl ? t.setSurveyImpl(this.survey) : t.setData(this.survey), t.renderWidth = "100%", t
                }, t.prototype.createNewElement = function(e) {
                    var t = I.createClass(e.type);
                    return (new R).toObject(e, t), t
                }, t.prototype.getDropTargetByDataAttributeValue = function(e, n, o) {
                    if (this.isEdge = this.calculateIsEdge(n, o.clientY), !e) {
                        var r = n.parentElement.closest(this.dropTargetDataAttributeName);
                        e = this.getDataAttributeValueByNode(r)
                    }
                    if (!e) throw new Error("Can't find drop target survey element name");
                    if (e === t.ghostSurveyElementName) return this.prevDropTarget;
                    if ("newGhostPage" === e) return t.newGhostPage;
                    var i, s, a = this.survey.getPageByName(e);
                    if (a) return 0 !== a.elements.length ? null : a;
                    if (this.survey.pages.forEach((function(t) {
                            (s = t.getElementByName(e)) && (i = s)
                        })), "paneldynamic" !== i.getType() || this.isEdge || (i = i.template), "matrixdropdown" !== i.getType() && "matrixdynamic" !== i.getType() || "none" === i.detailPanelMode || this.isEdge ? i.isPanel && (i = this.getPanelDropTarget(n, i, o)) : i = i.detailPanel, !i.page) {
                        var l = n.parentElement.closest("[data-sv-drop-target-page]");
                        e = l.dataset.svDropTargetPage;
                        var u = this.survey.getPageByName(e);
                        i.__page = u
                    }
                    return i
                }, t.prototype.isDropTargetValid = function() {
                    return !!this.dropTarget && (this.dropTarget !== this.draggedElement && (("paneldynamic" !== this.draggedElement.getType() || this.dropTarget !== this.draggedElement.template) && (!t.restrictDragQuestionBetweenPages || !this.shouldRestricDragQuestionBetweenPages(this.dropTarget))))
                }, t.prototype.calculateIsBottom = function(e, n) {
                    return this.getDataAttributeValueByNode(n) === t.ghostSurveyElementName ? this.isBottom : e >= this.calculateVerticalMiddleOfHTMLElement(n)
                }, t.prototype.calculateIsRight = function(e, n) {
                    return this.getDataAttributeValueByNode(n) === t.ghostSurveyElementName ? this.isRight : e >= this.calculateHorizontalMiddleOfHTMLElement(n)
                }, t.prototype.isDropTargetDoesntChanged = function(e) {
                    return this.dropTarget === this.ghostSurveyElement || this.dropTarget === this.prevDropTarget && e === this.isBottom && this.isEdge === this.prevIsEdge && this.isRight === this.prevIsRight
                }, t.prototype.shouldRestricDragQuestionBetweenPages = function(e) {
                    var t = this.draggedElement.page,
                        n = e.isPage ? e : e.page;
                    return t && t !== n
                }, t.prototype.getPanelDropTarget = function(e, t, n) {
                    return this.isEdge || 0 === t.questions.length || (e = this.findDeepestDropTargetChild(e), t = this.getDropTargetByNode(e, n)), t
                }, t.prototype.findDeepestDropTargetChild = function(e) {
                    for (var t = this.dropTargetDataAttributeName, n = e; e;) n = e, e = e.querySelector(t);
                    return n
                }, t.prototype.calculateIsEdge = function(e, n) {
                    var o = e.getBoundingClientRect();
                    return n - o.top <= t.edgeHeight || o.bottom - n <= t.edgeHeight
                }, t.prototype.doDragOver = function(e, t) {
                    this.isRight = this.calculateIsRight(t.clientX, e)
                }, t.prototype.afterDragOver = function(e, t) {
                    this.prevIsEdge = this.isEdge, this.prevIsRight = this.isRight, this.insertGhostElementIntoSurvey()
                }, t.prototype.onStartDrag = function() {
                    this.ghostSurveyElement = this.createGhostSurveyElement(), this.draggedElement.isDragMe = !0
                }, t.prototype.insertGhostElementIntoSurvey = function() {
                    this.removeGhostElementFromSurvey();
                    var e = this.calcTargetRowMultiple();
                    if (this.ghostSurveyElement = this.createGhostSurveyElement(e), this.ghostSurveyElement.name = t.ghostSurveyElementName, this.parentElement = this.dropTarget.isPage ? this.dropTarget : this.dropTarget.page || this.dropTarget.__page, this.isDragOverInsideEmptyPanel()) this.dropTarget.dragTypeOverMe = Ot.InsideEmptyPanel;
                    else {
                        if (this.isEdge || !e) return this.parentElement.dragDropStart(this.draggedElement, this.ghostSurveyElement, t.nestedPanelDepth), this.parentElement.dragDropMoveTo(this.dropTarget, e ? this.isRight : this.isBottom, this.isEdge);
                        this.dropTarget.dragTypeOverMe = this.isRight ? Ot.MultilineRight : Ot.MultilineLeft
                    }
                }, t.prototype.calcTargetRowMultiple = function() {
                    var e = this.getTargetParent(this.dropTarget),
                        t = this.getTargetRow(this.dropTarget),
                        n = t && t.elements.length > 1,
                        o = e.isPanel && !e.name;
                    return this.isEdge && n && !o ? (e.__page = this.dropTarget.page || this.dropTarget.__page, this.dropTarget = e, !1) : n
                }, t.prototype.getTargetParent = function(e) {
                    var t = e.isPage || e.isPanel ? e : e.parent;
                    return "paneldynamic" === e.getType() && (t = e.templateValue), t
                }, t.prototype.getTargetRow = function(e) {
                    var t;
                    return this.getTargetParent(e).rows.forEach((function(n) {
                        -1 !== n.elements.indexOf(e) && (t = n)
                    })), t
                }, t.prototype.isDragOverInsideEmptyPanel = function() {
                    var e = this.dropTarget.isPanel && 0 === this.dropTarget.questions.length,
                        t = !this.isEdge;
                    return e && t
                }, t.prototype.removeGhostElementFromSurvey = function() {
                    var e = this.prevDropTarget || this.dropTarget;
                    e && (e.dragTypeOverMe = null), this.parentElement && this.parentElement.dragDropFinish(!0)
                }, t.prototype.insertRealElementIntoSurvey = function() {
                    this.removeGhostElementFromSurvey();
                    var e = this.calcTargetRowMultiple();
                    this.dropTarget.isPage && this.dropTarget._isGhost && this.dropTarget._addGhostPageViewModel();
                    var n = (new R).toJsonObject(this.draggedElement);
                    n.type = this.draggedElement.getType();
                    var o = this.createFakeTargetElement(this.draggedElement.name, n);
                    return this.parentElement.dragDropStart(this.draggedElement, o, t.nestedPanelDepth), this.parentElement.dragDropMoveTo(this.dropTarget, e ? this.isRight : this.isBottom, this.isEdge), this.parentElement.dragDropFinish()
                }, t.prototype.createFakeTargetElement = function(e, t) {
                    if (!e || !t) return null;
                    var n = null;
                    return n = I.createClass(t.type), (new R).toObject(t, n), n.name = e, n.setSurveyImpl ? n.setSurveyImpl(this.survey) : n.setData(this.survey), n.renderWidth = "100%", n
                }, t.prototype.createGhostSurveyElement = function(e) {
                    void 0 === e && (e = !1);
                    var n = "sv-drag-drop-ghost",
                        o = "300px";
                    e && (o = "4px", n += " sv-drag-drop-ghost--vertical");
                    var r = {
                            type: "html",
                            minWidth: o,
                            name: t.ghostSurveyElementName,
                            html: '<div class="'.concat(n, '"></div>')
                        },
                        i = this.createElementFromJson(r);
                    return i.startWithNewLine = !e, e && (i.maxWidth = "4px", i.renderWidth = "0px", i.paddingRight = "0px", i.paddingLeft = "0px"), i
                }, t.newGhostPage = null, t.restrictDragQuestionBetweenPages = !1, t.edgeHeight = 30, t.nestedPanelDepth = -1, t.ghostSurveyElementName = "sv-drag-drop-ghost-survey-element-name", t
            }(Nn);

        function Ki(e, t) {
            if (Wi != e) {
                var n = "survey-core has version '" + Wi + "' and " + t + " has version '" + e + "'. SurveyJS libraries should have the same versions to work correctly.";
                console.error(n)
            }
        }
        Wi = "".concat("1.9.68");
        var Zi = {
            root: "sv_main sv_default_css",
            container: "sv_container",
            header: "sv_header",
            body: "sv_body",
            bodyEmpty: "sv_body sv_body_empty",
            footer: "sv_nav",
            title: "",
            description: "",
            logo: "sv_logo",
            logoImage: "sv_logo__image",
            headerText: "sv_header__text",
            navigationButton: "sv_nav_btn",
            completedPage: "sv_completed_page",
            navigation: {
                complete: "sv_complete_btn",
                prev: "sv_prev_btn",
                next: "sv_next_btn",
                start: "sv_start_btn",
                preview: "sv_preview_btn",
                edit: "sv_edit_btn"
            },
            progress: "sv_progress",
            progressBar: "sv_progress_bar",
            progressTextInBar: "sv-hidden",
            progressButtonsContainerCenter: "sv_progress-buttons__container-center",
            progressButtonsContainer: "sv_progress-buttons__container",
            progressButtonsImageButtonLeft: "sv_progress-buttons__image-button-left",
            progressButtonsImageButtonRight: "sv_progress-buttons__image-button-right",
            progressButtonsImageButtonHidden: "sv_progress-buttons__image-button--hidden",
            progressButtonsListContainer: "sv_progress-buttons__list-container",
            progressButtonsList: "sv_progress-buttons__list",
            progressButtonsListElementPassed: "sv_progress-buttons__list-element--passed",
            progressButtonsListElementCurrent: "sv_progress-buttons__list-element--current",
            progressButtonsListElementNonClickable: "sv_progress-buttons__list-element--nonclickable",
            progressButtonsPageTitle: "sv_progress-buttons__page-title",
            progressButtonsPageDescription: "sv_progress-buttons__page-description",
            page: {
                root: "sv_p_root",
                title: "sv_page_title",
                description: ""
            },
            pageTitle: "sv_page_title",
            pageDescription: "",
            row: "sv_row",
            question: {
                mainRoot: "sv_q sv_qstn",
                flowRoot: "sv_q_flow sv_qstn",
                header: "",
                headerLeft: "title-left",
                content: "",
                contentLeft: "content-left",
                titleLeftRoot: "sv_qstn_left",
                requiredText: "sv_q_required_text",
                title: "sv_q_title",
                titleExpandable: "sv_q_title_expandable",
                titleExpanded: "sv_q_title_expanded",
                titleCollapsed: "sv_q_title_collapsed",
                number: "sv_q_num",
                description: "sv_q_description",
                comment: "",
                required: "",
                titleRequired: "",
                hasError: "",
                indent: 20,
                footer: "sv_q_footer",
                formGroup: "form-group",
                asCell: "sv_matrix_cell",
                icon: "sv_question_icon",
                iconExpanded: "sv_expanded",
                disabled: "sv_q--disabled"
            },
            panel: {
                title: "sv_p_title",
                titleExpandable: "sv_p_title_expandable",
                titleExpanded: "sv_p_title_expanded",
                titleCollapsed: "sv_p_title_collapsed",
                titleOnError: "",
                icon: "sv_panel_icon",
                iconExpanded: "sv_expanded",
                description: "sv_p_description",
                container: "sv_p_container",
                footer: "sv_p_footer",
                number: "sv_q_num",
                requiredText: "sv_q_required_text"
            },
            error: {
                root: "sv_q_erbox",
                icon: "",
                item: "",
                locationTop: "sv_qstn_error_top",
                locationBottom: "sv_qstn_error_bottom"
            },
            boolean: {
                root: "sv_qcbc sv_qbln",
                rootRadio: "sv_qcbc sv_qbln",
                item: "sv-boolean",
                control: "sv-visuallyhidden",
                itemChecked: "sv-boolean--checked checked",
                itemIndeterminate: "sv-boolean--indeterminate",
                itemDisabled: "sv-boolean--disabled",
                switch: "sv-boolean__switch",
                slider: "sv-boolean__slider",
                label: "sv-boolean__label ",
                disabledLabel: "sv-boolean__label--disabled",
                rootCheckbox: "sv_qcbc sv_qbln",
                checkboxItem: "sv-boolean",
                checkboxItemChecked: "sv-boolean--checked",
                controlCheckbox: "sv-visuallyvisible",
                checkboxControlLabel: "sv-boolean__label",
                checkboxItemIndeterminate: "sv-boolean--indeterminate",
                checkboxItemDisabled: "sv-item--disabled sv-boolean--disabled",
                checkboxMaterialDecorator: "sv-item__decorator sv-boolean__decorator",
                checkboxItemDecorator: "sv-item__svg sv-boolean__svg"
            },
            checkbox: {
                root: "sv_qcbc sv_qcbx",
                item: "sv_q_checkbox",
                itemSelectAll: "sv_q_checkbox_selectall",
                itemNone: "sv_q_checkbox_none",
                itemChecked: "checked",
                itemInline: "sv_q_checkbox_inline",
                label: "sv_q_checkbox_label",
                labelChecked: "",
                itemControl: "sv_q_checkbox_control_item",
                itemDecorator: "sv-hidden",
                controlLabel: "sv_q_checkbox_control_label",
                other: "sv_q_other sv_q_checkbox_other",
                column: "sv_q_select_column"
            },
            ranking: {
                root: "sv-ranking",
                rootMobileMod: "sv-ranking--mobile",
                rootDragMod: "sv-ranking--drag",
                rootDisabled: "sv-ranking--disabled",
                item: "sv-ranking-item",
                itemContent: "sv-ranking-item__content",
                itemIndex: "sv-ranking-item__index",
                controlLabel: "sv-ranking-item__text",
                itemGhostNode: "sv-ranking-item__ghost",
                itemIconContainer: "sv-ranking-item__icon-container",
                itemIcon: "sv-ranking-item__icon",
                itemIconHoverMod: "sv-ranking-item__icon--hover",
                itemIconFocusMod: "sv-ranking-item__icon--focus",
                itemGhostMod: "sv-ranking-item--ghost",
                itemDragMod: "sv-ranking-item--drag"
            },
            comment: "",
            dropdown: {
                root: "",
                control: "sv_q_dropdown_control",
                controlInputFieldComponent: "sv_q_dropdown_control__input-field-component",
                selectWrapper: "sv_select_wrapper",
                other: "sv_q_dd_other",
                cleanButton: "sv_q_dropdown_clean-button",
                cleanButtonSvg: "sv_q_dropdown_clean-button-svg",
                cleanButtonIconId: "icon-clear_16x16",
                controlValue: "sv_q_dropdown__value",
                filterStringInput: "sv_q_dropdown__filter-string-input"
            },
            html: {
                root: ""
            },
            image: {
                root: "sv_q_image",
                image: "sv_image_image"
            },
            matrix: {
                root: "sv_q_matrix",
                label: "sv_q_m_label",
                itemChecked: "checked",
                itemDecorator: "sv-hidden",
                cell: "sv_q_m_cell",
                cellText: "sv_q_m_cell_text",
                cellTextSelected: "sv_q_m_cell_selected",
                cellLabel: "sv_q_m_cell_label",
                cellResponsiveTitle: "sv-hidden"
            },
            matrixdropdown: {
                root: "sv_q_matrix_dropdown",
                cell: "sv_matrix_cell",
                headerCell: "sv_matrix_cell_header",
                row: "sv_matrix_row",
                rowAdditional: "sv-matrix__row--additional",
                detailRow: "sv_matrix_detail_row",
                detailRowText: "sv_matrix_cell_detail_rowtext",
                detailCell: "sv_matrix_cell_detail",
                choiceCell: "sv-table__cell--choice",
                detailButton: "sv_matrix_cell_detail_button",
                detailButtonExpanded: "sv_matrix_cell_detail_button_expanded",
                detailIcon: "sv_detail_panel_icon",
                detailIconExpanded: "sv_detail_expanded",
                detailPanelCell: "sv_matrix_cell_detail_panel",
                actionsCell: "sv_matrix_cell sv_matrix_cell_actions"
            },
            matrixdynamic: {
                root: "sv_q_matrix_dynamic",
                button: "sv_matrix_dynamic_button",
                buttonAdd: "",
                buttonRemove: "",
                iconAdd: "",
                iconRemove: "",
                iconDrag: "sv-matrixdynamic__drag-icon",
                cell: "sv_matrix_cell",
                headerCell: "sv_matrix_cell_header",
                row: "sv_matrix_row",
                detailRow: "sv_matrix_detail_row",
                detailCell: "sv_matrix_cell_detail",
                choiceCell: "sv-table__cell--choice",
                detailButton: "sv_matrix_cell_detail_button",
                detailButtonExpanded: "sv_matrix_cell_detail_button_expanded",
                detailIcon: "sv_detail_panel_icon",
                detailIconExpanded: "sv_detail_expanded",
                detailPanelCell: "sv_matrix_cell_detail_panel",
                actionsCell: "sv_matrix_cell sv_matrix_cell_actions",
                emptyRowsSection: "sv_matrix_empty_rows_section",
                emptyRowsText: "sv_matrix_empty_rows_text",
                emptyRowsButton: "",
                ghostRow: "sv-matrix-row--drag-drop-ghost-mod"
            },
            paneldynamic: {
                root: "sv_panel_dynamic",
                title: "sv_p_title",
                button: "",
                buttonAdd: "sv-paneldynamic__add-btn",
                buttonRemove: "sv_p_remove_btn",
                buttonRemoveRight: "sv_p_remove_btn_right",
                buttonPrev: "sv-paneldynamic__prev-btn",
                buttonPrevDisabled: "sv-paneldynamic__prev-btn--disabled",
                buttonNextDisabled: "sv-paneldynamic__next-btn--disabled",
                buttonNext: "sv-paneldynamic__next-btn",
                progressContainer: "sv-paneldynamic__progress-container",
                progress: "sv-progress",
                progressBar: "sv-progress__bar",
                progressText: "sv-paneldynamic__progress-text",
                panelWrapper: "sv_p_wrapper",
                panelWrapperInRow: "sv_p_wrapper_in_row",
                footer: "",
                progressBtnIcon: "icon-progressbutton"
            },
            multipletext: {
                root: "sv_q_mt",
                itemTitle: "sv_q_mt_title",
                item: "sv_q_mt_item",
                row: "sv_q_mt_row",
                itemLabel: "sv_q_mt_label",
                itemValue: "sv_q_mt_item_value sv_q_text_root"
            },
            radiogroup: {
                root: "sv_qcbc",
                item: "sv_q_radiogroup",
                itemChecked: "checked",
                itemInline: "sv_q_radiogroup_inline",
                itemDecorator: "sv-hidden",
                label: "sv_q_radiogroup_label",
                labelChecked: "",
                itemControl: "sv_q_radiogroup_control_item",
                controlLabel: "",
                other: "sv_q_other sv_q_radiogroup_other",
                clearButton: "sv_q_radiogroup_clear",
                column: "sv_q_select_column"
            },
            buttongroup: {
                root: "sv-button-group",
                item: "sv-button-group__item",
                itemIcon: "sv-button-group__item-icon",
                itemDecorator: "sv-button-group__item-decorator",
                itemCaption: "sv-button-group__item-caption",
                itemHover: "sv-button-group__item--hover",
                itemSelected: "sv-button-group__item--selected",
                itemDisabled: "sv-button-group__item--disabled",
                itemControl: "sv-visuallyhidden"
            },
            imagepicker: {
                root: "sv_imgsel",
                item: "sv_q_imgsel",
                itemChecked: "checked",
                label: "sv_q_imgsel_label",
                itemControl: "sv_q_imgsel_control_item",
                image: "sv_q_imgsel_image",
                itemInline: "sv_q_imagepicker_inline",
                itemText: "sv_q_imgsel_text",
                clearButton: "sv_q_radiogroup_clear",
                column: "sv_q_select_column"
            },
            rating: {
                root: "sv_q_rating",
                item: "sv_q_rating_item",
                selected: "active",
                minText: "sv_q_rating_min_text",
                itemText: "sv_q_rating_item_text",
                maxText: "sv_q_rating_max_text"
            },
            text: "sv_q_text_root",
            expression: "",
            file: {
                root: "sv_q_file",
                placeholderInput: "sv-visuallyhidden",
                preview: "sv_q_file_preview",
                removeButton: "sv_q_file_remove_button",
                fileInput: "sv-visuallyhidden",
                removeFile: "sv_q_file_remove",
                fileDecorator: "sv-file__decorator",
                fileSign: "sv_q_file_sign",
                chooseFile: "sv_q_file_choose_button",
                noFileChosen: "sv_q_file_placeholder",
                dragAreaPlaceholder: "sv-hidden",
                fileList: ""
            },
            signaturepad: {
                root: "sv_q_signaturepad sjs_sp_container",
                controls: "sjs_sp_controls",
                placeholder: "sjs_sp_placeholder",
                clearButton: "sjs_sp_clear"
            },
            saveData: {
                root: "",
                saving: "",
                error: "",
                success: "",
                saveAgainButton: ""
            },
            window: {
                root: "sv_window",
                body: "sv_window_content",
                header: {
                    root: "sv_window_title",
                    title: "",
                    button: "",
                    buttonExpanded: "",
                    buttonCollapsed: ""
                }
            },
            variables: {
                themeMark: "--sv-default-mark"
            },
            tagbox: {
                root: "",
                small: "sv_q_row__question--small",
                selectWrapper: "sv_select_wrapper sv_q_tagbox_wrapper",
                other: "sv_q_input sv_q_comment sv_q_selectbase__other",
                cleanButton: "sv_q_tagbox_clean-button sv_q_dropdown_clean-button",
                cleanButtonSvg: "sv_q_tagbox_clean-button-svg sv_q_dropdown_clean-button-svg",
                cleanButtonIconId: "icon-clear_16x16",
                cleanItemButton: "sv_q_tagbox-item_clean-button",
                cleanItemButtonSvg: "sv_q_tagbox-item_clean-button-svg",
                cleanItemButtonIconId: "icon-clear_16x16",
                control: "sv_q_input sv_q_tagbox sv_q_dropdown_control",
                controlValue: "sv_q_tagbox__value sv_q_dropdown__value",
                controlEmpty: "sv_q_dropdown--empty sv_q_tagbox--empty",
                placeholderInput: "sv_q_tagbox__placeholder",
                filterStringInput: "sv_q_tagbox__filter-string-input sv_q_dropdown__filter-string-input"
            }
        };
        $n.default = Zi, $n.orange = Zi, $n.darkblue = Zi, $n.darkrose = Zi, $n.stone = Zi, $n.winter = Zi, $n.winterstone = Zi;
        var Xi = {
            root: "sv-root-modern",
            timerRoot: "sv-body__timer",
            container: "sv-container-modern",
            header: "sv-title sv-container-modern__title",
            headerClose: "sv-container-modern__close",
            body: "sv-body",
            bodyEmpty: "sv-body sv-body--empty",
            footer: "sv-footer sv-body__footer sv-clearfix",
            title: "",
            description: "",
            logo: "sv-logo",
            logoImage: "sv-logo__image",
            headerText: "sv-header__text",
            navigationButton: "sv-btn sv-btn--navigation",
            completedPage: "sv-completedpage",
            navigation: {
                complete: "sv-footer__complete-btn",
                prev: "sv-footer__prev-btn",
                next: "sv-footer__next-btn",
                start: "sv-footer__start-btn",
                preview: "sv-footer__preview-btn",
                edit: "sv-footer__edit-btn"
            },
            panel: {
                title: "sv-title sv-panel__title",
                titleExpandable: "sv-panel__title--expandable",
                titleExpanded: "sv-panel__title--expanded",
                titleCollapsed: "sv-panel__title--collapsed",
                titleOnError: "sv-panel__title--error",
                description: "sv-description sv-panel__description",
                container: "sv-panel sv-row__panel",
                content: "sv-panel__content",
                icon: "sv-panel__icon",
                iconExpanded: "sv-panel__icon--expanded",
                footer: "sv-panel__footer",
                requiredText: "sv-panel__required-text",
                number: "sv-question__num"
            },
            paneldynamic: {
                root: "sv-paneldynamic",
                navigation: "sv-paneldynamic__navigation",
                title: "sv-title sv-question__title",
                button: "sv-btn",
                buttonRemove: "sv-paneldynamic__remove-btn",
                buttonRemoveRight: "sv-paneldynamic__remove-btn--right",
                buttonAdd: "sv-paneldynamic__add-btn",
                progressTop: "sv-paneldynamic__progress sv-paneldynamic__progress--top",
                progressBottom: "sv-paneldynamic__progress sv-paneldynamic__progress--bottom",
                buttonPrev: "sv-paneldynamic__prev-btn",
                buttonNext: "sv-paneldynamic__next-btn",
                buttonPrevDisabled: "sv-paneldynamic__prev-btn--disabled",
                buttonNextDisabled: "sv-paneldynamic__next-btn--disabled",
                progressContainer: "sv-paneldynamic__progress-container",
                progress: "sv-progress",
                progressBar: "sv-progress__bar",
                progressText: "sv-paneldynamic__progress-text",
                separator: "sv-paneldynamic__separator",
                panelWrapper: "sv-paneldynamic__panel-wrapper",
                panelWrapperInRow: "sv-paneldynamic__panel-wrapper--in-row",
                progressBtnIcon: "icon-progressbutton",
                footer: ""
            },
            progress: "sv-progress sv-body__progress",
            progressBar: "sv-progress__bar",
            progressText: "sv-progress__text",
            progressTextInBar: "sv-hidden",
            progressButtonsContainerCenter: "sv_progress-buttons__container-center",
            progressButtonsContainer: "sv_progress-buttons__container",
            progressButtonsImageButtonLeft: "sv_progress-buttons__image-button-left",
            progressButtonsImageButtonRight: "sv_progress-buttons__image-button-right",
            progressButtonsImageButtonHidden: "sv_progress-buttons__image-button--hidden",
            progressButtonsListContainer: "sv_progress-buttons__list-container",
            progressButtonsList: "sv_progress-buttons__list",
            progressButtonsListElementPassed: "sv_progress-buttons__list-element--passed",
            progressButtonsListElementCurrent: "sv_progress-buttons__list-element--current",
            progressButtonsListElementNonClickable: "sv_progress-buttons__list-element--nonclickable",
            progressButtonsPageTitle: "sv_progress-buttons__page-title",
            progressButtonsPageDescription: "sv_progress-buttons__page-description",
            page: {
                root: "sv-page sv-body__page",
                title: "sv-title sv-page__title",
                description: "sv-description sv-page__description"
            },
            pageTitle: "sv-title sv-page__title",
            pageDescription: "sv-description sv-page__description",
            row: "sv-row sv-clearfix",
            question: {
                mainRoot: "sv-question sv-row__question",
                flowRoot: "sv-question sv-row__question sv-row__question--flow",
                asCell: "sv-table__cell",
                header: "sv-question__header",
                headerLeft: "sv-question__header--location--left",
                headerTop: "sv-question__header--location--top",
                headerBottom: "sv-question__header--location--bottom",
                content: "sv-question__content",
                contentLeft: "sv-question__content--left",
                titleLeftRoot: "",
                answered: "sv-question--answered",
                titleOnAnswer: "sv-question__title--answer",
                titleOnError: "sv-question__title--error",
                title: "sv-title sv-question__title",
                titleExpandable: "sv-question__title--expandable",
                titleExpanded: "sv-question__title--expanded",
                titleCollapsed: "sv-question__title--collapsed",
                icon: "sv-question__icon",
                iconExpanded: "sv-question__icon--expanded",
                requiredText: "sv-question__required-text",
                number: "sv-question__num",
                description: "sv-description sv-question__description",
                descriptionUnderInput: "sv-description sv-question__description",
                comment: "sv-comment",
                required: "sv-question--required",
                titleRequired: "sv-question__title--required",
                indent: 20,
                footer: "sv-question__footer",
                formGroup: "sv-question__form-group",
                hasError: "",
                disabled: "sv-question--disabled"
            },
            image: {
                root: "sv-image",
                image: "sv_image_image"
            },
            error: {
                root: "sv-question__erbox",
                icon: "",
                item: "",
                locationTop: "sv-question__erbox--location--top",
                locationBottom: "sv-question__erbox--location--bottom"
            },
            checkbox: {
                root: "sv-selectbase",
                item: "sv-item sv-checkbox sv-selectbase__item",
                itemSelectAll: "sv-checkbox--selectall",
                itemNone: "sv-checkbox--none",
                itemDisabled: "sv-item--disabled sv-checkbox--disabled",
                itemChecked: "sv-checkbox--checked",
                itemHover: "sv-checkbox--allowhover",
                itemInline: "sv-selectbase__item--inline",
                label: "sv-selectbase__label",
                labelChecked: "",
                itemControl: "sv-visuallyhidden sv-item__control",
                itemDecorator: "sv-item__svg sv-checkbox__svg",
                itemSvgIconId: "#icon-moderncheck",
                controlLabel: "sv-item__control-label",
                materialDecorator: "sv-item__decorator sv-selectbase__decorator sv-checkbox__decorator",
                other: "sv-comment sv-question__other",
                column: "sv-selectbase__column"
            },
            ranking: {
                root: "sv-ranking",
                rootMobileMod: "sv-ranking--mobile",
                rootDragMod: "sv-ranking--drag",
                rootDisabled: "sv-ranking--disabled",
                item: "sv-ranking-item",
                itemContent: "sv-ranking-item__content",
                itemIndex: "sv-ranking-item__index",
                controlLabel: "sv-ranking-item__text",
                itemGhostNode: "sv-ranking-item__ghost",
                itemIconContainer: "sv-ranking-item__icon-container",
                itemIcon: "sv-ranking-item__icon",
                itemIconHoverMod: "sv-ranking-item__icon--hover",
                itemIconFocusMod: "sv-ranking-item__icon--focus",
                itemGhostMod: "sv-ranking-item--ghost",
                itemDragMod: "sv-ranking-item--drag"
            },
            radiogroup: {
                root: "sv-selectbase",
                item: "sv-item sv-radio sv-selectbase__item",
                itemInline: "sv-selectbase__item--inline",
                label: "sv-selectbase__label",
                labelChecked: "",
                itemDisabled: "sv-item--disabled sv-radio--disabled",
                itemChecked: "sv-radio--checked",
                itemHover: "sv-radio--allowhover",
                itemControl: "sv-visuallyhidden sv-item__control",
                itemDecorator: "sv-item__svg sv-radio__svg",
                itemSvgIconId: "#icon-modernradio",
                controlLabel: "sv-item__control-label",
                materialDecorator: "sv-item__decorator sv-selectbase__decorator sv-radio__decorator",
                other: "sv-comment sv-question__other",
                clearButton: "sv-btn sv-selectbase__clear-btn",
                column: "sv-selectbase__column"
            },
            buttongroup: {
                root: "sv-button-group",
                item: "sv-button-group__item",
                itemIcon: "sv-button-group__item-icon",
                itemDecorator: "sv-button-group__item-decorator",
                itemCaption: "sv-button-group__item-caption",
                itemSelected: "sv-button-group__item--selected",
                itemHover: "sv-button-group__item--hover",
                itemDisabled: "sv-button-group__item--disabled",
                itemControl: "sv-visuallyhidden"
            },
            boolean: {
                root: "sv_qbln",
                rootRadio: "sv_qbln",
                small: "sv-row__question--small",
                item: "sv-boolean sv-item",
                control: "sv-visuallyhidden",
                itemChecked: "sv-boolean--checked",
                itemIndeterminate: "sv-boolean--indeterminate",
                itemDisabled: "sv-item--disabled sv-boolean--disabled",
                switch: "sv-boolean__switch",
                slider: "sv-boolean__slider",
                label: "sv-boolean__label",
                disabledLabel: "sv-boolean__label--disabled",
                rootCheckbox: "sv_qbln",
                checkboxItem: "sv-boolean sv-item",
                checkboxItemChecked: "sv-boolean--checked",
                controlCheckbox: "sv-visuallyhidden",
                checkboxControlLabel: "sv-boolean__label",
                checkboxItemIndeterminate: "sv-boolean--indeterminate",
                checkboxItemDisabled: "sv-item--disabled sv-boolean--disabled",
                checkboxMaterialDecorator: "sv-item__decorator sv-boolean__decorator ",
                checkboxItemDecorator: "sv-item__svg  sv-boolean__svg",
                indeterminatePath: "sv-boolean__indeterminate-path",
                svgIconCheckedId: "#icon-modernbooleancheckchecked",
                svgIconUncheckedId: "#icon-modernbooleancheckunchecked",
                svgIconIndId: "#icon-modernbooleancheckind"
            },
            text: {
                root: "sv-text",
                small: "sv-row__question--small",
                onError: "sv-text--error"
            },
            multipletext: {
                root: "sv-multipletext",
                item: "sv-multipletext__item",
                itemLabel: "sv-multipletext__item-label",
                itemTitle: "sv-multipletext__item-title",
                row: "sv-multipletext__row",
                cell: "sv-multipletext__cell"
            },
            dropdown: {
                root: "",
                small: "sv-row__question--small",
                control: "sv-dropdown",
                selectWrapper: "",
                other: "sv-comment sv-question__other",
                onError: "sv-dropdown--error",
                cleanButton: "sv-dropdown_clean-button",
                cleanButtonSvg: "sv-dropdown_clean-button-svg",
                cleanButtonIconId: "icon-clear_16x16",
                filterStringInput: "sv-dropdown__filter-string-input",
                controlValue: "sv-dropdown__value",
                controlInputFieldComponent: "sv_dropdown_control__input-field-component"
            },
            tagbox: {
                root: "",
                small: "sv-row__question--small",
                selectWrapper: "sv_select_wrapper sv-tagbox_wrapper",
                other: "sv-input sv-comment sv-selectbase__other",
                cleanButton: "sv-tagbox_clean-button sv-dropdown_clean-button",
                cleanButtonSvg: "sv-tagbox_clean-button-svg sv-dropdown_clean-button-svg",
                cleanButtonIconId: "icon-clear_16x16",
                cleanItemButton: "sv-tagbox__item_clean-button",
                cleanItemButtonSvg: "sv-tagbox__item_clean-button-svg",
                cleanItemButtonIconId: "icon-clear_16x16",
                control: "sv-input sv-tagbox sv-dropdown",
                controlValue: "sv-tagbox__value sv-dropdown__value",
                controlEmpty: "sv-dropdown--empty sv-tagbox--empty",
                placeholderInput: "sv-tagbox__placeholder",
                filterStringInput: "sv-tagbox__filter-string-input sv-dropdown__filter-string-input"
            },
            imagepicker: {
                root: "sv-selectbase sv-imagepicker",
                column: "sv-selectbase__column",
                item: "sv-imagepicker__item",
                itemInline: "sv-imagepicker__item--inline",
                itemChecked: "sv-imagepicker__item--checked",
                itemDisabled: "sv-imagepicker__item--disabled",
                itemHover: "sv-imagepicker__item--allowhover",
                label: "sv-imagepicker__label",
                itemControl: "sv-imagepicker__control sv-visuallyhidden",
                image: "sv-imagepicker__image",
                itemText: "sv-imagepicker__text",
                clearButton: "sv-btn",
                other: "sv-comment sv-question__other"
            },
            matrix: {
                tableWrapper: "sv-matrix",
                root: "sv-table sv-matrix-root",
                rowError: "sv-matrix__row--error",
                cell: "sv-table__cell sv-matrix__cell",
                headerCell: "sv-table__cell sv-table__cell--header",
                label: "sv-item sv-radio sv-matrix__label",
                itemValue: "sv-visuallyhidden sv-item__control sv-radio__control",
                itemChecked: "sv-radio--checked",
                itemDisabled: "sv-item--disabled sv-radio--disabled",
                itemHover: "sv-radio--allowhover",
                materialDecorator: "sv-item__decorator sv-radio__decorator",
                itemDecorator: "sv-item__svg sv-radio__svg",
                cellText: "sv-matrix__text",
                cellTextSelected: "sv-matrix__text--checked",
                cellTextDisabled: "sv-matrix__text--disabled",
                cellResponsiveTitle: "sv-hidden",
                itemSvgIconId: "#icon-modernradio"
            },
            matrixdropdown: {
                root: "sv-table sv-matrixdropdown",
                cell: "sv-table__cell",
                headerCell: "sv-table__cell sv-table__cell--header",
                row: "sv-table__row",
                rowAdditional: "sv-table__row--additional",
                detailRow: "sv-table__row--detail",
                detailRowText: "sv-table__cell--detail-rowtext",
                detailCell: "sv-table__cell--detail",
                choiceCell: "sv-table__cell--choice",
                detailButton: "sv-table__cell--detail-button",
                detailButtonExpanded: "sv-table__cell--detail-button--expanded",
                detailIcon: "sv-detail-panel__icon",
                detailIconExpanded: "sv-detail-panel__icon--expanded",
                detailPanelCell: "sv-table__cell--detail-panel",
                actionsCell: "sv-table__cell sv-table__cell--actions"
            },
            matrixdynamic: {
                root: "sv-table sv-matrixdynamic",
                cell: "sv-table__cell",
                headerCell: "sv-table__cell sv-table__cell--header",
                button: "sv-btn",
                buttonAdd: "sv-matrixdynamic__add-btn",
                buttonRemove: "sv-matrixdynamic__remove-btn",
                iconAdd: "",
                iconRemove: "",
                iconDrag: "sv-matrixdynamic__drag-icon",
                row: "sv-table__row",
                detailRow: "sv-table__row--detail",
                detailCell: "sv-table__cell--detail",
                choiceCell: "sv-table__cell--choice",
                detailButton: "sv-table__cell--detail-button",
                detailButtonExpanded: "sv-table__cell--detail-button--expanded",
                detailIcon: "sv-detail-panel__icon",
                detailIconExpanded: "sv-detail-panel__icon--expanded",
                detailPanelCell: "sv-table__cell--detail-panel",
                actionsCell: "sv-table__cell sv-table__cell--actions",
                emptyRowsSection: "sv-table__empty--rows--section",
                emptyRowsText: "sv-table__empty--rows--text",
                emptyRowsButton: "",
                ghostRow: "sv-matrix-row--drag-drop-ghost-mod"
            },
            rating: {
                root: "sv-rating",
                item: "sv-rating__item",
                selected: "sv-rating__item--selected",
                minText: "sv-rating__min-text",
                itemText: "sv-rating__item-text",
                maxText: "sv-rating__max-text",
                itemDisabled: "sv-rating--disabled",
                filterStringInput: "sv-dropdown__filter-string-input",
                control: "sv-dropdown",
                cleanButton: "sv-dropdown_clean-button",
                cleanButtonSvg: "sv-dropdown_clean-button-svg",
                cleanButtonIconId: "icon-clear_16x16",
                controlValue: "sv-dropdown__value",
                controlInputFieldComponent: "sv_dropdown_control__input-field-component"
            },
            comment: {
                root: "sv-comment",
                small: "sv-row__question--small"
            },
            expression: "",
            file: {
                root: "sv-file",
                other: "sv-comment sv-question__other",
                placeholderInput: "sv-visuallyhidden",
                preview: "sv-file__preview",
                fileSignBottom: "sv-file__sign",
                fileDecorator: "sv-file__decorator",
                fileInput: "sv-visuallyhidden",
                noFileChosen: "sv-description sv-file__no-file-chosen",
                chooseFile: "sv-btn sv-file__choose-btn",
                controlDisabled: "sv-file__choose-btn--disabled",
                removeButton: "sv-hidden",
                removeButtonBottom: "sv-btn sv-file__clean-btn",
                removeFile: "sv-hidden",
                removeFileSvg: "sv-file__remove-svg",
                removeFileSvgIconId: "icon-removefile",
                wrapper: "sv-file__wrapper",
                dragAreaPlaceholder: "sv-hidden",
                fileList: ""
            },
            signaturepad: {
                root: "sv-signaturepad sjs_sp_container",
                small: "sv-row__question--small",
                controls: "sjs_sp_controls",
                placeholder: "sjs_sp_placeholder",
                clearButton: "sjs_sp_clear"
            },
            saveData: {
                root: "",
                saving: "",
                error: "",
                success: "",
                saveAgainButton: ""
            },
            window: {
                root: "sv_window",
                body: "sv_window_content",
                header: {
                    root: "sv_window_title",
                    title: "",
                    button: "",
                    buttonExpanded: "",
                    buttonCollapsed: ""
                }
            },
            variables: {
                themeMark: "--sv-modern-mark"
            }
        };
        $n.modern = Xi;
        var Yi = function() {
                function e() {
                    this.icons = {}, this.iconPrefix = "icon-"
                }
                return e.prototype.registerIconFromSymbol = function(e, t) {
                    this.icons[e] = t
                }, e.prototype.registerIconFromSvgViaElement = function(e, t, n) {
                    void 0 === n && (n = this.iconPrefix);
                    var o = document.createElement("div");
                    o.innerHTML = t;
                    var r = document.createElement("symbol"),
                        i = o.querySelector("svg");
                    r.innerHTML = i.innerHTML;
                    for (var s = 0; s < i.attributes.length; s++) r.setAttributeNS("http://www.w3.org/2000/svg", i.attributes[s].name, i.attributes[s].value);
                    r.id = n + e, this.registerIconFromSymbol(e, r.outerHTML)
                }, e.prototype.registerIconFromSvg = function(e, t, n) {
                    void 0 === n && (n = this.iconPrefix);
                    var o = (t = t.trim()).toLowerCase();
                    return "<svg " === o.substring(0, "<svg ".length) && "</svg>" === o.substring(o.length - "</svg>".length, o.length) && (this.registerIconFromSymbol(e, '<symbol id="' + n + e + '" ' + t.substring("<svg ".length, o.length - "</svg>".length) + "</symbol>"), !0)
                }, e.prototype.registerIconsFromFolder = function(e) {
                    var t = this;
                    e.keys().forEach((function(n) {
                        t.registerIconFromSvg(n.substring(2, n.length - 4).toLowerCase(), e(n))
                    }))
                }, e.prototype.iconsRenderedHtml = function() {
                    var e = this;
                    return Object.keys(this.icons).map((function(t) {
                        return e.icons[t]
                    })).join("")
                }, e.prototype.renderIcons = function() {
                    if (!document.getElementById("sv-icon-holder-global-container")) {
                        var e = document.createElement("div");
                        e.id = "sv-icon-holder-global-container", e.innerHTML = "<svg>" + this.iconsRenderedHtml() + "</svg>", e.style.display = "none", document.head.insertBefore(e, document.head.firstChild)
                    }
                }, e
            }(),
            es = new Yi,
            ts = n(6);
        es.registerIconsFromFolder(ts);
        var ns = function() {
                function e(e) {
                    var t = this;
                    this.tooltipElement = e, this.onMouseMoveCallback = function(e) {
                        t.tooltipElement.style.left = e.clientX + 12 + "px", t.tooltipElement.style.top = e.clientY + 12 + "px"
                    }, this.targetElement = e.parentElement, this.targetElement.addEventListener("mousemove", this.onMouseMoveCallback)
                }
                return e.prototype.dispose = function() {
                    this.targetElement.removeEventListener("mousemove", this.onMouseMoveCallback)
                }, e
            }(),
            os = n(36),
            rs = function() {
                function e() {}
                return e.prototype.addText = function(e, t, n) {
                    t = this.getId(t, n), this.text = this.text + '<script type="text/html" ' + t + ">" + e + "<\/script>"
                }, e.prototype.replaceText = function(e, t, n) {
                    void 0 === n && (n = null);
                    var o = this.getId(t, n),
                        r = this.text.indexOf(o);
                    if (r < 0) this.addText(e, t, n);
                    else if (!((r = this.text.indexOf(">", r)) < 0)) {
                        var i = r + 1;
                        (r = this.text.indexOf("<\/script>", i)) < 0 || (this.text = this.text.substring(0, i) + e + this.text.substring(r))
                    }
                }, e.prototype.getId = function(e, t) {
                    var n = 'id="survey-' + e;
                    return t && (n += "-" + t), n + '"'
                }, Object.defineProperty(e.prototype, "text", {
                    get: function() {
                        return os
                    },
                    set: function(e) {
                        os = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e
            }(),
            is = function() {
                function e(t) {
                    this.element = t, this.implementedMark = "__surveyImplementedKo", t[this.implementedMark] || (t.iteratePropertiesHash((function(n, o) {
                        e.doIterateProperties(t, n, o)
                    })), t.createArrayCoreHandler = function(e, n) {
                        var r = o.observableArray();
                        return r().onArrayChanged = function() {
                            t.isLoadingFromJson || t.isDisposed || r.notifySubscribers()
                        }, e[n] = r, r()
                    }, t.getPropertyValueCoreHandler = function(e, t) {
                        return void 0 === e[t] && (e[t] = o.observable()), "function" == typeof e[t] ? e[t]() : e[t]
                    }, t.setPropertyValueCoreHandler = function(e, t, n) {
                        void 0 !== e[t] ? e[t](n) : e[t] = o.observable(n)
                    }, t[this.implementedMark] = !0)
                }
                return e.doIterateProperties = function(e, t, n) {
                    var r = t[n];
                    "function" !== r && (Array.isArray(r) ? (t[n] = o.observableArray(r), r.onArrayChanged = function() {
                        e.isLoadingFromJson || e.isDisposed || t[n].notifySubscribers()
                    }) : t[n] = o.observable(r))
                }, e.prototype.dispose = function() {
                    this.element.iteratePropertiesHash((function(e, t) {
                        e[t] = o.unwrap(e[t]), Array.isArray(e[t]) && (e[t].onArrayChanged = void 0)
                    })), this.element.createArrayCoreHandler = void 0, this.element.getPropertyValueCoreHandler = void 0, this.element.setPropertyValueCoreHandler = void 0, delete this.element[this.implementedMark]
                }, e
            }(),
            ss = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }();
        Gt.Instance.onCustomWidgetAdded.add((function(e) {
            e.widgetJson.isDefaultRender || (e.htmlTemplate || (e.htmlTemplate = "<div>'htmlTemplate' attribute is missed.</div>"), (new rs).replaceText(e.htmlTemplate, "widget", e.name))
        }));
        var as = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.survey = t, n.survey.valueHashGetDataCallback = function(e, t) {
                        return void 0 === e[t] && (e[t] = o.observable()), o.unwrap(e[t])
                    }, n.survey.valueHashSetDataCallback = function(e, t, n) {
                        o.isWriteableObservable(e[t]) ? e[t](n) : e[t] = o.observable(n)
                    }, n.survey.valueHashDeleteDataCallback = function(e, t) {
                        o.isWriteableObservable(e[t]) ? e[t](void 0) : delete e[t]
                    }, n.survey.koTitleTemplate = o.observable("survey-header"), n.survey.koAfterRenderPage = function(e, t) {
                        var r = jt.GetFirstNonTextElement(e);
                        r && setTimeout((function() {
                            o.tasks && o.tasks.runEarly(), n.survey.afterRenderPage(r)
                        }), 0)
                    }, n.survey.koAfterRenderHeader = function(e, t) {
                        var o = jt.GetFirstNonTextElement(e);
                        o && n.survey.afterRenderHeader(o)
                    }, n.survey.disposeCallback = function() {
                        n.dispose()
                    }, new is(n.survey.timerModel), n
                }
                return ss(t, e), t.prototype.render = function(e) {
                    if (void 0 === e && (e = null), void 0 === o) throw new Error("knockoutjs library is not loaded.");
                    var t = this.survey.activePage;
                    t && t.updateCustomWidgets(), this.survey.updateElementCss(!1), e && "string" == typeof e && (e = document.getElementById(e)), e && (this.renderedElement = e), this.survey.startTimerFromUI(), this.applyBinding()
                }, t.prototype.applyBinding = function() {
                    this.renderedElement && (o.cleanNode(this.renderedElement), o.renderTemplate("survey-content", this.survey, {}, this.renderedElement))
                }, t.prototype.koEventAfterRender = function(e, t) {
                    t.needRenderIcons && es.renderIcons(), t.afterRenderSurvey(e)
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.renderedElement && (o.cleanNode(this.renderedElement), this.renderedElement.innerHTML = ""), this.survey.koAfterRenderPage = void 0, this.survey.koAfterRenderHeader = void 0, this.survey.iteratePropertiesHash((function(e, t) {
                        delete e[t]
                    }))
                }, t
            }(is),
            ls = function(e) {
                function t(t, n) {
                    void 0 === t && (t = null), void 0 === n && (n = null);
                    var o = e.call(this, t, n) || this;
                    return o.implementor = new as(o), o
                }
                return ss(t, e), t.prototype.render = function(e) {
                    void 0 === e && (e = null), this.implementor.render(e)
                }, t.prototype.getHtmlTemplate = function() {
                    return os
                }, t.prototype.makeReactive = function(e) {
                    new is(e)
                }, t
            }(mo);
        d.prototype.onCreating = function() {
            var e = this;
            this.koHasHtml = o.observable(this.hasHtml), this.koRenderedHtml = o.observable(this.renderedHtml), this.onStringChanged.add((function() {
                var t = e.hasHtml;
                e.koHasHtml(t), e.koRenderedHtml(t ? e.getHtmlValue() : e.calculatedText)
            }))
        }, ze.prototype.onCreating = function() {
            var e = this;
            this.koText = o.pureComputed((function() {
                return e.locText.koRenderedHtml()
            }))
        }, o.components.register("survey", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = o.unwrap(e.survey);
                    return function(e) {
                        e.implementor || (e.implementor = new as(e), e.render = function(t) {
                            void 0 === t && (t = null), e.implementor.render(t)
                        }, e.getHtmlTemplate = function() {
                            return os
                        }, e.makeReactive = function(e) {
                            new is(e)
                        })
                    }(n), setTimeout((function() {
                        var e = document.createElement("div");
                        t.element.appendChild(e), n.render(e)
                    }), 1), e.survey
                }
            },
            template: os
        }), o.bindingHandlers.surveyProp = {
            update: function(e, t, n) {
                var r = o.utils.unwrapObservable(t()) || {};
                for (var i in r)
                    if ("string" == typeof i) {
                        var s = o.utils.unwrapObservable(r[i]);
                        e[i] = s
                    }
            }
        }, mo.platform = "knockout";
        var us = function(e, t) {
            e.surveyTemplateEngine = function() {}, e.surveyTemplateEngine.prototype = new e.nativeTemplateEngine, e.surveyTemplateEngine.prototype.makeTemplateSource = function(n, o) {
                if ("string" == typeof n) {
                    var r, i = (o = o || document).getElementById("survey-content-" + t);
                    i || ((i = document.createElement("div")).id = "survey-content-" + mo.platform, i.style.display = "none", i.innerHTML = os, document.body.appendChild(i));
                    for (var s = 0; s < i.children.length; s++)
                        if (i.children[s].id === n) {
                            r = i.children[s];
                            break
                        } return r || (r = o.getElementById(n)), r ? new e.templateSources.domElement(r) : (new e.nativeTemplateEngine).makeTemplateSource(n, o)
                }
                if (1 === n.nodeType || 8 === n.nodeType) return new e.templateSources.anonymousTemplate(n);
                throw new Error("Unknown template type: " + n)
            };
            var n = new e.surveyTemplateEngine;
            e.setTemplateEngine(n)
        };
        o.bindingHandlers.key2click = {
            init: function(e, t, n, o) {
                var r = t() || {
                    processEsc: !0,
                    disableTabStop: !1
                };
                o && o.disableTabStop || r && r.disableTabStop ? e.tabIndex = -1 : (e.tabIndex = 0, e.onkeyup = function(e) {
                    return e.preventDefault(), e.stopPropagation(), Xe(e, r), !1
                }, e.onkeydown = function(e) {
                    return Ye(e, r)
                }, e.onblur = function(e) {
                    return Ze(e)
                })
            }
        };
        var cs = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ps = n(76),
            ds = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.window = t, n.window.showingChangedCallback = function() {
                        n.doShowingChanged()
                    }, n.window.doExpand = function() {
                        n.window.changeExpandCollapse()
                    }, n
                }
                return cs(t, e), t.prototype.doShowingChanged = function() {
                    var e = this.window.windowElement;
                    this.window.isShowing ? (e.innerHTML = this.template, o.cleanNode(e), o.applyBindings(this.window, e), document.body.appendChild(e)) : (document.body.removeChild(e), e.innerHTML = "")
                }, Object.defineProperty(t.prototype, "template", {
                    get: function() {
                        return this.window.templateValue ? this.window.templateValue : ps
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(is);
        Ci.prototype.onCreating = function() {
            this.implementor = new ds(this)
        };
        var hs = function(e) {
                function t(t, n) {
                    return void 0 === n && (n = null), e.call(this, t, n) || this
                }
                return cs(t, e), t
            }(Ci),
            fs = (function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                cs(t, e)
            }(hs), function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }()),
            ms = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    n.panel = t, new is(n);
                    var o = n;
                    return n.koElementAfterRender = function(e, t) {
                        return o.elementAfterRender(e, t)
                    }, n
                }
                return fs(t, e), t.prototype.getElementType = function(e) {
                    return e.isPanel ? "survey-panel" : "survey-question"
                }, t.prototype.koAfterRender = function(e, t) {
                    for (var n = 0; n < e.length; n++) {
                        var o = e[n];
                        "#text" == o.nodeName && (o.data = "")
                    }
                }, t.prototype.elementAfterRender = function(e, t) {
                    var n = this;
                    this.panel && this.panel.survey && setTimeout((function() {
                        o.tasks && o.tasks.runEarly();
                        var r = jt.GetFirstNonTextElement(e);
                        if (r) {
                            var i = t;
                            i.isDisposed || (i.isPanel && n.panel.survey ? n.panel.survey.afterRenderPanel(t, r) : i.afterRender(r))
                        }
                    }), 0)
                }, t.prototype.rowAfterRender = function(e, t) {
                    if (!t.isNeedRender) {
                        var n = e[0].parentElement,
                            r = setTimeout((function() {
                                return t.startLazyRendering(n)
                            }), 1);
                        o.utils.domNodeDisposal.addDisposeCallback(n, (function() {
                            clearTimeout(r), t.stopLazyRendering(), t.isNeedRender = !t.isLazyRendering()
                        }))
                    }
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.koElementAfterRender = void 0
                }, t
            }(Uo),
            gs = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.panel = t, n
                }
                return fs(t, e), t
            }(is),
            ys = function(e) {
                function t(t) {
                    void 0 === t && (t = "");
                    var n = e.call(this, t) || this;
                    n.onCreating();
                    var r = n;
                    return n.koElementType = o.observable("survey-panel"), n.koCss = o.pureComputed((function() {
                        return r.cssClasses
                    })), n.koErrorClass = o.pureComputed((function() {
                        return r.cssError
                    })), n
                }
                return fs(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new gs(this)
                }, t.prototype.createRow = function() {
                    return new ms(this)
                }, t.prototype.onCreating = function() {}, t.prototype.onNumChanged = function(e) {
                    this.locTitle.strChanged()
                }, t.prototype.dispose = function() {
                    this.koCss.dispose(), this.koErrorClass.dispose(), this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }($o),
            vs = function(e) {
                function t(t) {
                    void 0 === t && (t = "");
                    var n = e.call(this, t) || this;
                    return n.onCreating(), n
                }
                return fs(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new is(this)
                }, t.prototype.createRow = function() {
                    return new ms(this)
                }, t.prototype.onCreating = function() {}, t.prototype.onNumChanged = function(e) {
                    this.locTitle.strChanged()
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this._implementor.dispose(), this._implementor = void 0
                }, t
            }(Xo);
        I.overrideClassCreator("panel", (function() {
            return new ys
        })), I.overrideClassCreator("page", (function() {
            return new vs
        })), un.Instance.registerElement("panel", (function(e) {
            return new ys(e)
        }));
        var bs = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            xs = function(e) {
                function t(t) {
                    void 0 === t && (t = "");
                    var n = e.call(this, t) || this;
                    n.koElementType = o.observable("survey-flowpanel"), new is(n), n.onCreating();
                    var r = n;
                    return n.koElementAfterRender = function(e, t) {
                        return r.elementAfterRender(e, t)
                    }, n
                }
                return bs(t, e), t.prototype.onCreating = function() {}, t.prototype.getHtmlForQuestion = function(e) {
                    return '<span question="true" contenteditable="false" id="flowpanel_' + e.name + '">\x3c!-- ko template: { name: "survey-flowpanel-question", data: "' + e.name + '"} --\x3e\x3c!-- /ko --\x3e</span>'
                }, t.prototype.elementAfterRender = function(e, t) {
                    if (this.survey) {
                        var n = jt.GetFirstNonTextElement(e);
                        n && this.survey.afterRenderQuestion(t, n)
                    }
                }, t
            }(Jo);
        I.overrideClassCreator("flowpanel", (function() {
            return new xs
        })), o.components.register("f-panel", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = this,
                        r = o.unwrap(e.question);
                    n.element = t.element, n.element.innerHTML = r.html, n.isOnFocus = !1, n.wasChanged = !1, n.isContentUpdating = !1, r.contentChangedCallback = function() {
                        n.isContentUpdating || (o.cleanNode(n.element), n.element.innerHTML = r.html, o.applyBindings({
                            question: r
                        }, n.element), o.tasks && o.tasks.runEarly())
                    }, n.element.onfocus = function() {
                        n.isOnFocus = !0
                    }, n.element.onblur = function() {
                        n.wasChanged && n.updateContent(), n.isOnFocus = !1, n.wasChanged = !1
                    }, n.element.ondragend = function(e) {
                        var t = n.element.innerHTML,
                            o = /{(.*?(element:)[^$].*?)}/g.exec(t);
                        if (null !== o) {
                            var i = r.getQuestionFromText(o[0]);
                            i && (r.content = n.getContent(i.name))
                        }
                    }, n.updateContent = function() {
                        n.isContentUpdating = !0, r.content = n.getContent(), n.isContentUpdating = !1
                    }, r.getContent = n.getContent = function(e) {
                        var t = document.createElement("DIV");
                        t.innerHTML = n.element.innerHTML;
                        for (var o = t.querySelectorAll('span[question="true"]'), i = 0; i < o.length; i++) {
                            var s = o[i].id.replace("flowpanel_", ""),
                                a = "";
                            if (s !== e) {
                                var l = r.getQuestionByName(s);
                                a = l ? r.getElementContentText(l) : ""
                            }
                            o[i].outerHTML = a
                        }
                        return t.innerHTML
                    };
                    return new MutationObserver((function(e, t) {
                        n.isOnFocus && (n.wasChanged = !0)
                    })).observe(n.element, {
                        characterData: !0,
                        attributes: !0,
                        childList: !0,
                        subtree: !0
                    }), {
                        question: r
                    }
                }
            },
            template: "<div></div>"
        });
        var Cs = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ws = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    n.question = t, n._koValue = o.observableArray(), n.disposedObjects = [], n.callBackFunctions = [];
                    var r = !1;
                    return n._koValue.subscribe((function(e) {
                        r || n.setKoValue(e)
                    })), Object.defineProperty(n.question, "koValue", {
                        get: function() {
                            if (!a.isTwoValueEquals(n._koValue(), n.getKoValue(), !1, !0, !1)) try {
                                r = !0, n._koValue(n.getKoValue())
                            } finally {
                                r = !1
                            }
                            return n._koValue
                        },
                        enumerable: !0,
                        configurable: !0
                    }), t.surveyLoadCallback = function() {
                        n.onSurveyLoad()
                    }, n.setObservaleObj("koTemplateName", o.pureComputed((function() {
                        return n.getTemplateName()
                    }))), n.setObservaleObj("koElementType", o.observable("survey-question")), n.setObservaleObj("koCss", o.pureComputed((function() {
                        return n.question.cssClasses
                    }))), n.setObservaleObj("koRootCss", o.pureComputed((function() {
                        return n.question.getRootCss()
                    }))), n.setObservaleObj("koErrorClass", o.pureComputed((function() {
                        return n.question.cssError
                    }))), n.koDummy = o.observable(0), n.setCallbackFunc("koQuestionAfterRender", (function(e, t) {
                        n.koQuestionAfterRender(e, t)
                    })), n
                }
                return Cs(t, e), t.prototype.setObservaleObj = function(e, t, n) {
                    return void 0 === n && (n = !0), this.disposedObjects.push(e), n && (this.question[e] = t), t
                }, t.prototype.setCallbackFunc = function(e, t) {
                    this.callBackFunctions.push(e), this.question[e] = t
                }, t.prototype.getKoValue = function() {
                    return this.question.value
                }, t.prototype.setKoValue = function(e) {
                    this.question.value = e
                }, t.prototype.onSurveyLoad = function() {}, t.prototype.getQuestionTemplate = function() {
                    return this.question.getTemplate()
                }, t.prototype.getTemplateName = function() {
                    return this.question.customWidget && !this.question.customWidget.widgetJson.isDefaultRender ? "survey-widget-" + this.question.customWidget.name : "survey-question-" + this.getQuestionTemplate()
                }, t.prototype.getNo = function() {
                    return this.question.visibleIndex > -1 ? this.question.visibleIndex + 1 + ". " : ""
                }, t.prototype.updateKoDummy = function() {
                    this.question.isDisposed || (this.koDummy(this.koDummy() + 1), this.question.locTitle.strChanged())
                }, t.prototype.koQuestionAfterRender = function(e, t) {
                    var n = this;
                    setTimeout((function() {
                        o.tasks && o.tasks.runEarly();
                        var t = jt.GetFirstNonTextElement(e, !0);
                        t && (n.question.afterRenderQuestionElement(t), n.question.customWidget && n.question.customWidget.afterRender(n.question, t), o.utils.domNodeDisposal.addDisposeCallback(t, (function() {
                            if (n.question.beforeDestroyQuestionElement(t), n.question.customWidget) try {
                                n.question.customWidget.willUnmount(n.question, t)
                            } catch (e) {
                                console.warn("Custom widget will unmount failed")
                            }
                        })))
                    }), 0)
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this);
                    for (var t = 0; t < this.disposedObjects.length; t++) {
                        var n = this.disposedObjects[t],
                            o = this[n] || this.question[n];
                        o && (this[n] && (this[n] = void 0), this.question[n] && (this.question[n] = void 0), o.dispose && o.dispose())
                    }
                    this.disposedObjects = [];
                    for (var r = 0; r < this.callBackFunctions.length; r++) this.question[this.callBackFunctions[r]] = void 0;
                    this.callBackFunctions = [], this.question.unregisterPropertyChangedHandlers(["visibleIndex"])
                }, t
            }(is),
            Ps = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Vs = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.onCreated(), n
                }
                return Ps(t, e), t.prototype.onCreated = function() {}, Object.defineProperty(t.prototype, "isOtherSelected", {
                    get: function() {
                        return this.question.isOtherSelected
                    },
                    enumerable: !1,
                    configurable: !0
                }), t
            }(ws),
            Ts = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.setCallbackFunc("koAfterRender", n.koAfterRender), n
                }
                return Ps(t, e), t.prototype.koAfterRender = function(e, t) {
                    var n = e[0];
                    "#text" == n.nodeName && (n.data = ""), "#text" == (n = e[e.length - 1]).nodeName && (n.data = "")
                }, t
            }(Vs),
            ks = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ss = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return ks(t, e), t.prototype.getKoValue = function() {
                    return this.question.renderedValue
                }, t.prototype.setKoValue = function(e) {
                    this.question.renderedValue = e
                }, t
            }(Ts),
            Os = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.isAllSelectedUpdating = !1, n._selectAllItemImpl = void 0, n._otherItemImpl = void 0, n.koAllSelected = o.observable(n.isAllSelected), n.koAllSelected.subscribe((function(e) {
                        n.isAllSelectedUpdating || (e ? n.selectAll() : n.clearValue())
                    })), n._selectAllItemImpl = new is(n.selectAllItem), n._otherItemImpl = new is(n.otherItem), n
                }
                return ks(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new Ss(this)
                }, t.prototype.onSurveyValueChanged = function(t) {
                    e.prototype.onSurveyValueChanged.call(this, t), this.updateAllSelected()
                }, t.prototype.onVisibleChoicesChanged = function() {
                    e.prototype.onVisibleChoicesChanged.call(this), this.updateAllSelected()
                }, t.prototype.updateAllSelected = function() {
                    this.isAllSelectedUpdating = !0, this.koAllSelected(this.isAllSelected), this.isAllSelectedUpdating = !1
                }, t.prototype.dispose = function() {
                    this._selectAllItemImpl && (this._selectAllItemImpl.dispose(), this._selectAllItemImpl = void 0), this._otherItemImpl && (this._otherItemImpl.dispose(), this._otherItemImpl = void 0), this._implementor.dispose(), this._implementor = void 0, this.koAllSelected = void 0, e.prototype.dispose.call(this)
                }, t
            }(ir);
        I.overrideClassCreator("checkbox", (function() {
            return new Os("")
        })), ln.Instance.registerQuestion("checkbox", (function(e) {
            var t = new Os(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var Es = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Rs = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.isAllSelectedUpdating = !1, n.koAllSelected = o.observable(n.isAllSelected), n.koAllSelected.subscribe((function(e) {
                        n.isAllSelectedUpdating || (e ? n.selectAll() : n.clearValue())
                    })), n
                }
                return Es(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new Ts(this)
                }, t.prototype.onSurveyValueChanged = function(t) {
                    e.prototype.onSurveyValueChanged.call(this, t), this.updateAllSelected()
                }, t.prototype.onVisibleChoicesChanged = function() {
                    e.prototype.onVisibleChoicesChanged.call(this), this.updateAllSelected()
                }, t.prototype.updateAllSelected = function() {
                    this.isAllSelectedUpdating = !0, this.koAllSelected(this.isAllSelected), this.isAllSelectedUpdating = !1
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, this.koAllSelected = void 0, e.prototype.dispose.call(this)
                }, t
            }(fr);
        I.overrideClassCreator("tagbox", (function() {
            return new Rs("")
        })), ln.Instance.registerQuestion("tagbox", (function(e) {
            var t = new Rs(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var Is = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            _s = function(e) {
                function t() {
                    var t = null !== e && e.apply(this, arguments) || this;
                    return t.koHandleKeydown = function(e, n) {
                        return t.handleKeydown(n, e), !0
                    }, t.koHandlePointerDown = function(e, n) {
                        return t.survey.isDesignMode || n.preventDefault(), t.handlePointerDown(n, e, n.currentTarget), !0
                    }, t
                }
                return Is(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Cr);
        I.overrideClassCreator("ranking", (function() {
            return new _s("")
        })), ln.Instance.registerQuestion("ranking", (function(e) {
            var t = new _s(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var qs = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ds = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return qs(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Pr);
        I.overrideClassCreator("comment", (function() {
            return new Ds("")
        })), ln.Instance.registerQuestion("comment", (function(e) {
            return new Ds(e)
        }));
        var As = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            js = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return As(t, e), t
            }(Vs),
            Ls = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.koDisableOption = function(e, t) {
                        t && o.applyBindingsToNode(e, {
                            disable: o.computed((function() {
                                return !t.isEnabled
                            }))
                        }, t)
                    }, n
                }
                return As(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new js(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(To);
        I.overrideClassCreator("dropdown", (function() {
            return new Ls("")
        })), ln.Instance.registerQuestion("dropdown", (function(e) {
            var t = new Ls(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var Ms = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ns = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.setObservaleObj("koState", o.observable("empty")), n.setObservaleObj("koHasValue", o.computed((function() {
                        return "loaded" === n.question.koState()
                    }))), n.setObservaleObj("koData", o.computed((function() {
                        return n.question.koHasValue() ? n.question.previewValue : []
                    }))), n.setObservaleObj("koInputTitle", o.observable()), n.setObservaleObj("koChooseFileCss", o.pureComputed((function() {
                        return n.question.getChooseFileCss()
                    }))), n.setCallbackFunc("ondrop", (function(e, t) {
                        n.question.onDrop(tt(t))
                    })), n.setCallbackFunc("ondragover", (function(e, t) {
                        n.question.onDragOver(tt(t))
                    })), n.setCallbackFunc("ondragenter", (function(e, t) {
                        n.question.onDragEnter(tt(t))
                    })), n.setCallbackFunc("ondragleave", (function(e, t) {
                        n.question.onDragLeave(tt(t))
                    })), n.setCallbackFunc("dochange", (function(e, t) {
                        n.question.doChange(tt(t))
                    })), n.setCallbackFunc("doclean", (function(e, t) {
                        n.question.doClean(tt(t))
                    })), n.setCallbackFunc("doremovefile", (function(e, t) {
                        n.question.doRemoveFile(e)
                    })), n.setCallbackFunc("dodownload", (function(e, t) {
                        return n.question.doDownloadFile(tt(t), e), !0
                    })), n
                }
                return Ms(t, e), t
            }(ws),
            Fs = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.updateState = function(e, t) {
                        n.koState(t.state), n.koInputTitle(n.inputTitle)
                    }, n.onUploadStateChanged.add(n.updateState), n.updateState(n, {
                        state: n.currentState
                    }), n
                }
                return Ms(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new Ns(this)
                }, t.prototype.dispose = function() {
                    this.onUploadStateChanged.remove(this.updateState), this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(kr);
        I.overrideClassCreator("file", (function() {
            return new Fs("")
        })), ln.Instance.registerQuestion("file", (function(e) {
            return new Fs(e)
        }));
        var Bs = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            zs = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return Bs(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Er);
        I.overrideClassCreator("html", (function() {
            return new zs("")
        })), ln.Instance.registerQuestion("html", (function(e) {
            return new zs(e)
        }));
        var Hs = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Qs = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.koVisibleRows = o.observableArray(), n.koVisibleColumns = o.observableArray(), n.koVisibleRows(n.visibleRows), n.koVisibleColumns(n.visibleColumns), n
                }
                return Hs(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.onColumnsChanged = function() {
                    e.prototype.onColumnsChanged.call(this), this.koVisibleColumns(this.visibleColumns)
                }, t.prototype.onRowsChanged = function() {
                    e.prototype.onRowsChanged.call(this), this.koVisibleRows(this.visibleRows)
                }, t.prototype.onSurveyLoad = function() {
                    e.prototype.onSurveyLoad.call(this), this.onRowsChanged()
                }, t.prototype.onMatrixRowCreated = function(e) {
                    new is(e)
                }, t.prototype.getVisibleRows = function() {
                    var t = e.prototype.getVisibleRows.call(this);
                    return this.koVisibleRows(t), t
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, this.koVisibleRows = void 0, this.koVisibleColumns = void 0, e.prototype.dispose.call(this)
                }, t
            }(Eo);
        I.overrideClassCreator("matrix", (function() {
            return new Qs("")
        })), ln.Instance.registerQuestion("matrix", (function(e) {
            var t = new Qs(e);
            return t.rows = ln.DefaultRows, t.columns = ln.DefaultColums, t
        }));
        var Us = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ws = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.koRecalc = o.observable(0), n.matrix.onRenderedTableCreatedCallback = function(e) {
                        n._tableImplementor && n._tableImplementor.dispose(), n._tableImplementor = new is(e)
                    }, n.matrix.onRenderedTableResetCallback = function() {
                        n.question.isDisposed || n.koRecalc(n.koRecalc() + 1)
                    }, n.matrix.onAddColumn = function(e) {
                        new is(e)
                    }, n.setObservaleObj("koTable", o.pureComputed((function() {
                        return n.koRecalc(), n.matrix.renderedTable
                    }))), n.setCallbackFunc("koCellAfterRender", (function(e, t) {
                        return n.cellAfterRender(e, t)
                    })), n.setCallbackFunc("koCellQuestionAfterRender", (function(e, t) {
                        return n.cellQuestionAfterRender(e, t)
                    })), n.setCallbackFunc("koAddRowClick", (function() {
                        n.addRow()
                    })), n.setCallbackFunc("koRemoveRowClick", (function(e) {
                        n.removeRow(e.row)
                    })), n.setCallbackFunc("koPanelAfterRender", (function(e, t) {
                        n.panelAfterRender(e, t)
                    })), n
                }
                return Us(t, e), Object.defineProperty(t.prototype, "matrix", {
                    get: function() {
                        return this.question
                    },
                    enumerable: !1,
                    configurable: !0
                }), t.prototype.getQuestionTemplate = function() {
                    return "matrixdynamic"
                }, t.prototype.cellAfterRender = function(e, t) {
                    var n = this;
                    this.question.survey && setTimeout((function() {
                        o.tasks && o.tasks.runEarly();
                        var r = jt.GetFirstNonTextElement(e);
                        if (r) {
                            var i = t,
                                s = {
                                    cell: i.cell,
                                    cellQuestion: i.question,
                                    htmlElement: r,
                                    row: i.row,
                                    column: i.cell ? i.cell.column : null
                                };
                            n.question.survey.matrixAfterCellRender(n.question, s)
                        }
                    }), 0)
                }, t.prototype.cellQuestionAfterRender = function(e, t) {
                    this.question.survey && setTimeout((function() {
                        o.tasks && o.tasks.runEarly();
                        var n = jt.GetFirstNonTextElement(e);
                        if (n) {
                            var r = t;
                            r.question.customWidget && (r.question.customWidget.afterRender(r.question, n), o.utils.domNodeDisposal.addDisposeCallback(n, (function() {
                                r.question.customWidget.willUnmount(r.question, n)
                            }))), o.utils.domNodeDisposal.addDisposeCallback(n, (function() {
                                r.question.beforeDestroyQuestionElement(n)
                            })), r.question.afterRenderQuestionElement(n)
                        }
                    }), 0)
                }, t.prototype.isAddRowTop = function() {
                    return !1
                }, t.prototype.isAddRowBottom = function() {
                    return !1
                }, t.prototype.addRow = function() {}, t.prototype.removeRow = function(e) {}, t.prototype.panelAfterRender = function(e, t) {
                    if (this.question && this.question.survey) {
                        var n = jt.GetFirstNonTextElement(e);
                        this.question.survey.afterRenderPanel(t, n)
                    }
                }, t.prototype.dispose = function() {
                    this._tableImplementor && this._tableImplementor.dispose(), this.matrix.onRenderedTableCreatedCallback = void 0, this.matrix.onRenderedTableResetCallback = void 0, this.matrix.onAddColumn = void 0, e.prototype.dispose.call(this)
                }, t
            }(ws),
            $s = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return Us(t, e), t.prototype.createRenderedTable = function() {
                    return new Gs(this)
                }, t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new Ws(this)
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this._implementor.dispose(), this._implementor = void 0
                }, t
            }(Rn),
            Gs = function(e) {
                function t() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return Us(t, e), t.prototype.createRenderedRow = function(e, t) {
                    void 0 === t && (t = !1);
                    var n = new bn(e, t);
                    return new is(n), n
                }, t
            }(xn);
        I.overrideClassCreator("matrixdropdown", (function() {
            return new $s("")
        })), ln.Instance.registerQuestion("matrixdropdown", (function(e) {
            var t = new $s(e);
            return t.choices = [1, 2, 3, 4, 5], t.rows = ln.DefaultRows, Sn.addDefaultColumns(t), t
        }));
        var Js = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ks = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.question.getKoPopupIsVisible = n.getKoPopupIsVisible, n
                }
                return Js(t, e), t.prototype.addRow = function() {
                    this.question.addRowUI()
                }, t.prototype.removeRow = function(e) {
                    this.question.removeRowUI(e)
                }, t.prototype.getKoPopupIsVisible = function(e) {
                    return o.observable(e.isDetailPanelShowing)
                }, t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.question.getKoPopupIsVisible = void 0
                }, t
            }(Ws),
            Zs = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return Js(t, e), t.prototype.createRenderedTable = function() {
                    return new Gs(this)
                }, t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new Ks(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Un);
        I.overrideClassCreator("matrixdynamic", (function() {
            return new Zs("")
        })), ln.Instance.registerQuestion("matrixdynamic", (function(e) {
            var t = new Zs(e);
            return t.choices = [1, 2, 3, 4, 5], t.rowCount = 2, Sn.addDefaultColumns(t), t
        }));
        var Xs = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ys = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    n.koRecalc = o.observable(0), n.setCallbackFunc("koAddPanelClick", (function() {
                        n.addPanel()
                    })), n.setCallbackFunc("koRemovePanelClick", (function(e) {
                        n.removePanel(e)
                    })), n.setCallbackFunc("koPrevPanelClick", (function() {
                        n.question.goToPrevPanel()
                    })), n.setCallbackFunc("koNextPanelClick", (function() {
                        n.question.goToNextPanel()
                    })), n.setObservaleObj("koCanAddPanel", o.pureComputed((function() {
                        return n.koRecalc(), n.question.canAddPanel
                    }))), n.setObservaleObj("koCanRemovePanel", o.pureComputed((function() {
                        return n.koRecalc(), n.question.canRemovePanel
                    }))), n.setObservaleObj("koIsPrevButton", o.pureComputed((function() {
                        return n.koRecalc(), n.question.isPrevButtonVisible
                    }))), n.setObservaleObj("koIsNextButton", o.pureComputed((function() {
                        return n.koRecalc(), n.question.isNextButtonVisible
                    }))), n.setObservaleObj("koIsRange", o.pureComputed((function() {
                        return n.koRecalc(), n.question.isRangeShowing
                    }))), n.setObservaleObj("koPanel", o.pureComputed((function() {
                        return n.koRecalc(), n.question.currentPanel
                    }))), n.setObservaleObj("koIsList", o.pureComputed((function() {
                        return n.koRecalc(), n.question.isRenderModeList
                    }))), n.setObservaleObj("koIsProgressTop", o.pureComputed((function() {
                        return n.koRecalc(), n.question.isProgressTopShowing
                    }))), n.setObservaleObj("koIsProgressBottom", o.pureComputed((function() {
                        return n.koRecalc(), n.question.isProgressBottomShowing
                    })));
                    var r = o.observable(n.question.currentIndex);
                    return r.subscribe((function(e) {
                        n.question.currentIndex = e
                    })), n.setObservaleObj("koRangeValue", r), n.setObservaleObj("koRangeMax", o.pureComputed((function() {
                        return n.koRecalc(), n.question.panelCount - 1
                    }))), n.setObservaleObj("koAddButtonCss", o.pureComputed((function() {
                        return n.koRecalc(), n.question.getAddButtonCss()
                    }))), n.setObservaleObj("koPrevButtonCss", o.pureComputed((function() {
                        return n.koRecalc(), n.question.getPrevButtonCss()
                    }))), n.setObservaleObj("koNextButtonCss", o.pureComputed((function() {
                        return n.koRecalc(), n.question.getNextButtonCss()
                    }))), n.setObservaleObj("koProgressText", o.pureComputed((function() {
                        return n.koRecalc(), n.question.progressText
                    }))), n.setObservaleObj("koProgress", o.pureComputed((function() {
                        return n.koRecalc(), n.question.progress
                    }))), n.setCallbackFunc("koPanelAfterRender", (function(e, t) {
                        n.panelAfterRender(e, t)
                    })), n.question.panelCountChangedCallback = function() {
                        n.onPanelCountChanged()
                    }, n.question.renderModeChangedCallback = function() {
                        n.onRenderModeChanged()
                    }, n.question.currentIndexChangedCallback = function() {
                        n.onCurrentIndexChanged()
                    }, n
                }
                return Xs(t, e), t.prototype.onPanelCountChanged = function() {
                    this.onCurrentIndexChanged()
                }, t.prototype.onRenderModeChanged = function() {
                    this.onCurrentIndexChanged()
                }, t.prototype.onCurrentIndexChanged = function() {
                    this.question.isDisposed || (this.koRecalc(this.koRecalc() + 1), this.question.koRangeValue(this.question.currentIndex))
                }, t.prototype.addPanel = function() {
                    this.question.addPanelUI()
                }, t.prototype.removePanel = function(e) {
                    this.question.isRenderModeList || (e = this.question.currentPanel), this.question.removePanelUI(e)
                }, t.prototype.panelAfterRender = function(e, t) {
                    if (this.question && this.question.survey) {
                        var n = jt.GetFirstNonTextElement(e);
                        this.question.survey.afterRenderPanel(t, n)
                    }
                }, t.prototype.dispose = function() {
                    this.question.panelCountChangedCallback = void 0, this.question.renderModeChangedCallback = void 0, this.question.currentIndexChangedCallback = void 0, e.prototype.dispose.call(this)
                }, t
            }(ws),
            ea = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return Xs(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new Ys(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(ai);
        I.overrideClassCreator("paneldynamic", (function() {
            return new ea("")
        })), ln.Instance.registerQuestion("paneldynamic", (function(e) {
            return new ea(e)
        }));
        var ta = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            na = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.setCallbackFunc("koOnBlur", (function(e, t) {
                        return n.question.onBlur(t), !0
                    })), n.setCallbackFunc("koOnKeyDown", (function(e, t) {
                        return n.question.onKeyDown(t), !0
                    })), n.setCallbackFunc("koOnKeyUp", (function(e, t) {
                        return n.question.onKeyUp(t), !0
                    })), n.setCallbackFunc("koOnChange", (function(e, t) {
                        return n.question.onChange(t), !0
                    })), n.setCallbackFunc("koOnCompositeUpdate", (function(e, t) {
                        return n.question.onCompositionUpdate(t), !0
                    })), n.setObservaleObj("koReadOnlyValue", o.computed((function() {
                        return n.question.value
                    }))), n
                }
                return ta(t, e), t
            }(ws),
            oa = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return ta(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new na(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Do);
        I.overrideClassCreator("text", (function() {
            return new oa("")
        })), ln.Instance.registerQuestion("text", (function(e) {
            return new oa(e)
        }));
        var ra = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ia = function(e) {
                function t(t, n) {
                    return void 0 === t && (t = null), void 0 === n && (n = null), e.call(this, t, n) || this
                }
                return ra(t, e), t.prototype.createEditor = function(e) {
                    return new oa(e)
                }, t
            }(Fo),
            sa = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.koRecalc = o.observable(0), n.setObservaleObj("koItemCss", o.pureComputed((function() {
                        return n.koRecalc(), n.question.getItemCss()
                    }))), n.setObservaleObj("koItemTitleCss", o.pureComputed((function() {
                        return n.koRecalc(), n.question.getItemTitleCss()
                    }))), n
                }
                return ra(t, e), t
            }(ws),
            aa = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.koRows = o.observableArray(n.getRows()), n.colCountChangedCallback = function() {
                        n.onColCountChanged()
                    }, n.onColCountChanged(), n
                }
                return ra(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new sa(this)
                }, t.prototype.onColCountChanged = function() {
                    this.koRows(this.getRows())
                }, t.prototype.createTextItem = function(e, t) {
                    return new ia(e, t)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, this.koRows = void 0, e.prototype.dispose.call(this)
                }, t
            }(Bo);
        I.overrideClassCreator("multipletextitem", (function() {
            return new ia("")
        })), I.overrideClassCreator("multipletext", (function() {
            return new aa("")
        })), ln.Instance.registerQuestion("multipletext", (function(e) {
            var t = new aa(e);
            return Bo.addDefaultItems(t), t
        }));
        var la = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ua = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return la(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new Ts(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Ir);
        I.overrideClassCreator("radiogroup", (function() {
            return new ua("")
        })), ln.Instance.registerQuestion("radiogroup", (function(e) {
            var t = new ua(e);
            return t.choices = ln.DefaultChoices, t
        }));
        var ca = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            pa = function(e) {
                function t(t) {
                    var n = e.call(this, t) || this;
                    return n.onCreated(), n
                }
                return ca(t, e), t.prototype.onCreated = function() {}, t
            }(ws),
            da = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return ca(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new pa(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Ar);
        I.overrideClassCreator("rating", (function() {
            return new da("")
        })), ln.Instance.registerQuestion("rating", (function(e) {
            return new da(e)
        }));
        var ha = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            fa = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return ha(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.onSwitchClick = function(t, n) {
                    return e.prototype.onSwitchClickModel.call(this, tt(n))
                }, t.prototype.onTrueLabelClick = function(e, t) {
                    return this.onLabelClick(t, !0)
                }, t.prototype.onFalseLabelClick = function(e, t) {
                    return this.onLabelClick(t, !1)
                }, t.prototype.onKeyDown = function(e, t) {
                    return this.onKeyDownCore(t)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Mr);
        I.overrideClassCreator("boolean", (function() {
            return new fa("")
        })), ln.Instance.registerQuestion("boolean", (function(e) {
            return new fa(e)
        }));
        var ma = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            ga = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return ma(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(or);
        I.overrideClassCreator("empty", (function() {
            return new ga("")
        }));
        var ya = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            va = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return ya(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(pn);
        I.overrideClassCreator("expression", (function() {
            return new va("")
        })), ln.Instance.registerQuestion("expression", (function(e) {
            return new va(e)
        }));
        var ba = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            xa = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return ba(t, e), t.prototype.getKoValue = function() {
                    return this.question.renderedValue
                }, t
            }(Ts),
            Ca = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return ba(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new xa(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(zr);
        I.overrideClassCreator("imagepicker", (function() {
            return new Ca("")
        })), ln.Instance.registerQuestion("imagepicker", (function(e) {
            return new Ca(e)
        }));
        var wa = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Pa = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return wa(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }($r);
        I.overrideClassCreator("image", (function() {
            return new Pa("")
        })), ln.Instance.registerQuestion("image", (function(e) {
            return new Pa(e)
        }));
        var Va = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ta = function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                return Va(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(ei);
        I.overrideClassCreator("signaturepad", (function() {
            return new Ta("")
        })), ln.Instance.registerQuestion("signaturepad", (function(e) {
            return new Ta(e)
        }));
        var ka = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Sa = function(e) {
                function t(t, n) {
                    return e.call(this, t, n) || this
                }
                return ka(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Si),
            Oa = function(e) {
                function t(t, n) {
                    return e.call(this, t, n) || this
                }
                return ka(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new ws(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }, t
            }(Ei);
        Ti.Instance.onCreateCustom = function(e, t) {
            return new Sa(e, t)
        }, Ti.Instance.onCreateComposite = function(e, t) {
            return new Oa(e, t)
        };
        var Ea = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Ra = (function(e) {
                function t(t) {
                    return e.call(this, t) || this
                }
                Ea(t, e), t.prototype.onBaseCreating = function() {
                    e.prototype.onBaseCreating.call(this), this._implementor = new Ts(this)
                }, t.prototype.dispose = function() {
                    this._implementor.dispose(), this._implementor = void 0, e.prototype.dispose.call(this)
                }
            }(Ui), n(78));
        o.components.register("sv-action", {
            viewModel: {
                createViewModel: function(e) {
                    var t = e.item;
                    return new is(t), e
                }
            },
            template: Ra
        });
        var Ia = n(79);
        o.components.register("sv-action-bar-item", {
            viewModel: {
                createViewModel: function(e) {
                    return e
                }
            },
            template: Ia
        });
        var _a = n(80);
        o.components.register("sv-action-bar-item-dropdown", {
            viewModel: {
                createViewModel: function(e) {
                    return new Rt(e.item)
                }
            },
            template: _a
        });
        var qa = n(81);
        o.components.register("sv-action-bar-separator", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = e.item;
                    return n ? {
                        css: n.innerCss
                    } : {}
                }
            },
            template: qa
        });
        var Da = function() {
                var e = function(t, n) {
                    return (e = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        })(t, n)
                };
                return function(t, n) {
                    if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                    function o() {
                        this.constructor = t
                    }
                    e(t, n), t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
                }
            }(),
            Aa = n(77),
            ja = function(e) {
                function t(t, n) {
                    void 0 === n && (n = !0);
                    var r = e.call(this, t) || this;
                    return r.model = t, r.handleClick = n, r.itemsSubscription = o.computed((function() {
                        (t.renderedActions || t.items || t.actions).forEach((function(e) {
                            e.stateItem ? new is(e.stateItem) : new is(e)
                        }))
                    })), r
                }
                return Da(t, e), t.prototype.dispose = function() {
                    e.prototype.dispose.call(this), this.itemsSubscription.dispose(), this.model.resetResponsivityManager()
                }, t
            }(is);
        o.components.register("sv-action-bar", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = void 0 === e.handleClick || e.handleClick,
                        o = e.model,
                        r = t.element.nextElementSibling;
                    return e.model.initResponsivityManager(r), new ja(o, n)
                }
            },
            template: Aa
        });
        var La = n(82);
        o.components.register("sv-boolean-checkbox", {
            viewModel: {
                createViewModel: function(e, t) {
                    return {
                        question: e.question
                    }
                }
            },
            template: La
        }), Jt.Instance.registerRenderer("boolean", "checkbox", "sv-boolean-checkbox");
        var Ma = n(83);
        o.components.register("sv-boolean-radio-item", {
            viewModel: {
                createViewModel: function(e) {
                    return e.handleChange = function() {
                        e.question.value = e.value
                    }, e
                }
            },
            template: Ma
        });
        var Na = n(84);
        o.components.register("sv-boolean-radio", {
            viewModel: {
                createViewModel: function(e, t) {
                    return {
                        question: e.question
                    }
                }
            },
            template: Na
        }), Jt.Instance.registerRenderer("boolean", "radio", "sv-boolean-radio");
        var Fa = n(85),
            Ba = function(e, t) {
                this.question = e, this.targetElement = t
            };
        o.components.register("sv-panel", {
            viewModel: {
                createViewModel: function(e, t) {
                    return new Ba(e.question, t.element.parentElement)
                }
            },
            template: Fa
        });
        var za = n(86),
            Ha = function() {
                function e(e) {
                    this.popupViewModel = e, e.initializePopupContainer(), new is(e.model), new is(e), e.container.innerHTML = za, e.model.onVisibilityChanged.add((function(t, n) {
                        n.isVisible && (o.tasks.runEarly(), e.updateOnShowing())
                    })), o.applyBindings(e, e.container)
                }
                return e.prototype.dispose = function() {
                    o.cleanNode(this.popupViewModel.container), this.popupViewModel.dispose()
                }, e
            }();
        s.showModal = function(e, t, n, o, r, i, s) {
            return void 0 === s && (s = "popup"),
                function(e) {
                    e.onHide = function() {
                        n.dispose()
                    };
                    var t = Fi(e),
                        n = new Ha(t);
                    return t.model.isVisible = !0, t
                }(Pt(e, t, n, o, void 0, void 0, r, i, s))
        }, o.components.register("sv-popup", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = Bi(o.unwrap(e.model), t.element.parentElement);
                    return new Ha(n)
                }
            },
            template: "<div></div>"
        });
        var Qa = n(87),
            Ua = function() {
                function e(e, t) {
                    var n = this;
                    this.survey = e, this.scrollButtonCssKo = void 0, this.hasScroller = o.observable(!1), this.updateScroller = void 0, this.progressButtonsModel = new ui(e), this.updateScroller = setInterval((function() {
                        var o = t.querySelector("." + e.css.progressButtonsListContainer);
                        o && n.hasScroller(o.scrollWidth > o.offsetWidth)
                    }), 100)
                }
                return e.prototype.isListElementClickable = function(e) {
                    return this.progressButtonsModel.isListElementClickable(e())
                }, e.prototype.getListElementCss = function(e) {
                    return this.progressButtonsModel.getListElementCss(e())
                }, e.prototype.clickListElement = function(e) {
                    this.progressButtonsModel.clickListElement(e())
                }, e.prototype.getScrollButtonCss = function(e) {
                    var t = this;
                    return this.scrollButtonCssKo = o.computed((function() {
                        return t.progressButtonsModel.getScrollButtonCss(t.hasScroller(), e)
                    }), this), this.scrollButtonCssKo
                }, e.prototype.clickScrollButton = function(e, t) {
                    e.scrollLeft += 70 * (t ? -1 : 1)
                }, e.prototype.dispose = function() {
                    void 0 !== this.updateScroller && (clearInterval(this.updateScroller), this.updateScroller = void 0), void 0 !== this.scrollButtonCssKo && (this.scrollButtonCssKo.dispose(), this.scrollButtonCssKo = void 0)
                }, e
            }();
        o.components.register("sv-progress-buttons", {
            viewModel: {
                createViewModel: function(e, t) {
                    return new Ua(e.model, t.element.nextElementSibling)
                }
            },
            template: Qa
        });
        var Wa = n(88),
            $a = function() {
                function e(e) {
                    this.model = e
                }
                return e.prototype.getProgressTextInBarCss = function(e) {
                    return li.getProgressTextInBarCss(e)
                }, e.prototype.getProgressTextUnderBarCss = function(e) {
                    return li.getProgressTextUnderBarCss(e)
                }, e
            }();
        o.components.register("sv-progress-progress", {
            viewModel: {
                createViewModel: function(e) {
                    return new $a(e.model)
                }
            },
            template: Wa
        });
        var Ga = "\x3c!-- ko component: { name: 'sv-progress-progress', params: $data } --\x3e\x3c!-- /ko --\x3e";
        o.components.register("sv-progress-pages", {
            viewModel: {
                createViewModel: function(e) {
                    return new $a(e.model)
                }
            },
            template: Ga
        }), o.components.register("sv-progress-questions", {
            viewModel: {
                createViewModel: function(e) {
                    return new $a(e.model)
                }
            },
            template: Ga
        }), o.components.register("sv-progress-correctQuestions", {
            viewModel: {
                createViewModel: function(e) {
                    return new $a(e.model)
                }
            },
            template: Ga
        }), o.components.register("sv-progress-requiredQuestions", {
            viewModel: {
                createViewModel: function(e) {
                    return new $a(e.model)
                }
            },
            template: Ga
        });
        var Ja = n(89);
        o.components.register(mo.TemplateRendererComponentName, {
            viewModel: {
                createViewModel: function(e) {
                    return e
                }
            },
            template: Ja
        }), o.components.register("survey-element-title", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = e.element,
                        o = t.element,
                        r = document.createElement(n.titleTagName),
                        i = n.titleAriaLabel ? "'aria-label': element.titleAriaLabel," : "",
                        s = "css: element.cssTitle, attr: { ".concat(i, " id: element.ariaTitleId, tabindex: element.titleTabIndex, 'aria-expanded': element.titleAriaExpanded, role:'columnheader' }");
                    n.hasTitleEvents && (s += ", key2click"), r.setAttribute("data-bind", s), r.innerHTML = "\x3c!-- ko component: { name: 'sv-title-actions', params: {element: element } } --\x3e\x3c!-- /ko --\x3e";
                    var a = o.nextSibling;
                    return o.parentNode.insertBefore(document.createComment(" ko if: element.hasTitle "), a), o.parentNode.insertBefore(r, a), o.parentNode.insertBefore(document.createComment(" /ko "), a), o.parentNode.removeChild(a), {
                        element: n
                    }
                }
            },
            template: "<span></span>"
        });
        var Ka = n(90);
        o.components.register("survey-element-title-content", {
            viewModel: {
                createViewModel: function(e, t) {
                    return {
                        element: e.element
                    }
                }
            },
            template: Ka
        });
        var Za = n(91);
        o.components.register("sv-title-actions", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = e.element;
                    return {
                        element: n,
                        toolbar: n.getTitleToolbar()
                    }
                }
            },
            template: Za
        }), Jt.Instance.registerRenderer("element", "title-actions", "sv-title-actions");
        var Xa = n(92),
            Ya = function() {
                function e(e) {
                    this.locString = e
                }
                return Object.defineProperty(e.prototype, "koHasHtml", {
                    get: function() {
                        return this.locString.koHasHtml()
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(e.prototype, "editValue", {
                    get: function() {
                        return this.locString.koRenderedHtml()
                    },
                    set: function(e) {
                        this.locString.searchElement = void 0, this.locString.text = e
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.onInput = function(e, t) {
                    e.editValue = t.target.innerText
                }, e.prototype.onClick = function(e, t) {
                    t.stopPropagation()
                }, e.prototype.dispose = function() {
                    this.locString.onSearchChanged = void 0
                }, e
            }();

        function el(e, t) {
            for (; e.childNodes.length > 1;) e.removeChild(e.childNodes[1]);
            e.childNodes[0].textContent = t.renderedHtml
        }
        o.components.register(d.editableRenderer, {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = e.locString;
                    return function(e, t) {
                        t.onSearchChanged = function() {
                            if (null == t.searchElement && (t.searchElement = function(e) {
                                    for (; e && "SPAN" !== e.nodeName;) {
                                        var t = e.parentElement.getElementsByClassName("sv-string-editor");
                                        e = t.length > 0 ? t[0] : void 0
                                    }
                                    return e && e.childNodes.length > 0 ? e : null
                                }(e)), null != t.searchElement) {
                                var n = t.searchElement;
                                if (t.highlightDiv || (t.highlightDiv = document.createElement("span"), t.highlightDiv.style.backgroundColor = "lightgray"), null != t.searchIndex) {
                                    el(n, t);
                                    var o = document.createRange();
                                    o.setStart(n.childNodes[0], t.searchIndex), o.setEnd(n.childNodes[0], t.searchIndex + t.searchText.length), o.surroundContents(t.highlightDiv)
                                } else el(n, t), t.searchElement = void 0
                            }
                        }
                    }(t.element, n), new Ya(n)
                }
            },
            template: Xa
        });
        var tl = n(93);
        o.components.register("sv-string-viewer", {
            viewModel: {
                createViewModel: function(e, t) {
                    return {
                        locString: e.locString
                    }
                }
            },
            template: tl
        });
        var nl = n(94);
        o.components.register("sv-logo-image", {
            viewModel: {
                createViewModel: function(e) {
                    return {
                        survey: e
                    }
                }
            },
            template: nl
        });
        var ol = n(95);
        o.components.register("sv-skeleton", {
            viewModel: {
                createViewModel: function(e, t) {
                    return {
                        element: e.element
                    }
                }
            },
            template: ol
        });
        var rl = n(96);
        o.components.register("sv-rating-dropdown", {
            viewModel: {
                createViewModel: function(e, t) {
                    return {
                        question: e.question
                    }
                }
            },
            template: rl
        }), Jt.Instance.registerRenderer("rating", "dropdown", "sv-rating-dropdown");
        var il = n(97);
        o.components.register("sv-dropdown", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = e.question;
                    return n.dropdownListModel || (n.dropdownListModel = new wo(e.question)), new is(n.dropdownListModel), {
                        question: n,
                        model: n.dropdownListModel,
                        click: function(e, t) {
                            var o;
                            null === (o = n.dropdownListModel) || void 0 === o || o.onClick(t)
                        },
                        clear: function(e, t) {
                            var o;
                            null === (o = n.dropdownListModel) || void 0 === o || o.onClear(t)
                        },
                        keyhandler: function(e, t) {
                            var o;
                            return null === (o = n.dropdownListModel) || void 0 === o || o.keyHandler(t), !0
                        },
                        blur: function(e, t) {
                            var o;
                            null === (o = n.dropdownListModel) || void 0 === o || o.onBlur(t)
                        }
                    }
                }
            },
            template: il
        });
        var sl = n(98);
        o.components.register("sv-dropdown-select", {
            viewModel: {
                createViewModel: function(e, t) {
                    e.question.choices.forEach((function(e) {
                        new is(e)
                    }));
                    return {
                        question: e.question,
                        click: function(t, n) {
                            e.question.onClick(n)
                        },
                        keyup: function(t, n) {
                            e.question.onKeyUp(n)
                        }
                    }
                }
            },
            template: sl
        }), Jt.Instance.registerRenderer("dropdown", "select", "sv-dropdown-select");
        var al = n(99);
        o.components.register("sv-tagbox-item", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = e.item;
                    return new is(n), {
                        item: n,
                        question: e.question,
                        removeItem: function(e, t) {
                            e.question.dropdownListModel.deselectItem(e.item.value), t.stopPropagation()
                        }
                    }
                }
            },
            template: al
        });
        var ll = n(100);
        o.components.register("sv-tagbox", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = e.question;
                    return n.dropdownListModel || (n.dropdownListModel = new pr(n)), new is(n.dropdownListModel), {
                        question: n,
                        model: n.dropdownListModel,
                        click: function(e, t) {
                            var o;
                            null === (o = n.dropdownListModel) || void 0 === o || o.onClick(t)
                        },
                        clear: function(e, t) {
                            var o;
                            null === (o = n.dropdownListModel) || void 0 === o || o.onClear(t)
                        },
                        keyhandler: function(e, t) {
                            var o;
                            return null === (o = n.dropdownListModel) || void 0 === o || o.keyHandler(t), !0
                        },
                        blur: function(e, t) {
                            var o;
                            null === (o = n.dropdownListModel) || void 0 === o || o.onBlur(t)
                        },
                        inputKeyHandler: function(e, t) {
                            var o;
                            return null === (o = n.dropdownListModel) || void 0 === o || o.inputKeyHandler(t), !0
                        }
                    }
                }
            },
            template: ll
        });
        var ul = n(102);
        o.components.register("sv-list-item", {
            viewModel: {
                createViewModel: function(e, t) {
                    return new is(e.item), {
                        item: e.item,
                        model: e.model,
                        itemClick: function(e, t) {
                            e.model.onItemClick(e.item), t.stopPropagation()
                        }
                    }
                }
            },
            template: ul
        });
        var cl = n(101);
        o.components.register("sv-list", {
            viewModel: {
                createViewModel: function(e, t) {
                    var n = e.model,
                        r = new ja(n);
                    return n.initListContainerHtmlElement(t.element), {
                        model: n,
                        dispose: function() {
                            r.dispose()
                        },
                        afterItemRender: function(e, t) {
                            o.tasks && o.tasks.runEarly(), n.onLastItemRended(t)
                        }
                    }
                }
            },
            template: cl
        });
        var pl = n(103);
        o.components.register("sv-svg-icon", {
            viewModel: {
                createViewModel: function(e, t) {
                    return o.computed((function() {
                        var n = o.unwrap(e.iconName),
                            r = t.element.querySelector && t.element.querySelector("svg") || t.element.nextElementSibling;
                        n && Ge(o.unwrap(e.size), o.unwrap(e.width), o.unwrap(e.height), n, r, o.unwrap(e.title))
                    })), {
                        hasIcon: e.iconName,
                        css: e.css,
                        title: e.title
                    }
                }
            },
            template: pl
        });
        var dl = n(104);
        o.components.register("sv-matrix-remove-button", {
            viewModel: {
                createViewModel: function(e) {
                    return e.item.data
                }
            },
            template: dl
        });
        var hl = n(105);
        o.components.register("sv-matrix-detail-button", {
            viewModel: {
                createViewModel: function(e, t) {
                    return e.item.data
                }
            },
            template: hl
        });
        var fl = n(106);
        o.components.register("sv-matrix-drag-drop-icon", {
            viewModel: {
                createViewModel: function(e, t) {
                    return e.item.data
                }
            },
            template: fl
        });
        var ml = n(107),
            gl = function(e) {
                this.model = e
            };
        o.components.register("sv-button-group-item", {
            viewModel: {
                createViewModel: function(e) {
                    var t = new $i(e.question, e.item, e.index());
                    return new gl(t)
                }
            },
            template: ml
        });
        var yl = n(108),
            vl = function(e) {
                var t = this;
                this.question = e, this.afterRender = function(e) {
                    var n = e.filter((function(e) {
                        return e instanceof HTMLElement
                    }))[0];
                    t.tooltipManager = new ns(n), o.utils.domNodeDisposal.addDisposeCallback(e[1], (function() {
                        t.tooltipManager.dispose()
                    }))
                }
            };
        o.components.register("sv-tooltip-error", {
            viewModel: {
                createViewModel: function(e, t) {
                    return new vl(e.question)
                }
            },
            template: yl
        });
        var bl = n(109);
        o.components.register("sv-nav-btn", {
            viewModel: {
                createViewModel: function(e, t) {
                    return e
                }
            },
            template: bl
        });
        var xl = n(110),
            Cl = n(111),
            wl = n(112),
            Pl = n(113),
            Vl = n(114);
        o.components.register("sv-paneldynamic-add-btn", {
            viewModel: {
                createViewModel: function(e, t) {
                    return !!e.item && e.item.data || e
                }
            },
            template: xl
        }), o.components.register("sv-paneldynamic-next-btn", {
            viewModel: {
                createViewModel: function(e, t) {
                    return !!e.item && e.item.data || e
                }
            },
            template: Cl
        }), o.components.register("sv-paneldynamic-prev-btn", {
            viewModel: {
                createViewModel: function(e, t) {
                    return !!e.item && e.item.data || e
                }
            },
            template: wl
        }), o.components.register("sv-paneldynamic-progress-text", {
            viewModel: {
                createViewModel: function(e, t) {
                    return !!e.item && e.item.data || e
                }
            },
            template: Pl
        }), o.components.register("sv-paneldynamic-remove-btn", {
            viewModel: {
                createViewModel: function(e, t) {
                    return !!e.item && e.item.data || e
                }
            },
            template: Vl
        });
        var Tl = n(115);
        o.components.register("sv-brand-info", {
            viewModel: {
                createViewModel: function(e, t) {
                    return {}
                }
            },
            template: Tl
        }), us(o, mo.platform);
        u.locales.ar = {
            pagePrevText: "السابق",
            pageNextText: "التالي",
            completeText: "إرسال البيانات",
            previewText: "معاينة",
            editText: "تعديل",
            startSurveyText: "بداية",
            otherItemText: "نص آخر",
            noneItemText: "لا شيء",
            selectAllItemText: "اختر الكل",
            progressText: "{1} صفحة {0} من",
            panelDynamicProgressText: "سجل {0} من {1}",
            questionsProgressText: "تمت الإجابة على أسئلة {0} / {1}",
            emptySurvey: "لا توجد صفحة مرئية أو سؤال في النموذج",
            completingSurvey: "شكرا لكم لاستكمال النموذج!",
            completingSurveyBefore: "تظهر سجلاتنا أنك قد أكملت هذا الاستطلاع بالفعل.",
            loadingSurvey: "...يتم تحميل النموذج",
            placeholder: "...اختر",
            value: "القيمة",
            requiredError: ".يرجى الإجابة على السؤال",
            requiredErrorInPanel: "الرجاء الإجابة على سؤال واحد على الأقل.",
            requiredInAllRowsError: "يرجى الإجابة على الأسئلة في جميع الصفوف",
            numericError: "يجب أن تكون القيمة رقمية.",
            textMinLength: "الرجاء إدخال ما لا يقل عن {0} حروف",
            textMaxLength: "الرجاء إدخال أقل من {0} حروف",
            textMinMaxLength: "يرجى إدخال أكثر من {0} وأقل من {1} حروف",
            minRowCountError: "يرجى ملء ما لا يقل عن {0} الصفوف",
            minSelectError: "يرجى تحديد ما لا يقل عن {0} المتغيرات",
            maxSelectError: "يرجى تحديد ما لا يزيد عن {0} المتغيرات",
            numericMinMax: "و'{0}' يجب أن تكون مساوية أو أكثر من {1} وتساوي أو أقل من {2}ا",
            numericMin: "و'{0}' يجب أن تكون مساوية أو أكثر من {1}ا",
            numericMax: "و'{0}' يجب أن تكون مساوية أو أقل من {1}ا",
            invalidEmail: "الرجاء إدخال بريد الكتروني صحيح",
            invalidExpression: "يجب أن يعرض التعبير: {0} 'صواب'.",
            urlRequestError: "طلب إرجاع خطأ '{0}'. {1}ا",
            urlGetChoicesError: "عاد طلب البيانات فارغ أو 'المسار' غير صحيح ",
            exceedMaxSize: "ينبغي ألا يتجاوز حجم الملف {0}ا",
            otherRequiredError: "الرجاء إدخال قيمة أخرى",
            uploadingFile: "تحميل الملف الخاص بك. يرجى الانتظار عدة ثوان والمحاولة لاحقًا",
            loadingFile: "جار التحميل...",
            chooseFile: "اختر الملفات...",
            noFileChosen: "لم تقم باختيار ملف",
            confirmDelete: "هل تريد حذف السجل؟",
            keyDuplicationError: "يجب أن تكون هذه القيمة فريدة.",
            addColumn: "أضف العمود",
            addRow: "اضافة صف",
            removeRow: "إزالة صف",
            addPanel: "اضف جديد",
            removePanel: "إزالة",
            choices_Item: "بند",
            matrix_column: "عمود",
            matrix_row: "صف",
            savingData: "يتم حفظ النتائج على الخادم ...",
            savingDataError: "حدث خطأ ولم نتمكن من حفظ النتائج.",
            savingDataSuccess: "تم حفظ النتائج بنجاح!",
            saveAgainButton: "حاول مجددا",
            timerMin: "دقيقة",
            timerSec: "ثانية",
            timerSpentAll: "لقد أنفقت {0} على هذه الصفحة و {1} إجمالاً.",
            timerSpentPage: "لقد أنفقت {0} على هذه الصفحة.",
            timerSpentSurvey: "لقد أنفقت {0} إجمالاً.",
            timerLimitAll: "لقد أنفقت {0} من {1} في هذه الصفحة و {2} من إجمالي {3}.",
            timerLimitPage: "لقد أنفقت {0} من {1} في هذه الصفحة.",
            timerLimitSurvey: "لقد أنفقت {0} من إجمالي {1}.",
            clearCaption: "واضح",
            chooseFileCaption: "اختر ملف",
            removeFileCaption: "قم بإزالة هذا الملف",
            booleanCheckedLabel: "نعم",
            booleanUncheckedLabel: "لا",
            confirmRemoveFile: "هل أنت متأكد أنك تريد إزالة هذا الملف: {0}؟",
            confirmRemoveAllFiles: "هل أنت متأكد أنك تريد إزالة كافة الملفات؟",
            questionTitlePatternText: "عنوان السؤال"
        }, u.localeNames.ar = "العربية";
        u.locales.eu = {
            pagePrevText: "Aurrekoa",
            pageNextText: "Hurrengoa",
            completeText: "Bukatu",
            previewText: "Aurrebista",
            editText: "Editatu",
            startSurveyText: "Hasi",
            otherItemText: "Beste bat (zehaztu)",
            noneItemText: "Bat ere ez",
            selectAllItemText: "Guztia hautatu",
            progressText: "{1}-(e)tik {0} orrialde",
            panelDynamicProgressText: "{0} errigistro {1}-(e)tik",
            questionsProgressText: "Erantzundako galderak {0}/{1}",
            emptySurvey: "Ez dago orrialde bistaragarririk edo ez dago galderarik.",
            completingSurvey: "Eskerrik asko galdetegia erantzuteagatik!",
            completingSurveyBefore: "Gure datuek diote dagoeneko galdetegia erantzun duzula.",
            loadingSurvey: "Galdetegia kargatzen...",
            placeholder: "Hautatu...",
            value: "balioa",
            requiredError: "Mesedez, galdera erantzun.",
            requiredErrorInPanel: "Mesedez, gutxienez galdera bat erantzun.",
            requiredInAllRowsError: "Mesedez, errenkadako galdera guztiak erantzun.",
            numericError: "Estimazioa zenbakizkoa izan behar du.",
            minError: "Balioa ez da {0} baino txikiagoa izan behar",
            maxError: "Balioa ez da {0} baino handiagoa izan behar",
            textMinLength: "Mesedez, gutxienez {0} karaktere erabili behar dira.",
            textMaxLength: "Mesedez, gehienez {0} karaktere erabili behar dira.",
            textMinMaxLength: "Mesedez, gehienez {0} eta gutxienez {1} karaktere erabili behar dira.",
            minRowCountError: "Mesedez, gutxienez {0} errenkada bete.",
            minSelectError: "Mesedez, gutxienez {0} aukera hautatu.",
            maxSelectError: "Mesedez, {0} aukera baino gehiago ez hautatu.",
            numericMinMax: "El '{0}' debe de ser igual o más de {1} y igual o menos de {2}",
            numericMin: "'{0}' {1} baino handiagoa edo berdin izan behar da",
            numericMax: "'{0}' {1} baino txikiago edo berdin izan behar da",
            invalidEmail: "Mesedez, baliozko emaila idatz ezazu.",
            invalidExpression: "{0} adierazpenak 'egiazkoa' itzuli beharko luke.",
            urlRequestError: "Eskaerak '{0}' errorea itzuli du. {1}",
            urlGetChoicesError: "La solicitud regresó vacío de data o la propiedad 'trayectoria' no es correcta",
            exceedMaxSize: "Fitxategiaren tamaina ez da {0} baino handiagoa izan behar.",
            otherRequiredError: "Mesedez, beste estimazioa gehitu.",
            uploadingFile: "Zure fitxategia igotzen ari da. Mesedez, segundo batzuk itxaron eta saiatu berriro.",
            loadingFile: "Kargatzen...",
            chooseFile: "Fitxategia(k) hautatu...",
            noFileChosen: "Ez da inolako fitxategirik hautatu",
            confirmDelete: "¿Erregistroa borratu nahi al duzu?",
            keyDuplicationError: "Balio hau bakarra izan behar du.",
            addColumn: "Zutabe bat gehitu",
            addRow: "Errenkada bat gehitu",
            removeRow: "Errenkada bat kendu",
            emptyRowsText: "Ez dago errenkadarik.",
            addPanel: "Berria gehitu",
            removePanel: "Kendu",
            choices_Item: "artikulua",
            matrix_column: "Zutabea",
            matrix_row: "Errenkada",
            multipletext_itemname: "testua",
            savingData: "Erantzunak zerbitzarian gordetzen ari dira...",
            savingDataError: "Erroreren bat gertatu eta erantzunak ez dira zerbitzarian gorde ahal izan.",
            savingDataSuccess: "Erantzunak egoki gorde dira!",
            saveAgainButton: "Berriro saiatu.",
            timerMin: "min",
            timerSec: "seg",
            timerSpentAll: "{0} erabili duzu orrialde honetan eta orotara {1}.",
            timerSpentPage: "Zuk {0} erabili duzu.",
            timerSpentSurvey: "Orotara gastatu duzu.",
            timerLimitAll: "{0} gastatu duzu {1}-(e)tik orrialde honetan eta orotara {2} {3}-(e)tik.",
            timerLimitPage: "{0} gastatu duzu orrialde honetan {1}-(e)tik.",
            timerLimitSurvey: "Zuk orotara {0} gastatu duzu {1}-(e)tik.",
            clearCaption: "Hustu",
            signaturePlaceHolder: "Sinatu hemen",
            chooseFileCaption: "Fitxategia hautatu",
            removeFileCaption: "Fitxategi hau ezabatu",
            booleanCheckedLabel: "Bai",
            booleanUncheckedLabel: "Ez",
            confirmRemoveFile: "Ziur zaude hurrengo fitxategia ezabatu nahi duzula: {0}?",
            confirmRemoveAllFiles: "Ziur al zaude fitxategi guztiak ezabatu nahi dituzula?",
            questionTitlePatternText: "Galderaren izenburua",
            modalCancelButtonText: "Ezeztatu",
            modalApplyButtonText: "Ezarri"
        }, u.localeNames.eu = "Euskara";
        u.locales.bg = {
            pagePrevText: "Назад",
            pageNextText: "Напред",
            completeText: "Край",
            previewText: "Визуализация",
            editText: "редактиране",
            startSurveyText: "Начало",
            otherItemText: "Друго (опишете)",
            noneItemText: "Нито един",
            selectAllItemText: "Всички",
            progressText: "стр. {0}, общо стр. {1}",
            panelDynamicProgressText: "Запис {0} от {1}",
            questionsProgressText: "Отговорени на {0} / {1} въпроса",
            emptySurvey: "Анкетата не съдържа видими страници или въпроси.",
            completingSurvey: "Благодарим ви за участието в анкетата!",
            completingSurveyBefore: "Изглежда, че вие вече сте попълнили анкетата.",
            loadingSurvey: "Зареждане на анкетата...",
            placeholder: "Изберете...",
            value: "value",
            requiredError: "Моля, отговорете на следния въпрос.",
            requiredErrorInPanel: "Моля, отговорете поне на един от въпросите.",
            requiredInAllRowsError: "Моля, отговорете на въпросите на всички редове.",
            numericError: "Стойността следва да бъде число.",
            textMinLength: "Моля, използвайте поне {0} символа.",
            textMaxLength: "Моля, използвайте не повече от {0} символа.",
            textMinMaxLength: "Моля, използвайте повече от {0} и по-малко от {1} символа.",
            minRowCountError: "Моля, попълнете поне {0} реда.",
            minSelectError: "Моля, изберете поне {0} варианта.",
            maxSelectError: "Моля, изберете не повече от {0} варианта.",
            numericMinMax: "Стойността '{0}' следва да бъде равна или по-голяма от {1} и равна или по-малка от {2}",
            numericMin: "Стойността '{0}' следва да бъде равна или по-голяма от {1}",
            numericMax: "Стойността '{0}' следва да бъде равна или по-малка от {1}",
            invalidEmail: "Моля, въведете валиден адрес на електронна поща.",
            invalidExpression: "Изразът: {0} трябва да дава резултат 'true' (истина).",
            urlRequestError: "Заявката води до грешка '{0}'. {1}",
            urlGetChoicesError: "Заявката не връща данни или частта 'path' (път до търсения ресурс на сървъра) е неправилно зададена",
            exceedMaxSize: "Размерът на файла следва да не превишава {0}.",
            otherRequiredError: "Моля, въведете другата стойност.",
            uploadingFile: "Вашит файл се зарежда на сървъра. Моля, изчакайте няколко секунди и тогава опитвайте отново.",
            loadingFile: "Зареждане...",
            chooseFile: "Изберете файл(ове)...",
            noFileChosen: "Няма избран файл",
            confirmDelete: "Желаете ли да изтриете записа?",
            keyDuplicationError: "Стойността следва да бъде уникална.",
            addColumn: "Добавяне на колона",
            addRow: "Добавяне на ред",
            removeRow: "Премахване на ред",
            addPanel: "Добавяне на панел",
            removePanel: "Премахване на панел",
            choices_Item: "елемент",
            matrix_column: "Колона",
            matrix_row: "Ред",
            savingData: "Резултатите се запазват на сървъра...",
            savingDataError: "Поради възникнала грешка резултатите не можаха да бъдат запазени.",
            savingDataSuccess: "Резултатите бяха запазени успешно!",
            saveAgainButton: "Нов опит",
            timerMin: "мин",
            timerSec: "сек",
            timerSpentAll: "Вие използвахте {0} на тази страница и общо {1}.",
            timerSpentPage: "Вие използвахте {0} на тази страница.",
            timerSpentSurvey: "Вие използвахте общо {0}.",
            timerLimitAll: "Вие изпозвахте {0} от {1} на тази страница и общо {2} от {3}.",
            timerLimitPage: "Вие използвахте {0} от {1} на тази страница.",
            timerLimitSurvey: "Вие използвахте общо {0} от {1}.",
            clearCaption: "Начално състояние",
            chooseFileCaption: "Изберете файл",
            removeFileCaption: "Премахване на файла",
            booleanCheckedLabel: "Да",
            booleanUncheckedLabel: "Не",
            confirmRemoveFile: "Наистина ли искате да премахнете този файл: {0}?",
            confirmRemoveAllFiles: "Наистина ли искате да премахнете всички файлове?",
            questionTitlePatternText: "Заглавие на въпроса"
        }, u.localeNames.bg = "български";
        u.locales.ca = {
            pagePrevText: "Anterior",
            pageNextText: "Següent",
            completeText: "Complet",
            otherItemText: "Un altre (descrigui)",
            progressText: "Pàgina {0} de {1}",
            emptySurvey: "No hi ha cap pàgina visible o pregunta a l'enquesta.",
            completingSurvey: "Gràcies per completar l'enquesta!",
            loadingSurvey: "L'enquesta s'està carregant ...",
            placeholder: "Selecciona ...",
            requiredError: "Si us plau contesti la pregunta.",
            requiredInAllRowsError: "Si us plau contesti les preguntes de cada filera.",
            numericError: "L'estimació ha de ser numèrica.",
            textMinLength: "Si us plau entre almenys {0} símbols.",
            textMaxLength: "Si us plau entre menys de {0} símbols.",
            textMinMaxLength: "Si us plau entre més de {0} i menys de {1} símbols.",
            minRowCountError: "Si us plau ompli almenys {0} fileres.",
            minSelectError: "Si us plau seleccioni almenys {0} variants.",
            maxSelectError: "Si us plau seleccioni no més de {0} variants.",
            numericMinMax: "El '{0}' deu ser igual o més de {1} i igual o menys de {2}",
            numericMin: "El '{0}' ha de ser igual o més de {1}",
            numericMax: "El '{0}' ha de ser igual o menys de {1}",
            invalidEmail: "Si us plau afegiu un correu electrònic vàlid.",
            urlRequestError: "La sol·licitud va tornar error '{0}'. {1}",
            urlGetChoicesError: "La sol·licitud va tornar buida de dates o la propietat 'trajectòria' no és correcta",
            exceedMaxSize: "La mida de l'arxiu no pot excedir {0}.",
            otherRequiredError: "Si us plau afegiu l'altra estimació.",
            uploadingFile: "El seu arxiu s'està pujant. Si us plau esperi uns segons i intenteu-ho de nou.",
            addRow: "Afegiu una filera",
            removeRow: "Eliminar una filera",
            matrix_column: "Columna",
            matrix_row: "Filera"
        }, u.localeNames.ca = "català";
        u.locales.hr = {
            pagePrevText: "Prethodni",
            pageNextText: "Sljedeći",
            completeText: "Kompletan",
            previewText: "Pregled",
            editText: "Uređivanje",
            startSurveyText: "Početak",
            otherItemText: "Ostali (opis)",
            noneItemText: "Nitko",
            selectAllItemText: "Select All",
            progressText: "Stranica {0} od {1}",
            panelDynamicProgressText: "Zapisa {0} od {1}",
            questionsProgressText: "Odgovorio na {0}/{1} pitanja",
            emptySurvey: "U anketi nema vidljive stranice ili pitanja.",
            completingSurvey: "Hvala vam što ste završili anketu!",
            completingSurveyBefore: "Naši zapisi pokazuju da ste već završili ovu anketu.",
            loadingSurvey: "Anketa o učitavanje...",
            placeholder: "Odaberite...",
            value: "vrijednost",
            requiredError: "Molim vas odgovorite na pitanje.",
            requiredErrorInPanel: "Molim vas odgovorite na barem jedno pitanje.",
            requiredInAllRowsError: "Odgovorite na pitanja u svim redovima.",
            numericError: "Vrijednost bi trebala biti brojčana.",
            textMinLength: "Unesite najmanje {0} znak(ova).",
            textMaxLength: "Unesite manje od {0} znak(ova).",
            textMinMaxLength: "Unesite više od {0} i manje od {1} znakova.",
            minRowCountError: "Molimo ispunite najmanje {0} redaka.",
            minSelectError: "Odaberite barem {0} varijante.",
            maxSelectError: "Odaberite ne više od {0} varijanti.",
            numericMinMax: "'{0}'bi trebao biti jednak ili više od {1} i jednak ili manji od {2}.",
            numericMin: "'{0}' bi trebao biti jednak ili više od {1}.",
            numericMax: "'{0}' bi trebao biti jednak ili manji od {1}",
            invalidEmail: "Unesite valjanu e-mail adresu.",
            invalidExpression: "Izraz: {0} treba vratiti 'true'.",
            urlRequestError: "Zahtjev vratio pogrešku '{0}'. {1}",
            urlGetChoicesError: "Zahtjev je vratio prazne podatke ili je 'path' svojstvo netočna.",
            exceedMaxSize: "Veličina datoteke ne smije prelaziti {0}.",
            otherRequiredError: "Unesite drugu vrijednost.",
            uploadingFile: "Vaša datoteka se prenosi. Pričekajte nekoliko sekundi i pokušajte ponovno.",
            loadingFile: "Učitavanje...",
            chooseFile: "Odaberite datoteku...",
            noFileChosen: "Nije odabrana datoteka",
            confirmDelete: "Želite li izbrisati zapis?",
            keyDuplicationError: "Ta bi vrijednost trebala biti jedinstvena.",
            addColumn: "Dodavanje stupca",
            addRow: "Dodavanje redaka",
            removeRow: "Ukloniti",
            addPanel: "Dodavanje novih",
            removePanel: "Ukloniti",
            choices_Item: "stavku",
            matrix_column: "Stupca",
            matrix_row: "Redak",
            savingData: "Rezultati se spremaju na poslužitelju...",
            savingDataError: "Došlo je do pogreške i nismo mogli spremiti rezultate.",
            savingDataSuccess: "Rezultati su uspješno spremljeni!",
            saveAgainButton: "Pokušaj ponovo",
            timerMin: "min",
            timerSec: "sec",
            timerSpentAll: "Vi ste proveli {0} na ovoj stranici i {1} ukupno.",
            timerSpentPage: "Potrošili ste {0} na ovu stranicu.",
            timerSpentSurvey: "You have spent {0} in total. {0}.",
            timerLimitAll: "Vi ste proveli {0} od {1} na ovoj stranici i {2} od {3} ukupno.",
            timerLimitPage: "Potrošio si {0} od {1} na ovoj stranici.",
            timerLimitSurvey: "Ukupno ste potrošili {0} od {1}.",
            clearCaption: "Očistiti",
            chooseFileCaption: "Odaberite datoteku",
            removeFileCaption: "Uklonite ovu datoteku",
            booleanCheckedLabel: "Da",
            booleanUncheckedLabel: "Ne",
            confirmRemoveFile: "Jeste li sigurni da želite ukloniti ovu datoteku: {0}?",
            confirmRemoveAllFiles: "Jeste li sigurni da želite ukloniti sve datoteke?",
            questionTitlePatternText: "Naslov pitanja",
            modalCancelButtonText: "Otkazati",
            modalApplyButtonText: "Primijeniti"
        }, u.localeNames.hr = "hrvatski";
        u.locales.cs = {
            pagePrevText: "Předchozí",
            pageNextText: "Další",
            completeText: "Dokončit",
            previewText: "Náhled",
            editText: "Upravit",
            startSurveyText: "Začít",
            otherItemText: "Jiná odpověď (napište)",
            noneItemText: "Žádný",
            selectAllItemText: "Vybrat vše",
            progressText: "Strana {0} z {1}",
            panelDynamicProgressText: "Záznam {0} z {1}",
            questionsProgressText: "Zodpovězené otázky: {0} / {1}",
            emptySurvey: "Průzkum neobsahuje žádné otázky.",
            completingSurvey: "Děkujeme za vyplnění průzkumu!",
            completingSurveyBefore: "Naše záznamy ukazují, že jste tento průzkum již dokončil/a.",
            loadingSurvey: "Probíhá načítání průzkumu...",
            placeholder: "Vyberte...",
            value: "hodnota",
            requiredError: "Odpovězte prosím na otázku.",
            requiredErrorInPanel: "Odpovězte prosím alespoň jednu otázku.",
            requiredInAllRowsError: "Odpovězte prosím na všechny otázky.",
            numericError: "V tomto poli lze zadat pouze čísla.",
            textMinLength: "Zadejte prosím alespoň {0} znaků.",
            textMaxLength: "Zadejte prosím méně než {0} znaků.",
            textMinMaxLength: "Zadejte prosím více než {0} a méně než {1} znaků.",
            minRowCountError: "Vyplňte prosím alespoň {0} řádků.",
            minSelectError: "Vyberte prosím alespoň {0} varianty.",
            maxSelectError: "Nevybírejte prosím více než {0} variant.",
            numericMinMax: "Odpověď '{0}' by mělo být větší nebo rovno {1} a menší nebo rovno {2}",
            numericMin: "Odpověď '{0}' by mělo být větší nebo rovno {1}",
            numericMax: "Odpověď '{0}' by mělo být menší nebo rovno {1}",
            invalidEmail: "Zadejte prosím platnou e-mailovou adresu.",
            invalidExpression: "Výraz: {0} by měl vrátit hodnotu „true“.",
            urlRequestError: "Požadavek vrátil chybu '{0}'. {1}",
            urlGetChoicesError: "Požadavek nevrátil data nebo je neplatná vlastnost 'path'",
            exceedMaxSize: "Velikost souboru by neměla být větší než {0}.",
            otherRequiredError: "Zadejte prosím jinou hodnotu.",
            uploadingFile: "Váš soubor se nahrává. Zkuste to prosím za několik sekund.",
            loadingFile: "Načítání...",
            chooseFile: "Vyberte soubory...",
            noFileChosen: "Není zvolený žádný soubor",
            confirmDelete: "Chcete záznam smazat?",
            keyDuplicationError: "Tato hodnota by měla být unikátní.",
            addColumn: "Přidat sloupec",
            addRow: "Přidat řádek",
            removeRow: "Odstranit",
            addPanel: "Přidat nový",
            removePanel: "Odstranit",
            choices_Item: "položka",
            matrix_column: "Sloupec",
            matrix_row: "Řádek",
            savingData: "Výsledky se ukládají na server...",
            savingDataError: "Došlo k chybě a výsledky jsme nemohli uložit.",
            savingDataSuccess: "Výsledky byly úspěšně uloženy!",
            saveAgainButton: "Zkuste to znovu",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Na této stránce jste strávil/a celkem {0} z {1}.",
            timerSpentPage: "Na této stránce jste strávil/a {0}.",
            timerSpentSurvey: "Celkem jste strávil/a {0}.",
            timerLimitAll: "Na této stránce jste strávil/a {0} z {1} a celkem {2} z {3}.",
            timerLimitPage: "Na této stránce jste strávil/a {0} z {1}.",
            timerLimitSurvey: "Celkově jste strávil/a {0} z {1}.",
            clearCaption: "Vymazat",
            chooseFileCaption: "Vyberte soubor",
            removeFileCaption: "Odeberte tento soubor",
            booleanCheckedLabel: "Ano",
            booleanUncheckedLabel: "Ne",
            confirmRemoveFile: "Opravdu chcete odebrat tento soubor: {0}?",
            confirmRemoveAllFiles: "Opravdu chcete odstranit všechny soubory?",
            questionTitlePatternText: "Název otázky"
        }, u.localeNames.cs = "čeština";
        u.locales.da = {
            pagePrevText: "Tilbage",
            pageNextText: "Videre",
            completeText: "Færdig",
            previewText: "Forpremiere",
            editText: "Redigér",
            startSurveyText: "Start",
            otherItemText: "Valgfrit svar...",
            noneItemText: "Ingen",
            selectAllItemText: "Vælg alle",
            progressText: "Side {0} af {1}",
            panelDynamicProgressText: "Optag {0} af {1}",
            questionsProgressText: "Besvarede {0} / {1} spørgsmål",
            emptySurvey: "Der er ingen synlige spørgsmål.",
            completingSurvey: "Mange tak for din besvarelse!",
            completingSurveyBefore: "Vores data viser at du allerede har gennemført dette spørgeskema.",
            loadingSurvey: "Spørgeskemaet hentes fra serveren...",
            placeholder: "Vælg...",
            value: "værdi",
            requiredError: "Besvar venligst spørgsmålet.",
            requiredErrorInPanel: "Besvar venligst mindst ét spørgsmål.",
            requiredInAllRowsError: "Besvar venligst spørgsmål i alle rækker.",
            numericError: "Angiv et tal.",
            textMinLength: "Angiv mindst {0} tegn.",
            textMaxLength: "Please enter less than {0} characters.",
            textMinMaxLength: "Angiv mere end {0} og mindre end {1} tegn.",
            minRowCountError: "Udfyld mindst {0} rækker.",
            minSelectError: "Vælg venligst mindst {0} svarmulighed(er).",
            maxSelectError: "Vælg venligst færre {0} svarmuligheder(er).",
            numericMinMax: "'{0}' skal være lig med eller større end {1} og lig med eller mindre end {2}",
            numericMin: "'{0}' skal være lig med eller større end {1}",
            numericMax: "'{0}' skal være lig med eller mindre end {1}",
            invalidEmail: "Angiv venligst en gyldig e-mail adresse.",
            invalidExpression: "Udtrykket: {0} skal returnere 'true'.",
            urlRequestError: "Forespørgslen returnerede fejlen '{0}'. {1}",
            urlGetChoicesError: "Forespørgslen returnerede ingen data eller 'path' parameteren er forkert",
            exceedMaxSize: "Filstørrelsen må ikke overstige {0}.",
            otherRequiredError: "Angiv en værdi for dit valgfrie svar.",
            uploadingFile: "Din fil bliver uploadet. Vent nogle sekunder og prøv eventuelt igen.",
            loadingFile: "Indlæser...",
            chooseFile: "Vælg fil(er)...",
            noFileChosen: "Ingen fil er valgt",
            confirmDelete: "Vil du fjerne den?",
            keyDuplicationError: "Denne værdi skal være unik.",
            addColumn: "Tilføj kolonne",
            addRow: "Tilføj række",
            removeRow: "Fjern",
            addPanel: "Tilføj ny",
            removePanel: "Fjern",
            choices_Item: "valg",
            matrix_column: "Kolonne",
            matrix_row: "Række",
            savingData: "Resultaterne bliver gemt på serveren...",
            savingDataError: "Der opstod en fejl og vi kunne ikke gemme resultatet.",
            savingDataSuccess: "Resultatet blev gemt!",
            saveAgainButton: "Prøv igen",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Du har brugt {0} på denne side og {1} i alt.",
            timerSpentPage: "Du har brugt {0} på denne side.",
            timerSpentSurvey: "Du har brugt {0} i alt.",
            timerLimitAll: "Du har brugt {0} af {1} på denne side og {2} af {3} i alt.",
            timerLimitPage: "Du har brugt {0} af {1} på denne side.",
            timerLimitSurvey: "Du har brugt {0} af {1} i alt.",
            clearCaption: "Fjern",
            chooseFileCaption: "Vælg fil",
            removeFileCaption: "Fjern denne fil",
            booleanCheckedLabel: "Ja",
            booleanUncheckedLabel: "Ingen",
            confirmRemoveFile: "Er du sikker på, at du vil fjerne denne fil: {0}?",
            confirmRemoveAllFiles: "Er du sikker på, at du vil fjerne alle filer?",
            questionTitlePatternText: "Spørgsmåls titel"
        }, u.localeNames.da = "dansk";
        var kl = {
            pagePrevText: "Vorige",
            pageNextText: "Volgende",
            completeText: "Verzenden",
            previewText: "Voorbeeld",
            editText: "Bewerk",
            startSurveyText: "Start",
            otherItemText: "Anders, nl.",
            noneItemText: "Geen",
            selectAllItemText: "Selecteer Alles",
            progressText: "Pagina {0} van {1}",
            panelDynamicProgressText: "Record {0} of {1}",
            questionsProgressText: "Geantwoord {0}/{1} vragen",
            emptySurvey: "Er is geen zichtbare pagina of vraag in deze vragenlijst",
            completingSurvey: "Bedankt voor het invullen van de vragenlijst",
            completingSurveyBefore: "Onze gegevens tonen aan dat je deze vragenlijst reeds beantwoord hebt.",
            loadingSurvey: "De vragenlijst is aan het laden...",
            placeholder: "Kies...",
            value: "waarde",
            requiredError: "Dit is een vereiste vraag",
            requiredErrorInPanel: "Gelieve ten minste een vraag te beantwoorden.",
            requiredInAllRowsError: "Deze vraag vereist één antwoord per rij",
            numericError: "Het antwoord moet een getal zijn",
            textMinLength: "Vul minstens {0} karakters in",
            textMaxLength: "Gelieve minder dan {0} karakters in te vullen.",
            textMinMaxLength: "Gelieve meer dan {0} en minder dan {1} karakters in te vullen.",
            minRowCountError: "Gelieve ten minste {0} rijen in te vullen.",
            minSelectError: "Selecteer minimum {0} antwoorden",
            maxSelectError: "Selecteer niet meer dan {0} antwoorden",
            numericMinMax: "Uw antwoord '{0}' moet groter of gelijk zijn aan {1} en kleiner of gelijk aan {2}",
            numericMin: "Uw antwoord '{0}' moet groter of gelijk zijn aan {1}",
            numericMax: "Uw antwoord '{0}' moet groter of gelijk zijn aan {1}",
            invalidEmail: "Vul een geldig e-mailadres in",
            invalidExpression: "De uitdrukking: {0} moet 'waar' teruggeven.",
            urlRequestError: "De vraag keerde een fout terug '{0}'. {1}",
            urlGetChoicesError: "De vraag gaf een leeg antwoord terug of de 'pad' eigenschap is niet correct",
            exceedMaxSize: "De grootte van het bestand mag niet groter zijn dan {0}",
            otherRequiredError: "Vul het veld 'Anders, nl.' in",
            uploadingFile: "Uw bestand wordt opgeladen. Gelieve enkele seconden te wachten en opnieuw te proberen.",
            loadingFile: "Opladen...",
            chooseFile: "Kies uw bestand(en)...",
            noFileChosen: "Geen bestand gekozen",
            fileDragAreaPlaceholder: "Sleep het bestand naar hier",
            confirmDelete: "Wil je deze gegevens verwijderen?",
            keyDuplicationError: "Deze waarde moet uniek zijn.",
            addColumn: "Voeg kolom toe",
            addRow: "Voeg rij toe",
            removeRow: "Verwijder",
            addPanel: "Nieuwe toevoegen",
            removePanel: "Verwijder",
            choices_Item: "onderwerp",
            matrix_column: "Kolom",
            matrix_row: "Rij",
            savingData: "De resultaten worden bewaard op de server...",
            savingDataError: "Er was een probleem en we konden de resultaten niet bewaren.",
            savingDataSuccess: "De resultaten werden succesvol bewaard!",
            saveAgainButton: "Probeer opnieuw",
            timerMin: "minimum",
            timerSec: "sec",
            timerSpentAll: "U heeft {0} gespendeerd op deze pagina en {1} in totaal.",
            timerSpentPage: "U heeft {0} op deze pagina gespendeerd.",
            timerSpentSurvey: "U heeft in totaal {0} gespendeerd.",
            timerLimitAll: "U heeft {0} van {1} op deze pagina gespendeerd en {2} van {3} in totaal.",
            timerLimitPage: "U heeft {0} van {1} gespendeerd op deze pagina.",
            timerLimitSurvey: "U heeft {0} van {1} in het totaal.",
            clearCaption: "Kuis op",
            signaturePlaceHolder: "Hier tekenen",
            chooseFileCaption: "Gekozen bestand",
            removeFileCaption: "Verwijder deze file",
            booleanCheckedLabel: "Ja",
            booleanUncheckedLabel: "Nee",
            confirmRemoveFile: "Bent u zeker dat u deze file wilt verwijderen: {0}?",
            confirmRemoveAllFiles: "Bent u zeker dat u al deze files wilt verwijderen?",
            questionTitlePatternText: "Titel van de vraag"
        };
        u.locales.nl = kl, u.localeNames.nl = "nederlands", u.locales["nl-BE"] = kl, u.localeNames["nl-BE"] = "vlaams";
        u.locales.et = {
            pagePrevText: "Tagasi",
            pageNextText: "Edasi",
            completeText: "Lõpeta",
            previewText: "Eelvaade",
            editText: "Muuda",
            startSurveyText: "Alusta",
            otherItemText: "Muu (täpsusta)",
            noneItemText: "Mitte midagi",
            selectAllItemText: "Vali kõik",
            progressText: "Lehekülg {0}/{1}",
            panelDynamicProgressText: "Kirje {0}/{1}",
            questionsProgressText: "Vastatud {0} küsimust {1}-st",
            emptySurvey: "Selles uuringus ei ole ühtki nähtavat lehekülge või küsimust.",
            completingSurvey: "Aitäh, et vastasid ankeedile!",
            completingSurveyBefore: "Meie andmetel oled sa sellele ankeedile juba vastanud.",
            loadingSurvey: "Laen ankeeti...",
            placeholder: "Vali...",
            value: "väärtus",
            requiredError: "Palun vasta küsimusele.",
            requiredErrorInPanel: "Palun vasta vähemalt ühele küsimusele.",
            requiredInAllRowsError: "Palun anna vastus igal real.",
            numericError: "See peaks olema numbriline väärtus.",
            textMinLength: "Palun sisesta vähemalt {0} tähemärki.",
            textMaxLength: "Palun ära sisesta rohkem kui {0} tähemärki.",
            textMinMaxLength: "Sisesta palun {0} - {1} tähemärki.",
            minRowCountError: "Sisesta plaun vähemalt {0} rida.",
            minSelectError: "Palun vali vähemalt {0} varianti.",
            maxSelectError: "Palun vali kõige rohkem {0} varianti.",
            numericMinMax: "'{0}' peaks olema võrdne või suurem kui {1} ja võrdne või väiksem kui {2}",
            numericMin: "'{0}' peaks olema võrdne või suurem kui {1}",
            numericMax: "'{0}' peaks olema võrnde või väiksem kui {1}",
            invalidEmail: "Sisesta palun korrektne e-posti aadress.",
            invalidExpression: "Avaldis: {0} peaks tagastama tõese.",
            urlRequestError: "Taotlus tagastas vea „{0}”. {1}",
            urlGetChoicesError: "Taotlus tagastas tühjad andmed või atribuut 'path' on vale",
            exceedMaxSize: "Faili suurus ei tohi ületada {0}.",
            otherRequiredError: "Sisesta palun muu vastus.",
            uploadingFile: "Sinu fail laeb üles. Palun oota mõned sekundid ning proovi seejärel uuesti.",
            loadingFile: "Laen...",
            chooseFile: "Vali fail(id)...",
            noFileChosen: "Faili pole valitud",
            confirmDelete: "Kas tahad kirje kustutada?",
            keyDuplicationError: "See väärtus peab olema unikaalne.",
            addColumn: "Lisa veerg",
            addRow: "Lisa rida",
            removeRow: "Eemalda",
            addPanel: "Lisa uus",
            removePanel: "Eemalda",
            choices_Item: "üksus",
            matrix_column: "Veerg",
            matrix_row: "Rida",
            savingData: "Salvestan andmed serveris...",
            savingDataError: "Tekkis viga ning me ei saanud vastuseid salvestada.",
            savingDataSuccess: "Vastuste salvestamine õnnestus!",
            saveAgainButton: "Proovi uuesti",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Oled veetnud {0} sellel lehel ning kokku {1}.",
            timerSpentPage: "Oled veetnud {0} sellel lehel.",
            timerSpentSurvey: "Oled veetnud {0} kokku.",
            timerLimitAll: "Oled kulutanud {0} võimalikust {1} sellel lehel ning {2} võimalikust {3} kokku.",
            timerLimitPage: "Oled kulutanud {0} võimalikust {1} sellel lehel.",
            timerLimitSurvey: "Oled kulutanud {0} võimalikust {1} koguajast.",
            clearCaption: "Puhasta",
            chooseFileCaption: "Vali fail",
            removeFileCaption: "Eemalda see fail",
            booleanCheckedLabel: "Jah",
            booleanUncheckedLabel: "Ei",
            confirmRemoveFile: "Oled sa kindel, et soovid selle faili eemaldada: {0}?",
            confirmRemoveAllFiles: "Oled sa kindel, et soovid eemaldada kõik failid?",
            questionTitlePatternText: "Küsimuse pealkiri"
        }, u.localeNames.et = "eesti keel";
        u.locales.fi = {
            pagePrevText: "Edellinen",
            pageNextText: "Seuraava",
            completeText: "Valmis",
            previewText: "Esikatselu",
            editText: "Muokkaa",
            startSurveyText: "Aloita",
            otherItemText: "Muu (tarkenna)",
            noneItemText: "Ei mitään",
            selectAllItemText: "Valitse kaikki",
            progressText: "Sivu {0} / {1}",
            indexText: "{0} / {1}",
            panelDynamicProgressText: "Osio {0} / {1}",
            questionsProgressText: "Olet vastannut {0} / {1} kysymykseen.",
            emptySurvey: "Tässä kyselyssä ei ole yhtään näkyvillä olevaa sivua tai kysymystä.",
            completingSurvey: "Kiitos kyselyyn vastaamisesta!",
            completingSurveyBefore: "Tietojemme mukaan olet jo suorittanut tämän kyselyn.",
            loadingSurvey: "Kyselyä ladataan palvelimelta...",
            placeholder: "Valitse...",
            ratingOptionsCaption: "Arvioi napauttamalla tätä...",
            value: "arvo",
            requiredError: "Vastaa kysymykseen, kiitos.",
            requiredErrorInPanel: "Vastaa ainakin yhteen kysymykseen.",
            requiredInAllRowsError: "Vastaa kysymyksiin kaikilla riveillä.",
            numericError: "Arvon tulee olla numeerinen.",
            minError: "Arvo ei saa olla pienempi kuin {0}",
            maxError: "Arvo ei saa olla suurempi kuin {0}",
            textMinLength: "Syötä vähintään {0} merkkiä.",
            textMaxLength: "Älä syötä yli {0} merkkiä.",
            textMinMaxLength: "Syötä vähintään {0} ja enintään {1} merkkiä.",
            minRowCountError: "Täytä vähintään {0} riviä.",
            minSelectError: "Valitse vähintään {0} vaihtoehtoa.",
            maxSelectError: "Valitse enintään {0} vaihtoehtoa.",
            numericMinMax: "Luvun '{0}' tulee olla vähintään {1} ja korkeintaan {2}.",
            numericMin: "Luvun '{0}' tulee olla vähintään {1}.",
            numericMax: "Luvun '{0}' tulee olla korkeintaan {1}.",
            invalidEmail: "Syötä validi sähköpostiosoite.",
            invalidExpression: "Lausekkeen: {0} pitäisi palauttaa 'true'.",
            urlRequestError: "Pyyntö palautti virheen {0}. {1}",
            urlGetChoicesError: "Pyyntö palautti tyhjän tiedoston tai 'path'-asetus on väärä",
            exceedMaxSize: "Tiedoston koko ei saa olla suurempi kuin {0}.",
            otherRequiredError: "Tarkenna vastaustasi tekstikenttään.",
            uploadingFile: "Tiedostoa lähetetään. Odota muutama sekunti ja yritä uudelleen.",
            loadingFile: "Ladataan...",
            chooseFile: "Valitse tiedosto(t)...",
            noFileChosen: "Ei tiedostoa valittuna",
            fileDragAreaPlaceholder: "Pudota tiedosto tähän tai lataa tiedosto napsauttamalla alla olevaa painiketta.",
            confirmDelete: "Haluatko poistaa osion?",
            keyDuplicationError: "Tämä arvo on jo käytössä. Syötä toinen arvo.",
            addColumn: "Lisää sarake",
            addRow: "Lisää rivi",
            removeRow: "Poista",
            emptyRowsText: "Ei rivejä",
            addPanel: "Lisää uusi",
            removePanel: "Poista",
            choices_Item: "kohde",
            matrix_column: "Sarake",
            matrix_row: "Rivi",
            multipletext_itemname: "teksti",
            savingData: "Tietoja tallennetaan palvelimelle...",
            savingDataError: "Tapahtui virhe, emmekä voineet tallentaa kyselyn tietoja.",
            savingDataSuccess: "Tiedot tallennettiin onnistuneesti!",
            saveAgainButton: "Yritä uudelleen",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Olet käyttänyt {0} tällä sivulla ja yhteensä {1}.",
            timerSpentPage: "Olet käyttänyt {0} tällä sivulla.",
            timerSpentSurvey: "Olet käyttänyt yhteensä {0}.",
            timerLimitAll: "Olet käyttänyt tällä sivulla {0} / {1} ja yhteensä {2} / {3}.",
            timerLimitPage: "Olet käyttänyt {0} / {1} tällä sivulla.",
            timerLimitSurvey: "Olet käyttänyt yhteensä {0} / {1}.",
            clearCaption: "Tyhjennä",
            signaturePlaceHolder: "Allekirjoita tähän",
            chooseFileCaption: "Valitse tiedosto",
            removeFileCaption: "Poista tämä tiedosto",
            booleanCheckedLabel: "Kyllä",
            booleanUncheckedLabel: "Ei",
            confirmRemoveFile: "Haluatko varmasti poistaa tämän tiedoston: {0}?",
            confirmRemoveAllFiles: "Haluatko varmasti poistaa kaikki tiedostot?",
            questionTitlePatternText: "Kysymyksen otsikko",
            modalCancelButtonText: "Peruuta",
            modalApplyButtonText: "Käytä",
            filterStringPlaceholder: "Hae kirjoittamalla...",
            noEntriesText: "Merkintöjä ei ole vielä.\nLisää uusi merkintä napsauttamalla alla olevaa painiketta."
        }, u.localeNames.fi = "suomi";
        u.locales.fr = {
            pagePrevText: "Précédent",
            pageNextText: "Suivant",
            completeText: "Terminer",
            previewText: "Aperçu",
            editText: "Modifier",
            startSurveyText: "Commencer",
            otherItemText: "Autre (préciser)",
            noneItemText: "Aucun",
            selectAllItemText: "Tout sélectionner",
            progressText: "Page {0} sur {1}",
            indexText: "{0} sur {1}",
            panelDynamicProgressText: "Enregistrement {0} sur {1}",
            questionsProgressText: "{0}/{1} question(s) répondue(s)",
            emptySurvey: "Il n'y a ni page visible ni question visible dans ce questionnaire",
            completingSurvey: "Merci d'avoir répondu au questionnaire !",
            completingSurveyBefore: "Nos données indiquent que vous avez déjà rempli ce questionnaire.",
            loadingSurvey: "Le questionnaire est en cours de chargement...",
            placeholder: "Choisissez...",
            ratingOptionsCaption: "Appuyez ici pour noter...",
            value: "valeur",
            requiredError: "La réponse à cette question est obligatoire.",
            requiredErrorInPanel: "Merci de répondre au moins à une question.",
            requiredInAllRowsError: "Toutes les lignes sont obligatoires",
            numericError: "La réponse doit être un nombre.",
            minError: "La valeur ne doit pas être inférieure à {0}",
            maxError: "La valeur ne doit pas être supérieure à {0}",
            textMinLength: "Merci de saisir au moins {0} caractères.",
            textMaxLength: "Merci de saisir moins de {0} caractères.",
            textMinMaxLength: "Merci de saisir entre {0} et {1} caractères.",
            minRowCountError: "Merci de compléter au moins {0} lignes.",
            minSelectError: "Merci de sélectionner au minimum {0} réponses.",
            maxSelectError: "Merci de sélectionner au maximum {0} réponses.",
            numericMinMax: "Votre réponse '{0}' doit être supérieure ou égale à {1} et inférieure ou égale à {2}",
            numericMin: "Votre réponse '{0}' doit être supérieure ou égale à {1}",
            numericMax: "Votre réponse '{0}' doit être inférieure ou égale à {1}",
            invalidEmail: "Merci d'entrer une adresse mail valide.",
            invalidExpression: "L'expression: {0} doit retourner 'true'.",
            urlRequestError: "La requête a renvoyé une erreur '{0}'. {1}",
            urlGetChoicesError: "La requête a renvoyé des données vides ou la propriété 'path' est incorrecte",
            exceedMaxSize: "La taille du fichier ne doit pas excéder {0}.",
            otherRequiredError: "Merci de préciser le champ 'Autre'.",
            uploadingFile: "Votre fichier est en cours de chargement. Merci d'attendre quelques secondes et de réessayer.",
            loadingFile: "Chargement...",
            chooseFile: "Ajouter des fichiers...",
            noFileChosen: "Aucun fichier ajouté",
            fileDragAreaPlaceholder: "Déposez un fichier ici ou cliquez sur le bouton ci-dessous pour charger le fichier.",
            confirmDelete: "Voulez-vous supprimer cet enregistrement ?",
            keyDuplicationError: "Cette valeur doit être unique.",
            addColumn: "Ajouter une colonne",
            addRow: "Ajouter une ligne",
            removeRow: "Supprimer",
            emptyRowsText: "Il n'y a pas de lignes.",
            addPanel: "Ajouter",
            removePanel: "Supprimer",
            choices_Item: "item",
            matrix_column: "Colonne",
            matrix_row: "Ligne",
            multipletext_itemname: "texte",
            savingData: "Les résultats sont en cours de sauvegarde sur le serveur...",
            savingDataError: "Une erreur est survenue et a empêché la sauvegarde des résultats.",
            savingDataSuccess: "Les résultats ont bien été enregistrés !",
            saveAgainButton: "Réessayer",
            timerMin: "min",
            timerSec: "sec",
            timerSpentAll: "Vous avez passé {0} sur cette page et {1} au total.",
            timerSpentPage: "Vous avez passé {0} sur cette page.",
            timerSpentSurvey: "Vous avez passé {0} au total.",
            timerLimitAll: "Vous avez passé {0} sur {1} sur cette page et {2} sur {3} au total.",
            timerLimitPage: "Vous avez passé {0} sur {1} sur cette page.",
            timerLimitSurvey: "Vous avez passé {0} sur {1} au total.",
            clearCaption: "Vider",
            signaturePlaceHolder: "Signez ici",
            chooseFileCaption: "Ajouter un fichier",
            removeFileCaption: "Enlever ce fichier",
            booleanCheckedLabel: "Oui",
            booleanUncheckedLabel: "Non",
            confirmRemoveFile: "Êtes-vous certains de vouloir supprimer ce fichier : {0}?",
            confirmRemoveAllFiles: "Êtes-vous certains de vouloir supprimer tous les fichiers?",
            questionTitlePatternText: "Titre de la question",
            modalCancelButtonText: "Annuler",
            modalApplyButtonText: "Appliquer",
            filterStringPlaceholder: "Tapez pour rechercher...",
            noEntriesText: "Il n'y a pas encore d'entrées.\nCliquez sur le bouton ci-dessous pour ajouter une nouvelle entrée."
        }, u.localeNames.fr = "français";
        u.locales.ka = {
            pagePrevText: "უკან",
            pageNextText: "შემდეგ",
            completeText: "დასრულება",
            otherItemText: "სხვა (გთხოვთ მიუთითეთ)",
            progressText: "გვერდი {0} / {1}",
            emptySurvey: "არცერთი კითხვა არ არის.",
            completingSurvey: "გმადლობთ კითხვარის შევსებისთვის!",
            loadingSurvey: "ჩატვირთვა სერვერიდან...",
            placeholder: "არჩევა...",
            requiredError: "გთხოვთ უპასუხეთ კითხვას.",
            numericError: "პასუხი უნდა იყოს რიცხვი.",
            textMinLength: "გთხოვთ შეიყვანეთ არანაკლებ {0} სიმბოლო.",
            minSelectError: "გთხოვთ აირჩიეთ არანაკლებ {0} ვარიანტი.",
            maxSelectError: "გთხოვთ აირჩიეთ არაუმეტეს {0} ვარიანტი.",
            numericMinMax: "'{0}' უნდა იყოს მეტი ან ტოლი, ვიდრე {1}, და ნაკლები ან ტოლი ვიდრე {2}",
            numericMin: "'{0}' უნდა იყოს მეტი ან ტოლი ვიდრე {1}",
            numericMax: "'{0}' უნდა იყოს ნაკლები ან ტოლი ვიდრე {1}",
            invalidEmail: "გთხოვთ შეიყვანოთ ელ. ფოსტის რეალური მისამართი."
        }, u.localeNames.ka = "ქართული";
        u.locales.de = {
            pagePrevText: "Zurück",
            pageNextText: "Weiter",
            completeText: "Abschließen",
            previewText: "Vorschau",
            editText: "Bearbeiten",
            startSurveyText: "Start",
            otherItemText: "Sonstiges (Bitte angeben)",
            noneItemText: "Nichts trifft zu",
            selectAllItemText: "Alles auswählen",
            progressText: "Seite {0} von {1}",
            indexText: "{0} von {1}",
            panelDynamicProgressText: "Eintrag {0} von {1}",
            questionsProgressText: "{0}/{1} Fragen beantwortet",
            emptySurvey: "Es sind keine Fragen vorhanden.",
            completingSurvey: "Vielen Dank, dass Sie die Umfrage abgeschlossen haben!",
            completingSurveyBefore: "Wir haben festgestellt, dass Sie diese Umfrage bereits abgeschlossen haben.",
            loadingSurvey: "Umfrage wird geladen...",
            placeholder: "Bitte auswählen...",
            ratingOptionsCaption: "Tippen Sie hier, um zu bewerten...",
            value: "Wert",
            requiredError: "Bitte beantworten Sie diese Frage.",
            requiredErrorInPanel: "Bitte beantworten Sie mindestens eine Frage.",
            requiredInAllRowsError: "Bitte beantworten Sie alle Fragen.",
            numericError: "Der Wert muss eine Zahl sein.",
            minError: "Der Wert sollte nicht kleiner als {0} sein",
            maxError: "Der Wert sollte nicht größer als {0} sein",
            textMinLength: "Bitte geben Sie mindestens {0} Zeichen ein.",
            textMaxLength: "Bitte geben Sie nicht mehr als {0} Zeichen ein.",
            textMinMaxLength: "Bitte geben Sie mindestens {0} und maximal {1} Zeichen ein.",
            minRowCountError: "Bitte machen Sie in mindestens {0} Zeilen eine Eingabe.",
            minSelectError: "Bitte wählen Sie mindestens {0} Antwort(en) aus.",
            maxSelectError: "Bitte wählen Sie nicht mehr als {0} Antwort(en) aus.",
            numericMinMax: "'{0}' muss größer oder gleich {1} und kleiner oder gleich {2} sein",
            numericMin: "'{0}' muss größer oder gleich {1} sein",
            numericMax: "'{0}' muss kleiner oder gleich {1} sein",
            invalidEmail: "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
            invalidExpression: "Der Ausdruck: {0} muss den Wert 'wahr' zurückgeben.",
            urlRequestError: "Ein Netzwerkdienst hat folgenden Fehler zurückgegeben '{0}'. {1}",
            urlGetChoicesError: "Eine Netzwerkdienst hat ungültige Daten zurückgegeben",
            exceedMaxSize: "Die Datei darf nicht größer als {0} sein.",
            otherRequiredError: "Bitte geben Sie einen Wert an.",
            uploadingFile: "Bitte warten Sie bis der Upload Ihrer Dateien abgeschlossen ist.",
            loadingFile: "Wird hochgeladen...",
            chooseFile: "Datei(en) auswählen...",
            noFileChosen: "Keine Datei ausgewählt",
            fileDragAreaPlaceholder: "Legen Sie hier eine Datei ab oder klicken Sie auf die Schaltfläche unten, um die Datei zu laden.",
            confirmDelete: "Wollen Sie den Eintrag löschen?",
            keyDuplicationError: "Dieser Wert muss einmalig sein.",
            addColumn: "Spalte hinzufügen",
            addRow: "Zeile hinzufügen",
            removeRow: "Entfernen",
            emptyRowsText: "Es gibt keine Reihen.",
            addPanel: "Neu hinzufügen",
            removePanel: "Entfernen",
            choices_Item: "Element",
            matrix_column: "Spalte",
            matrix_row: "Zeile",
            multipletext_itemname: "Text",
            savingData: "Die Ergebnisse werden auf dem Server gespeichert...",
            savingDataError: "Es ist ein Fehler aufgetreten. Die Ergebnisse konnten nicht gespeichert werden.",
            savingDataSuccess: "Die Ergebnisse wurden gespeichert!",
            saveAgainButton: "Erneut absenden",
            timerMin: "Min.",
            timerSec: "Sek.",
            timerSpentAll: "Sie waren {0} auf dieser Seite und brauchten insgesamt {1}.",
            timerSpentPage: "Sie waren {0} auf dieser Seite.",
            timerSpentSurvey: "Sie haben insgesamt {0} gebraucht.",
            timerLimitAll: "Sie waren {0} von {1} auf dieser Seite und brauchten insgesamt {2} von {3}.",
            timerLimitPage: "Sie waren {0} von {1} auf dieser Seite.",
            timerLimitSurvey: "Sie haben insgesamt {0} von {1} gebraucht.",
            clearCaption: "Auswahl entfernen",
            signaturePlaceHolder: "Hier unterschreiben",
            chooseFileCaption: "Datei auswählen",
            removeFileCaption: "Datei löschen",
            booleanCheckedLabel: "Ja",
            booleanUncheckedLabel: "Nein",
            confirmRemoveFile: "Sind Sie sicher, dass Sie diese Datei löschen möchten: {0}?",
            confirmRemoveAllFiles: "Sind Sie sicher, dass Sie alle Dateien löschen möchten?",
            questionTitlePatternText: "Fragentitel",
            modalCancelButtonText: "Stornieren",
            modalApplyButtonText: "Anwenden",
            filterStringPlaceholder: "Tippe um zu suchen...",
            noEntriesText: "Es gibt noch keine Einträge.\nKlicken Sie auf die Schaltfläche unten, um einen neuen Eintrag hinzuzufügen."
        }, u.localeNames.de = "deutsch";
        u.locales.gr = {
            pagePrevText: "Προηγούμενο",
            pageNextText: "Επόμενο",
            completeText: "Ολοκλήρωση",
            previewText: "Προεπισκόπηση",
            editText: "Επεξεργασία",
            startSurveyText: "Αρχή",
            otherItemText: "Άλλο (παρακαλώ διευκρινίστε)",
            noneItemText: "Κανένας",
            selectAllItemText: "Επιλογή όλων",
            progressText: "Σελίδα {0} από {1}",
            panelDynamicProgressText: "Εγγραφή {0} από {1}",
            questionsProgressText: "Απαντήθηκαν {0} / {1} ερωτήσεις",
            emptySurvey: "Δεν υπάρχει καμία ορατή σελίδα ή ορατή ερώτηση σε αυτό το ερωτηματολόγιο.",
            completingSurvey: "Ευχαριστούμε για την συμπλήρωση αυτού του ερωτηματολογίου!",
            completingSurveyBefore: "Τα αρχεία μας δείχνουν ότι έχετε ήδη ολοκληρώσει αυτήν την έρευνα.",
            loadingSurvey: "Το ερωτηματολόγιο φορτώνεται απο το διακομιστή...",
            placeholder: "Επιλέξτε...",
            value: "αξία",
            requiredError: "Παρακαλώ απαντήστε στην ερώτηση.",
            requiredErrorInPanel: "Απαντήστε σε τουλάχιστον μία ερώτηση.",
            requiredInAllRowsError: "Παρακαλώ απαντήστε στις ερωτήσεις σε όλες τις γραμμές.",
            numericError: "Η τιμή πρέπει να είναι αριθμητική.",
            textMinLength: "Παρακαλώ συμπληρώστε τουλάχιστον {0} σύμβολα.",
            textMaxLength: "Εισαγάγετε λιγότερους από {0} χαρακτήρες.",
            textMinMaxLength: "Εισαγάγετε περισσότερους από {0} και λιγότερους από {1} χαρακτήρες.",
            minRowCountError: "Παρακαλώ συμπληρώστε τουλάχιστον {0} γραμμές.",
            minSelectError: "Παρακαλώ επιλέξτε τουλάχιστον {0} παραλλαγές.",
            maxSelectError: "Παρακαλώ επιλέξτε όχι παραπάνω απο {0} παραλλαγές.",
            numericMinMax: "Το '{0}' θα πρέπει να είναι ίσο ή μεγαλύτερο απο το {1} και ίσο ή μικρότερο απο το {2}",
            numericMin: "Το '{0}' πρέπει να είναι μεγαλύτερο ή ισο με το {1}",
            numericMax: "Το '{0}' πρέπει να είναι μικρότερο ή ίσο απο το {1}",
            invalidEmail: "Παρακαλώ δώστε μια αποδεκτή διεύθυνση e-mail.",
            invalidExpression: "Η έκφραση: {0} θα πρέπει να επιστρέψει 'true'.",
            urlRequestError: "Η αίτηση επέστρεψε σφάλμα '{0}'. {1}",
            urlGetChoicesError: "Η αίτηση επέστρεψε κενά δεδομένα ή η ιδιότητα 'μονοπάτι/path' είναι εσφαλμένη",
            exceedMaxSize: "Το μέγεθος δεν μπορεί να υπερβαίνει τα {0}.",
            otherRequiredError: "Παρακαλώ συμπληρώστε την τιμή για το πεδίο 'άλλο'.",
            uploadingFile: "Το αρχείο σας ανεβαίνει. Παρακαλώ περιμένετε καποια δευτερόλεπτα και δοκιμάστε ξανά.",
            loadingFile: "Φόρτωση...",
            chooseFile: "Επιλογή αρχείων ...",
            noFileChosen: "Δεν έχει επιλεγεί αρχείο",
            confirmDelete: "Θέλετε να διαγράψετε την εγγραφή;",
            keyDuplicationError: "Αυτή η τιμή πρέπει να είναι μοναδική.",
            addColumn: "Προσθήκη στήλης",
            addRow: "Προσθήκη γραμμής",
            removeRow: "Αφαίρεση",
            addPanel: "Προσθεσε νεο",
            removePanel: "Αφαιρώ",
            choices_Item: "είδος",
            matrix_column: "Στήλη",
            matrix_row: "Σειρά",
            savingData: "Τα αποτελέσματα αποθηκεύονται στον διακομιστή ...",
            savingDataError: "Παρουσιάστηκε σφάλμα και δεν ήταν δυνατή η αποθήκευση των αποτελεσμάτων.",
            savingDataSuccess: "Τα αποτελέσματα αποθηκεύτηκαν με επιτυχία!",
            saveAgainButton: "Προσπάθησε ξανά",
            timerMin: "ελάχ",
            timerSec: "δευτ",
            timerSpentAll: "Έχετε δαπανήσει {0} σε αυτήν τη σελίδα και {1} συνολικά.",
            timerSpentPage: "Έχετε ξοδέψει {0} σε αυτήν τη σελίδα.",
            timerSpentSurvey: "Έχετε ξοδέψει συνολικά {0}.",
            timerLimitAll: "Έχετε δαπανήσει {0} από {1} σε αυτήν τη σελίδα και {2} από {3} συνολικά.",
            timerLimitPage: "Έχετε ξοδέψει {0} από {1} σε αυτήν τη σελίδα.",
            timerLimitSurvey: "Έχετε ξοδέψει {0} από {1} συνολικά.",
            clearCaption: "Σαφή",
            chooseFileCaption: "Επιλέξτε το αρχείο",
            removeFileCaption: "Καταργήστε αυτό το αρχείο",
            booleanCheckedLabel: "Ναί",
            booleanUncheckedLabel: "Οχι",
            confirmRemoveFile: "Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτό το αρχείο: {0};",
            confirmRemoveAllFiles: "Είστε βέβαιοι ότι θέλετε να καταργήσετε όλα τα αρχεία;",
            questionTitlePatternText: "Τίτλος ερώτησης"
        }, u.localeNames.gr = "ελληνικά";
        u.locales.he = {
            pagePrevText: "אחורה",
            pageNextText: "קדימה",
            completeText: "סיום",
            previewText: "תצוגה מקדימה",
            editText: "לַעֲרוֹך",
            startSurveyText: "הַתחָלָה",
            otherItemText: "אחר (נא לתאר)",
            noneItemText: "אף אחד",
            selectAllItemText: "בחר הכל",
            progressText: "דף {1} מתוך {0}",
            panelDynamicProgressText: "הקלטה {0} מתוך {1}",
            questionsProgressText: "ענה על שאלות",
            emptySurvey: "אין שאלות",
            completingSurvey: "תודה על מילוי השאלון!",
            completingSurveyBefore: "הרשומות שלנו מראות שכבר סיימת את הסקר הזה.",
            loadingSurvey: "טעינה מהשרת...",
            placeholder: "בחר...",
            value: "ערך",
            requiredError: "אנא השב על השאלה",
            requiredErrorInPanel: "אנא ענה לפחות על שאלה אחת.",
            requiredInAllRowsError: "אנא ענה על שאלות בכל השורות.",
            numericError: "התשובה צריכה להיות מספר.",
            textMinLength: "הזן לפחות {0} תווים.",
            textMaxLength: "הזן פחות מ- {0} תווים.",
            textMinMaxLength: "הזן יותר מ- {0} ופחות מ- {1} תווים.",
            minRowCountError: "אנא מלא לפחות {0} שורות.",
            minSelectError: "בחר לפחות {0} אפשרויות.",
            maxSelectError: "בחר עד {0} אפשרויות.",
            numericMinMax: "'{0}' חייב להיות שווה או גדול מ {1}, ושווה ל- {2} או פחות מ- {}}",
            numericMin: "'{0}' חייב להיות שווה או גדול מ {1}",
            numericMax: "'{0}' חייב להיות שווה או קטן מ {1}",
            invalidEmail: 'הזן כתובת דוא"ל חוקית.',
            invalidExpression: "הביטוי: {0} צריך להחזיר 'אמת'.",
            urlRequestError: "הבקשה החזירה את השגיאה '{0}'. {1}",
            urlGetChoicesError: "הבקשה החזירה נתונים ריקים או שהמאפיין 'נתיב' שגוי",
            exceedMaxSize: "גודל הקובץ לא יעלה על {0}.",
            otherRequiredError: 'נא להזין נתונים בשדה "אחר"',
            uploadingFile: "הקובץ שלך נטען. המתן מספר שניות ונסה שוב.",
            loadingFile: "טוען...",
            chooseFile: "לבחור קבצים...",
            noFileChosen: "לא נבחר קובץ",
            confirmDelete: "האם אתה רוצה למחוק את הרשומה?",
            keyDuplicationError: "ערך זה צריך להיות ייחודי.",
            addColumn: "הוסף עמודה",
            addRow: "להוסיף שורה",
            removeRow: "לְהַסִיר",
            addPanel: "הוסף חדש",
            removePanel: "לְהַסִיר",
            choices_Item: "פריט",
            matrix_column: "טור",
            matrix_row: "שׁוּרָה",
            savingData: "התוצאות נשמרות בשרת ...",
            savingDataError: "אירעה שגיאה ולא הצלחנו לשמור את התוצאות.",
            savingDataSuccess: "התוצאות נשמרו בהצלחה!",
            saveAgainButton: "נסה שוב",
            timerMin: "דקה",
            timerSec: "שניות",
            timerSpentAll: "הוצאת {0} בדף זה ובסך הכל {1}.",
            timerSpentPage: "הוצאת {0} בדף זה.",
            timerSpentSurvey: "הוצאת סכום כולל של {0}.",
            timerLimitAll: "הוצאת {0} מתוך {1} בדף זה ו- {2} מתוך {3} בסך הכל.",
            timerLimitPage: "הוצאת {0} מתוך {1} בדף זה.",
            timerLimitSurvey: "הוצאת סכום כולל של {0} מתוך {1}.",
            clearCaption: "ברור",
            chooseFileCaption: "בחר קובץ",
            removeFileCaption: "הסר קובץ זה",
            booleanCheckedLabel: "כן",
            booleanUncheckedLabel: "לא",
            confirmRemoveFile: "האם אתה בטוח שברצונך להסיר קובץ זה: {0}?",
            confirmRemoveAllFiles: "האם אתה בטוח שברצונך להסיר את כל הקבצים?",
            questionTitlePatternText: "כותרת שאלה"
        }, u.localeNames.he = "עברית";
        u.locales.hi = {
            pagePrevText: "पिछला",
            pageNextText: "अगला",
            completeText: "पूरा",
            previewText: "पूर्वसमीक्षा",
            editText: "संपादित",
            startSurveyText: "शुरू",
            otherItemText: "दूसरा (वर्णन करें)",
            selectAllItemText: "सभी का चयन करें",
            progressText: "पृष्ठ 1 में से 0",
            panelDynamicProgressText: " दस्तावेज {1} के {0}",
            questionsProgressText: "{1} सवालों में से {0} के जवाब दिए",
            emptySurvey: "सर्वेक्षण में कोई दृश्यमान पृष्ठ या प्रश्न नहीं है",
            completingSurvey: "सर्वेक्षण को पूरा करने के लिए धन्यवाद",
            completingSurveyBefore: " हमारे रिकॉर्ड बताते हैं कि आप पहले ही इस सर्वेक्षण को पूरा कर चुके हैं",
            loadingSurvey: "सर्वेक्षण खुल रहा है.…",
            placeholder: "चुनें",
            value: "मूल्य",
            requiredError: "कृपया प्रश्न का उत्तर दें",
            requiredErrorInPanel: "कृपया कम से कम एक प्रश्न का उत्तर दें",
            requiredInAllRowsError: "कृपया सभी पंक्तियों में सवालों के जवाब दें",
            numericError: "मूल्य संख्यात्मक होना चाहिए",
            textMinLength: "कृपया कम से कम {0} वर्ण दर्ज करें",
            textMaxLength: "कृपया {0} से कम वर्ण दर्ज करें",
            textMinMaxLength: "कृपया {0} से अधिक और {1} से कम पात्रों में प्रवेश करें",
            minRowCountError: "कृपया कम से कम {0} पंक्तियों को भरें",
            minSelectError: "कृपया कम से कम {0} विकल्प का चयन करें",
            maxSelectError: "कृपया {0} विकल्पों से अधिक नहीं चुनें",
            numericMinMax: "'{0}' {1} से बराबर या अधिक और {2} से बराबर या कम होना चाहिए",
            numericMin: "'{0}' {1} से बराबर या अधिक होना चाहिए",
            numericMax: "'{0}' {1} से बराबर या कम होना चाहिए",
            invalidEmail: "कृपया एक वैध ईमेल पता दर्ज करें",
            invalidExpression: "अभिव्यक्ति: {0} को ' सच ' लौटना चाहिए",
            urlRequestError: "अनुरोध लौटाया त्रुटि '{0}' . {1}",
            urlGetChoicesError: "अनुरोध ने खाली डेटा वापस कर दिया है ",
            exceedMaxSize: "फ़ाइल का आकार {0} से अधिक नहीं होना चाहिए  या फिर 'पाथ' प्रॉपर्टी गलत है",
            otherRequiredError: "कृपया दूसरा मूल्य दर्ज करें",
            uploadingFile: "आपकी फाइल अपलोड हो रही है। कृपया कई सेकंड इंतजार करें और फिर से प्रयास करें।",
            loadingFile: "लोडिंग",
            chooseFile: "फ़ाइल चुनें",
            noFileChosen: "कोई फाइल नहीं चुनी गई",
            confirmDelete: "क्या आप रिकॉर्ड हटाना चाहते हैं",
            keyDuplicationError: "यह मान अनोखा होना चाहिए",
            addColumn: "कॉलम जोड़ें",
            addRow: "पंक्ति जोड़ें",
            removeRow: "हटाए",
            addPanel: "नया जोड़ें",
            removePanel: "हटाए",
            choices_Item: "मद",
            matrix_column: "कॉलम",
            matrix_row: "पंक्ति",
            savingData: "परिणाम सर्वर पर सेव हो रहे हैं",
            savingDataError: "एक त्रुटि हुई और हम परिणामों को नहीं सेव कर सके",
            savingDataSuccess: "परिणाम सफलतापूर्वक सेव हो गए",
            saveAgainButton: "फिर कोशिश करो",
            timerMin: "मिनट",
            timerSec: "सेकंड",
            timerSpentAll: "आपने इस पृष्ठ पर {0} खर्च किए हैं और कुल {1}",
            timerSpentPage: "आपने इस पृष्ठ पर {0} खर्च किया है",
            timerSpentSurvey: "आपने कुल {0} खर्च किया है",
            timerLimitAll: "आपने इस पृष्ठ पर {1} की {0} और कुल {3} की {2} खर्च की है।",
            timerLimitPage: "आपने इस पृष्ठ पर {1} का {0} खर्च किया है",
            timerLimitSurvey: "आपने कुल {1} की {0} खर्च की है",
            clearCaption: "स्पष्ट",
            chooseFileCaption: "फ़ाइल चुनें",
            removeFileCaption: "इस फाइल को निकालें",
            booleanCheckedLabel: "हाँ",
            booleanUncheckedLabel: "नहीं",
            confirmRemoveFile: "क्या आप सुनिश्चित हैं कि आप इस फ़ाइल को हटाना चाहते हैं: {0}",
            confirmRemoveAllFiles: "क्या आप सुनिश्चित हैं कि आप सभी फ़ाइलों को हटाना चाहते हैं",
            questionTitlePatternText: "प्रश्न का शीर्षक"
        }, u.localeNames.hi = "hindi";
        u.locales.hu = {
            pagePrevText: "Vissza",
            pageNextText: "Tovább",
            completeText: "Kész",
            previewText: "Előnézet",
            editText: "Szerkesztés",
            startSurveyText: "Rajt",
            otherItemText: "Egyéb (adja meg)",
            noneItemText: "Egyik sem",
            selectAllItemText: "Mindet kiválaszt",
            progressText: "{0}./{1} oldal",
            panelDynamicProgressText: "{0} / {1} rekord",
            questionsProgressText: "Válaszolt kérdések: {0} / {1}",
            emptySurvey: "The survey doesn't contain visible pages or questions.",
            completingSurvey: "Köszönjük, hogy kitöltötte felmérésünket!",
            completingSurveyBefore: "Már kitöltötte a felmérést.",
            loadingSurvey: "Felmérés betöltése...",
            placeholder: "Válasszon...",
            value: "érték",
            requiredError: "Kérjük, válaszolja meg ezt a kérdést!",
            requiredErrorInPanel: "Kérjük, válaszoljon legalább egy kérdésre.",
            requiredInAllRowsError: "Kérjük adjon választ minden sorban!",
            numericError: "Az érték szám kell, hogy legyen!",
            textMinLength: "Adjon meg legalább {0} karaktert!",
            textMaxLength: "Legfeljebb {0} karaktert adjon meg!",
            textMinMaxLength: "Adjon meg legalább {0}, de legfeljebb {1} karaktert!",
            minRowCountError: "Töltsön ki minimum {0} sort!",
            minSelectError: "Válasszon ki legalább {0} lehetőséget!",
            maxSelectError: "Ne válasszon többet, mint {0} lehetőség!",
            numericMinMax: "'{0}' legyen nagyobb, vagy egyenlő, mint {1} és kisebb, vagy egyenlő, mint {2}!",
            numericMin: "'{0}' legyen legalább {1}!",
            numericMax: "The '{0}' ne legyen nagyobb, mint {1}!",
            invalidEmail: "Adjon meg egy valós email címet!",
            invalidExpression: "A következő kifejezés: {0} vissza kell adnia az „igaz” értéket.",
            urlRequestError: "A lekérdezés hibával tért vissza: '{0}'. {1}",
            urlGetChoicesError: "A lekérdezés üres adattal tért vissza, vagy a 'path' paraméter helytelen.",
            exceedMaxSize: "A méret nem lehet nagyobb, mint {0}.",
            otherRequiredError: "Adja meg az egyéb értéket!",
            uploadingFile: "Feltöltés folyamatban. Várjon pár másodpercet, majd próbálja újra.",
            loadingFile: "Betöltés...",
            chooseFile: "Fájlok kiválasztása ...",
            noFileChosen: "Nincs kiválasztva fájl",
            fileDragAreaPlaceholder: "Dobjon ide egy fájlt, vagy kattintson az alábbi gombra a fájl betöltéséhez.",
            confirmDelete: "Törli ezt a rekordot?",
            keyDuplicationError: "Az értéknek egyedinek kell lennie.",
            addColumn: "Oszlop hozzáadása",
            addRow: "Sor hozzáadása",
            removeRow: "Eltávolítás",
            addPanel: "Új hozzáadása",
            removePanel: "Eltávolítás",
            choices_Item: "elem",
            matrix_column: "Oszlop",
            matrix_row: "Sor",
            savingData: "Eredmény mentése a szerverre...",
            savingDataError: "Egy hiba folytán nem tudtuk elmenteni az eredményt.",
            savingDataSuccess: "Eredmény sikeresen mentve!",
            saveAgainButton: "Próbálja újra",
            timerMin: "min",
            timerSec: "sec",
            timerSpentAll: "Ön {0} összeget költött ezen az oldalon, és összesen {1}.",
            timerSpentPage: "{0} összeget költött ezen az oldalon.",
            timerSpentSurvey: "Összesen {0} költött.",
            timerLimitAll: "Ön {0} / {1} összeget költött ezen az oldalon, és összesen {2} / {3}.",
            timerLimitPage: "Ön {0} / {1} összeget költött ezen az oldalon.",
            timerLimitSurvey: "Összesen {0} / {1} összeget költött el.",
            clearCaption: "Egyértelmű",
            chooseFileCaption: "Válassz fájlt",
            removeFileCaption: "Távolítsa el ezt a fájlt",
            booleanCheckedLabel: "Igen",
            booleanUncheckedLabel: "Nem",
            confirmRemoveFile: "Biztosan eltávolítja ezt a fájlt: {0}?",
            confirmRemoveAllFiles: "Biztosan el akarja távolítani az összes fájlt?",
            questionTitlePatternText: "Kérdés címe"
        }, u.localeNames.hu = "magyar";
        u.locales.is = {
            pagePrevText: "Tilbaka",
            pageNextText: "Áfram",
            completeText: "Lokið",
            previewText: "Forskoða",
            editText: "Breyta",
            startSurveyText: "Byrjaðu",
            otherItemText: "Hinn (skýring)",
            noneItemText: "Enginn",
            selectAllItemText: "Velja allt",
            progressText: "Síða {0} of {1}",
            panelDynamicProgressText: "Taka upp {0} af {1}",
            questionsProgressText: "Svarað {0} / {1} spurningum",
            emptySurvey: "Það er enginn síða eða spurningar í þessari könnun.",
            completingSurvey: "Takk fyrir að fyllja út þessa könnun!",
            completingSurveyBefore: "Skrár okkar sýna að þú hefur þegar lokið þessari könnun.",
            loadingSurvey: "Könnunin er að hlaða...",
            placeholder: "Veldu...",
            value: "gildi",
            requiredError: "Vinsamlegast svarið spurningunni.",
            requiredErrorInPanel: "Vinsamlegast svaraðu að minnsta kosti einni spurningu.",
            requiredInAllRowsError: "Vinsamlegast svarið spurningum í öllum röðum.",
            numericError: "Þetta gildi verður að vera tala.",
            textMinLength: "Það ætti að vera minnst {0} tákn.",
            textMaxLength: "Það ætti að vera mest {0} tákn.",
            textMinMaxLength: "Það ætti að vera fleiri en {0} og færri en {1} tákn.",
            minRowCountError: "Vinsamlegast fyllið úr að minnsta kosti {0} raðir.",
            minSelectError: "Vinsamlegast veljið að minnsta kosti {0} möguleika.",
            maxSelectError: "Vinsamlegast veljið ekki fleiri en {0} möguleika.",
            numericMinMax: "'{0}' ætti að vera meira en eða jafnt og {1} minna en eða jafnt og {2}",
            numericMin: "{0}' ætti að vera meira en eða jafnt og {1}",
            numericMax: "'{0}' ætti að vera minna en eða jafnt og {1}",
            invalidEmail: "Vinsamlegast sláið inn gilt netfang.",
            invalidExpression: "Tjáningin: {0} ætti að skila 'satt'.",
            urlRequestError: "Beiðninn skilaði eftirfaranadi villu '{0}'. {1}",
            urlGetChoicesError: "Beiðninng skilaði engum gögnum eða slóðinn var röng",
            exceedMaxSize: "Skráinn skal ekki vera stærri en {0}.",
            otherRequiredError: "Vinamlegast fyllið út hitt gildið.",
            uploadingFile: "Skráinn þín var send. Vinsamlegast bíðið í nokkrar sekúndur og reynið aftur.",
            loadingFile: "Hleður ...",
            chooseFile: "Veldu skrár ...",
            noFileChosen: "Engin skrá valin",
            confirmDelete: "Viltu eyða skránni?",
            keyDuplicationError: "Þetta gildi ætti að vera einstakt.",
            addColumn: "Bæta við dálki",
            addRow: "Bæta við röð",
            removeRow: "Fjarlægja",
            addPanel: "Bæta við nýju",
            removePanel: "Fjarlægðu",
            choices_Item: "hlutur",
            matrix_column: "Dálkur",
            matrix_row: "Röð",
            savingData: "Niðurstöðurnar eru að spara á netþjóninum ... ",
            savingDataError: "Villa kom upp og við gátum ekki vistað niðurstöðurnar.",
            savingDataSuccess: "Árangurinn var vistaður með góðum árangri!",
            saveAgainButton: "Reyndu aftur",
            timerMin: "mín",
            timerSec: "sek",
            timerSpentAll: "Þú hefur eytt {0} á þessari síðu og {1} samtals.",
            timerSpentPage: "Þú hefur eytt {0} á þessari síðu.",
            timerSpentSurvey: "Þú hefur eytt {0} samtals.",
            timerLimitAll: "Þú hefur eytt {0} af {1} á þessari síðu og {2} af {3} samtals.",
            timerLimitPage: "Þú hefur eytt {0} af {1} á þessari síðu.",
            timerLimitSurvey: "Þú hefur eytt {0} af {1} samtals.",
            clearCaption: "Hreinsa",
            chooseFileCaption: "Veldu skrá",
            removeFileCaption: "Fjarlægðu þessa skrá",
            booleanCheckedLabel: "Já",
            booleanUncheckedLabel: "Nei",
            confirmRemoveFile: "Ertu viss um að þú viljir fjarlægja þessa skrá: {0}?",
            confirmRemoveAllFiles: "Ertu viss um að þú viljir fjarlægja allar skrár?",
            questionTitlePatternText: "Spurningartitill"
        }, u.localeNames.is = "íslenska";
        u.locales.id = {
            pagePrevText: "Sebelumnya",
            pageNextText: "Selanjutnya",
            completeText: "Selesai",
            previewText: "Pratinjau",
            editText: "Sunting",
            startSurveyText: "Mulai",
            otherItemText: "Lainnya (jelaskan)",
            noneItemText: "Tidak Ada",
            selectAllItemText: "Pilih Semua",
            progressText: "Halaman {0} dari {1}",
            panelDynamicProgressText: "Rekam {0} dari {1}",
            questionsProgressText: "Menjawab pertanyaan {0} / {1}",
            emptySurvey: "Tidak ada halaman atau pertanyaan dalam survei.",
            completingSurvey: "Terima kasih telah menyelesaikan survei!",
            completingSurveyBefore: "Catatan kami menunjukkan bahwa Anda telah menyelesaikan survei ini.",
            loadingSurvey: "Memuat survei...",
            placeholder: "Pilih...",
            value: "nilai",
            requiredError: "Silahkan jawab pertanyaan berikut.",
            requiredErrorInPanel: "Silahkan jawab setidaknya satu petanyaan.",
            requiredInAllRowsError: "Silahkan jawab pertanyaan pada semua baris.",
            numericError: "Nilai harus berupa angka.",
            textMinLength: "Silahkan masukkan setidaknya {0} karakter.",
            textMaxLength: "Silahkan masukkan kurang {0} karakter.",
            textMinMaxLength: "PSilahkan masukkan lebih dari {0} dan kurang dari {1} karakter.",
            minRowCountError: "Silahkan isi setidaknya {0} baris.",
            minSelectError: "Silahkan pilih setidaknya {0} varian.",
            maxSelectError: "Silahkan pilih tidak lebih dari {0} varian.",
            numericMinMax: "'{0}' harus sama dengan atau lebih dari {1} dan harus sama dengan atau kurang dari {2}",
            numericMin: "'{0}' harus sama dengan atau lebih dari {1}",
            numericMax: "'{0}' harus sama dengan atau kurang dari {1}",
            invalidEmail: "Silahkan masukkan e-mail yang benar.",
            invalidExpression: "Ekspresi: {0} harus mengembalikan 'benar'.",
            urlRequestError: "Permintaan mengembalikan kesalahan '{0}'. {1}",
            urlGetChoicesError: "Permintaan mengembalikan data kosong atau properti 'path' salah.",
            exceedMaxSize: "Ukuran berkas tidak boleh melebihi {0}.",
            otherRequiredError: "Silahkan masukkan nilai lainnnya.",
            uploadingFile: "Berkas Anda sedang diunggah. Silahkan tunggu beberapa saat atau coba lagi.",
            loadingFile: "Memuat...",
            chooseFile: "Pilih berkas...",
            noFileChosen: "Tidak ada file yang dipilih",
            confirmDelete: "Apakah Anda ingin menghapus catatan?",
            keyDuplicationError: "Nilai harus unik.",
            addColumn: "Tambah kolom",
            addRow: "Tambah baris",
            removeRow: "Hapus",
            addPanel: "Tambah baru",
            removePanel: "Hapus",
            choices_Item: "item",
            matrix_column: "Kolom",
            matrix_row: "Baris",
            savingData: "Hasil sedang disimpan pada server...",
            savingDataError: "Kesalahan terjadi dan kami tidak dapat menyimpan hasil.",
            savingDataSuccess: "Hasil telah sukses disimpan!",
            saveAgainButton: "Coba lagi",
            timerMin: "menit",
            timerSec: "detik",
            timerSpentAll: "Anda telah menghabiskan {0} pada halaman ini dan {1} secara keseluruhan.",
            timerSpentPage: "YAnda telah menghabiskan {0} pada halaman ini.",
            timerSpentSurvey: "Anda telah menghabiskan {0} secara keseluruhan.",
            timerLimitAll: "Anda telah menghabiskan {0} dari {1} pada halaman ini dan {2} dari {3} secara keseluruhan.",
            timerLimitPage: "Anda telah menghabiskan {0} dari {1} pada halaman ini.",
            timerLimitSurvey: "Anda telah menghabiskan {0} dari {1} secara keseluruhan.",
            clearCaption: "Bersihkan",
            chooseFileCaption: "Pilih File",
            removeFileCaption: "Hapus berkas ini",
            booleanCheckedLabel: "Iya",
            booleanUncheckedLabel: "Tidak",
            confirmRemoveFile: "Anda yakin ingin menghapus file ini: {0}?",
            confirmRemoveAllFiles: "Anda yakin ingin menghapus semua file?",
            questionTitlePatternText: "Judul pertanyaan"
        }, u.localeNames.id = "bahasa Indonesia";
        u.locales.it = {
            pagePrevText: "Precedente",
            pageNextText: "Successivo",
            completeText: "Salva",
            previewText: "Anteprima",
            editText: "Modifica",
            startSurveyText: "Inizio",
            otherItemText: "Altro (descrivi)",
            noneItemText: "Nessuno",
            selectAllItemText: "Seleziona tutti",
            progressText: "Pagina {0} di {1}",
            indexText: "{0} da {1}",
            panelDynamicProgressText: "Record di {0} di {1}",
            questionsProgressText: "Risposte a {0}/{1} domande",
            emptySurvey: "Non ci sono pagine o domande visibili nel questionario.",
            completingSurvey: "Grazie per aver completato il questionario!",
            completingSurveyBefore: "I nostri records mostrano che hai già completato questo questionario.",
            loadingSurvey: "Caricamento del questionario in corso...",
            placeholder: "Scegli...",
            ratingOptionsCaption: "Tocca qui per valutare...",
            value: "valore",
            requiredError: "Campo obbligatorio",
            requiredErrorInPanel: "Per Favore, rispondi ad almeno una domanda.",
            requiredInAllRowsError: "Completare tutte le righe",
            numericError: "Il valore deve essere numerico",
            minError: "Il valore non deve essere inferiore a {0}",
            maxError: "Il valore non deve essere maggiore di {0}",
            textMinLength: "Inserire almeno {0} caratteri",
            textMaxLength: "Lunghezza massima consentita {0} caratteri",
            textMinMaxLength: "Inserire una stringa con minimo {0} e massimo {1} caratteri",
            minRowCountError: "Completare almeno {0} righe.",
            minSelectError: "Selezionare almeno {0} varianti.",
            maxSelectError: "Selezionare massimo {0} varianti.",
            numericMinMax: "'{0}' deve essere uguale o superiore a {1} e uguale o inferiore a {2}",
            numericMin: "'{0}' deve essere uguale o superiore a {1}",
            numericMax: "'{0}' deve essere uguale o inferiore a {1}",
            invalidEmail: "Inserire indirizzo mail valido",
            invalidExpression: "L'espressione: {0} dovrebbe tornare 'vero'.",
            urlRequestError: "La richiesta ha risposto con un errore '{0}'. {1}",
            urlGetChoicesError: "La richiesta ha risposto null oppure il percorso non è corretto",
            exceedMaxSize: "Il file non può eccedere {0}",
            otherRequiredError: "Inserire il valore 'altro'",
            uploadingFile: "File in caricamento. Attendi alcuni secondi e riprova",
            loadingFile: "Caricamento...",
            chooseFile: "Selezionare file(s)...",
            noFileChosen: "Nessun file selezionato",
            fileDragAreaPlaceholder: "Trascina un file qui o fai clic sul pulsante in basso per caricare il file.",
            confirmDelete: "Sei sicuro di voler elminare il record?",
            keyDuplicationError: "Questo valore deve essere univoco.",
            addColumn: "Aggiungi colonna",
            addRow: "Aggiungi riga",
            removeRow: "Rimuovi riga",
            emptyRowsText: "Non ci sono righe.",
            addPanel: "Aggiungi riga",
            removePanel: "Elimina",
            choices_Item: "Elemento",
            matrix_column: "Colonna",
            matrix_row: "Riga",
            multipletext_itemname: "testo",
            savingData: "Salvataggio dati sul server...",
            savingDataError: "Si è verificato un errore e non è stato possibile salvare i risultati.",
            savingDataSuccess: "I risultati sono stati salvati con successo!",
            saveAgainButton: "Riprova",
            timerMin: "min",
            timerSec: "sec",
            timerSpentAll: "Hai impiegato {0} su questa pagina e {1} in totale.",
            timerSpentPage: "Hai impiegato {0} su questa pagina.",
            timerSpentSurvey: "Hai impiegato {0} in totale.",
            timerLimitAll: "Hai impiegato {0} di {1} su questa pagina e {2} di {3} in totale.",
            timerLimitPage: "Hai impiegato {0} di {1} su questa pagina.",
            timerLimitSurvey: "Hai impiegato {0} di {1} in totale.",
            clearCaption: "Cancella",
            signaturePlaceHolder: "Firmare qui",
            chooseFileCaption: "Scegliere il file",
            removeFileCaption: "Rimuovere questo file",
            booleanCheckedLabel: "Sì",
            booleanUncheckedLabel: "No",
            confirmRemoveFile: "Sei sicuro di voler elminare questo file: {0}?",
            confirmRemoveAllFiles: "Sei sicuro di voler elminare tutti i files?",
            questionTitlePatternText: "Titolo della domanda",
            modalCancelButtonText: "Annulla",
            modalApplyButtonText: "Applicare",
            filterStringPlaceholder: "Digita per cercare...",
            noEntriesText: "Non ci sono ancora voci.\nFai clic sul pulsante qui sotto per aggiungere una nuova voce."
        }, u.localeNames.it = "italiano";
        u.locales.ja = {
            pagePrevText: "前へ",
            pageNextText: "次へ",
            completeText: "完了",
            previewText: "プレビュー",
            editText: "編集",
            startSurveyText: "スタート",
            otherItemText: "その他（説明）",
            noneItemText: "なし",
            selectAllItemText: "すべて選択",
            progressText: "{0}/{1}頁",
            panelDynamicProgressText: "{1}の{0}を記録する",
            questionsProgressText: "{0}/{1}の質問に回答しました。",
            emptySurvey: "この調査に表示できるページや質問はありません",
            completingSurvey: "調査を完了してくれてありがとうございました",
            completingSurveyBefore: "当社の記録によると、この調査はすでに完了しています。",
            loadingSurvey: "調査をダウンロード中",
            placeholder: "選択",
            value: "値打ち",
            requiredError: "質問にお答え下さい",
            requiredErrorInPanel: "最低でも1つの質問に答えてください。",
            requiredInAllRowsError: "質問には全列で回答してください。",
            numericError: "数字でご記入下さい",
            textMinLength: "{0} 文字以上で入力して下さい",
            textMaxLength: "{0}文字以下で入力してください。",
            textMinMaxLength: "{0}以上{1}未満の文字を入力してください。",
            minRowCountError: "{0}行以上で入力して下さい",
            minSelectError: "{0}種類以上を選択して下さい",
            maxSelectError: "{0}以上のバリアントを選択しないでください。",
            numericMinMax: "{0}は{1}以上であり、{2}以下であることが望ましい。",
            numericMin: "'{0}' は同等か{1}より大きくなければなりません",
            numericMax: "'{0}' は同等か{1}より小さくなければなりません",
            invalidEmail: "有効なメールアドレスをご記入下さい",
            invalidExpression: "式は {0}は'true'を返すべきです。",
            urlRequestError: "リクエストはエラー '{0}' を返しました。{1}",
            urlGetChoicesError: "リクエストが空のデータを返したか、'path' プロパティが正しくありません。",
            exceedMaxSize: "ファイルのサイズは{0}を超えてはいけません",
            otherRequiredError: "その他の値を入力してください。",
            uploadingFile: "ファイルをアップロード中です。しばらくしてから再度お試し下さい",
            loadingFile: "読み込み中",
            chooseFile: "ファイルを選択",
            noFileChosen: "選択されたファイルはありません",
            confirmDelete: "レコードを削除しますか？",
            keyDuplicationError: "この値は一意でなければなりません。",
            addColumn: "列の追加",
            addRow: "追加行",
            removeRow: "除去",
            addPanel: "新規追加",
            removePanel: "除去",
            choices_Item: "品目",
            matrix_column: "コラム",
            matrix_row: "行",
            savingData: "結果はサーバーに保存されています...。",
            savingDataError: "エラーが発生し、結果を保存できませんでした。",
            savingDataSuccess: "結果は無事に保存されました",
            saveAgainButton: "もう一度試してみてください。",
            timerMin: "僅少",
            timerSec: "セック",
            timerSpentAll: "あなたはこのページに{0}を費やし、合計で{1}を費やしました。",
            timerSpentPage: "あなたはこのページに{0}を費やしました。",
            timerSpentSurvey: "合計で{0}を使ったことになります。",
            timerLimitAll: "このページに{1}のうち{0}を費やし、{3}のうち{2}を合計で費やしました。",
            timerLimitPage: "このページで{1}の{0}を使ったことがあります。",
            timerLimitSurvey: "合計で{1}の{0}を使ったことがあります。",
            clearCaption: "空白",
            chooseFileCaption: "ファイルを選択",
            removeFileCaption: "このファイルを削除",
            booleanCheckedLabel: "噫",
            booleanUncheckedLabel: "否",
            confirmRemoveFile: "このファイルを削除してもよろしいですか？{0}?",
            confirmRemoveAllFiles: "すべてのファイルを削除してもよろしいですか？",
            questionTitlePatternText: "質問名"
        }, u.localeNames.ja = "日本語";
        u.locales.kk = {
            pagePrevText: "Артқа",
            pageNextText: "Келесі",
            completeText: "Дайын",
            previewText: "Алдын ала қарау",
            editText: "Редакциялау",
            startSurveyText: "Бастау",
            otherItemText: "Басқа (өтінеміз, жазыңыз)",
            noneItemText: "Жоқ",
            selectAllItemText: "Барлығын таңдау",
            progressText: "{0} ден {1} бет ",
            panelDynamicProgressText: "{0} ден {1} жазба",
            questionsProgressText: "{0}/{1} сұрақтарға жауап",
            emptySurvey: "Бір де бір сұрақ жоқ.",
            completingSurvey: "Сауалнаманы толтырғаныңыз үшін рахмет!",
            completingSurveyBefore: "Сіз бұл сауалнаманы өтіп қойдыңыз.",
            loadingSurvey: "Серверден жүктеу...",
            placeholder: "Таңдау...",
            value: "мәні",
            requiredError: "Өтінеміз, сұраққа жауап беріңіз.",
            requiredErrorInPanel: "Өтінеміз, кем дегенде бір сұраққа жауап беріңіз.",
            requiredInAllRowsError: "Өтінеміз, әрбір жолдың сұрағаны жауап беріңіз.",
            numericError: "Жауап сан түрінде болуы керек.",
            textMinLength: "Өтінеміз, {0} ден көп таңба енгізіңіз.",
            textMaxLength: "Өтінеміз, {0} ден аз таңба енгізіңіз.",
            textMinMaxLength: "Өтінеміз, {0} аз және {1} көп таңба енгізіңіз.",
            minRowCountError: "Өтінеміз, {0} ден кем емес жол толтырыңыз.",
            minSelectError: "Өтінеміз, тым болмаса {0} нұсқа таңдаңыз.",
            maxSelectError: "Өтінеміз, {0} нұсқадан көп таңдамаңыз.",
            numericMinMax: "'{0}' {1} ден кем емес және {2} ден көп емес болу керек",
            numericMin: "'{0}' {1} ден кем емес болу керек",
            numericMax: "'{0}' {1} ден көп емес болу керек",
            invalidEmail: "Өтінеміз, жарамды электрондық поштаңызды енгізіңіз.",
            invalidExpression: "{0} өрнегі  'true' қайтару керек.",
            urlRequestError: "Сұратым қателікті қайтарды'{0}'. {1}",
            urlGetChoicesError: "Сұратымға жауап бос келді немесе 'path' қасиеті қате көрсетілген ",
            exceedMaxSize: "Файлдың мөлшері {0} аспау керек.",
            otherRequiredError: "Өтінеміз, “Басқа” жолына деректі енгізіңіз",
            uploadingFile: "Сіздің файлыңыз жүктеліп жатыр. Бірнеше секунд тосып, қайтадан байқап көріңіз.",
            loadingFile: "Жүктеу...",
            chooseFile: "Файлдарды таңдаңыз...",
            noFileChosen: "Файл таңдалынбады",
            confirmDelete: "Сіз жазбаны жоятыныңызға сенімдісіз бе?",
            keyDuplicationError: "Бұл мән бірегей болу керек.",
            addColumn: "Бағана қосу",
            addRow: "Жолды қосу",
            removeRow: "Өшіру",
            addPanel: "Жаңа қосу",
            removePanel: "Өшіру",
            choices_Item: "Нұсқа",
            matrix_column: "Бағана",
            matrix_row: "Жол",
            savingData: "Нәтижелер серверде сақталады...",
            savingDataError: "Қателік туындады, нәтиже сақталынбады.",
            savingDataSuccess: "Нәтиже ойдағыдай сақталды!",
            saveAgainButton: "Қайтадан байқап көру",
            timerMin: "мин",
            timerSec: "сек",
            timerSpentAll: "Сіз бұл бетте {0} кетірдіңіз және барлығы {1}.",
            timerSpentPage: "Сіз бұл бетте {0} кетірдіңіз.",
            timerSpentSurvey: "Сіз сауалнама кезінде {0} кетірдіңіз.",
            timerLimitAll: "Сіз бұл бетте {0} ден {1} кетірдіңіз және {2} ден {3} бүкіл сауалнама үшін.",
            timerLimitPage: "Сіз бұл бетте {0} ден {1} кетірдіңіз.",
            timerLimitSurvey: "Сіз бүкіл сауалнама үшін {0} ден {1} кетірдіңіз ",
            clearCaption: "Тазалау",
            chooseFileCaption: "Файл таңдаңыз",
            removeFileCaption: "Файлды жойыңыз",
            booleanCheckedLabel: "Иә",
            booleanUncheckedLabel: "Жоқ",
            confirmRemoveFile: "Сіз бұл файлды жоятыныңызға сенімдісіз бе: {0}?",
            confirmRemoveAllFiles: "Сіз барлық файлдарды жоятыныңызға сенімдісіз бе?",
            questionTitlePatternText: "Сұрақтың атауы"
        }, u.localeNames.kk = "Kazakh";
        u.locales.ko = {
            pagePrevText: "이전",
            pageNextText: "다음",
            completeText: "완료",
            previewText: "미리보기",
            editText: "수정",
            startSurveyText: "시작",
            otherItemText: "기타 (설명)",
            noneItemText: "없음",
            selectAllItemText: "모두 선택",
            progressText: "페이지 {1} / {0}",
            indexText: "{0} / {1}",
            panelDynamicProgressText: "{0} / {1}",
            questionsProgressText: "{0} / {1} 개의 질문에 답변함",
            emptySurvey: "설문지에 보여지는 페이지나 질문이 없습니다.",
            completingSurvey: "설문조사를 완료해 주셔서 감사합니다.",
            completingSurveyBefore: "기록에 따르면 이미 설문 조사를 마치셨습니다.",
            loadingSurvey: "설문조사가 로드중입니다...",
            placeholder: "선택...",
            ratingOptionsCaption: "등급을 매기려면 누르세요.",
            value: "값",
            requiredError: "질문에 답하시오.",
            requiredErrorInPanel: "하나 이상의 질문에 답하십시오.",
            requiredInAllRowsError: "모든 행에 있는 질문에 답하십시오.",
            numericError: "값은 숫자여야 합니다.",
            minError: "값은 {0}보다 작으면 안됩니다.",
            maxError: "값은 {0}보다 클 수 없습니다.",
            textMinLength: "답변의 길이는 최소 {0}자여야 입니다.",
            textMaxLength: "답변의 길이는 {0}자를 초과 할 수 없습니다.",
            textMinMaxLength: "답변의 길이는 {0} - {1}자 사이여야 합니다.",
            minRowCountError: "최소 {0}개의 행을 채우십시오",
            minSelectError: "최소 {0}개의 변수를 선택하십시오.",
            maxSelectError: "최대 {0}개의 변수를 선택하십시오.",
            numericMinMax: "'{0}'은 {1}보다 크거나 같고 {2}보다 작거나 같아야합니다.",
            numericMin: "'{0}'은 {1}보다 크거나 같아야합니다.",
            numericMax: "'{0}'은 {1}보다 작거나 같아야합니다.",
            invalidEmail: "올바른 이메일 주소를 입력하십시오.",
            invalidExpression: "표현식: {0}은 '참'이어야 합니다.",
            urlRequestError: "'{0}'으로 잘못된 요청입니다. {1}",
            urlGetChoicesError: "비어있는 데이터를 요청했거나 잘못된 속성의 경로입니다.",
            exceedMaxSize: "파일 크기가 {0}을 초과 할 수 없습니다.",
            otherRequiredError: "다른 질문을 작성하십시오.",
            uploadingFile: "파일 업로드 중입니다. 잠시 후 다시 시도하십시오.",
            loadingFile: "로드 중...",
            chooseFile: "파일 선택...",
            noFileChosen: "선택된 파일이 없습니다.",
            fileDragAreaPlaceholder: "파일을 여기에 놓거나 아래 버튼을 클릭하여 파일을 불러오세요.",
            confirmDelete: "기록을 삭제하시겠습니까?",
            keyDuplicationError: " 이 값은 고유해야합니다.",
            addColumn: "열 추가",
            addRow: "행 추가",
            removeRow: "제거",
            emptyRowsText: "행이 없습니다.",
            addPanel: "추가",
            removePanel: "제거",
            choices_Item: "항목",
            matrix_column: "열",
            matrix_row: "행",
            multipletext_itemname: "텍스트",
            savingData: "결과가 서버에 저장 중입니다...",
            savingDataError: "오류가 발생하여 결과를 저장할 수 없습니다.",
            savingDataSuccess: "결과가 성공적으로 저장되었습니다.",
            saveAgainButton: "다시 시도하세요.",
            timerMin: "분",
            timerSec: "초",
            timerSpentAll: "현재 페이지에서 {0}을 소요해 총 {1}이 걸렸습니다.",
            timerSpentPage: "현재 페이지에서 {0}이 걸렸습니다.",
            timerSpentSurvey: "총 {0}이 걸렸습니다.",
            timerLimitAll: "현재 페이지에서 {0}/{1}을 소요해 총 {2}/{3}이 걸렸습니다.",
            timerLimitPage: "현재 페이지에서 {0}/{1}이 걸렸습니다.",
            timerLimitSurvey: "총 {0}/{1}이 걸렸습니다.",
            clearCaption: "지우기",
            signaturePlaceHolder: "서명하세요.",
            chooseFileCaption: "파일 선택",
            removeFileCaption: "파일 제거",
            booleanCheckedLabel: "예",
            booleanUncheckedLabel: "아니오",
            confirmRemoveFile: "{0} 파일을 제거 하시겠습니까?",
            confirmRemoveAllFiles: "모든 파일을 제거 하시겠습니까?",
            questionTitlePatternText: "질문 제목",
            modalCancelButtonText: "취소",
            modalApplyButtonText: "적용",
            filterStringPlaceholder: "검색 유형...",
            noEntriesText: "아직 항목이 없습니다.\n새 항목을 추가하려면 아래 버튼을 클릭하세요.",
            more: "더보기"
        }, u.localeNames.ko = "한국어";
        u.locales.lv = {
            pagePrevText: "Atpakaļ",
            pageNextText: "Tālāk",
            completeText: "Pabeigt",
            previewText: "Priekšskatījums",
            editText: "Rediģēt",
            startSurveyText: "Sākt",
            otherItemText: "Cits (lūdzu, aprakstiet!)",
            noneItemText: "Nav",
            selectAllItemText: "Izvēlēties visus",
            progressText: "{0}. lapa no {1}",
            indexText: "{0} no {1}",
            panelDynamicProgressText: "Ierakstīt {0} no {1}",
            questionsProgressText: "Atbildēts uz {0} / {1} jautājumiem",
            emptySurvey: "Nav neviena jautājuma.",
            completingSurvey: "Pateicamies Jums par anketas aizpildīšanu!",
            completingSurveyBefore: "Mūsu ieraksti liecina, ka Jūs jau esat aizpildījis šo aptauju.",
            loadingSurvey: "Ielāde no servera...",
            placeholder: "Izvēlēties...",
            ratingOptionsCaption: "Nospiediet šeit, lai novērtētu...",
            value: "value",
            requiredError: "Lūdzu, atbildiet uz jautājumu!",
            requiredErrorInPanel: "Lūdzu, atbildiet uz vismaz vienu jautājumu.",
            requiredInAllRowsError: "Lūdzu, atbildiet uz jautājumiem visās rindās.",
            numericError: "Atbildei ir jābūt skaitlim.",
            minError: "Vērtība nedrīkst būt mazāka par {0}",
            maxError: "Vērtība nedrīkst būt lielāka par {0}",
            textMinLength: "Lūdzu, ievadiet vismaz {0} simbolus.",
            textMaxLength: "Lūdzu, ievadiet mazāk nekā {0} rakstzīmes.",
            textMinMaxLength: "Lūdzu, ievadiet vairāk nekā {0} rakstzīmes un mazāk nekā {1} rakstzīmes.",
            minRowCountError: "Lūdzu, aizpildiet vismaz {0} rindas.",
            minSelectError: "Lūdzu, izvēlieties vismaz {0} variantu.",
            maxSelectError: "Lūdzu, izvēlieties ne vairak par {0} variantiem.",
            numericMinMax: "'{0}' jābūt vienādam vai lielākam nekā {1}, un vienādam vai mazākam, nekā {2}",
            numericMin: "'{0}' jābūt vienādam vai lielākam {1}",
            numericMax: "'{0}' jābūt vienādam vai lielākam {1}",
            invalidEmail: "Lūdzu, ievadiet pareizu e-pasta adresi!",
            invalidExpression: "Izteicienam: {0} jāatgriež “true”.",
            urlRequestError: "Pieprasījumā tika atgriezta kļūda “{0}”. {1}",
            urlGetChoicesError: "Pieprasījums atgrieza tukšus datus vai rekvizīts “path” ir nepareizs",
            exceedMaxSize: "Faila lielums nedrīkst pārsniegt {0}.",
            otherRequiredError: "Lūdzu, ievadiet datus laukā 'Cits'",
            uploadingFile: "Jūsu fails tiek augšupielādēts. Lūdzu, uzgaidiet dažas sekundes un mēģiniet vēlreiz.",
            loadingFile: "Notiek ielāde ...",
            chooseFile: "Izvēlieties failus ...",
            noFileChosen: "Nav izvēlēts neviens fails",
            fileDragAreaPlaceholder: "Lai pievienotu, ievelciet failu šeit vai arī klikšķiniet uz zemāk redzamās pogas",
            confirmDelete: "Vai vēlaties izdzēst ierakstu?",
            keyDuplicationError: "Šai vērtībai jābūt unikālai.",
            addColumn: "Pievienot kolonnu",
            addRow: "Pievienot rindu",
            removeRow: "Noņemt",
            emptyRowsText: "Nav rindu.",
            addPanel: "Pievieno jaunu",
            removePanel: "Noņemt",
            choices_Item: "vienums",
            matrix_column: "Sleja",
            matrix_row: "Rinda",
            multipletext_itemname: "teksts",
            savingData: "Rezultāti tiek saglabāti serverī ...",
            savingDataError: "Radās kļūda, un mēs nevarējām saglabāt rezultātus.",
            savingDataSuccess: "Rezultāti tika veiksmīgi saglabāti!",
            saveAgainButton: "Mēģiniet vēlreiz",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Šajā lapā esat iztērējis {0} un kopā {1}.",
            timerSpentPage: "Šajā lapā esat iztērējis {0}.",
            timerSpentSurvey: "Kopā esat iztērējis {0}.",
            timerLimitAll: "Šajā lapā esat iztērējis {0} no {1} un kopā {2} no {3}.",
            timerLimitPage: "Šajā lapā esat iztērējis {0} no {1}.",
            timerLimitSurvey: "Kopā esat iztērējis {0} no {1}.",
            clearCaption: "Iztīrīt",
            signaturePlaceHolder: "Parakstieties šeit",
            chooseFileCaption: "Izvēlēties failu",
            removeFileCaption: "Noņemiet šo failu",
            booleanCheckedLabel: "Jā",
            booleanUncheckedLabel: "Nē",
            confirmRemoveFile: "Vai tiešām vēlaties noņemt šo failu: {0}?",
            confirmRemoveAllFiles: "Vai tiešām vēlaties noņemt visus failus?",
            questionTitlePatternText: "Jautājuma nosaukums",
            modalCancelButtonText: "Atcelt",
            modalApplyButtonText: "Pielietot",
            filterStringPlaceholder: "Ierakstiet, lai meklētu...",
            noEntriesText: "Vēl nav neviena ieraksta.\nNoklikšķiniet uz zemāk esošās pogas, lai pievienotu jaunu ierakstu."
        }, u.localeNames.lv = "latviešu";
        u.locales.lt = {
            pagePrevText: "Atgal",
            pageNextText: "Toliau",
            completeText: "Baigti",
            previewText: "Peržiūra",
            editText: "Redaguoti",
            startSurveyText: "Pradėti",
            otherItemText: "Kita (įvesti)",
            noneItemText: "Nėra",
            selectAllItemText: "Pasirinkti visus",
            progressText: "Puslapis {0} iš {1}",
            panelDynamicProgressText: "Įrašyti {0} iš {1}",
            questionsProgressText: "Atsakė į {0} / {1} klausimus",
            emptySurvey: "Apklausoje nėra matomo puslapio ar klausimo.",
            completingSurvey: "Dėkojame už dalyvavimą apklausoje!",
            completingSurveyBefore: "Mūsų įrašai rodo, kad jau atlikote šią apklausą.",
            loadingSurvey: "Prašome palaukti...",
            placeholder: "Pasirinkti...",
            value: "reikšmė",
            requiredError: "Būtina atsakyti į šį klausimą.",
            requiredErrorInPanel: "Būtina atsakyti bent į vieną klausimą.",
            requiredInAllRowsError: "Prašome atsakyti į klausimus visose eilutėse.",
            numericError: "Turi būti skaičiai.",
            textMinLength: "Prašome suvesti bent {0} simbolius.",
            textMaxLength: "Prašome suvesti mažiau nei {0} simbolių.",
            textMinMaxLength: "Prašome suvesti daugiau nei {0} ir mažiau nei {1} simbolių.",
            minRowCountError: "Prašome suvesti ne mažiau nei {0} eilučių.",
            minSelectError: "Prašome pasirinkti bent {0} variantų.",
            maxSelectError: "Pasirinkite ne daugiau kaip {0} variantus.",
            numericMinMax: "'{0}' turi būti lygus arba didesnis nei {1} ir lygus arba mažesnis nei {2}",
            numericMin: "'{0}' turėtų būti lygus arba didesnis nei {1}",
            numericMax: "'{0}' turėtų būti lygus ar mažesnis už {1}",
            invalidEmail: "Prašome įvesti galiojantį elektroninio pašto adresą.",
            invalidExpression: "Reikšmė: {0} turi grąžinti 'true'.",
            urlRequestError: "Užklausa grąžino klaidą'{0}'. {1}",
            urlGetChoicesError: "Užklausa grąžino tuščius duomenis arba 'path' savybė yra neteisinga",
            exceedMaxSize: "Failo dydis neturi viršyti {0}.",
            otherRequiredError: "Įveskite kitą reikšmę.",
            uploadingFile: "Jūsų failas yra keliamas. Palaukite keletą sekundžių ir bandykite dar kartą.",
            loadingFile: "Prašome palaukti...",
            chooseFile: "Pasirinkti failą(us)...",
            noFileChosen: "Nepasirinktas joks failas",
            confirmDelete: "Ar norite ištrinti įrašą?",
            keyDuplicationError: "Ši reikšmė turėtų būti unikali.",
            addColumn: "Pridėti stulpelį",
            addRow: "Pridėti eilutę",
            removeRow: "Ištrinti",
            addPanel: "Pridėti naują",
            removePanel: "Ištrinti",
            choices_Item: "elementas",
            matrix_column: "Stulpelis",
            matrix_row: "Eilutė",
            savingData: "Rezultatai saugomi serveryje...",
            savingDataError: "Įvyko klaida ir mes negalėjome išsaugoti rezultatų.",
            savingDataSuccess: "Rezultatai buvo išsaugoti sėkmingai!",
            saveAgainButton: "Bandyti dar kartą",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Praleidote {0} šiame puslapyje ir {1} iš viso.",
            timerSpentPage: "Praleidote {0} šiame puslapyje.",
            timerSpentSurvey: "Praleidote {0} iš viso.",
            timerLimitAll: "Praleidote {0} iš {1} šiame puslapyje ir {2} iš {3} iš viso.",
            timerLimitPage: "Praleidote {0} iš {1} šiame puslapyje.",
            timerLimitSurvey: "Praleidote {0} iš {1} iš viso.",
            clearCaption: "Valyti",
            chooseFileCaption: "Pasirinkti failą",
            removeFileCaption: "Ištrinti šį failą",
            booleanCheckedLabel: "Taip",
            booleanUncheckedLabel: "Ne",
            confirmRemoveFile: "Ar tikrai norite pašalinti šį failą: {0}?",
            confirmRemoveAllFiles: "Ar tikrai norite pašalinti visus failus?",
            questionTitlePatternText: "Klausimo pavadinimas"
        }, u.localeNames.lt = "lietuvių";
        u.locales.mk = {
            pagePrevText: "Претходна",
            pageNextText: "Следно",
            completeText: "Заврши",
            previewText: "Преглед",
            editText: "Уредување",
            startSurveyText: "Започнете",
            otherItemText: "Друго (опиши)",
            noneItemText: "Ништо",
            selectAllItemText: "Селектирај се",
            progressText: "Страница {0} од {1}",
            panelDynamicProgressText: "Сними {0} од {1}",
            questionsProgressText: "Одговорени на {0} / {1} прашања",
            emptySurvey: "Нема видлива страница или прашање во истражувањето.",
            completingSurvey: "Ви благодариме што го завршивте истражувањето!",
            completingSurveyBefore: "Нашите записи покажуваат дека веќе сте го завршиле ова истражување.",
            loadingSurvey: "Анкетата се вчитува ...",
            placeholder: "Изберете ...",
            value: "вредност",
            requiredError: "Ве молам, одговорете на прашањето.",
            requiredErrorInPanel: "Ве молам, одговорете барем на едно прашање.",
            requiredInAllRowsError: "Ве молиме, одговорете на прашања во сите редови.",
            numericError: "Вредноста треба да биде нумеричка.",
            minError: "Вредноста не треба да биде помала од {0}",
            maxError: "Вредноста не треба да биде поголема од {0}",
            textMinLength: "Внесете најмалку {0} знак/ци.",
            textMaxLength: "Внесете не повеќе од {0} знак/ци.",
            textMinMaxLength: "Внесете најмалку {0} и не повеќе од {1} знаци.",
            minRowCountError: "Пополнете најмалку {0} ред(ови).",
            minSelectError: "Ве молиме изберете најмалку {0} варијанта(и).",
            maxSelectError: "Изберете не повеќе од {0} варијанта(и).",
            numericMinMax: "'{0}' треба да биде најмалку {1} и најмногу {2}",
            numericMin: "'{0}' треба да биде најмалку {1}",
            numericMax: "'{0}' треба да биде најмногу {1}",
            invalidEmail: "Ве молиме внесете валидна е-маил адреса.",
            invalidExpression: "Изразот: {0} треба да се врати 'true'.",
            urlRequestError: "Барањето врати грешка '{0}'. {1} ",
            urlGetChoicesError: "Барањето врати празни податоци или својството 'path' е неточно",
            exceedMaxSize: "Големината на датотеката не треба да надминува {0}.",
            otherRequiredError: "Внесете ја другата вредност.",
            uploadingFile: "Вашата датотека се поставува. Ве молиме почекајте неколку секунди и обидете се повторно.",
            loadingFile: "Се вчитува ...",
            chooseFile: "Изберете датотека (и) ...",
            noFileChosen: "Не се избрани датотеки",
            fileDragAreaPlaceholder: "Пуштете датотека овде или кликнете на копчето подолу за да ја вчитате датотеката.",
            confirmDelete: "Дали сакате да го избришете записот?",
            keyDuplicationError: "Оваа вредност треба да биде единствена.",
            addColumn: "Додај колона",
            addRow: "Додади ред",
            removeRow: "Отстрани",
            emptyRowsText: "Нема редови.",
            addPanel: "Додади ново",
            removePanel: "Отстрани",
            choices_Item: "ставка",
            matrix_column: "Колона",
            matrix_row: "Ред",
            savingData: "Резултатите се зачувуваат на серверот ...",
            savingDataError: "Настана грешка и не можевме да ги зачуваме резултатите.",
            savingDataSuccess: "Резултатите беа успешно зачувани!",
            saveAgainButton: "Обиди се повторно",
            timerMin: "мин",
            timerSec: "сек",
            timerSpentAll: "Поминавте {0} на оваа страница и вкупно {1}.",
            timerSpentPage: "Поминавте {0} на оваа страница.",
            timerSpentSurvey: "Вие потрошивте вкупно {0}.",
            timerLimitAll: "Поминавте {0} од {1} на оваа страница и {2} од {3} вкупно.",
            timerLimitPage: "Поминавте {0} од {1} на оваа страница.",
            timerLimitSurvey: "Вие потрошивте вкупно {0} од {1}.",
            clearCaption: "Да расчисти",
            chooseFileCaption: "Изберете датотека",
            removeFileCaption: "Отстранете ја оваа датотека",
            booleanCheckedLabel: "Да",
            booleanUncheckedLabel: "Не",
            confirmRemoveFile: "Дали сте сигурни дека сакате да ја отстраните оваа датотека: {0}?",
            confirmRemoveAllFiles: "Дали сте сигурни дека сакате да ги отстраните сите датотеки?",
            questionTitlePatternText: "Наслов на прашањето",
            modalCancelButtonText: "Откажи",
            modalApplyButtonText: "Аплицирај"
        }, u.localeNames.mk = "Македонски";
        u.locales.ms = {
            pagePrevText: "Sebelumnya",
            pageNextText: "Seterusnya",
            completeText: "Selesai",
            previewText: "Pratonton",
            editText: "Edit",
            startSurveyText: "Mula",
            otherItemText: "Lain (terangkan)",
            noneItemText: "Tiada",
            selectAllItemText: "Pilih Semua",
            progressText: "Halaman {0} daripada {1}",
            panelDynamicProgressText: "Rekod {0} daripada {1}",
            questionsProgressText: "{0}/{1} soalan telah dijawab",
            emptySurvey: "Tiada halaman atau soalan boleh dilihat dalam tinjauan.",
            completingSurvey: "Terima kasih kerana melengkapkan tinjauan!",
            completingSurveyBefore: "Rekod kami menunjukkan yang anda telah melengkapkan tinjauan ini.",
            loadingSurvey: "Memuatkan Tinjauan...",
            placeholder: "Pilih...",
            value: "nilai",
            requiredError: "Respons diperlukan.",
            requiredErrorInPanel: "Respons diperlukan: jawab sekurang-kurangnya satu soalan.",
            requiredInAllRowsError: "Respons diperlukan: jawab soalan dalam semua baris.",
            numericError: "Nilai mestilah numerik.",
            minError: "Nilai tidak boleh kurang daripada {0}",
            maxError: "Nilai tidak boleh lebih besar daripada {0}",
            textMinLength: "Sila masukkan sekurang-kurangnya {0} aksara.",
            textMaxLength: "Sila masukkan tidak lebih daripada {0} aksara.",
            textMinMaxLength: "Sila masukkan sekurang-kurangnya {0} dan tidak lebih daripada {1} aksara.",
            minRowCountError: "Sila isikan sekurang-kurangnya {0} baris.",
            minSelectError: "Sila pilih sekurang-kurangnya {0} varian.",
            maxSelectError: "Sila pilih tidak lebih daripada {0} varian.",
            numericMinMax: "'{0}' mestilah sekurang-kurangnya {1} dan paling banyak {2}",
            numericMin: "'{0}' mestilah sekurang-kurangnya {1}",
            numericMax: "'{0}' mestilah paling banyak {1}",
            invalidEmail: "Sila masukkan alamat e-mel yang sah.",
            invalidExpression: "Ekspresi: {0} hendaklah mengembalikan nilai 'benar'.",
            urlRequestError: "Permintaan mengembalikan ralat '{0}'. {1}",
            urlGetChoicesError: "Permintaan mengembalikan data kosong atau ciri 'laluan' salah",
            exceedMaxSize: "Saiz fail hendaklah tidak melebihi {0}.",
            otherRequiredError: "Respons diperlukan: masukkan nilai lain.",
            uploadingFile: "Fail anda sedang dimuat naik. Sila tunggu beberapa saat dan cuba lagi.",
            loadingFile: "Memuat...",
            chooseFile: "Pilih fail...",
            noFileChosen: "Tiada fail dipilih",
            fileDragAreaPlaceholder: "Letakkan fail di sini atau klik butang di bawah untuk memuatkan fail.",
            confirmDelete: "Adakah anda ingin memadamkan rekod?",
            keyDuplicationError: "Nilai ini hendaklah unik.",
            addColumn: "Tambahkan lajur",
            addRow: "Tambahkan baris",
            removeRow: "Alih keluar",
            emptyRowsText: "Tiada baris.",
            addPanel: "Tambah baharu",
            removePanel: "Alih keluar",
            choices_Item: "item",
            matrix_column: "Lajur",
            matrix_row: "Baris",
            multipletext_itemname: "teks",
            savingData: "Keputusan sedang disimpan pada pelayan...",
            savingDataError: "Ralat berlaku dan kami tidak dapat menyimpan keputusan.",
            savingDataSuccess: "Keputusan berjaya disimpan!",
            saveAgainButton: "Cuba lagi",
            timerMin: "min",
            timerSec: "saat",
            timerSpentAll: "Anda telah meluangkan {0} pada halaman ini dan {1} secara keseluruhan.",
            timerSpentPage: "Anda telah meluangkan {0} pada halaman ini.",
            timerSpentSurvey: "Anda telah meluangkan {0} secara keseluruhan.",
            timerLimitAll: "Anda telah meluangkan {0} daripada {1} pada halaman ini dan {2} daripada {3} secara keseluruhan.",
            timerLimitPage: "Anda telah meluangkan {0} daripada {1} pada halaman ini.",
            timerLimitSurvey: "Anda telah meluangkan {0} daripada {1} secara keseluruhan.",
            clearCaption: "Kosongkan",
            signaturePlaceHolder: "Tandatangan di sini",
            chooseFileCaption: "Pilih fail",
            removeFileCaption: "Alih keluar fail ini",
            booleanCheckedLabel: "Ya",
            booleanUncheckedLabel: "Tidak",
            confirmRemoveFile: "Anda pasti ingin mengalih keluar fail ini: {0}?",
            confirmRemoveAllFiles: "Anda pasti ingin mengalih keluar semua fail?",
            questionTitlePatternText: "Tajuk Soalan",
            modalCancelButtonText: "Batal",
            modalApplyButtonText: "Guna",
            filterStringPlaceholder: "Taip untuk membuat carian...",
            noEntriesText: "Belum ada entri.\nKlik butang di bawah untuk menambahkan entri."
        }, u.localeNames.ms = "melayu";
        u.locales.no = {
            pagePrevText: "Forrige",
            pageNextText: "Neste",
            completeText: "Fullfør",
            previewText: "Forhåndsvisning",
            editText: "Redigere",
            startSurveyText: "Start",
            otherItemText: "Annet (beskriv)",
            noneItemText: "Ingen",
            selectAllItemText: "Velg alle",
            progressText: "Side {0} av {1}",
            panelDynamicProgressText: "Ta opp {0} av {1}",
            questionsProgressText: "Besvarte {0} / {1} spørsmål",
            emptySurvey: "Det er ingen synlig side eller spørsmål i undersøkelsen.",
            completingSurvey: "Takk for at du fullførte undersøkelsen!",
            completingSurveyBefore: "Våre data viser at du allerede har gjennomført denne undersøkelsen.",
            loadingSurvey: "Undersøkelsen laster...",
            placeholder: "Velg...",
            value: "verdi",
            requiredError: "Vennligst svar på spørsmålet.",
            requiredErrorInPanel: "Vennligst svar på minst ett spørsmål.",
            requiredInAllRowsError: "Vennligst svar på spørsmål i alle rader.",
            numericError: "Verdien skal være numerisk.",
            textMinLength: "Vennligst skriv inn minst {0} tegn.",
            textMaxLength: "Vennligst skriv inn mindre enn {0} tegn.",
            textMinMaxLength: "Vennligst skriv inn mer enn {0} og mindre enn {1} tegn.",
            minRowCountError: "Vennligst fyll inn minst {0} rader.",
            minSelectError: "Vennligst velg minst {0} varianter.",
            maxSelectError: "Vennligst ikke velg mer enn {0} varianter.",
            numericMinMax: "'{0}' bør være lik eller mer enn {1} og lik eller mindre enn {2}",
            numericMin: "'{0}' bør være lik eller mer enn {1}",
            numericMax: "'{0}' bør være lik eller mindre enn {1}",
            invalidEmail: "Vennligst skriv inn en gyldig e-post adresse.",
            invalidExpression: "Uttrykket: {0} skal returnere 'sant'.",
            urlRequestError: "Forespørselen returnerte feilen '{0}'. {1}",
            urlGetChoicesError: "Forespørselen returnerte tomme data, eller 'sti' -egenskapen er feil",
            exceedMaxSize: "Filstørrelsen bør ikke overstige {0}.",
            otherRequiredError: "Vennligst skriv inn den andre verdien.",
            uploadingFile: "Filen din lastes opp. Vennligst vent noen sekunder og prøv igjen.",
            loadingFile: "Laster inn ...",
            chooseFile: "Velg fil (er) ...",
            noFileChosen: "Ingen fil valgt",
            confirmDelete: "Ønsker du å slette posten?",
            keyDuplicationError: "Denne verdien skal være unik.",
            addColumn: "Legg til kolonne",
            addRow: "Legg til rad",
            removeRow: "Fjern",
            addPanel: "Legg til ny",
            removePanel: "Fjerne",
            choices_Item: "element",
            matrix_column: "Kolonne",
            matrix_row: "Rad",
            savingData: "Resultatene lagres på serveren ...",
            savingDataError: "Det oppsto en feil, og vi kunne ikke lagre resultatene.",
            savingDataSuccess: "Resultatene ble lagret!",
            saveAgainButton: "Prøv igjen",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Du har tilbrakt {0} på denne siden og {1} totalt.",
            timerSpentPage: "Du har tilbrakt {0} på denne siden.",
            timerSpentSurvey: "Du har tilbrakt {0} totalt.",
            timerLimitAll: "Du har tilbrakt {0} av {1} på denne siden og totalt {2} av {3}.",
            timerLimitPage: "Du har tilbrakt {0} av {1} på denne siden.",
            timerLimitSurvey: "Du har tilbrakt {0} av {1} totalt.",
            clearCaption: "Klar",
            chooseFileCaption: "Velg Fil",
            removeFileCaption: "Fjern denne filen",
            booleanCheckedLabel: "Ja",
            booleanUncheckedLabel: "Nei",
            confirmRemoveFile: "Er du sikker på at du vil fjerne denne filen: {0}?",
            confirmRemoveAllFiles: "Er du sikker på at du vil fjerne alle filene?",
            questionTitlePatternText: "Spørsmålstittel"
        }, u.localeNames.no = "norsk";
        u.locales.fa = {
            pagePrevText: "قبلی",
            pageNextText: "بعدی",
            completeText: "تکمیل",
            previewText: "پیش نمایش",
            editText: "ویرایش",
            startSurveyText: "شروع",
            otherItemText: "دیگر(توضیح)",
            noneItemText: "هیچ",
            selectAllItemText: "انتخاب همه",
            progressText: "صفحه {0} از {1}",
            panelDynamicProgressText: "مورد {0} از {1}",
            questionsProgressText: "تعداد پاسخ {0}/{1} سوال",
            emptySurvey: "صفحه ای یا گزینه ای برای این پرسشنامه موجود نیست.",
            completingSurvey: "از شما بابت تکمیل این پرسشنامه متشکریم",
            completingSurveyBefore: "به نظر می رسد هم هم اکنون پرسشنامه را تکمیل کرده اید.",
            loadingSurvey: "درحال ایجاد پرسشنامه",
            placeholder: "انتخاب کنید...",
            value: "مقدار",
            requiredError: "لطفا به سوال پاسخ دهید",
            requiredErrorInPanel: "لطفا حداقل به یک سوال پاسخ دهید.",
            requiredInAllRowsError: "لطفا سوالات تمام سطرها را پاسخ دهید.",
            numericError: "مقدار باید عددی باشد",
            textMinLength: "لطفا حداقل  {0} حرف وارد کنید",
            textMaxLength: "لطفا کمتر از  {0} حرف وارد کنید.",
            textMinMaxLength: "لطفا بیشتر از  {0} حرف و کمتر از {1} حرف وارد کنید.",
            minRowCountError: "لطفا حداقل {0} سطر وارد کنید.",
            minSelectError: "حداقل {0} انتخاب کنید.",
            maxSelectError: "لطفا بیشتر از  {0} انتخاب کنید.",
            numericMinMax: "'{0}' باید بین {1} و {2} باشد",
            numericMin: "'{0}' بزرگتر مساوی {1} باشد",
            numericMax: "'{0}' باید کوچکتر یا مساوی {1} باشد",
            invalidEmail: "لطفا ایمیل صحیح درج کنید",
            invalidExpression: "عبارت: {0} پاسخ باید 'true' باشد.",
            urlRequestError: "درخواست با خطا روبرو شد: '{0}'. {1}",
            urlGetChoicesError: "درخواست مسیری خالی بازگشت داده یا مسیر درست تنظیم نشده",
            exceedMaxSize: "بیشترین حجم مجاز فایل: {0}",
            otherRequiredError: "مقدار 'دیگر' را وارد کنید",
            uploadingFile: "فایل در حال آیلود است. لطفا صبر کنید.",
            loadingFile: "بارگیری...",
            chooseFile: "انتخاب فایل(ها)...",
            noFileChosen: "هیچ فایلی انتخاب نشده",
            confirmDelete: "آیا مایل به حذف این ردیف هستید؟",
            keyDuplicationError: "این مقدار باید غیر تکراری باشد",
            addColumn: "ستون جدید",
            addRow: "سطر جدید",
            removeRow: "حذف",
            addPanel: "جدید",
            removePanel: "حذف",
            choices_Item: "آیتم",
            matrix_column: "ستون",
            matrix_row: "سطر",
            savingData: "نتایج در حال ذخیره سازی در سرور است",
            savingDataError: "خطایی در ذخیره سازی نتایج رخ داده است",
            savingDataSuccess: "نتایج با موفقیت ذخیره شد",
            saveAgainButton: "مجدد تلاش کنید",
            timerMin: "دقیقه",
            timerSec: "ثانیه",
            timerSpentAll: "شما مدت {0} در این صفحه و مدت {1} را در مجموع سپری کرده اید.",
            timerSpentPage: "شما مدت {0} را در این صفحه سپری کرده اید.",
            timerSpentSurvey: "شما مدت {0} را در مجموع سپری کرده اید.",
            timerLimitAll: "شما مدت {0} از {1} در این صفحه و مدت {2} از {3} را در مجموع سپری کرده اید.",
            timerLimitPage: "شما مدت {0} از {1} را در این صفحه سپری کرده اید.",
            timerLimitSurvey: "شما مدت {0} از {1} را در مجموع سپری کرده اید.",
            clearCaption: "خالی کردن",
            chooseFileCaption: "انتخاب فایل",
            removeFileCaption: "حذف این فایل",
            booleanCheckedLabel: "بله",
            booleanUncheckedLabel: "خیر",
            confirmRemoveFile: "آیا میخواهید این فایل را پاک کنید: {0}?",
            confirmRemoveAllFiles: "آیا میخواهید تمام فایل ها را پاک کنید?",
            questionTitlePatternText: "عنوان سوال"
        }, u.localeNames.fa = "فارْسِى";
        u.locales.pl = {
            pagePrevText: "Wstecz",
            pageNextText: "Dalej",
            completeText: "Gotowe",
            previewText: "Premiera",
            editText: "Edycja",
            startSurveyText: "Start",
            otherItemText: "Inna odpowiedź (wpisz)",
            noneItemText: "Brak",
            selectAllItemText: "Wybierz wszystkie",
            progressText: "Strona {0} z {1}",
            indexText: "{0} od {1}",
            panelDynamicProgressText: "Zapis {0} z {1}",
            questionsProgressText: "Odpowiedzi na {0}/{1} pytania",
            emptySurvey: "Nie ma widocznych pytań.",
            completingSurvey: "Dziękujemy za wypełnienie ankiety!",
            completingSurveyBefore: "Z naszych zapisów wynika, że wypełniłeś już tę ankietę.",
            loadingSurvey: "Trwa wczytywanie ankiety...",
            placeholder: "Wybierz...",
            ratingOptionsCaption: "Kliknij tutaj, aby ocenić...",
            value: "Wartość",
            requiredError: "Proszę odpowiedzieć na to pytanie.",
            requiredErrorInPanel: "Proszę odpowiedzieć na co najmniej jedno pytanie.",
            requiredInAllRowsError: "Proszę odpowiedzieć na wszystkie pytania.",
            numericError: "W tym polu można wpisać tylko liczby.",
            minError: "Wartość nie powinna być mniejsza niż {0}",
            maxError: "Wartość nie powinna być większa niż {0}",
            textMinLength: "Proszę wpisać co najmniej {0} znaków.",
            textMaxLength: "Proszę wpisać mniej niż {0} znaków.",
            textMinMaxLength: "Proszę wpisać więcej niż {0} i mniej niż {1} znaków.",
            minRowCountError: "Proszę uzupełnić przynajmniej {0} wierszy.",
            minSelectError: "Proszę wybrać co najmniej {0} pozycji.",
            maxSelectError: "Proszę wybrać nie więcej niż {0} pozycji.",
            numericMinMax: "Odpowiedź '{0}' powinna być większa lub równa {1} oraz mniejsza lub równa {2}",
            numericMin: "Odpowiedź '{0}' powinna być większa lub równa {1}",
            numericMax: "Odpowiedź '{0}' powinna być mniejsza lub równa {1}",
            invalidEmail: "Proszę podać prawidłowy adres email.",
            invalidExpression: "Wyrażenie: {0} powinno wracać 'prawdziwe'.",
            urlRequestError: "Żądanie zwróciło błąd '{0}'. {1}",
            urlGetChoicesError: "Żądanie nie zwróciło danych albo ścieżka jest nieprawidłowa",
            exceedMaxSize: "Rozmiar przesłanego pliku nie może przekraczać {0}.",
            otherRequiredError: "Proszę podać inną odpowiedź.",
            uploadingFile: "Trwa przenoszenie Twojego pliku, proszę spróbować ponownie za kilka sekund.",
            loadingFile: "Ładowanie...",
            chooseFile: "Wybierz plik(i)...",
            noFileChosen: "Nie wybrano żadnego pliku",
            fileDragAreaPlaceholder: "Upuść plik tutaj lub kliknij przycisk poniżej, aby załadować plik.",
            confirmDelete: "Chcesz skasować nagranie?",
            keyDuplicationError: "Ta wartość powinna być wyjątkowa.",
            addColumn: "Dodaj kolumnę",
            addRow: "Dodaj wiersz",
            removeRow: "Usuń",
            emptyRowsText: "Nie ma rzędów.",
            addPanel: "Dodaj panel",
            removePanel: "Usuń",
            choices_Item: "element",
            matrix_column: "Kolumna",
            matrix_row: "Wiersz",
            multipletext_itemname: "tekst",
            savingData: "Zapisuję wyniki ankiety na serwerze...",
            savingDataError: "Wystąpił błąd i wyniki nie mogły zostać zapisane.",
            savingDataSuccess: "Wyniki zostały poprawnie zapisane!",
            saveAgainButton: "Spróbuj ponownie",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Spędziłeś {0} na tej stronie a w sumie {1}.",
            timerSpentPage: "Spędziłeś {0} na tej stronie.",
            timerSpentSurvey: "Spędziłeś w sumie {0}.",
            timerLimitAll: "Spędziłeś {0} z {1} na tej stronie a w sumie {2} z {3}.",
            timerLimitPage: "Spędziłeś {0} z {1} na tej stronie",
            timerLimitSurvey: "Spędziłeś {0} z {1}.",
            clearCaption: "Jasne",
            signaturePlaceHolder: "Podpisz tutaj",
            chooseFileCaption: "Wybierz plik",
            removeFileCaption: "Usuń ten plik",
            booleanCheckedLabel: "Tak",
            booleanUncheckedLabel: "Nie",
            confirmRemoveFile: "Jesteś pewien, że chcesz usunąć ten plik: {0}?",
            confirmRemoveAllFiles: "Jesteś pewien, że chcesz usunąć wszystkie pliki?",
            questionTitlePatternText: "Tytuł pytania",
            modalCancelButtonText: "Anulować",
            modalApplyButtonText: "Zastosować",
            filterStringPlaceholder: "Wpisz aby wyszukać...",
            noEntriesText: "Nie ma jeszcze wpisów.\nKliknij przycisk poniżej, aby dodać nowy wpis."
        }, u.localeNames.pl = "polski";
        u.locales.pt = {
            pagePrevText: "Anterior",
            pageNextText: "Próximo",
            completeText: "Finalizar",
            previewText: "Pré-visualização",
            editText: "Editar",
            startSurveyText: "Começar",
            otherItemText: "Outros (descrever)",
            noneItemText: "Nenhum",
            selectAllItemText: "Selecionar Todos",
            progressText: "Página {0} de {1}",
            panelDynamicProgressText: "Registo {0} de {1}",
            questionsProgressText: "Respostas {0}/{1} perguntas",
            emptySurvey: "Não há página visível ou pergunta no questionário.",
            completingSurvey: "Obrigado por finalizar o questionário!",
            completingSurveyBefore: "Os nossos registos mostram que já finalizou o questionário.",
            loadingSurvey: "O questionário está a carregar...",
            placeholder: "Selecione...",
            value: "valor",
            requiredError: "Por favor, responda à pergunta.",
            requiredErrorInPanel: "Por favor, responda pelo menos a uma pergunta.",
            requiredInAllRowsError: "Por favor, responda às perguntas em todas as linhas.",
            numericError: "O valor deve ser numérico.",
            textMinLength: "Por favor, insira pelo menos {0} caracteres.",
            textMaxLength: "Por favor, insira menos de {0} caracteres.",
            textMinMaxLength: "Por favor, insira mais de {0} e menos de {1} caracteres.",
            minRowCountError: "Preencha pelo menos {0} linhas.",
            minSelectError: "Selecione pelo menos {0} opções.",
            maxSelectError: "Por favor, selecione no máximo {0} opções.",
            numericMinMax: "O '{0}' deve ser igual ou superior a {1} e igual ou menor que {2}",
            numericMin: "O '{0}' deve ser igual ou superior a {1}",
            numericMax: "O '{0}' deve ser igual ou inferior a {1}",
            invalidEmail: "Por favor, insira um e-mail válido.",
            invalidExpression: "A expressão: {0} deve retornar 'verdadeiro'.",
            urlRequestError: "O pedido retornou o erro '{0}'. {1}",
            urlGetChoicesError: "O pedido não retornou dados ou o 'caminho' do pedido não está correto",
            exceedMaxSize: "O tamanho do arquivo não deve exceder {0}.",
            otherRequiredError: "Por favor, insira o outro valor.",
            uploadingFile: "O seu ficheiro está a carregar. Por favor, aguarde alguns segundos e tente novamente.",
            loadingFile: "A carregar...",
            chooseFile: "Selecione o(s) arquivo(s)...",
            noFileChosen: "Nenhum ficheiro escolhido",
            confirmDelete: "Tem a certeza que deseja apagar?",
            keyDuplicationError: "Este valor deve ser único.",
            addColumn: "Adicionar coluna",
            addRow: "Adicionar linha",
            removeRow: "Remover linha",
            addPanel: "Adicionar novo",
            removePanel: "Remover",
            choices_Item: "item",
            matrix_column: "Coluna",
            matrix_row: "Linha",
            savingData: "Os resultados estão a ser guardados no servidor...",
            savingDataError: "Ocorreu um erro e não foi possível guardar os resultados.",
            savingDataSuccess: "Os resultados foram guardados com sucesso!",
            saveAgainButton: "Tente novamente",
            timerMin: "min",
            timerSec: "seg",
            timerSpentAll: "Você gastou {0} nesta página e {1} no total.",
            timerSpentPage: "Você gastou {0} nesta página.",
            timerSpentSurvey: "Você gastou {0} no total.",
            timerLimitAll: "Você gastou {0} de {1} nesta página e {2} de {3} no total.",
            timerLimitPage: "Você gastou {0} de {1} nesta página.",
            timerLimitSurvey: "Você gastou {0} de {1} no total.",
            clearCaption: "Limpar",
            chooseFileCaption: "Escolher ficheiro",
            removeFileCaption: "Remover este ficheiro",
            booleanCheckedLabel: "Sim",
            booleanUncheckedLabel: "Não",
            confirmRemoveFile: "Tem a certeza que deseja remover este ficheiro: {0}?",
            confirmRemoveAllFiles: "Tem a certeza que deseja remover todos os ficheiros?",
            questionTitlePatternText: "Título da questão"
        }, u.localeNames.pt = "português";
        u.locales["pt-br"] = {
            emptySurvey: "Não há página visível ou pergunta na pesquisa.",
            completingSurvey: "Obrigado por finalizar a pesquisa!",
            completingSurveyBefore: "Nossos registros mostram que você já finalizou a pesquisa.",
            loadingSurvey: "A pesquisa está carregando...",
            requiredError: "Por favor, responda a pergunta.",
            requiredErrorInPanel: "Por favor, responda pelo menos uma pergunta.",
            requiredInAllRowsError: "Por favor, responda as perguntas em todas as linhas.",
            maxSelectError: "Por favor, selecione não mais do que {0} opções.",
            invalidEmail: "Por favor, informe um e-mail válido.",
            urlRequestError: "A requisição retornou o erro '{0}'. {1}",
            urlGetChoicesError: "A requisição não retornou dados ou o 'caminho' da requisição não está correto",
            otherRequiredError: "Por favor, informe o outro valor.",
            uploadingFile: "Seu arquivo está sendo carregado. Por favor, aguarde alguns segundos e tente novamente.",
            loadingFile: "Carregando...",
            noFileChosen: "Nenhum arquivo escolhido",
            confirmDelete: "Tem certeza que deseja deletar?",
            keyDuplicationError: "Esse valor deve ser único.",
            savingData: "Os resultados esto sendo salvos no servidor...",
            savingDataError: "Ocorreu um erro e não foi possível salvar os resultados.",
            savingDataSuccess: "Os resultados foram salvos com sucesso!",
            chooseFileCaption: "Escolher arquivo",
            removeFileCaption: "Remover este arquivo",
            confirmRemoveFile: "Tem certeza que deseja remover este arquivo: {0}?",
            confirmRemoveAllFiles: "Tem certeza que deseja remover todos os arquivos?"
        }, u.localeNames["pt-br"] = "português brasileiro";
        u.locales.ro = {
            pagePrevText: "Precedent",
            pageNextText: "Următor",
            completeText: "Finalizare",
            previewText: "previzualizare",
            editText: "Editați",
            startSurveyText: "start",
            otherItemText: "Altul(precizaţi)",
            noneItemText: "Nici unul",
            selectAllItemText: "Selectează tot",
            progressText: "Pagina {0} din {1}",
            panelDynamicProgressText: "Înregistrare {0} din {1}",
            questionsProgressText: "Răspunsuri la {0} / {1} întrebări",
            emptySurvey: "Nu sunt întrebări pentru acest chestionar",
            completingSurvey: "Vă mulţumim pentru timpul acordat!",
            completingSurveyBefore: "Din înregistrările noastre reiese că ați completat deja acest chestionar.",
            loadingSurvey: "Chestionarul se încarcă...",
            placeholder: "Alegeţi...",
            value: "valoare",
            requiredError: "Răspunsul la această întrebare este obligatoriu.",
            requiredErrorInPanel: "Vă rugăm să răspundeți la cel puțin o întrebare.",
            requiredInAllRowsError: "Toate răspunsurile sunt obligatorii",
            numericError: "Răspunsul trebuie să fie numeric.",
            textMinLength: "Trebuie să introduceți minim {0} caractere.",
            textMaxLength: "Trebuie să introduceți maxim {0} caractere.",
            textMinMaxLength: "Trebuie să introduceți mai mult de {0} și mai puțin de {1} caractere.",
            minRowCountError: "Trebuie să completați minim {0} rânduri.",
            minSelectError: "Trebuie să selectați minim {0} opţiuni.",
            maxSelectError: "Trebuie să selectați maxim {0} opţiuni.",
            numericMinMax: "Răspunsul '{0}' trebuie să fie mai mare sau egal ca {1} şî mai mic sau egal cu {2}",
            numericMin: "Răspunsul '{0}' trebuie să fie mai mare sau egal ca {1}",
            numericMax: "Răspunsul '{0}' trebuie să fie mai mic sau egal ca {1}",
            invalidEmail: "Trebuie să introduceţi o adresa de email validă.",
            invalidExpression: "Expresia: {0} ar trebui să returneze „adevărat”.",
            urlRequestError: "Request-ul a returnat eroarea '{0}'. {1}",
            urlGetChoicesError: "Request-ul nu a returnat date sau proprietatea 'path' este incorectă",
            exceedMaxSize: "Dimensiunea fişierului nu trebuie să depăşească {0}.",
            otherRequiredError: "Trebuie să completați câmpul 'Altul'.",
            uploadingFile: "Fișierul dumneavoastră este în curs de încărcare. Vă rugăm așteptați câteva secunde și reveniți apoi.",
            loadingFile: "Se încarcă...",
            chooseFile: "Alege fisierele...",
            noFileChosen: "Niciun fișier ales",
            confirmDelete: "Sunteți sigur că doriți să ștergeți înregistrarea?",
            keyDuplicationError: "Valoarea trebuie să fie unică.",
            addColumn: "Adăugați coloană",
            addRow: "Adăugare rând",
            removeRow: "Ștergere",
            addPanel: "Adăugare",
            removePanel: "Ștergere",
            choices_Item: "opțiune",
            matrix_column: "Coloană",
            matrix_row: "Rând",
            savingData: "Rezultatele sunt în curs de salvare...",
            savingDataError: "A intervenit o eroare, rezultatele nu au putut fi salvate.",
            savingDataSuccess: "Rezultatele au fost salvate cu succes!",
            saveAgainButton: "Încercați din nou",
            timerMin: "min",
            timerSec: "sec",
            timerSpentAll: "Ați petrecut {0} pe această pagină și {1} în total.",
            timerSpentPage: "Ați petrecut {0} pe această pagină.",
            timerSpentSurvey: "Ați petrecut {0} în total.",
            timerLimitAll: "Ați petrecut {0} din {1} pe această pagină și {2} din {3} în total.",
            timerLimitPage: "Ați petrecut {0} din {1} pe această pagină.",
            timerLimitSurvey: "Ați petrecut {0} din {1} în total.",
            clearCaption: "clar",
            chooseFileCaption: "Alege fișierul",
            removeFileCaption: "Eliminați acest fișier",
            booleanCheckedLabel: "da",
            booleanUncheckedLabel: "Nu",
            confirmRemoveFile: "Sigur doriți să eliminați acest fișier: {0}?",
            confirmRemoveAllFiles: "Sigur doriți să eliminați toate fișierele?",
            questionTitlePatternText: "Titlul intrebarii"
        }, u.localeNames.ro = "română";
        u.locales.ru = {
            pagePrevText: "Назад",
            pageNextText: "Далее",
            completeText: "Готово",
            previewText: "Предварительный просмотр",
            editText: "Редактирование",
            startSurveyText: "Начать",
            otherItemText: "Другое (пожалуйста, опишите)",
            noneItemText: "Нет",
            selectAllItemText: "Выбрать всё",
            progressText: "Страница {0} из {1}",
            indexText: "{0} из {1}",
            panelDynamicProgressText: "Запись {0} из {1}",
            questionsProgressText: "Oтвечено на {0}/{1} вопросов",
            emptySurvey: "Нет ни одного вопроса.",
            completingSurvey: "Благодарим Вас за заполнение анкеты!",
            completingSurveyBefore: "Вы уже проходили этот опрос.",
            loadingSurvey: "Загрузка с сервера...",
            placeholder: "Выбрать...",
            ratingOptionsCaption: "Нажмите здесь, чтобы оценить...",
            value: "значение",
            requiredError: "Пожалуйста, ответьте на вопрос.",
            requiredErrorInPanel: "Пожалуйста, ответьте по крайней мере на один вопрос.",
            requiredInAllRowsError: "Пожалуйста, ответьте на вопросы в каждой строке.",
            numericError: "Ответ должен быть числом.",
            minError: "Значение не должно быть меньше {0}.",
            maxError: "Значение не должно превышать {0}.",
            textMinLength: "Пожалуйста введите больше {0} символов.",
            textMaxLength: "Пожалуйста введите меньше {0} символов.",
            textMinMaxLength: "Пожалуйста введите больше {0} и меньше {1} символов.",
            minRowCountError: "Пожалуйста, заполните не меньше {0} строк.",
            minSelectError: "Пожалуйста, выберите хотя бы {0} вариантов.",
            maxSelectError: "Пожалуйста, выберите не более {0} вариантов.",
            numericMinMax: "'{0}' должно быть не меньше чем {1}, и не больше чем {2}",
            numericMin: "'{0}' должно быть не меньше чем {1}",
            numericMax: "'{0}' должно быть не больше чем {1}",
            invalidEmail: "Пожалуйста, введите действительный адрес электронной почты.",
            invalidExpression: "Выражение {0} должно возвращать 'true'.",
            urlRequestError: "Запрос вернул ошибку '{0}'. {1}",
            urlGetChoicesError: "Ответ на запрос пришел пустой или свойство 'path' указано неверно",
            exceedMaxSize: "Размер файла не должен превышать {0}.",
            otherRequiredError: "Пожалуйста, введите данные в поле 'Другое'",
            uploadingFile: "Ваш файл загружается. Подождите несколько секунд и попробуйте снова.",
            loadingFile: "Загрузка...",
            chooseFile: "Выберите файл(ы)...",
            noFileChosen: "Файл не выбран",
            fileDragAreaPlaceholder: "Перетащите файл сюда или нажмите кнопку ниже, чтобы загрузить файл.",
            confirmDelete: "Вы точно хотите удалить запись?",
            keyDuplicationError: "Это значение должно быть уникальным.",
            addColumn: "Добавить колонку",
            addRow: "Добавить строку",
            removeRow: "Удалить",
            emptyRowsText: "Рядов нет.",
            addPanel: "Добавить новую",
            removePanel: "Удалить",
            choices_Item: "Вариант",
            matrix_column: "Колонка",
            matrix_row: "Строка",
            multipletext_itemname: "текст",
            savingData: "Результаты сохраняются на сервер...",
            savingDataError: "Произошла ошибка, результат не был сохранён.",
            savingDataSuccess: "Результат успешно сохранён!",
            saveAgainButton: "Попробовать снова",
            timerMin: "мин",
            timerSec: "сек",
            timerSpentAll: "Вы потратили {0} на этой странице и {1} всего.",
            timerSpentPage: "Вы потратили {0} на этой странице.",
            timerSpentSurvey: "Вы потратили {0} в течение теста.",
            timerLimitAll: "Вы потратили {0} из {1} на этой странице и {2} из {3} для всего теста.",
            timerLimitPage: "Вы потратили {0} из {1} на этой странице.",
            timerLimitSurvey: "Вы потратили {0} из {1} для всего теста.",
            clearCaption: "Очистить",
            signaturePlaceHolder: "Подпишите здесь",
            chooseFileCaption: "Выберите файл",
            removeFileCaption: "Удалить файл",
            booleanCheckedLabel: "Да",
            booleanUncheckedLabel: "Нет",
            confirmRemoveFile: "Вы уверены, что хотите удалить этот файл: {0}?",
            confirmRemoveAllFiles: "Вы уверены, что хотите удалить все файлы?",
            questionTitlePatternText: "Название вопроса",
            modalCancelButtonText: "Отменить",
            modalApplyButtonText: "Применять",
            filterStringPlaceholder: "Введите для поиска...",
            noEntriesText: "Пока нет записей.\nНажмите кнопку ниже, чтобы добавить новую запись."
        }, u.localeNames.ru = "русский";
        u.locales.rs = {
            pagePrevText: "Nazad",
            pageNextText: "Dalje",
            completeText: "Završi",
            previewText: "Pregledaj",
            editText: "Izmeni",
            startSurveyText: "Započni",
            otherItemText: "Drugo (upiši)",
            noneItemText: "Ništa",
            selectAllItemText: "Izaberi sve",
            progressText: "Stranica {0} od {1}",
            panelDynamicProgressText: "Upis {0} od {1}",
            questionsProgressText: "Odgovoreno na {0}/{1} pitanja",
            emptySurvey: "Nema vidljivih stranica ili pitanja u anketi.",
            completingSurvey: "Hvala na popunjavanju ankete!",
            completingSurveyBefore: "Prema našim podacima, već ste popunili ovu anketu.",
            loadingSurvey: "Učitavam anketu...",
            placeholder: "Izaberi...",
            value: "vrednost",
            requiredError: "Molimo odgovorite na ovo pitanje.",
            requiredErrorInPanel: "Molimo odgovorite na bar jedno pitanje.",
            requiredInAllRowsError: "Molimo odgovorite na pitanja u svim redovima.",
            numericError: "Vrednost bi trebalo da bude numerička.",
            minError: "Vrednost ne bi trebalo da bude manja od {0}",
            maxError: "Vrednost ne bi trebalo da bude veća od {0}",
            textMinLength: "Molimo unesite bar {0} znak(ov)a.",
            textMaxLength: "Molimo unesite najviše {0} znak(ov)a.",
            textMinMaxLength: "Molimo unesite najmanje {0} i ne više od {1} znak(ov)a.",
            minRowCountError: "Molimo popunite najmanje {0} red(ova).",
            minSelectError: "Molimo izaberite najmanje {0} opcija/e.",
            maxSelectError: "Molimo izaberite najviše {0} opcija/e.",
            numericMinMax: "'{0}' bi trebalo da bude najmanje {1} i najviše {2}",
            numericMin: "'{0}' bi trebalo da bude najmanje {1}",
            numericMax: "'{0}' bi trebalo da bude najviše {1}",
            invalidEmail: "Molimo unesite ispravnu e-mail adresu.",
            invalidExpression: "Izraz: {0} bi trebalo da bude tačan.",
            urlRequestError: "Zahtev je naišao na grešku '{0}'. {1}",
            urlGetChoicesError: "Zahtev nije pronašao podatke, ili je putanja netačna",
            exceedMaxSize: "Veličina fajla ne bi trebalo da prelazi {0}.",
            otherRequiredError: "Molimo unesite drugu vrednost.",
            uploadingFile: "Fajl se šalje. Molimo sačekajte neko vreme i pokušajte ponovo.",
            loadingFile: "Učitavanje...",
            chooseFile: "Izaberite fajlove...",
            noFileChosen: "Nije izabran nijedan fajl",
            confirmDelete: "Da li želite da izbrišete unos?",
            keyDuplicationError: "Ova vrednost treba da bude jedinstvena.",
            addColumn: "Dodaj kolonu",
            addRow: "Dodaj red",
            removeRow: "Ukloni",
            emptyRowsText: "Nema redova.",
            addPanel: "Dodaj novo",
            removePanel: "Ukloni",
            choices_Item: "stavka",
            matrix_column: "Kolona",
            matrix_row: "Red",
            multipletext_itemname: "tekst",
            savingData: "U toku je čuvanje podataka na serveru...",
            savingDataError: "Došlo je do greške i rezultati nisu sačuvani.",
            savingDataSuccess: "Rezultati su uspešno sačuvani!",
            saveAgainButton: "Pokušajte ponovo",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Proveli ste {0} na ovoj stranici i {1} ukupno.",
            timerSpentPage: "Proveli ste {0} na ovoj stranici.",
            timerSpentSurvey: "Proveli ste {0} ukupno.",
            timerLimitAll: "Proveli ste {0} od {1} na ovoj stranici i {2} od {3} ukupno.",
            timerLimitPage: "Proveli ste {0} od {1} na ovoj stranici.",
            timerLimitSurvey: "Proveli ste {0} od {1} ukupno.",
            clearCaption: "Poništi",
            chooseFileCaption: "Izaberi fajl",
            removeFileCaption: "Ukloni ovaj fajl",
            booleanCheckedLabel: "Da",
            booleanUncheckedLabel: "Ne",
            confirmRemoveFile: "Da li ste sigurni da želite da uklonite ovaj fajl: {0}?",
            confirmRemoveAllFiles: "Da li ste sigurni da želite da uklonite sve fajlove?",
            questionTitlePatternText: "Naslov pitanja",
            modalCancelButtonText: "Otkaži",
            modalApplyButtonText: "Primeni"
        }, u.localeNames.rs = "Srpski";
        u.locales["zh-cn"] = {
            pagePrevText: "上一页",
            pageNextText: "下一页",
            completeText: "提交问卷",
            previewText: "预览",
            editText: "编辑",
            startSurveyText: "开始问卷",
            otherItemText: "填写其他答案",
            noneItemText: "无",
            selectAllItemText: "选择全部",
            progressText: "第 {0} 页, 共 {1} 页",
            panelDynamicProgressText: "{0} of {1}",
            questionsProgressText: "第 {0}/{1} 题",
            emptySurvey: "问卷中没有问题或页面",
            completingSurvey: "感谢您的参与!",
            completingSurveyBefore: "你已完成问卷.",
            loadingSurvey: "问卷正在加载中...",
            placeholder: "请选择...",
            value: "值",
            requiredError: "请填写此问题",
            requiredErrorInPanel: "至少回答一题.",
            requiredInAllRowsError: "请填写所有行中问题",
            numericError: "答案必须是个数字",
            minError: "该值不能小于 {0}",
            maxError: "该值不能大于 {0}",
            textMinLength: "答案长度至少 {0} 个字符",
            textMaxLength: "答案长度不能超过 {0} 个字符",
            textMinMaxLength: "答案长度必须在 {0} - {1} 个字符之间",
            minRowCountError: "最少需要填写 {0} 行答案",
            minSelectError: "最少需要选择 {0} 项答案",
            maxSelectError: "最多只能选择 {0} 项答案",
            numericMinMax: "答案 '{0}' 必须大于等于 {1} 且小于等于 {2}",
            numericMin: "答案 '{0}' 必须大于等于 {1}",
            numericMax: "答案 '{0}' 必须小于等于 {1}",
            invalidEmail: "请输入有效的 Email 地址",
            invalidExpression: "公式: {0} 无效.",
            urlRequestError: "载入选项时发生错误 '{0}': {1}",
            urlGetChoicesError: "未能载入有效的选项或请求参数路径有误",
            exceedMaxSize: "文件大小不能超过 {0}",
            otherRequiredError: "请完成其他问题",
            uploadingFile: "文件上传中... 请耐心等待几秒后重试",
            loadingFile: "加载...",
            chooseFile: "选择文件...",
            noFileChosen: "未选择文件",
            confirmDelete: "删除记录?",
            keyDuplicationError: "主键不能重复",
            addColumn: "添加列",
            addRow: "添加行",
            removeRow: "删除答案",
            emptyRowsText: "无内容",
            addPanel: "新添",
            removePanel: "删除",
            choices_Item: "选项",
            matrix_column: "列",
            matrix_row: "行",
            multipletext_itemname: "文本",
            savingData: "正在将结果保存到服务器...",
            savingDataError: "在保存结果过程中发生了错误，结果未能保存",
            savingDataSuccess: "结果保存成功!",
            saveAgainButton: "请重试",
            timerMin: "分",
            timerSec: "秒",
            timerSpentAll: "本页用时 {0} 总计用时{1} .",
            timerSpentPage: "本页用时{0} .",
            timerSpentSurvey: "总计用时 {0} .",
            timerLimitAll: "本页用时 {0} 共 {1}， 总计用时 {2} 共 {3} .",
            timerLimitPage: "本页用时 {0} 共 {1} .",
            timerLimitSurvey: "总计用时 {0} 共 {1}.",
            clearCaption: "清除",
            chooseFileCaption: "选择文件",
            removeFileCaption: "移除文件",
            booleanCheckedLabel: "是",
            booleanUncheckedLabel: "否",
            confirmRemoveFile: "删除文件: {0}?",
            confirmRemoveAllFiles: "删除所有文件?",
            questionTitlePatternText: "标题",
            modalCancelButtonText: "取消",
            modalApplyButtonText: "确定"
        }, u.localeNames["zh-cn"] = "简体中文";
        u.locales.sk = {
            pagePrevText: "Predchádzajúca",
            pageNextText: "Ďalej",
            completeText: "Dokončené",
            previewText: "Ukážka",
            editText: "Upraviť",
            startSurveyText: "Spustiť",
            otherItemText: "Iné (opíšte)",
            noneItemText: "Žiadne",
            selectAllItemText: "Vybrať všetky",
            progressText: "Strana {0} z {1}",
            panelDynamicProgressText: "Záznam {0} z {1}",
            questionsProgressText: "Zodpovedané otázky {0}/{1}",
            emptySurvey: "V prieskume nie je žiadna vidieľná stránka ani otázka.",
            completingSurvey: "Ďakujeme vám za dokončenie prieskumu.",
            completingSurveyBefore: "Podľa našich záznamov ste už tento prieskum dokončili.",
            loadingSurvey: "Načítanie prieskumu...",
            placeholder: "Vybrať...",
            value: "hodnota",
            requiredError: "Požaduje sa odozva.",
            requiredErrorInPanel: "Požaduje sa odozva: zodpovedajte aspoň jednu otázku.",
            requiredInAllRowsError: "Požaduje sa odozva: zodpovedajte otázky vo všetkých riadkoch.",
            numericError: "Hodnota má byť číselná.",
            minError: "Hodnota nemá byť nižšia než {0}",
            maxError: "Hodnota nemá byť vyššia než {0}",
            textMinLength: "Zadajte aspoň {0} znak(-y/-ov).",
            textMaxLength: "Nezadávajte viac než {0} znak(-y/-ov).",
            textMinMaxLength: "Zadajte aspoň {0} a nie viac než {1} znaky(-ov).",
            minRowCountError: "Vyplňte aspoň {0} riadok(-y/-ov).",
            minSelectError: "Vyberte aspoň {0} variant(-y/-ov).",
            maxSelectError: "Nevyberajte viac než {0} variant(-y/-ov).",
            numericMinMax: "„{0}“ má byť minimálne {1} a maximálne {2}",
            numericMin: "„{0}“ má byť minimálne {1}",
            numericMax: "„{0}“ má byť maximálne {1}",
            invalidEmail: "Zadajte platnú e-mailovú adresu.",
            invalidExpression: "Výraz: {0} má vrátiť hodnotu „true“.",
            urlRequestError: "Požiadavky vrátila hodnotu „{0}“. {1}",
            urlGetChoicesError: "Požiadavka vrátila prázdne údaje alebo je vlastnosť „cesta“ nesprávna",
            exceedMaxSize: "Veľkosť súboru nemá prekročiť {0}.",
            otherRequiredError: "Požaduje sa odozva: zadajte inú hodnotu.",
            uploadingFile: "Súbor sa odovzdáva. Počkajte niekoľko sekúnd a skúste to znova.",
            loadingFile: "Načítanie...",
            chooseFile: "Vyberte súbor(-y)...",
            noFileChosen: "Žiadny vybratý súbor",
            fileDragAreaPlaceholder: "Presuňte súbor sem alebo kliknite na nasledujúce tlačidlo a načítajte súbor.",
            confirmDelete: "Chcete záznam odstrániť?",
            keyDuplicationError: "Táto hodnota má byť jedinečná.",
            addColumn: "Pridať stĺpec",
            addRow: "Pridať riadok",
            removeRow: "Odstrániť",
            emptyRowsText: "K dispozícii nie sú žiadne riadky.",
            addPanel: "Pridať nové",
            removePanel: "Odstrániť",
            choices_Item: "položka",
            matrix_column: "Stĺpec",
            matrix_row: "Riadok",
            multipletext_itemname: "text",
            savingData: "Výsledky sa ukladajú na server...",
            savingDataError: "V dôsledku chyby sa nepodarilo výsledky uložiť.",
            savingDataSuccess: "Výsledky sa úspešne uložili.",
            saveAgainButton: "Skúste to znova",
            timerMin: "min",
            timerSec: "s",
            timerSpentAll: "Na tejto stránke ste strávili {0} a celkovo {1}.",
            timerSpentPage: "Na tejto stránke ste strávili {0}.",
            timerSpentSurvey: "Celkovo ste strávili {0}.",
            timerLimitAll: "Na tejto stránke ste strávili {0} z {1} a celkovo {2} z {3}.",
            timerLimitPage: "Na tejto stránke ste strávili {0} z {1}.",
            timerLimitSurvey: "Celkovo ste strávili {0} z {1}.",
            clearCaption: "Vymazať",
            signaturePlaceHolder: "Podpísať tu",
            chooseFileCaption: "Vybrať súbor",
            removeFileCaption: "Odstrániť tento súbor",
            booleanCheckedLabel: "Áno",
            booleanUncheckedLabel: "Nie",
            confirmRemoveFile: "Naozaj chcete odstrániť tento súbor: {0}?",
            confirmRemoveAllFiles: "Naozaj chcete odstrániť všetky súbory?",
            questionTitlePatternText: "Titul otázky",
            modalCancelButtonText: "Zrušiť",
            modalApplyButtonText: "Použiť",
            filterStringPlaceholder: "Vyhľadávanie písaním...",
            noEntriesText: "K dispozícii ešte nie sú žiadne zadania.\nKliknutím na nasledujúce tlačidlo pridajte nové zadanie."
        }, u.localeNames.sk = "slovenčina";
        u.locales.es = {
            pagePrevText: "Anterior",
            pageNextText: "Siguiente",
            completeText: "Completar",
            previewText: "Vista previa",
            editText: "Edita",
            startSurveyText: "Comienza",
            otherItemText: "Otro (describa)",
            noneItemText: "Ninguno",
            selectAllItemText: "Seleccionar todo",
            progressText: "Página {0} de {1}",
            indexText: "{0} de {1}",
            panelDynamicProgressText: "Registro {0} de {1}",
            questionsProgressText: "Respondió a {0}/{1} preguntas",
            emptySurvey: "No hay página visible o pregunta en la encuesta.",
            completingSurvey: "¡Gracias por completar la encuesta!",
            completingSurveyBefore: "Nuestros registros muestran que ya ha completado esta encuesta.",
            loadingSurvey: "La encuesta está cargando...",
            placeholder: "Seleccione...",
            ratingOptionsCaption: "Toca aquí para calificar...",
            value: "valor",
            requiredError: "Por favor conteste la pregunta.",
            requiredErrorInPanel: "Por favor, responda al menos una pregunta.",
            requiredInAllRowsError: "Por favor conteste las preguntas en cada hilera.",
            numericError: "La estimación debe ser numérica.",
            minError: "La estimación no debe ser menor que {0}",
            maxError: "La estimación no debe ser mayor que {0}",
            textMinLength: "Por favor entre por lo menos {0} símbolos.",
            textMaxLength: "Por favor entre menos de {0} símbolos.",
            textMinMaxLength: "Por favor entre más de {0} y menos de {1} símbolos.",
            minRowCountError: "Por favor llene por lo menos {0} hileras.",
            minSelectError: "Por favor seleccione por lo menos {0} variantes.",
            maxSelectError: "Por favor seleccione no más de {0} variantes.",
            numericMinMax: "El '{0}' debe de ser igual o más de {1} y igual o menos de {2}",
            numericMin: "El '{0}' debe ser igual o más de {1}",
            numericMax: "El '{0}' debe ser igual o menos de {1}",
            invalidEmail: "Por favor agregue un correo electrónico válido.",
            invalidExpression: "La expresión: {0} debería devolver 'verdadero'.",
            urlRequestError: "La solicitud regresó error '{0}'. {1}",
            urlGetChoicesError: "La solicitud regresó vacío de data o la propiedad 'trayectoria' no es correcta",
            exceedMaxSize: "El tamaño del archivo no debe de exceder {0}.",
            otherRequiredError: "Por favor agregue la otra estimación.",
            uploadingFile: "Su archivo se está subiendo. Por favor espere unos segundos e intente de nuevo.",
            loadingFile: "Cargando...",
            chooseFile: "Elija archivo(s)...",
            noFileChosen: "No se ha elegido ningún archivo",
            fileDragAreaPlaceholder: "Suelte un archivo aquí o haga clic en el botón de abajo para cargar el archivo",
            confirmDelete: "¿Quieres borrar el registro?",
            keyDuplicationError: "Este valor debe ser único.",
            addColumn: "Añadir columna",
            addRow: "Agregue una hilera",
            removeRow: "Eliminar una hilera",
            emptyRowsText: "No hay hileras.",
            addPanel: "Añadir nuevo",
            removePanel: "Retire",
            choices_Item: "artículo",
            matrix_column: "Columna",
            matrix_row: "Hilera",
            multipletext_itemname: "texto",
            savingData: "Los resultados se están guardando en el servidor...",
            savingDataError: "Los resultados se están guardando en el servidor...",
            savingDataSuccess: "¡Los resultados se guardaron con éxito!",
            saveAgainButton: "Inténtalo de nuevo.",
            timerMin: "min",
            timerSec: "sec",
            timerSpentAll: "Has gastado {0} en esta página y {1} en total.",
            timerSpentPage: "Usted ha pasado {0} en esta página.",
            timerSpentSurvey: "Has gastado en total.",
            timerLimitAll: "Has gastado {0} de {1} en esta página y {2} de {3} en total.",
            timerLimitPage: "Has gastado {0} de {1} en esta página.",
            timerLimitSurvey: "Usted ha gastado {0} de {1} en total.",
            clearCaption: "Despejen",
            signaturePlaceHolder: "Firma aqui",
            chooseFileCaption: "Elija el archivo",
            removeFileCaption: "Elimina este archivo",
            booleanCheckedLabel: "Sí",
            booleanUncheckedLabel: "No",
            confirmRemoveFile: "¿Estás seguro de que quieres eliminar este archivo: {0}?",
            confirmRemoveAllFiles: "¿Estás seguro de que quieres eliminar todos los archivos?",
            questionTitlePatternText: "Título de la pregunta",
            modalCancelButtonText: "Anular",
            modalApplyButtonText: "Aplicar",
            filterStringPlaceholder: "Escribe para buscar...",
            noEntriesText: "Aún no hay entradas.\nHaga clic en el botón de abajo para agregar una nueva entrada."
        }, u.localeNames.es = "español";
        u.locales.sw = {
            pagePrevText: "Iliyotangulia",
            pageNextText: "Ifuatayo",
            completeText: "Kamili",
            previewText: "Hakiki",
            editText: "Hariri",
            startSurveyText: "Anza",
            otherItemText: "Nyingine (eleza)",
            noneItemText: "Hakuna",
            selectAllItemText: "Chagua Zote",
            progressText: "Ukurasa {0} wa {1}",
            panelDynamicProgressText: "Rekodi {0} ya {1}",
            questionsProgressText: "Yaliyojibiwa {0}/{1} maswali",
            emptySurvey: "Hakuna ukurasa unaoonekana au swali katika utafiti.",
            completingSurvey: "Asanti kwa kukamilisha utafiti!",
            completingSurveyBefore: "Recodi zetu zinatuonyesha tayari umekamilisha utafiti.",
            loadingSurvey: "Tunaandaa utafiti...",
            placeholder: "Chagua...",
            value: "thamani",
            requiredError: "Tafadhali jibu hili swali.",
            requiredErrorInPanel: "Tafadhali jibu swali angalau moja.",
            requiredInAllRowsError: "Tafadhali jibu maswali katika safu zote.",
            numericError: "Thamani inapaswa kuwa ya nambari.",
            textMinLength: "Tafadhali ingiza angalau{0} husika.",
            textMaxLength: "Tafadhali ingiza isiozidi {0} husika.",
            textMinMaxLength: "Tafadhali ingiza kiwango zaidi ya {0} na kisichopungua {1} husika.",
            minRowCountError: "Tafadhali jaza isiopungua {0} safu.",
            minSelectError: "Tafadhali chagua angalau {0} lahaja.",
            maxSelectError: "Tafadhali changua isiozidi {0} lahaja.",
            numericMinMax: " '{0}' inapaswa kuwa sawa au zaidi ya {1} na sawa au chini ya {2}",
            numericMin: " '{0}'inapaswa kuwa sawa au zaidi ya {1}",
            numericMax: " '{0}'inapaswa kuwa sawa au chini ya {1}",
            invalidEmail: "Tafadhali ingiza anwani halali ya barua-pepe.",
            invalidExpression: "Usemi:{0} inapaswa kurudi 'kweli'.",
            urlRequestError: "Ombi lina kosa '{0}'. {1}",
            urlGetChoicesError: "Ombi lilirudisha data tupu au the 'path' mali ya njia sio sahihi",
            exceedMaxSize: "Saizi ya faili haipaswi kuzidi {0}.",
            otherRequiredError: "Tafadhali ingiza thamani nyingine.",
            uploadingFile: "Faili yako inapakia.Tafadhali subiri sekunde kadhaa na ujaribu tena.",
            loadingFile: "Inapakia...",
            chooseFile: "Chagua faili...",
            noFileChosen: "Hujachagua faili",
            confirmDelete: "Je! Unataka kufuta rekodi?",
            keyDuplicationError: "Thamani hii inapaswa kuwa ya kipekee.",
            addColumn: "Ongeza Kolamu",
            addRow: "Ongeza safu",
            removeRow: "Toa",
            addPanel: "Ongeza mpya",
            removePanel: "Toa",
            choices_Item: "kitu",
            matrix_column: "Kolamu",
            matrix_row: "Safu",
            savingData: "Matokeo yamehifadhiwa kwa seva...",
            savingDataError: "Kosa limetokea na hatukuweza kuhifadhi matokeo.",
            savingDataSuccess: "Matokeo yamehifadhiwa!",
            saveAgainButton: "Jaribu tena",
            timerMin: "dakika",
            timerSec: "sekunde",
            timerSpentAll: "Umetumia {0} kwenye ukurasa huu na {1} kwa jumla.",
            timerSpentPage: "Umetumia {0} kwenye ukurasa huu.",
            timerSpentSurvey: "Umetumia {0} kwa jumla.",
            timerLimitAll: "Umetumia {0} ya {1} kwenye ukurasa huu {2} wa {3} kwa jumla.",
            timerLimitPage: "Umetumia {0} ya {1} kwenye ukurasa huu.",
            timerLimitSurvey: "Umetumia {0} ya {1} kwa jumla.",
            clearCaption: "Ondoa",
            chooseFileCaption: "Chagua faili",
            removeFileCaption: "Ondoa faili",
            booleanCheckedLabel: "Ndio",
            booleanUncheckedLabel: "Hapana",
            confirmRemoveFile: "Je! Una uhakika kuwa unataka kuondoa faili hii: {0}?",
            confirmRemoveAllFiles: "Je! Una uhakika kuwa unataka kuondoa faili zote?",
            questionTitlePatternText: "Kichwa cha Swali"
        }, u.localeNames.sw = "swahili";
        u.locales.sv = {
            pagePrevText: "Föregående",
            pageNextText: "Nästa",
            completeText: "Slutför",
            previewText: "Förhandsvisning",
            editText: "Redigera",
            startSurveyText: "Börja",
            otherItemText: "Annat (beskriv)",
            noneItemText: "Ingen",
            selectAllItemText: "Välj alla",
            progressText: "Sida {0} av {1}",
            indexText: "{0} av {1}",
            panelDynamicProgressText: "{0} av {1}",
            questionsProgressText: "{0} / {1} frågor besvarade",
            emptySurvey: "Det finns ingen synlig sida eller fråga i enkäten.",
            completingSurvey: "Tack för att du genomfört enkäten!!",
            completingSurveyBefore: "Våra register visar att du redan har slutfört denna undersökning.",
            loadingSurvey: "Enkäten laddas...",
            placeholder: "Välj...",
            ratingOptionsCaption: "Tryck här för att betygsätta...",
            value: "värde",
            requiredError: "Frågan är obligatorisk.",
            requiredErrorInPanel: "Vänligen svara på minst en fråga.",
            requiredInAllRowsError: "Var vänlig besvara frågorna på alla rader.",
            numericError: "Värdet ska vara numeriskt.",
            minError: "Värdet får inte vara mindre än {0}",
            maxError: "Värdet får inte vara större än {0}",
            textMinLength: "Ange minst {0} tecken.",
            textMaxLength: "Ange färre än {0} tecken.",
            textMinMaxLength: "Ange mer än {0} och färre än {1} tecken.",
            minRowCountError: "Var vänlig fyll i minst {0} rader.",
            minSelectError: "Var vänlig välj åtminstone {0} varianter.",
            maxSelectError: "Var vänlig välj inte fler än {0} varianter.",
            numericMinMax: "'{0}' ska vara lika med eller mer än {1} samt lika med eller mindre än {2}",
            numericMin: "'{0}' ska vara lika med eller mer än {1}",
            numericMax: "'{0}' ska vara lika med eller mindre än {1}",
            invalidEmail: "Var vänlig ange en korrekt e-postadress.",
            invalidExpression: "Uttrycket: {0} ska returnera 'true'.",
            urlRequestError: "Förfrågan returnerade felet '{0}'. {1}",
            urlGetChoicesError: "Antingen returnerade förfrågan ingen data eller så är egenskapen 'path' inte korrekt",
            exceedMaxSize: "Filstorleken får ej överstiga {0}.",
            otherRequiredError: "Var vänlig ange det andra värdet.",
            uploadingFile: "Din fil laddas upp. Var vänlig vänta några sekunder och försök sedan igen.",
            loadingFile: "Laddar...",
            chooseFile: "Välj fil(er) ...",
            noFileChosen: "Ingen fil vald",
            confirmDelete: "Vill du radera posten?",
            keyDuplicationError: "Detta värde ska vara unikt.",
            addColumn: "Lägg till kolumn",
            addRow: "Lägg till rad",
            removeRow: "Ta bort",
            addPanel: "Lägg till ny",
            removePanel: "Ta bort",
            choices_Item: "Artikel",
            matrix_column: "Kolumn",
            matrix_row: "Rad",
            multipletext_itemname: "text",
            savingData: "Resultaten sparas på servern ...",
            savingDataError: "Ett fel inträffade och vi kunde inte spara resultaten.",
            savingDataSuccess: "Resultaten lyckades sparas!",
            saveAgainButton: "Försök igen",
            timerMin: "min",
            timerSec: "sek",
            timerSpentAll: "Du har spenderat {0} på den här sidan och {1} totalt.",
            timerSpentPage: "Du har spenderat {0} på den här sidan.",
            timerSpentSurvey: "Du har spenderat {0} totalt.",
            timerLimitAll: "Du har spenderat {0} av {1} på den här sidan och {2} av {3} totalt.",
            timerLimitPage: "Du har spenderat {0} av {1} på den här sidan.",
            timerLimitSurvey: "Du har spenderat {0} av {1} totalt.",
            clearCaption: "Klar",
            signaturePlaceHolder: "Signera här",
            chooseFileCaption: "Välj fil",
            removeFileCaption: "Ta bort den här filen",
            booleanCheckedLabel: "Ja",
            booleanUncheckedLabel: "Nej",
            confirmRemoveFile: "Är du säker på att du vill ta bort den här filen: {0}?",
            confirmRemoveAllFiles: "Är du säker på att du vill ta bort alla filer?",
            questionTitlePatternText: "Frågetitel",
            modalCancelButtonText: "Avbryt",
            modalApplyButtonText: "Spara",
            filterStringPlaceholder: "Skriv för att söka...",
            emptyMessage: "Ingen data finns",
            noEntriesText: "Det finns inga värden än.\nKlicka på knappen nedan för att lägga till nytt värde.",
            more: "Mer"
        }, u.localeNames.sv = "svenska";
        u.locales.tg = {
            pagePrevText: "Бозгашт",
            pageNextText: "Оянда",
            completeText: "Иҷро шуд",
            startSurveyText: "Оғоз",
            otherItemText: "Дигар (лутфан тавсиф кунед)",
            noneItemText: "Не",
            selectAllItemText: "Ҳамаро интихоб кардан",
            progressText: "Саҳифаи {0} аз {1}",
            emptySurvey: "Ягон савол вуҷуд надорад.",
            completingSurvey: "Ташаккур барои пур кардани саволнома!",
            completingSurveyBefore: "Шумо аллакай ин пурсишро анҷом додаед.",
            loadingSurvey: "Боргирӣ аз сервер...",
            placeholder: "Интихоб кардан...",
            value: "қиммат",
            requiredError: "Илтимос, ба савол ҷавоб диҳед.",
            requiredErrorInPanel: "Илтимос, ақалан ба як савол ҷавоб диҳед.",
            requiredInAllRowsError: "Илтимос, ба ҳамаи саволҳо дар ҳамаи сатрҳо ҷавоб диҳед.",
            numericError: "Ҷавоб бояд рақам бошад.",
            textMinLength: "Илтимос, аз {0} зиёдтар рамз ворид кунед.",
            textMaxLength: "Илтимос, аз {0} камтар рамз ворид кунед.",
            textMinMaxLength: "Илтимос, аз {0} зиёдтар ва аз {1} камтар рамз ворид кунед.",
            minRowCountError: "Илтимос, на камтар аз {0} сатр пур кунед.",
            minSelectError: "Илтимос, ақалан {0} вариант интихоб кунед.",
            maxSelectError: "Илтимос, на зиёдтар аз {0} вариант интихоб кунед.",
            numericMinMax: "'{0}' бояд на кам аз {1} ва на бисёр аз {2} бошад",
            numericMin: "'{0}' бояд на кам аз {1} бошад",
            numericMax: "'{0}' бояд на зиёд аз {1} бошад",
            invalidEmail: "Илтимос, почтаи электронии воқеиро ворид кунед.",
            invalidExpression: "Ифодаи {0} бояд 'true' баргардонад.",
            urlRequestError: "Дархост хатогӣ бозгардонд '{0}'. {1}",
            urlGetChoicesError: "Ҷавоб ба дархост холӣ омад ё хосияти 'path' нодуруст муайян карда шудааст",
            exceedMaxSize: "Андозаи файл бояд на калон аз {0} бошад.",
            otherRequiredError: "Илтимос, ба майдони 'Дигар' додаҳоро ворид кунед",
            uploadingFile: "Файли шумо бор шуда истодааст. Якчанд сония интизор шавед ва бори дигар кӯшиш кунед.",
            loadingFile: "Боркунӣ...",
            chooseFile: "Файл(ҳо)-ро интихоб кунед...",
            confirmDelete: "Шумо мутмаин ҳастед, ки мехоҳед воридро тоза кунед?",
            keyDuplicationError: "Ин арзиш бояд беназир бошад.",
            addColumn: "Иловаи сутун",
            addRow: "Иловаи сатр",
            removeRow: "Нест кардан",
            addPanel: "Илова кардан",
            removePanel: "Нест кардан",
            choices_Item: "Вариант",
            matrix_column: "Сутун",
            matrix_row: "Сатр",
            savingData: "Натиҷа ба сервер сабт шуда истодаанд...",
            savingDataError: "Хатогӣ ба амал омад, натиҷа сабт нашуд.",
            savingDataSuccess: "Натиҷа бомуваффакият сабт шуд!",
            saveAgainButton: "Бори дигар кӯшиш карданд",
            timerMin: "дақ",
            timerSec: "сон",
            timerSpentAll: "Шумо {0} дар ин саҳифа ва {1} дар умум сарф кардед.",
            timerSpentPage: "Шумо {0} дар ин саҳифа сарф кардед.",
            timerSpentSurvey: "Шумо {0} дар ин тест сарф намудед.",
            timerLimitAll: "Шумо {0} аз {1} дар ин саҳифа ва {2} аз {3} дар умум сарф кардед дар дохили ин тест.",
            timerLimitPage: "Шумо {0} аз {1} дар ин саҳифа сарф кардед.",
            timerLimitSurvey: "Шумо {0} аз {1} дар ҳамаи тест сарф кардед.",
            clearCaption: "Тоза кардан",
            removeFileCaption: "Файлро нест кардан"
        }, u.localeNames.tg = "тоҷикӣ";
        u.locales.th = {
            pagePrevText: "ก่อนหน้า",
            pageNextText: "ถัดไป",
            completeText: "สำเร็จ",
            previewText: "ดูตัวอย่าง",
            editText: "แก้ไข",
            startSurveyText: "เริ่ม",
            otherItemText: "อื่นๆ (โปรดระบุ)",
            noneItemText: "ไม่มี",
            selectAllItemText: "เลือกทั้งหมด",
            progressText: "หน้าที่ {0} จาก {1}",
            panelDynamicProgressText: "รายการที่ {0} จาก {1}",
            questionsProgressText: "คำตอบที่ {0}/{1} จำนวนคำถาม",
            emptySurvey: "ไม่มีหน้าเพจที่มองเห็น หรือ คำถามใน survey นี้",
            completingSurvey: "ขอบคุณที่ทำ survey จนเสร็จ",
            completingSurveyBefore: "รายการของเราแสดงว่าคุณได้ทำ survey เสร็จเรียบร้อยแล้ว",
            loadingSurvey: "กำลังโหลด Survey...",
            placeholder: "เลือก...",
            value: "ข้อมูล",
            requiredError: "กรุณาตอบคำถาม",
            requiredErrorInPanel: "กรุณาตอบขั้นต่ำหนึ่งคำถาม",
            requiredInAllRowsError: "กรุณาตอบคำถามในทุกๆแถว",
            numericError: "ข้อมูลที่ใส่ต้องเป็นตัวเลข",
            textMinLength: "กรุณาใส่ขั้นต่ำจำนวน {0} ตัวอักษร",
            textMaxLength: "กรุณาใส่ไม่เกินจำนวน {0} ตัวอักษร",
            textMinMaxLength: "กรุณาใส่ขั้นต่ำจำนวน {0} และไม่เกินจำนวน {1} ตัวอักษร",
            minRowCountError: "กรุณาใส่ขั้นต่ำจำนวน {0} แถว",
            minSelectError: "กรุณาเลือกอย่างน้อย {0} รายการ",
            maxSelectError: "กรุณาเลือกไม่เกิน {0} รายการ",
            numericMinMax: "'{0}' ต้องมากกว่าหรือเท่ากับ {1} และน้อยกว่าหรือเท่ากับ {2}",
            numericMin: "'{0}' ต้องมากกว่าหรือเท่ากับ {1}",
            numericMax: "'{0}' น้อยกว่าหรือเท่ากับ {1}",
            invalidEmail: "กรุณาใส่อีเมล์แอดเดรสที่ถูกต้อง",
            invalidExpression: "The expression: {0} ต้องรีเทิร์น 'true'.",
            urlRequestError: "รีเควสรีเทิร์น error '{0}'. {1}",
            urlGetChoicesError: "รีเควสรีเทิร์นข้อมูลว่างเปล่า หรือ 'path' property ไม่ถูกต้อง",
            exceedMaxSize: "ขนาดไฟล์ต้องไม่เกิน {0}.",
            otherRequiredError: "กรุณาใส่ค่าอื่น",
            uploadingFile: "ไฟล์ของคุณกำลังอัพโหลดอยู่. กรุณารอสักครู่แล้วทำการลองอีกครั้ง",
            loadingFile: "กำลังโหลด...",
            chooseFile: "เลือกไฟล์...",
            noFileChosen: "ไม่ไฟล์ที่เลือก",
            confirmDelete: "คุณต้องการลบรายการนี้จริงหรือไม่?",
            keyDuplicationError: "ข้อมูลนี้ต้องเป็น unique.",
            addColumn: "เพิ่มคอลัมน์",
            addRow: "เพิ่มแถว",
            removeRow: "ลบ",
            addPanel: "เพิ่ม",
            removePanel: "ลบ",
            choices_Item: "ชิ้น",
            matrix_column: "คอลัมน์",
            matrix_row: "แถว",
            savingData: "ผลลัพท์กำลังบันทึกลงที่เซิร์ฟเวอร์...",
            savingDataError: "มีความผิดพลาดเกิดขึ้นส่งผลให้ไม่สามารถบันทึกผลได้",
            savingDataSuccess: "บันทึกสำเร็จแล้ว",
            saveAgainButton: "รบกวนลองอีกครั้ง",
            timerMin: "นาที",
            timerSec: "วินาที",
            timerSpentAll: "คุณใช้เวลา {0} บนหน้านี้และ {1} รวมทั้งหมด",
            timerSpentPage: "คุณใช้เวลา {0} บนหน้านี้",
            timerSpentSurvey: "คุณใช้เวลา {0} รวมทั้งหมด",
            timerLimitAll: "คุณใช้เวลา {0} ของ {1} บนหน้านี้และ {2} ของ {3} รวมทั้งหมด",
            timerLimitPage: "คุณใช้เวลา {0} ของ {1} บนหน้านี้",
            timerLimitSurvey: "คุณใช้เวลา {0} ของ {1} รวมทั้งหมด",
            clearCaption: "เคลียร์",
            chooseFileCaption: "เลือกไฟล์",
            removeFileCaption: "นำไฟล์นี้ออก",
            booleanCheckedLabel: "ใช่",
            booleanUncheckedLabel: "ไม่ใช่",
            confirmRemoveFile: "คุณแน่ใจที่จะนำไฟล์นี้ออกใช่หรือไม่: {0}?",
            confirmRemoveAllFiles: "คุณแน่ใจที่จะนำไฟล์ทั้งหมดออกใช่หรือไม่",
            questionTitlePatternText: "ชื่อคำถาม"
        }, u.localeNames.th = "ไทย";
        u.locales["zh-tw"] = {
            pagePrevText: "上一頁",
            pageNextText: "下一頁",
            completeText: "提交問卷",
            otherItemText: "填寫其他答案",
            progressText: "第 {0} 頁, 共 {1} 頁",
            emptySurvey: "問卷中沒有問題或頁面",
            completingSurvey: "感謝您的參與!",
            loadingSurvey: "問卷載入中...",
            placeholder: "請選擇...",
            requiredError: "請填寫此問題",
            requiredInAllRowsError: "請填寫所有行中問題",
            numericError: "答案必須是個數字",
            textMinLength: "答案長度至少 {0} 個字元",
            textMaxLength: "答案長度不能超過 {0} 個字元",
            textMinMaxLength: "答案長度必須在 {0} - {1} 個字元之間",
            minRowCountError: "最少需要填寫 {0} 行答案",
            minSelectError: "最少需要選擇 {0} 項答案",
            maxSelectError: "最多只能選擇 {0} 項答案",
            numericMinMax: "答案 '{0}' 必須大於等於 {1} 且小於等於 {2}",
            numericMin: "答案 '{0}' 必須大於等於 {1}",
            numericMax: "答案 '{0}' 必須小於等於 {1}",
            invalidEmail: "請輸入有效的 Email 地址",
            urlRequestError: "載入選項時發生錯誤 '{0}': {1}",
            urlGetChoicesError: "未能載入有效的選項或請求參數路徑有誤",
            exceedMaxSize: "文件大小不能超過 {0}",
            otherRequiredError: "請完成其他問題",
            uploadingFile: "文件上傳中... 請耐心等待幾秒後重試",
            addRow: "添加答案",
            removeRow: "刪除答案",
            choices_Item: "選項",
            matrix_column: "列",
            matrix_row: "行",
            savingData: "正在將結果保存到服務器...",
            savingDataError: "在保存結果過程中發生了錯誤，結果未能保存",
            savingDataSuccess: "結果保存成功!",
            saveAgainButton: "請重試"
        }, u.localeNames["zh-tw"] = "繁體中文";
        u.locales.tr = {
            pagePrevText: "Geri",
            pageNextText: "İleri",
            completeText: "Anketi Tamamla",
            previewText: "Ön izleme",
            editText: "Düzenle",
            startSurveyText: "Başlat",
            otherItemText: "Diğer (açıklayınız)",
            noneItemText: "Yok",
            selectAllItemText: "Hepsini seç",
            progressText: "Sayfa {0} / {1}",
            panelDynamicProgressText: "Kayıt {0} / {1}",
            questionsProgressText: "Soruları cevapladı {0} / {1}",
            emptySurvey: "Ankette görüntülenecek sayfa ya da soru mevcut değil.",
            completingSurvey: "Anketimizi tamamladığınız için teşekkür ederiz.",
            completingSurveyBefore: "Kayıtlarımız, bu anketi zaten tamamladığınızı gösteriyor.",
            loadingSurvey: "Anket sunucudan yükleniyor ...",
            placeholder: "Seçiniz ...",
            value: "değer",
            requiredError: "Lütfen soruya cevap veriniz",
            requiredErrorInPanel: "Lütfen en az bir soruyu yanıtlayın.",
            requiredInAllRowsError: "Lütfen tüm satırlardaki soruları cevaplayınız.",
            numericError: "Girilen değer numerik olmalıdır",
            textMinLength: "En az {0} sembol giriniz.",
            textMaxLength: "Lütfen {0} karakterden az girin.",
            textMinMaxLength: "Lütfen {0} ’den fazla ve {1} ’den az karakter girin.",
            minRowCountError: "Lütfen en az {0} satırı doldurun.",
            minSelectError: "Lütfen en az {0} seçeneği seçiniz.",
            maxSelectError: "Lütfen {0} adetten fazla seçmeyiniz.",
            numericMinMax: "The '{0}' should be equal or more than {1} and equal or less than {2}",
            numericMin: "'{0}' değeri {1} değerine eşit veya büyük olmalıdır",
            numericMax: "'{0}' değeri {1} değerine eşit ya da küçük olmalıdır.",
            invalidEmail: "Lütfen geçerli bir eposta adresi giriniz.",
            invalidExpression: "İfade: {0} 'true' döndürmelidir.",
            urlRequestError: "Talebi şu hatayı döndü '{0}'. {1}",
            urlGetChoicesError: "Talep herhangi bir veri dönmedi ya da 'path' özelliği hatalı.",
            exceedMaxSize: "Dosya boyutu {0} değerini geçemez.",
            otherRequiredError: "Lütfen diğer değerleri giriniz.",
            uploadingFile: "Dosyanız yükleniyor. LÜtfen birkaç saniye bekleyin ve tekrar deneyin.",
            loadingFile: "Yükleniyor...",
            chooseFile: "Dosyaları seçin ...",
            noFileChosen: "Dosya seçili değil",
            confirmDelete: "Kaydı silmek istiyor musunuz?",
            keyDuplicationError: "Bu değer benzersiz olmalıdır.",
            addColumn: "Sütun ekleyin",
            addRow: "Satır Ekle",
            removeRow: "Kaldır",
            addPanel: "Yeni ekle",
            removePanel: "Kaldırmak",
            choices_Item: "eşya",
            matrix_column: "Sütun",
            matrix_row: "Kürek çekmek",
            savingData: "Sonuçlar sunucuya kaydediliyor ...",
            savingDataError: "Bir hata oluştu ve sonuçları kaydedemedik.",
            savingDataSuccess: "Sonuçlar başarıyla kaydedildi!",
            saveAgainButton: "Tekrar deneyin",
            timerMin: "min",
            timerSec: "saniye",
            timerSpentAll: "Bu sayfada {0} ve toplamda {1} harcadınız.",
            timerSpentPage: "Bu sayfaya {0} harcadınız.",
            timerSpentSurvey: "Toplamda {0} harcadınız.",
            timerLimitAll: "Bu sayfaya {0} / {1} ve toplamda {2} / {3} harcadınız.",
            timerLimitPage: "Bu sayfaya {0} / {1} harcadınız.",
            timerLimitSurvey: "Toplamda {0} / {1} harcadınız.",
            clearCaption: "Açık",
            chooseFileCaption: "Dosya seçin",
            removeFileCaption: "Bu dosyayı kaldır",
            booleanCheckedLabel: "Evet",
            booleanUncheckedLabel: "Hayır",
            confirmRemoveFile: "Bu dosyayı kaldırmak istediğinizden emin misiniz: {0}?",
            confirmRemoveAllFiles: "Tüm dosyaları kaldırmak istediğinizden emin misiniz?",
            questionTitlePatternText: "Soru başlığı"
        }, u.localeNames.tr = "türkçe";
        u.locales.ua = {
            pagePrevText: "Назад",
            pageNextText: "Далі",
            completeText: "Завершити",
            previewText: "Попередній перегляд",
            editText: "Редагувати",
            startSurveyText: "Почати",
            otherItemText: "Інше (будь ласка, опишіть)",
            noneItemText: "Жоден",
            selectAllItemText: "Вибрати все",
            progressText: "Сторінка {0} з {1}",
            panelDynamicProgressText: "Запис {0} із {1}",
            questionsProgressText: "Відповіли на {0}/{1} питань",
            emptySurvey: "Немає жодного питання.",
            completingSurvey: "Дякуємо Вам за заповнення анкети!",
            completingSurveyBefore: "Ви вже проходили це опитування.",
            loadingSurvey: "Завантаження опитування...",
            placeholder: "Вибрати...",
            value: "значення",
            requiredError: "Будь ласка, дайте відповідь.",
            requiredErrorInPanel: "Будь ласка, дайте відповідь хоча б на одне питання.",
            requiredInAllRowsError: "Будь ласка, дайте відповідь на питання в кожному рядку.",
            numericError: "Відповідь повинна бути числом.",
            textMinLength: "Будь ласка введіть більше {0} символів.",
            textMaxLength: "Будь ласка введіть менше {0} символів.",
            textMinMaxLength: "Будь ласка введіть більше {0} и менше {1} символів.",
            minRowCountError: "Будь ласка, заповніть не менше {0} рядків.",
            minSelectError: "Будь ласка, виберіть хоча б {0} варіантів.",
            maxSelectError: "Будь ласка, виберіть не більше {0} варіантів.",
            numericMinMax: "'{0}' повинно бути не менше ніж {1}, і не більше ніж {2}",
            numericMin: "'{0}' повинно бути не менше ніж {1}",
            numericMax: "'{0}' повинно бути не більше ніж {1}",
            invalidEmail: "Будь ласка, введіть дійсну адресу електронної пошти.",
            invalidExpression: "Вираз {0} повинен повертати 'true'.",
            urlRequestError: "Запит повернув помилку '{0}'. {1}",
            urlGetChoicesError: "Відповідь на запит повернулась порожньою або властивіть 'path' вказано невірно",
            exceedMaxSize: "Розмір файлу не повинен перевищувати {0}.",
            otherRequiredError: "Будь ласка, введіть дані в поле 'Інше'",
            uploadingFile: "Ваш файл завантажується. Зачекайте декілька секунд і спробуйте знову.",
            loadingFile: "Завантаження...",
            chooseFile: "Виберіть файл(и)...",
            noFileChosen: "Файл не вибрано",
            confirmDelete: "Ви хочете видалити запис?",
            keyDuplicationError: "Це значення повинно бути унікальним.",
            addColumn: "Додати колонку",
            addRow: "Додати рядок",
            removeRow: "Видалити",
            addPanel: "Додати нову",
            removePanel: "Видалити",
            choices_Item: "Варіант",
            matrix_column: "Колонка",
            matrix_row: "Рядок",
            savingData: "Результати зберігаються на сервер...",
            savingDataError: "Відбулася помилка, результат не був збережений.",
            savingDataSuccess: "Резвультат успішно збережений!",
            saveAgainButton: "Спробувати знову",
            timerMin: "хв",
            timerSec: "сек",
            timerSpentAll: "Ви витратили {0} на цій сторінці і {1} загалом.",
            timerSpentPage: "Ви витратили {0} на цій сторінці.",
            timerSpentSurvey: "Ви витратили {0} протягом тесту.",
            timerLimitAll: "Ви витратили {0} з {1} на цій сторінці і {2} з {3} для всього тесту.",
            timerLimitPage: "Ви витратили {0} з {1} на цій сторінці.",
            timerLimitSurvey: "Ви витратили {0} з {1} для всього тесту.",
            clearCaption: "Очистити",
            chooseFileCaption: "Виберіть файл",
            removeFileCaption: "Видалити файл",
            booleanCheckedLabel: "Так",
            booleanUncheckedLabel: "Ні",
            confirmRemoveFile: "Ви впевнені, що хочете видалити цей файл: {0}?",
            confirmRemoveAllFiles: "Ви впевнені, що хочете видалити всі файли?",
            questionTitlePatternText: "Назва запитання"
        }, u.localeNames.ua = "українська";
        u.locales.vi = {
            pagePrevText: "Trở về",
            pageNextText: "Tiếp theo",
            completeText: "Hoàn thành",
            previewText: "Xem trước",
            editText: "Chỉnh sửa",
            startSurveyText: "Bắt đầu",
            otherItemText: "Khác (mô tả)",
            noneItemText: "Trống",
            selectAllItemText: "Chọn tất cả",
            progressText: "Trang {0} / {1}",
            panelDynamicProgressText: "Dòng {0} / {1}",
            questionsProgressText: "Đã trả lời {0}/{1} câu hỏi",
            emptySurvey: "Không có trang hoặc câu hỏi nào được hiển thị trong cuộc khảo sát này.",
            completingSurvey: "Cảm ơn đã hoàn thành khảo sát!",
            completingSurveyBefore: "Hồ sơ chúng tôi cho thấy rằng bạn đã hoàn thành cuộc khảo sát này.",
            loadingSurvey: "Đang tải khảo sát...",
            placeholder: "Chọn...",
            value: "Giá trị",
            requiredError: "Vui lòng trả lời câu hỏi.",
            requiredErrorInPanel: "Vui lòng trả lời ít nhất một câu hỏi.",
            requiredInAllRowsError: "Vui lòng trả lời các câu hỏi trên tất cả các dòng.",
            numericError: "Giá trị nên là kiểu số.",
            textMinLength: "Vui lòng nhập ít nhất {0} kí tự.",
            textMaxLength: "Vui lòng nhập ít hơn {0} kí tự.",
            textMinMaxLength: "Vui lòng nhập nhiều hơn {0} hoặc ít hơn {1} kí tự.",
            minRowCountError: "Vui lòng nhập ít nhất {0} dòng.",
            minSelectError: "Vui lòng chọn ít nhất {0} loại.",
            maxSelectError: "Vui lòng không chọn nhiều hơn {0} loại.",
            numericMinMax: "Giá trị '{0}' nên bằng hoặc lớn hơn {1} và bằng hoặc nhỏ hơn {2}",
            numericMin: "Giá trị '{0}' nên bằng hoặc lớn hơn {1}",
            numericMax: "Giá trị '{0}' nên bằng hoặc nhỏ hơn {1}",
            invalidEmail: "Vui lòng điền địa chỉ email hợp lệ.",
            invalidExpression: "Biểu thức: {0} nên trả về 'true'.",
            urlRequestError: "Yêu cầu trả về lỗi '{0}'. {1}",
            urlGetChoicesError: "Yêu cầu trả về dữ liệu trống hoặc thuộc tính 'path' không đúng",
            exceedMaxSize: "Kích thước tập tin không nên vượt quá {0}.",
            otherRequiredError: "Vui lòng điền giá trị khác.",
            uploadingFile: "Tập tin đang được tải lên. Vui lòng chờ một lúc và thử lại.",
            loadingFile: "Đang tải...",
            chooseFile: "Chọn các tập tin...",
            noFileChosen: "Không có tập tin nào được chọn",
            confirmDelete: "Bạn muốn xóa dòng này?",
            keyDuplicationError: "Giá trị này không nên bị trùng lặp.",
            addColumn: "Thêm cột",
            addRow: "Thêm dòng",
            removeRow: "Xóa",
            addPanel: "Thêm mới",
            removePanel: "Xóa",
            choices_Item: "mục",
            matrix_column: "Cột",
            matrix_row: "Dòng",
            savingData: "Kết quả đang lưu lại trên hệ thống...",
            savingDataError: "Có lỗi xảy ra và chúng ta không thể lưu kết quả.",
            savingDataSuccess: "Kết quả đã được lưu thành công!",
            saveAgainButton: "Thử lại",
            timerMin: "phút",
            timerSec: "giây",
            timerSpentAll: "Bạn đã sử dụng {0} trên trang này và {1} trên toàn bộ.",
            timerSpentPage: "Bạn đã sử dụng {0} trên trang.",
            timerSpentSurvey: "Bạn đã sử dụng {0} trên toàn bộ.",
            timerLimitAll: "Bạn đã sử dụng {0} / {1} trên trang này và {2} / {3} trên toàn bộ.",
            timerLimitPage: "Bạn đã sử dụng {0} / {1} trên trang này.",
            timerLimitSurvey: "Bạn đã sử dụng {0} / {1} trên toàn bộ.",
            clearCaption: "Xóa",
            chooseFileCaption: "Chọn tập tin",
            removeFileCaption: "Xóa tập tin",
            booleanCheckedLabel: "Có",
            booleanUncheckedLabel: "Không",
            confirmRemoveFile: "Bạn có chắc chắn muốn xóa tập tin này: {0}?",
            confirmRemoveAllFiles: "Bạn có chắc chắn muốn xóa toàn bộ tập tin?",
            questionTitlePatternText: "Tiêu đề câu hỏi"
        }, u.localeNames.vi = "Việt Nam";
        u.locales.cy = {
            pagePrevText: "Blaenorol",
            pageNextText: "Nesaf",
            completeText: "Cwblhau",
            previewText: "Rhagolwg",
            editText: "Golygu",
            startSurveyText: "Dechrau",
            otherItemText: "Arall (disgrifiwch)",
            noneItemText: "Dim",
            selectAllItemText: "Dewis y Cyfan ",
            progressText: "Tudalen {0} o {1}",
            panelDynamicProgressText: "Cofnod {0} o {1}",
            questionsProgressText: "Wedi ateb {0}/{1} cwestiwn",
            emptySurvey: "Does dim modd gweld tudalen na chwestiwn yn yr arolwg.",
            completingSurvey: "Diolch am lenwi’r holiadur!",
            completingSurveyBefore: "Rydych chi wedi llenwi’r arolwg hwn yn barod yn ôl ein cofnodion.",
            loadingSurvey: "Wrthi’n Llwytho’r Arolwg...",
            placeholder: "Dewiswch...",
            value: "gwerth",
            requiredError: "Atebwch y cwestiwn.",
            requiredErrorInPanel: "Atebwch o leiaf un cwestiwn.",
            requiredInAllRowsError: "Atebwch y cwestiynau ym mhob rhes.",
            numericError: "Dylai’r gwerth fod yn rhif.",
            textMinLength: "Rhowch o leiaf {0} nod.",
            textMaxLength: "Rhowch lai na {0} nod.",
            textMinMaxLength: "Rhowch o leiaf {0} nod ond dim mwy na {1}.",
            minRowCountError: "Llenwch o leiaf {0} rhes.",
            minSelectError: "Dewiswch o leiaf {0} amrywiolyn.",
            maxSelectError: "Peidiwch â dewis mwy na {0} amrywiolyn.",
            numericMinMax: "Dylai’r '{0}' fod yr un fath â {1} neu’n fwy, a’r fath â {2} neu’n llai",
            numericMin: "Dylai’r '{0}' fod yr un fath â {1} neu’n fwy",
            numericMax: "Dylai’r '{0}' fod yr un fath â {1} neu’n llai",
            invalidEmail: "Rhowch gyfeiriad e-bost dilys.",
            invalidExpression: "Dylai’r mynegiad {0} arwain at 'true'.",
            urlRequestError: "Roedd y cais wedi arwain at y gwall '{0}'. {1}",
            urlGetChoicesError: "Roedd y cais wedi arwain at ddata gwag neu mae priodwedd y ‘path’ yn anghywir ",
            exceedMaxSize: "Ddylai’r ffeil ddim bod yn fwy na {0}.",
            otherRequiredError: "Rhowch y gwerth arall.",
            uploadingFile: "Mae eich ffeil wrthi’n llwytho i fyny. Arhoswch ychydig o eiliadau a rhoi cynnig arall arni.",
            loadingFile: "Wrthi’n llwytho...",
            chooseFile: "Dewiswch ffeil(iau)...",
            noFileChosen: "Heb ddewis ffeil ",
            confirmDelete: "Ydych chi am ddileu’r cofnod?",
            keyDuplicationError: "Dylai’r gwerth hwn fod yn unigryw.",
            addColumn: "Ychwanegu colofn ",
            addRow: "Ychwanegu rhes",
            removeRow: "Tynnu",
            addPanel: "Ychwanegu o’r newydd",
            removePanel: "Tynnu",
            choices_Item: "eitem",
            matrix_column: "Colofn",
            matrix_row: "Rhes",
            savingData: "Mae’r canlyniadau’n cael eu cadw ar y gweinydd...",
            savingDataError: "Roedd gwall a doedd dim modd cadw’r canlyniadau.",
            savingDataSuccess: "Wedi llwyddo i gadw’r canlyniadau!",
            saveAgainButton: "Rhowch gynnig arall arni",
            timerMin: "mun",
            timerSec: "eil",
            timerSpentAll: "Rydych chi wedi treulio {0} ar y dudalen hon a {1} gyda’i gilydd.",
            timerSpentPage: "Rydych chi wedi treulio {0} ar y dudalen hon.",
            timerSpentSurvey: "Rydych chi wedi treulio {0} gyda’i gilydd.",
            timerLimitAll: "Rydych chi wedi treulio {0} o {1} ar y dudalen hon a {2} o {3} gyda’i gilydd.",
            timerLimitPage: "Rydych chi wedi treulio {0} o {1} ar y dudalen hon.",
            timerLimitSurvey: "Rydych chi wedi treulio {0} o {1} gyda’i gilydd.",
            clearCaption: "Clirio",
            chooseFileCaption: "Dewiswch ffeil ",
            removeFileCaption: "Tynnu’r ffeil hon ",
            booleanCheckedLabel: "Iawn",
            booleanUncheckedLabel: "Na",
            confirmRemoveFile: "Ydych chi’n siŵr eich bod am dynnu’r ffeil hon: {0}?",
            confirmRemoveAllFiles: "Ydych chi’n siŵr eich bod am dynnu pob ffeil?",
            questionTitlePatternText: "Teitl y Cwestiwn "
        }, u.localeNames.cy = "cymraeg";
        u.locales.tel = {
            pagePrevText: "వెనకటి",
            pageNextText: "తరువాయ",
            completeText: "పూర్తి చేయండి",
            previewText: "ముందుగా వీక్షించు",
            editText: "మార్పులు చెయ్యి",
            startSurveyText: "ప్రారంభించు",
            otherItemText: "ఇతరమైన(వివరించండి)",
            selectAllItemText: "అన్ని ఎంచుకో",
            progressText: "పేజీ{0}/{1}",
            panelDynamicProgressText: "దాఖలాలు{0}/{1}",
            questionsProgressText: "{0}/{1} ప్రశ్నలకు జవాబు ఇవ్వడం అయినది",
            emptySurvey: "ఈ సర్వేలో పేజీలు గాని ప్రశ్నలు గాని కనబడుట లేదు",
            completingSurvey: "సర్వేను ముగించి నందుకు ధన్యవాదములు",
            completingSurveyBefore: " మీరు ఇప్పటికే సర్వేను ముగించినట్లు మా రికార్డులు చూపిస్తున్నాయి",
            loadingSurvey: "సర్వే లోడ్ అవుతుంది",
            placeholder: "ఎన్నుకోండి",
            value: "విలువ",
            requiredError: "దయచేసి ప్రశ్నకు జవాబు ఇవ్వండి",
            requiredErrorInPanel: "దయచేసి కనీసం ఒక్క ప్రశ్నకైనా జవాబు ఇవ్వండి",
            requiredInAllRowsError: "దయచేసి అన్ని వరుసలలో ఉన్న ప్రశ్నలకు జవాబు ఇవ్వండి",
            numericError: "విలువను సంఖ్యలలో తెలియజేయండి",
            textMinLength: "దయచేసి కనీసం {0} అక్షరాలను నమోదు చేయండి",
            textMaxLength: "దయచేసి {0} కన్నా తక్కువ అక్షరాలను నమోదు చేయండి",
            textMinMaxLength: "దయచేసి {0} కన్నా ఎక్కువ మరియు{1} కన్నా తక్కువ అక్షరాలను నమోదు చేయండి",
            minRowCountError: "దయచేసి కనీసం {0}వరుసలను పూరించండి",
            minSelectError: "దయచేసి కనీసం{0} రకాలను ఎన్నుకోండి",
            maxSelectError: "దయచేసి {0} కన్నా ఎక్కువ రకాలను ఎన్నుకో కండి",
            numericMinMax: "'{0}' {1}తొ సమానంగా లేదా {1} కన్నా ఎక్కువ గా మరియు  {2}కన్నా తక్కువ ఉండాలి లెదా {2}తొ సమానంగా ఉండాలి",
            numericMin: "''{0}' {1}తొ  సమానంగా లేదా  {1}కన్నా ఎక్కువగా ఉండాలి",
            numericMax: "'{0}'  {1}  తక్కువ లేదా సమానంగా ఉండాలి",
            invalidEmail: "దయచేసి సరైన ఈమెయిల్  నమోదు చేయండి",
            invalidExpression: "{0} 'నిజం' అని తిరిగివ్వాలి",
            urlRequestError: "విన్నపము {0} ని తప్పుగా గుర్తించింది {1}",
            urlGetChoicesError: "విన్నపము ఖాళీ డేటాని తిరిగిచ్చింది, లేదా path తప్పైన ది",
            exceedMaxSize: "ఫైల్ పరిమాణం{0} కంటే పెద్దదిగా ఉండకూడదు",
            otherRequiredError: "దయచేసి ఇతర విలువలను నమో దించండి",
            uploadingFile: "మీ ఫైల్ అప్లోడ్ అవుతున్నది దయచేసి కొన్ని సెకండ్లు వేచి ఉండండి మరియు మళ్లీ ప్రయత్నించండి",
            loadingFile: "లోడ్ అవుతున్నది",
            chooseFile: "ఫైళ్లను ఎన్నుకోండి",
            noFileChosen: "ఏ ఫైల్ ఎన్నుకో లేదు",
            confirmDelete: "మీరు రికార్డులను తొలగించాలని అనుకుంటున్నారా",
            keyDuplicationError: "విలువ ప్రత్యేకంగా ఉండాలి",
            addColumn: "కాలం చేర్పించండి",
            addRow: "వరుసలు చేర్పించండి",
            removeRow: "తీసేయండి",
            addPanel: "కొత్త దాన్ని చేర్పించండి",
            removePanel: "తీసేయండి",
            choices_Item: "వస్తువులు",
            matrix_column: "కాలం ",
            matrix_row: "వరుస",
            savingData: "ఫలితాంశాలు సర్వర్లో సేవ్ అవుతున్నాయి",
            savingDataError: "ఒక లోపము సంభవించినది అందుకని ఫలితాంశాలను సేవ్ చేయలేకపోయాము  ",
            savingDataSuccess: "ఫలితాంశాలను విజయవంతంగా సేవ్ చేసాము",
            saveAgainButton: "మళ్లీ ప్రయత్నించు",
            timerMin: "నిమిషాలు ",
            timerSec: "సెకండ్లు",
            timerSpentAll: "ఈ పేజీ పైన మీరు{0}  ఉపయోగించారు మొత్తంగా  {1} ఉపయోగించారు",
            timerSpentPage: "ఈ పేజీ పైన మీరు{0} ఉపయోగించారు",
            timerSpentSurvey: "మీరు మొత్తంగా {0}  ఉపయోగించారు",
            timerLimitAll: "ఈ పేజీ పైన మీరు {1}లో {0} భాగాన్ని ఉపయోగించారు. మోతంగా {3}లో {2} భాగాన్ని ఉపయోగించారు.",
            timerLimitPage: "ఈ పేజీలో మీరు {1}లోని{0} ని ఉపయోగించారు",
            timerLimitSurvey: " మొత్తంగా మీరు {1} లో {0} ని ఉపయోగించారు ",
            clearCaption: "స్పష్టమ్",
            chooseFileCaption: "ఫైల్ ఎంచుకోండి",
            removeFileCaption: "ఈ ఫైల్ తీసేయండి",
            booleanCheckedLabel: "అవును",
            booleanUncheckedLabel: "లేదు",
            confirmRemoveFile: " ఈ ఫైల్ని తీయించాలని మీరు ఖచ్చితంగా అనుకుంటున్నారా:{0} ?",
            confirmRemoveAllFiles: "అన్ని ఫైళ్లను తీసేయాలని మీరు ఖచ్చితంగా అనుకుంటున్నారా",
            questionTitlePatternText: "ప్రశ్న శీర్షిక"
        }, u.localeNames.tel = "Telugu";
        var Sl = o;

        function Ol(e) {
            return this.each((function() {
                var t = e.model;
                t.updateSurvey(e);
                var n = new hs(null, t);
                void 0 !== e.expanded && (n.isExpanded = e.expanded), void 0 !== e.isExpanded && (n.isExpanded = e.isExpanded), void 0 !== e.closeOnCompleteTimeout && (n.closeOnCompleteTimeout = e.closeOnCompleteTimeout), n.show()
            }))
        }
        i.a.fn.extend({
            Survey: function(e) {
                return this.each((function() {
                    var t = e.model;
                    t.updateSurvey(e), t.render(this)
                }))
            },
            PopupSurvey: Ol,
            SurveyWindow: Ol
        }), mo.platform = "jquery", us(o, mo.platform)
    }])
}));
// source --> https://www.striped-giraffe.com/wp-content/themes/page-builder-framework/js/min/is-customize.js?ver=6.8.2 
document.addEventListener('DOMContentLoaded', function() {
  const header = document.querySelector('.wpbf-navigation');
	const navigationItems  = document.querySelectorAll('#navigation > ul > li');
	const mainContainer = document.querySelector('#container');
	const headerShort = document.querySelector('#header');
    const observerConfig = {
        attributes: true, // Listen for attribute changes
        attributeFilter: ['class'], // Specifically for changes in the class attribute
        subtree: true // Watch the descendants of the target node (for changes within the ul/li/a structure)
    };



	navigationItems.forEach(
			items => {
				items.addEventListener('mouseover', () => {
					headerShort.classList.add('hovered');
				});

				items.addEventListener('mouseleave', () => {
					headerShort.classList.remove('hovered');
				});
			}
		);


    const callback = function(mutationsList, observer) {
			const isWhite = mainContainer.classList.contains('white');
			for(let mutation of mutationsList) {
				if (mutation.type !== 'attributes') return

				const targetElement = mutation.target;
				if (targetElement.tagName === 'A' && targetElement.classList.contains('hovered')) {
					// Change header background when hovered class is detected
					//if (!isWhite) {
						//headerShort.style.background = 'linear-gradient(180deg, rgba(0,0,0,0.99) 99%, rgba(0,0,0,0.99) 100%';
					//}
					//header.style.height = '270px';
					//header.classList.add('hovered');
				} else {
					//header.classList.remove('hovered');
					// Check if any 'a' elements still have 'hovered' class
					const stillHovered = document.querySelector('#header a.hovered');
					if (!stillHovered) {
						if(headerShort.classList.contains('short')) {
							setTimeout(() => {
								if (!isWhite) {
									headerShort.style.background = 'linear-gradient(180deg, rgba(0,0,0,1) 97%, rgba(0,0,0,0.5) 98%, rgba(0,0,0,0) 99%)';
								}
							header.style.boxShadow = 'none';
							header.style.removeProperty('height');
							}, 200)
						} else {
							if (!isWhite) {
								headerShort.style.background = 'linear-gradient(180deg, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.6) 30%, rgba(0,0,0,0) 100%)';
							}
						}
					}
				}
      }
    };

    // Create an observer instance and pass it the callback function
    const observer = new MutationObserver(callback);

    // Start observing the target node for configured mutations
    //observer.observe(document.getElementById('header'), observerConfig);
	
	
	
	/* Change font-weight on safari */
	const isSafari = () => {
		return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
	}
	
	const isFirefox = () => {
		return /firefox/i.test(navigator.userAgent);
	}


	if (isSafari() || isFirefox()) {
		document.querySelectorAll('#menu-main-menu-v2 #menu-item-36039 a').forEach(element => {
			element.style.fontWeight = 500;
		});
	}
	
	
});