!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):function(){var n=e.Modelico,r=t();e.Modelico=r,r.noConflict=function(){return e.Modelico=n,r}}()}(this,function(){"use strict";var e=Symbol("type"),t=Symbol("fields"),n=Symbol("innerOrig"),r=Object.freeze({typeSymbol:e,fieldsSymbol:t,innerOrigSymbol:n}),u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},o=function(){function e(e,t){for(var n=0;n1?t-1:0),r=1;r2&&void 0!==arguments[2]?arguments[2]:[];return e(n,r)}},g=function(e){return function(){return e}},b=function(e){return null==e||Number.isNaN(e)},O=v(b,y),j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(b(e))throw TypeError('expected a value at "'+t.join(" → ")+'" but got nothing (null, undefined or NaN)');return e},k=function(e){return function(t){return b(t)?e:t}},S=function(e){return Object.keys(e).map(function(t){return[t,e[t]]})},w=v(function(e){return function(t){return t[e]}}("reviver"),k(m(j))),M=function(e){return"object"===(void 0===e?"undefined":u(e))&&!!e},N=function(e){return"function"==typeof e},_=Object.freeze({}),z=Object.freeze([]),T=function(e,t){return e===t||Object.is(e,t)},A=v(function(e,t){return null==e||null==t?e===t:e.constructor===t.constructor},y),E=function(e,t){return O(e)&&e.equals?e.equals(t):T(e,t)},J=function(e){throw Error(e)},P=function(e){return function(t){return M(t)?t:e(t)}},I=function(e,t,n){return['Invalid JSON at "'+(arguments.length>3&&void 0!==arguments[3]?arguments[3]:[]).join(" → ")+'". According to the schema\n',JSON.stringify(t,null,2)+"\n",'the value (data path "'+e.errors.filter(function(e){return""!==e.dataPath}).map(function(e){return e.dataPath})+'")\n',JSON.stringify(n,null,2)+" "+Object.prototype.toString.call(n)+"\n"].concat(e.errors.map(function(e){return e.message})).join("\n")},x=function(){return new WeakMap},D=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new WeakMap,t=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:x;return function(r){for(var u=arguments.length,i=Array(u>1?u-1:0),o=1;o0)return t.apply(void 0,[r].concat(i));e.has(t)||e.set(t,n());var a=e.get(t)||n(),f=void 0===r?_:r;return a.has(f)||a.set(f,t.apply(void 0,[r].concat(i))),a.get(f)}};return t.cache=function(){return e},t.clear=function(){return e=new WeakMap,t},t},C=D(),R=new WeakMap,q=function(e,t){return t.innerTypes(e,t)},F=function(e,t){return R.has(t)||R.set(t,q(e,t)),R.get(t)||_},U=new WeakMap,W=void 0,Y=function(){return{nextRef:1,definitions:{},usedDefinitions:new Set,metadataRefCache:new WeakMap}},B=function(e,t){if(void 0===e.default)return t;var n={default:JSON.parse(JSON.stringify(e.default))};return t===_?Object.assign({},{type:_},n):Object.assign({},{anyOf:[{type:"null"},t]},e.type===Rt.Maybe?void 0:n)},L=function(e){if(e.schema)return B(e,e.schema());if(!(e.type&&e.type.innerTypes))return B(e,_);var t=F([],e.type);if(0===Object.keys(t).length)return _;var n={type:"object"},r=[],u=Object.keys(t).reduce(function(e,n){var u=t[n],i=G(u,!1);return void 0===u.default&&r.push(n),Object.assign(e,a({},n,i))},{}),i=Object.assign({},n,{properties:u});return r.length>0&&(i.required=r),B(e,i)},$=function(){var e=W,t=e.definitions,n=e.usedDefinitions;return Object.keys(t).map(Number).reduce(function(e,r){return n.has(r)&&(e[r]=t[r]),e},{})},G=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(U.has(e))return U.get(e)||_;if(t&&(W=Y()),W.metadataRefCache.has(e)){var n=W.metadataRefCache.get(e)||W.nextRef;return W.usedDefinitions.add(n),{$ref:"#/definitions/"+n}}var r=W.nextRef;W.metadataRefCache.set(e,r),W.nextRef+=1;var u=L(e);if(Object.assign(W.definitions,a({},r,u)),!t){var i=W.metadataRefCache.get(e),o=Object.keys(u);return!i||o.length<=1&&!Array.isArray(u[o[0]])?u:(W.usedDefinitions.add(i),{$ref:"#/definitions/"+i})}var f=$(),c=void 0;return c=0===Object.keys(f).length?u:f.hasOwnProperty(r)?{definitions:Object.assign(f,a({},r,u)),$ref:"#/definitions/"+r}:Object.assign({},u,{definitions:f}),U.set(e,c),c},H=function(e,t){return'Invalid value at "'+t.join(" → ")+'"'},V=new WeakMap,K=C(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p;return Object.freeze({type:e,reviver:m(h(j,e)),maybeReviver:m(e)})}),Q=g(Object.freeze({type:p,reviver:m(p),default:null})),X=function(e,t,n,r){return Object.keys(n).reduce(function(u,i){var o=r.concat(i),a=F(r,e)[i],f=N(a)?a(n,o):a;return u[i]=f?w(f)(t,n[i],o):n[i],u},{})},Z=function(e){return function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(""!==t)return n;var u=M(n)?X(e,t,n,r):n;return new e(u)}},ee=function(e){return function(t){var n=t.type.innerTypes(),r=Object.keys(n),u=M(e);return(0!==r.length||!u)&&r.filter(function(e){return!n[e].hasOwnProperty("default")}).every(function(t){return!!u&&e.hasOwnProperty(t)})}},te=function(e){return function(t){var n=e.filter(ee(t),[]);if(0===n.length)throw Error("Unable to infer type");if(n.length>1)throw Error("Ambiguous object: more than one metadata matches the object. A custom classifier can be passed as a second argument.");return n[0]}},ne=function(e,t){return e.get(t)},re=function(){function n(r){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_,o=arguments[2];if(i(this,n),!M(u))throw TypeError("expected an object with fields for "+(r.displayName||r.name)+" but got "+u);Object.freeze(u);var a={},f=F([],r);(o=k(this)(o))[e]=g(r),Object.keys(f).forEach(function(e){var t=u[e],n=f[e].default,i=void 0;if(O(t))i=t;else{if(void 0===n)throw TypeError('no value for key "'+e+'" of '+(r.displayName||r.name));i=n,a[e]=i}o[e]=g(i)}),o[t]=g(Object.freeze(Object.assign(a,u)))}return o(n,[{key:"get",value:function(e){return this[t]()[e]}},{key:"getIn",value:function(e){return e.reduce(ne,this)}},{key:"copy",value:function(n){var r=Object.assign({},this[t](),n);return new(this[e]())(r)}},{key:"set",value:function(e,t){return this.copy(a({},e,t))}},{key:"setIn",value:function(e,t){if(0===e.length)return this.copy(t);var n=s(e),r=n[0],u=n.slice(1),i=this[r]();return i.setIn?this.set(r,i.setIn(u,t)):this.set(r,t)}},{key:"equals",value:function(e){if(this===e)return!0;if(A(this,e))return!1;var n=this[t](),r=e[t](),u=Object.keys(n),i=Object.keys(r);return u.length===i.length&&u.every(function(e){return E(n[e],r[e])})}},{key:"toJSON",value:function(){return this[t]()}},{key:"toJS",value:function(){return JSON.parse(JSON.stringify(this))}},{key:"stringify",value:function(e){return JSON.stringify(this,null,e)}},{key:Symbol.toStringTag,get:function(){return"ModelicoModel"}}],[{key:"innerTypes",value:function(){return _}},{key:"factory",value:function(){for(var e=arguments.length,t=Array(e),r=0;r1&&void 0!==arguments[1]?arguments[1]:new Map,u=arguments[2];i(this,r);var o=c(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e));if(b(t))throw TypeError("missing map");if(u&&0===t.size){var a;return a=u,c(o,a)}var f=ce(t);return o[n]=g(f),o.inner=function(){return ce(f)},o.size=f.size,o}return f(r,ue),o(r,[{key:Symbol.iterator,value:function(){return this[n]()[Symbol.iterator]()}},{key:"has",value:function(e){return this[n]().has(e)}},{key:"get",value:function(e){return this[n]().get(e)}},{key:"setIn",value:function(t,r){if(0===t.length)return new(this[e]())(r);var u=s(t),i=u[0],o=u.slice(1),a=this[n]().get(i);return a.setIn?this.set(i,a.setIn(o,r)):this.set(i,r)}},{key:"equals",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this===e)return!0;if(A(this,e)||this.size!==e.size)return!1;for(var n=this[Symbol.iterator](),r=e[Symbol.iterator](),u=0;u2&&void 0!==arguments[2]?arguments[2]:[];if(""!==n)return r;var i=w(N(e)?e(r,u):e),o=w(N(t)?t(r,u):t),a=null===r?null:new Map(r.map(ve(i,o,u)));return he.fromMap(a)}},pe=void 0,he=function(e){function t(e){i(this,t);var n=c(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,t,e,pe));return pe||0!==n.size||(pe=n),Object.freeze(n),n}return f(t,le),o(t,[{key:"set",value:function(e,n){return ie(this,t,e,n)}},{key:"toJSON",value:function(){return[].concat(l(this))}},{key:Symbol.toStringTag,get:function(){return"ModelicoMap"}}],[{key:"fromMap",value:function(e){return new t(e)}},{key:"fromArray",value:function(e){return t.fromMap(new Map(e))}},{key:"of",value:function(){for(var e=arguments.length,n=Array(e),r=0;r2&&void 0!==arguments[2]?arguments[2]:[];if(""!==t)return n;var u=w(N(e)?e(n,r):e),i=null===n?null:new Map(Object.keys(n).reduce(ge(u,n,r),[]));return je.fromMap(i)}},Oe=void 0,je=function(e){function t(e){i(this,t);var n=c(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,t,e,Oe));return Oe||0!==n.size||(Oe=n),Object.freeze(n),n}return f(t,le),o(t,[{key:"set",value:function(e,n){return ie(this,t,e,n)}},{key:"toJSON",value:function(){return[].concat(l(this)).reduce(me,{})}},{key:Symbol.toStringTag,get:function(){return"ModelicoStringMap"}}],[{key:"fromMap",value:function(e){return new t(e)}},{key:"fromArray",value:function(e){return t.fromMap(new Map(e))}},{key:"of",value:function(){for(var e=arguments.length,n=Array(e),r=0;r2&&void 0!==arguments[2]?arguments[2]:[];if(""!==n)return r;var i=w(N(e)?e(r,u):e),o=w(N(t)?t(r,u):t);return new _e(null===r?null:new Map(Object.keys(r).map(we(i,o,r,u))))}},Ne=void 0,_e=function(e){function t(e){i(this,t);var n=c(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,t,e,Ne));return Ne||0!==n.size||(Ne=n),Object.freeze(n),n}return f(t,le),o(t,[{key:"set",value:function(e,n){return ie(this,t,e,n)}},{key:"toJSON",value:function(){return[].concat(l(this)).reduce(Se,{})}},{key:Symbol.toStringTag,get:function(){return"ModelicoEnumMap"}}],[{key:"fromMap",value:function(e){return new t(e)}},{key:"fromArray",value:function(e){return t.fromMap(new Map(e))}},{key:"of",value:function(){for(var e=arguments.length,n=Array(e),r=0;r0&&void 0!==arguments[0]?arguments[0]:0;i(this,t);var n=c(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,t));if(!Number.isNaN(e)&&b(e))throw TypeError("missing number");return n.inner=g(Number(e)),Object.freeze(n),n}return f(t,ue),o(t,[{key:"set",value:function(){J("Number.set is not supported")}},{key:"setIn",value:function(e,n){if(0===e.length)return t.of(n);J("ModelicoNumber.setIn is not supported for non-empty paths")}},{key:"toJSON",value:function(){var e=this.inner();return Object.is(e,-0)?"-0":e===1/0?"Infinity":e===-1/0?"-Infinity":Number.isNaN(e)?"NaN":e}},{key:"equals",value:function(e){return this===e||!A(this,e)&&T(this.inner(),e.inner())}},{key:Symbol.toStringTag,get:function(){return"ModelicoNumber"}}],[{key:"of",value:function(e){return new t(e)}},{key:"metadata",value:function(){return Ae()}}]),t}();Ee.displayName="ModelicoNumber";var Je=Object.freeze(Ee),Pe=function(e,t){var n=null===t?null:new Date(t);return new xe(n)},Ie=C(function(){return Object.freeze({type:xe,reviver:Pe})}),xe=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;i(this,t);var n=c(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,t));if(b(e))throw TypeError("missing date");var r=new Date(e.getTime());return n.inner=function(){return new Date(r.getTime())},Object.freeze(n),n}return f(t,ue),o(t,[{key:"set",value:function(){J("Date.set is not supported")}},{key:"setIn",value:function(e,n){if(0===e.length)return t.of(n);J("Date.setIn is not supported for non-empty paths")}},{key:"toJSON",value:function(){return this.inner().toISOString()}},{key:"equals",value:function(e){return this===e||!A(this,e)&&this.toJSON()===e.toJSON()}},{key:Symbol.toStringTag,get:function(){return"ModelicoDate"}}],[{key:"of",value:function(e){return new t(e)}},{key:"metadata",value:function(){return Ie()}}]),t}();xe.displayName="ModelicoDate";var De=Object.freeze(xe),Ce=function(e,t,n){return function(r){return N(e[r])?e[r](t,n):e[r]}},Re=function(e,t){return function(n,r){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(""!==n)return r;var i=Array.isArray(t);if(i&&r.length!==t.length)throw TypeError("tuple has missing or extra items");var o=i?Ce(t,r,u):N(t)?function(e){return t(r,u)}:function(e){return t},a=null===r?null:r.map(function(e,t){return w(o(t))("",e,u.concat(t))});return new e(a)}},qe=C(function(e){return C(function(t){return Object.freeze({type:e,subtypes:Object.freeze([t]),reviver:Re(e,t)})})}),Fe=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e===t)return!0;if(A(e,t)||e.size!==t.size)return!1;for(var r=e[Symbol.iterator](),u=t[Symbol.iterator](),i=0;i0&&void 0!==arguments[0]?arguments[0]:[];i(this,t);var r=c(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,t));if(b(e))throw TypeError("missing list");if(Ue&&0===e.length){var u;return u=Ue,c(r,u)}return Object.freeze(e),r.inner=g(e),r[n]=r.inner,r.size=e.length,Ue||0!==r.size||(Ue=r),Object.freeze(r),r}return f(t,ue),o(t,[{key:Symbol.iterator,value:function(){return this.inner()[Symbol.iterator]()}},{key:"includes",value:function(){var e;return(e=this.inner()).includes.apply(e,arguments)}},{key:"get",value:function(e){return this.inner()[e]}},{key:"set",value:function(e,n){var r=[].concat(l(this));return r[e]=n,t.fromArray(r)}},{key:"setIn",value:function(e,n){if(0===e.length)return t.fromArray(n);var r=s(e),u=r[0],i=r.slice(1),o=this.inner()[u];return o.setIn?this.set(u,o.setIn(i,n)):this.set(u,n)}},{key:"toJSON",value:function(){return this.inner()}},{key:"toArray",value:function(){return this.toJSON()}},{key:"equals",value:function(e){return Fe(this,e)}},{key:Symbol.toStringTag,get:function(){return"ModelicoList"}}],[{key:"fromArray",value:function(e){return new t(e)}},{key:"of",value:function(){for(var e=arguments.length,n=Array(e),r=0;r0&&void 0!==arguments[0]?arguments[0]:new Set;i(this,t);var r=c(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,t));if(b(e))throw TypeError("missing set");if(Be&&0===e.size){var u;return u=Be,c(r,u)}var o=Le(e);return r[n]=g(o),r.inner=function(){return Le(o)},r.size=o.size,Be||0!==r.size||(Be=r),Object.freeze(r),r}return f(t,ue),o(t,[{key:Symbol.iterator,value:function(){return this.inner()[Symbol.iterator]()}},{key:"has",value:function(e){return this[n]().has(e)}},{key:"set",value:function(){J("Set.set is not supported")}},{key:"setIn",value:function(e,n){if(0===e.length)return new t(n);J("Set.setIn is not supported for non-empty paths")}},{key:"toJSON",value:function(){return[].concat(l(this))}},{key:"equals",value:function(){for(var e=arguments.length,t=Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:z;return rt(e)(t)},it=function(e,t){return Object.freeze(Object.assign({},e,{default:t,reviver:function(n,r){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return""!==n?r:b(r)?k(e)(e.baseMetadata).reviver(n,t,u):e.reviver(n,r,u,{default:t})}}))},ot=C(function(e){return C(function(t){return it(e,t)},function(){return new Map})}),at=g(Object.freeze({_:ut,base:tt,asIs:K,any:Q,anyOf:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"type";return function(r,u){if(0===t.length)return Q;for(var i=t[0][1][e]().metadata().reviver("",r[n]),o=0;o2&&void 0!==arguments[2]?arguments[2]:[];return""!==e?t:n(t,r).reviver(e,t,u)},subtypes:r})},number:g(K(Number)),string:g(K(String)),boolean:g(K(Boolean)),wrappedNumber:Je.metadata,date:De.metadata,enumMap:ze.metadata,list:Ye.metadata,map:de.metadata,stringMap:ke.metadata,maybe:et.metadata,set:Ge.metadata,withDefault:function(e,t){return ot(e)(t)}})),ft=function(e){return Rt.getSchema(e,!1)},ct=[!0,g("")],st=function(e){var t=Rt.getSchema,n=Rt.metadata(),r={},u=n._,i=n.base,o=n.asIs,f=n.any,c=n.anyOf,s=n.union,l=n.string,v=n.number,y=n.wrappedNumber,h=n.boolean,d=n.date,m=n.enumMap,b=n.list,O=n.map,j=n.stringMap,k=n.set,S=n.maybe,w=n.withDefault,M=function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:p,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"reviver";return function(i,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(""!==i)return o;var f=n===_?ct:e(n,r(o),a);if(!f[0])throw TypeError(f[1]());return(N(t)?t(o,a):t)[u]("",o,a)}},z=function(e,t,n,r){return function(u,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(""!==u)return i;var a=M(e,t,p,r)(u,i);return M(f(),n,function(e){return e.inner()},r)(u,a,o)}},T=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:g(_),u=t===_&&n===_?_:Object.assign({},t,n),i=M(e,u),o=N(e)?{type:e}:e,a=Object.assign({},o,{baseMetadata:o,reviver:i,ownSchema:g(u),schema:function(){return Object.assign({},u,r())}});return e.maybeReviver&&(a.maybeReviver=M(e,u,p,"maybeReviver")),a};r.meta=T;var A=function(e,n,r,i){var o=u(e,n);return r===_?o:T(o,_,r,function(){return t(o,i)})},E=C(function(e){return C(function(t){return C(function(n){return C(function(r){return A(e,t,n,r)},function(){return new Map})})})});r._=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return E(e)(t)(n)(r)};var J=function(e,n,r){var u=i(e);return n===_?u:T(u,{type:"object"},n,function(){return t(u,r)})},I=C(function(e){return C(function(t){return C(function(n){return J(e,t,n)},function(){return new Map})})});r.base=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return I(e)(t)(n)};var x=function(e,t){return T(o(e),t)},D=C(function(e){return C(function(t){return x(e,t)})});r.asIs=function(e,t){return D(e)(t)},r.any=C(function(e){return T(f(),e)}),r.wrappedNumber=C(function(e){var t=y(),n=Object.assign({type:"number"},e),r={anyOf:[{type:"number"},{enum:["-0","-Infinity","Infinity","NaN"]}]},u=z(t,r,n);return Object.assign({},t,{reviver:u,ownSchema:g(r),schema:g(r)})}),r.number=C(function(e){return T(v(),{type:"number"},e)}),r.string=C(function(e){return T(l(),{type:"string"},e)}),r.boolean=C(function(e){return T(h(),{type:"boolean"},e)}),r.date=C(function(e){return T(d(),{type:"string",format:"date-time"},e)}),r._enum=C(function(e){var t=u(e);return T(t,{enum:Object.keys(t.enumerators)})});var R=function(e,t,n){var r=Object.keys(e.enumerators),u="^("+r.join("|")+")$";return T(m(e,t),{type:"object",maxProperties:r.length,additionalProperties:!1,patternProperties:a({},u,{})},n,function(){return{patternProperties:a({},u,ft(t))}})},q=C(function(e){return C(function(t){return C(function(n){return R(e,t,n)})})});r.enumMap=function(e,t,n){return q(e)(t)(n)};var F=function(e,t){return T(b(e),{type:"array"},t,function(){return{items:ft(e)}})},U=C(function(e){return C(function(t){return F(e,t)})}),W=function(e,t){var n=e.length;return T(b(e),{type:"array",minItems:n,maxItems:n},t,function(){return{items:e.map(function(e){return ft(e)})}})},Y=C(function(e){return C(function(t){return W(e,t)})});r.list=function(e,t){return Array.isArray(e)?Y(e)(t):U(e)(t)};var B=function(e,t,n){var r={type:"array",items:{type:"array",minItems:2,maxItems:2}};return T(O(e,t),r,n,function(){return{items:Object.assign({items:[ft(e),ft(t)]},r.items)}})},L=C(function(e){return C(function(t){return C(function(n){return B(e,t,n)})})});r.map=function(e,t,n){return L(e)(t)(n)};var $=function(e,t){var n={type:"object",additionalProperties:!1,patternProperties:{".*":_}},r=Object.assign(n,t),u=Object.keys(r.patternProperties)[0];return T(j(e),r,void 0,function(){return{patternProperties:a({},u,ft(e))}})},G=C(function(e){return C(function(t){return $(e,t)})});r.stringMap=function(e,t){return G(e)(t)};var H=function(e,t){return T(k(e),{type:"array",uniqueItems:!0},t,function(){return{items:ft(e)}})},V=C(function(e){return C(function(t){return H(e,t)})});r.set=function(e,t){return V(e)(t)};var K=function(e,t){return T(S(e),_,t,function(){return ft(e)})},Q=C(function(e){return C(function(t){return K(e,t)})});r.maybe=function(e,t){return Q(e)(t)};var X=function(e,t,n){return T(w(e,t),_,n,function(){return ft(e)})},Z=C(function(e){return C(function(t){return C(function(n){return X(e,t,n)})},function(){return new Map})});return r.withDefault=function(e,t,n){return Z(e)(t)(n)},r.anyOf=function(e,t){return T(c(e,t),{anyOf:e.map(function(e){return ft(e[0])})})},r.union=function(e,t,n){var r=t.map(P(u)),i=s(e,r,n);return T(i,_,_,function(){return{anyOf:r.map(ft)}})},Object.freeze(Object.assign({},n,r))},lt=C(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return ct};return st(e)}),vt=C(function(e){return lt(void 0===e?void 0:function(t,n,r){return[e.validate(t,n),d(I,e,t,n,r)]})}),yt=function(e,t){return Object.assign(e,a({},t,{code:t}))},pt=function(e){return function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],u=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).default,i=e[n];if(void 0!==i)return i;if(void 0!==u){var o=e[u];if(void 0!==o)return o}throw TypeError('missing enumerator "'+n+'" without valid default at "'+r.join(" → ")+'"')}},ht=function(e){var t=pt(e);return function(n,r,u){return void 0===e[r]?null:t(n,r,u)}},dt=function(t){function n(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.displayName;i(this,n);var o=Array.isArray(t)?t.reduce(yt,{}):t;r!==n&&(r.displayName=u,Object.freeze(r));var a=c(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,r));return Object.getOwnPropertyNames(o).forEach(function(t){a[t]=g(o[t]),o[t][e]=g(a),o[t].toJSON=g(t),o[t].equals=function(e){return o[t]===e}}),Object.defineProperty(a,"metadata",{value:g(Object.freeze({type:a,enumerators:o,reviver:pt(o),maybeReviver:ht(o)}))}),a}return f(n,ue),o(n,null,[{key:"fromObject",value:function(){for(var e=arguments.length,t=Array(e),r=0;r0&&void 0!==arguments[0]?arguments[0]:_,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.base,r=void 0===n?ue:n,u=t.stringTag,a=void 0===u?"ModelicoModel":u,s=t.metadata,l=void 0===s?Ot:s,v=function(t){function n(){i(this,n);var e=arguments;if(2===e.length)u=c(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e[0],e[1]));else var t=e[0],r=void 0===t?{}:t,u=c(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,n,r));return c(u)}return f(n,r),o(n,[{key:Symbol.toStringTag,get:function(){return a}}],[{key:"innerTypes",value:function(t,n){return N(e)?e(l,{path:t,Type:n}):Object.freeze(e)}}]),n}();return v.displayName=a,v},kt=at().union,St=at()._,wt=["set","setIn"],Mt=wt,Nt=["delete","clear"],_t=wt,zt=["add","delete","clear"],Tt=wt.concat(["map","concat","slice","filter"]),At=["copyWithin","fill","pop","push","reverse","shift","sort","splice","unshift"],Et=wt,Jt=["setDate","setFullYear","setHours","setMinutes","setMilliseconds","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear"],Pt=d(bt,Mt,Nt,p),It=function(e,t,n){return St(e,t).reviver("",n)},xt=function(e,t){return It(e,[],t)},Dt=function(e,t,n,r,u){return e(t,r,n).reviver("",u)},Ct=function(e,t,n,r){return Dt(e,t,n,[],r)},Rt={about:Object.freeze({version:"24.1.0",author:"Javier Cejudo (http://www.javiercejudo.com)",homepage:"https://github.com/javiercejudo/modelico#readme",license:"MIT"}),Number:Je,Date:De,Enum:dt,EnumMap:ze,List:Ye,Map:de,StringMap:ke,Maybe:et,Just:et.Just,Nothing:et.Nothing,Base:ue,Set:Ge,createModel:jt,createSimpleModel:function(e,t){return jt(t,{stringTag:e})},createAjvModel:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.metadata=vt(e),jt(t,n)},createUnionType:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:kt,u=t.map(function(e){return!M(e)||e instanceof Rt.Enum?Rt.metadata()._(e):e});n=void 0===n?te(u):n;var a=u.length;return function(t){function s(){return i(this,s),c(this,(s.__proto__||Object.getPrototypeOf(s)).apply(this,arguments))}return f(s,t),o(s,null,[{key:"caseOf",value:function(){for(var t=arguments.length,n=Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:[];if(!(e instanceof Rt.Base))throw TypeError("Modelico.validate only works with instances of Modelico.Base");try{Rt.genericsFromJSON(e[Rt.symbols.typeSymbol](),t,JSON.stringify(e))}catch(e){return[!1,e]}return[!0,void 0]},withValidation:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:H;return function(n){return Object.assign({},n,{reviver:function(r,u){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(""!==r)return u;var o=n.reviver("",u,i);if(!e(o))throw TypeError(t(o,i));return o}})}},withCache:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t;V.has(e)||V.set(e,new Map);var u=V.get(e);return u.has(r)||u.set(r,t.apply(e,n)),u.get(r)},proxyMap:Pt,proxyEnumMap:Pt,proxyStringMap:Pt,proxyList:d(bt,Tt,At,function(e){return[].concat(l(e))}),proxySet:d(bt,_t,zt,p),proxyDate:d(bt,Et,Jt,p),util:{always:g,formatAjvError:I,identity:p,isNothing:b,partial:d,pipe:h,mem:C,memFactory:D}};return Rt});