diff --git a/dist/react-jsonschema-form.js b/dist/react-jsonschema-form.js index 6200612e5a..2a1f85d1dd 100644 --- a/dist/react-jsonschema-form.js +++ b/dist/react-jsonschema-form.js @@ -1,4 +1,4 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.JSONSchemaForm=t(require("react")):e.JSONSchemaForm=t(e.React)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var r={};return t.m=e,t.c=r,t.p="/dist/",t(0)}([function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var a=r(1),i=n(a);t["default"]=i["default"],e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0?void this.setState({errors:r},function(e){t.props.onError?t.props.onError(r):console.error("Form validation failed",r)}):(this.props.onSubmit&&this.props.onSubmit(this.state),void this.setState({status:"initial"}))}},{key:"getRegistry",value:function(){return{SchemaField:this.props.SchemaField||h["default"],TitleField:this.props.TitleField||m["default"]}}},{key:"render",value:function(){var e=this.props,t=e.children,r=e.schema,n=e.uiSchema,a=this.state.formData,i=this.getRegistry(),o=i.SchemaField;return l["default"].createElement("form",{className:"rjsf",onSubmit:this.onSubmit.bind(this)},this.renderErrors(),l["default"].createElement(o,{schema:r,uiSchema:n,formData:a,onChange:this.onChange.bind(this),registry:i}),t?t:l["default"].createElement("p",null,l["default"].createElement("button",{type:"submit"},"Submit")))}}]),t}(u.Component);t["default"]=g,t["default"]=g,e.exports=t["default"]},function(t,r){t.exports=e},function(e,t,r){"use strict";var n=e.exports.Validator=r(4);e.exports.ValidatorResult=r(12).ValidatorResult,e.exports.ValidationError=r(12).ValidationError,e.exports.SchemaError=r(12).SchemaError,e.exports.validate=function(e,t,r){var a=new n;return a.validate(e,t,r)}},function(e,t,r){"use strict";var n=r(5),a=r(11),i=r(12),o=i.ValidatorResult,s=i.SchemaError,u=i.SchemaContext,l=function(){this.schemas={},this.unresolvedRefs=[],this.types=Object.create(c),this.attributes=Object.create(a.validators)};l.prototype.schemas=null,l.prototype.types=null,l.prototype.attributes=null,l.prototype.unresolvedRefs=null,l.prototype.addSchema=function(e,t){if(!e)return null;var r=t||e.id;return this.addSubSchema(r,e),r&&(this.schemas[r]=e),this.schemas[r]},l.prototype.addSubSchema=function(e,t){if(t&&"object"==typeof t){if(t.$ref){var r=n.resolve(e,t.$ref);return void(void 0===this.schemas[r]&&(this.schemas[r]=null,this.unresolvedRefs.push(r)))}var a=t.id&&n.resolve(e,t.id),o=a||e;if(a){if(this.schemas[a]){if(!i.deepCompareStrict(this.schemas[a],t))throw new Error("Schema <"+t+"> already exists with different definition");return this.schemas[a]}this.schemas[a]=t;var s=a.replace(/^([^#]*)#$/,"$1");this.schemas[s]=t}return this.addSubSchemaArray(o,t.items instanceof Array?t.items:[t.items]),this.addSubSchemaArray(o,t["extends"]instanceof Array?t["extends"]:[t["extends"]]),this.addSubSchema(o,t.additionalItems),this.addSubSchemaObject(o,t.properties),this.addSubSchema(o,t.additionalProperties),this.addSubSchemaObject(o,t.definitions),this.addSubSchemaObject(o,t.patternProperties),this.addSubSchemaObject(o,t.dependencies),this.addSubSchemaArray(o,t.disallow),this.addSubSchemaArray(o,t.allOf),this.addSubSchemaArray(o,t.anyOf),this.addSubSchemaArray(o,t.oneOf),this.addSubSchema(o,t.not),this.schemas[a]}},l.prototype.addSubSchemaArray=function(e,t){if(t instanceof Array)for(var r=0;r",e);var l=i.objectGetPath(r.schemas[u],o.substr(1));if(void 0===l)throw new s("no such schema "+o+" located in <"+u+">",e);return{subschema:l,switchSchema:t}},l.prototype.testType=function(e,t,r,n,a){if("function"==typeof this.types[a])return this.types[a].call(this,e);if(a&&"object"==typeof a){var i=this.validateSchema(e,a,r,n);return void 0===i||!(i&&i.errors.length)}return!0};var c=l.prototype.types={};c.string=function(e){return"string"==typeof e},c.number=function(e){return"number"==typeof e},c.integer=function(e){return"number"==typeof e&&e%1===0},c["boolean"]=function(e){return"boolean"==typeof e},c.number=function(e){return"number"==typeof e},c.array=function(e){return e instanceof Array},c["null"]=function(e){return null===e},c.date=function(e){return e instanceof Date},c.any=function(e){return!0},c.object=function(e){return e&&"object"==typeof e&&!(e instanceof Array)&&!(e instanceof Date)},e.exports=l},function(e,t,r){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function a(e,t,r){if(e&&l(e)&&e instanceof n)return e;var a=new n;return a.parse(e,t,r),a}function i(e){return u(e)&&(e=a(e)),e instanceof n?e.format():n.prototype.format.call(e)}function o(e,t){return a(e,!1,!0).resolve(t)}function s(e,t){return e?a(e,!1,!0).resolveObject(t):t}function u(e){return"string"==typeof e}function l(e){return"object"==typeof e&&null!==e}function c(e){return null===e}function f(e){return null==e}var h=r(6);t.parse=a,t.resolve=o,t.resolveObject=s,t.format=i,t.Url=n;var d=/^([a-z0-9.+-]+:)/i,m=/:[0-9]*$/,p=["<",">",'"',"`"," ","\r","\n"," "],v=["{","}","|","\\","^","`"].concat(p),y=["'"].concat(v),g=["%","/","?",";","#"].concat(y),b=["/","?","#"],O=255,w=/^[a-z0-9A-Z_-]{0,63}$/,S=/^([a-z0-9A-Z_-]{0,63})(.*)$/,E={javascript:!0,"javascript:":!0},j={javascript:!0,"javascript:":!0},x={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},A=r(8);n.prototype.parse=function(e,t,r){if(!u(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e;n=n.trim();var a=d.exec(n);if(a){a=a[0];var i=a.toLowerCase();this.protocol=i,n=n.substr(a.length)}if(r||a||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var o="//"===n.substr(0,2);!o||a&&j[a]||(n=n.substr(2),this.slashes=!0)}if(!j[a]&&(o||a&&!x[a])){for(var s=-1,l=0;lc)&&(s=c)}var f,m;m=-1===s?n.lastIndexOf("@"):n.lastIndexOf("@",s),-1!==m&&(f=n.slice(0,m),n=n.slice(m+1),this.auth=decodeURIComponent(f)),s=-1;for(var l=0;lc)&&(s=c)}-1===s&&(s=n.length),this.host=n.slice(0,s),n=n.slice(s),this.parseHost(),this.hostname=this.hostname||"";var p="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!p)for(var v=this.hostname.split(/\./),l=0,P=v.length;P>l;l++){var _=v[l];if(_&&!_.match(w)){for(var C="",k=0,q=_.length;q>k;k++)C+=_.charCodeAt(k)>127?"x":_[k];if(!C.match(w)){var F=v.slice(0,l),M=v.slice(l+1),I=_.match(S);I&&(F.push(I[1]),M.unshift(I[2])),M.length&&(n="/"+M.join(".")+n),this.hostname=F.join(".");break}}}if(this.hostname.length>O?this.hostname="":this.hostname=this.hostname.toLowerCase(),!p){for(var N=this.hostname.split("."),R=[],l=0;ll;l++){var D=y[l],Z=encodeURIComponent(D);Z===D&&(Z=escape(D)),n=n.split(D).join(Z)}var T=n.indexOf("#");-1!==T&&(this.hash=n.substr(T),n=n.slice(0,T));var U=n.indexOf("?");if(-1!==U?(this.search=n.substr(U),this.query=n.substr(U+1),t&&(this.query=A.parse(this.query)),n=n.slice(0,U)):t&&(this.search="",this.query={}),n&&(this.pathname=n),x[i]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var V=this.pathname||"",$=this.search||"";this.path=V+$}return this.href=this.format(),this},n.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",a=!1,i="";this.host?a=e+this.host:this.hostname&&(a=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(a+=":"+this.port)),this.query&&l(this.query)&&Object.keys(this.query).length&&(i=A.stringify(this.query));var o=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||x[t])&&a!==!1?(a="//"+(a||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):a||(a=""),n&&"#"!==n.charAt(0)&&(n="#"+n),o&&"?"!==o.charAt(0)&&(o="?"+o),r=r.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),o=o.replace("#","%23"),t+a+r+o+n},n.prototype.resolve=function(e){return this.resolveObject(a(e,!1,!0)).format()},n.prototype.resolveObject=function(e){if(u(e)){var t=new n;t.parse(e,!1,!0),e=t}var r=new n;if(Object.keys(this).forEach(function(e){r[e]=this[e]},this),r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol)return Object.keys(e).forEach(function(t){"protocol"!==t&&(r[t]=e[t])}),x[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r;if(e.protocol&&e.protocol!==r.protocol){if(!x[e.protocol])return Object.keys(e).forEach(function(t){r[t]=e[t]}),r.href=r.format(),r;if(r.protocol=e.protocol,e.host||j[e.protocol])r.pathname=e.pathname;else{for(var a=(e.pathname||"").split("/");a.length&&!(e.host=a.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==a[0]&&a.unshift(""),a.length<2&&a.unshift(""),r.pathname=a.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var i=r.pathname||"",o=r.search||"";r.path=i+o}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var s=r.pathname&&"/"===r.pathname.charAt(0),l=e.host||e.pathname&&"/"===e.pathname.charAt(0),h=l||s||r.host&&e.pathname,d=h,m=r.pathname&&r.pathname.split("/")||[],a=e.pathname&&e.pathname.split("/")||[],p=r.protocol&&!x[r.protocol];if(p&&(r.hostname="",r.port=null,r.host&&(""===m[0]?m[0]=r.host:m.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===a[0]?a[0]=e.host:a.unshift(e.host)),e.host=null),h=h&&(""===a[0]||""===m[0])),l)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,m=a;else if(a.length)m||(m=[]),m.pop(),m=m.concat(a),r.search=e.search,r.query=e.query;else if(!f(e.search)){if(p){r.hostname=r.host=m.shift();var v=r.host&&r.host.indexOf("@")>0?r.host.split("@"):!1;v&&(r.auth=v.shift(),r.host=r.hostname=v.shift())}return r.search=e.search,r.query=e.query,c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!m.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var y=m.slice(-1)[0],g=(r.host||e.host)&&("."===y||".."===y)||""===y,b=0,O=m.length;O>=0;O--)y=m[O],"."==y?m.splice(O,1):".."===y?(m.splice(O,1),b++):b&&(m.splice(O,1),b--);if(!h&&!d)for(;b--;b)m.unshift("..");!h||""===m[0]||m[0]&&"/"===m[0].charAt(0)||m.unshift(""),g&&"/"!==m.join("/").substr(-1)&&m.push("");var w=""===m[0]||m[0]&&"/"===m[0].charAt(0);if(p){r.hostname=r.host=w?"":m.length?m.shift():"";var v=r.host&&r.host.indexOf("@")>0?r.host.split("@"):!1;v&&(r.auth=v.shift(),r.host=r.hostname=v.shift())}return h=h||r.host&&m.length,h&&!w&&m.unshift(""),m.length?r.pathname=m.join("/"):(r.pathname=null,r.path=null),c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},n.prototype.parseHost=function(){var e=this.host,t=m.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,r){var n;(function(e,a){/*! https://mths.be/punycode v1.3.2 by @mathias */ -"use strict";!function(i){function o(e){throw RangeError(F[e])}function s(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function u(e,t){var r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]),e=e.replace(q,".");var a=e.split("."),i=s(a,t).join(".");return n+i}function l(e){for(var t,r,n=[],a=0,i=e.length;i>a;)t=e.charCodeAt(a++),t>=55296&&56319>=t&&i>a?(r=e.charCodeAt(a++),56320==(64512&r)?n.push(((1023&t)<<10)+(1023&r)+65536):(n.push(t),a--)):n.push(t);return n}function c(e){return s(e,function(e){var t="";return e>65535&&(e-=65536,t+=N(e>>>10&1023|55296),e=56320|1023&e),t+=N(e)}).join("")}function f(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:w}function h(e,t){return e+22+75*(26>e)-((0!=t)<<5)}function d(e,t,r){var n=0;for(e=r?I(e/x):e>>1,e+=I(e/t);e>M*E>>1;n+=w)e=I(e/M);return I(n+(M+1)*e/(e+j))}function m(e){var t,r,n,a,i,s,u,l,h,m,p=[],v=e.length,y=0,g=P,b=A;for(r=e.lastIndexOf(_),0>r&&(r=0),n=0;r>n;++n)e.charCodeAt(n)>=128&&o("not-basic"),p.push(e.charCodeAt(n));for(a=r>0?r+1:0;v>a;){for(i=y,s=1,u=w;a>=v&&o("invalid-input"),l=f(e.charCodeAt(a++)),(l>=w||l>I((O-y)/s))&&o("overflow"),y+=l*s,h=b>=u?S:u>=b+E?E:u-b,!(h>l);u+=w)m=w-h,s>I(O/m)&&o("overflow"),s*=m;t=p.length+1,b=d(y-i,t,0==i),I(y/t)>O-g&&o("overflow"),g+=I(y/t),y%=t,p.splice(y++,0,g)}return c(p)}function p(e){var t,r,n,a,i,s,u,c,f,m,p,v,y,g,b,j=[];for(e=l(e),v=e.length,t=P,r=0,i=A,s=0;v>s;++s)p=e[s],128>p&&j.push(N(p));for(n=a=j.length,a&&j.push(_);v>n;){for(u=O,s=0;v>s;++s)p=e[s],p>=t&&u>p&&(u=p);for(y=n+1,u-t>I((O-r)/y)&&o("overflow"),r+=(u-t)*y,t=u,s=0;v>s;++s)if(p=e[s],t>p&&++r>O&&o("overflow"),p==t){for(c=r,f=w;m=i>=f?S:f>=i+E?E:f-i,!(m>c);f+=w)b=c-m,g=w-m,j.push(N(h(m+b%g,0))),c=I(b/g);j.push(N(h(c,0))),i=d(r,y,n==a),r=0,++n}++r,++t}return j.join("")}function v(e){return u(e,function(e){return C.test(e)?m(e.slice(4).toLowerCase()):e})}function y(e){return u(e,function(e){return k.test(e)?"xn--"+p(e):e})}var g=("object"==typeof t&&t&&!t.nodeType&&t,"object"==typeof e&&e&&!e.nodeType&&e,"object"==typeof a&&a);(g.global===g||g.window===g||g.self===g)&&(i=g);var b,O=2147483647,w=36,S=1,E=26,j=38,x=700,A=72,P=128,_="-",C=/^xn--/,k=/[^\x20-\x7E]/,q=/[\x2E\u3002\uFF0E\uFF61]/g,F={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},M=w-S,I=Math.floor,N=String.fromCharCode;b={version:"1.3.2",ucs2:{decode:l,encode:c},decode:m,encode:p,toASCII:y,toUnicode:v},n=function(){return b}.call(t,r,t,e),!(void 0!==n&&(e.exports=n))}(void 0)}).call(t,r(7)(e),function(){return this}())},function(e,t){"use strict";e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,r){"use strict";t.decode=t.parse=r(9),t.encode=t.stringify=r(10)},function(e,t){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,a){t=t||"&",n=n||"=";var i={};if("string"!=typeof e||0===e.length)return i;var o=/\+/g;e=e.split(t);var s=1e3;a&&"number"==typeof a.maxKeys&&(s=a.maxKeys);var u=e.length;s>0&&u>s&&(u=s);for(var l=0;u>l;++l){var c,f,h,d,m=e[l].replace(o,"%20"),p=m.indexOf(n);p>=0?(c=m.substr(0,p),f=m.substr(p+1)):(c=m,f=""),h=decodeURIComponent(c),d=decodeURIComponent(f),r(i,h)?Array.isArray(i[h])?i[h].push(d):i[h]=[i[h],d]:i[h]=d}return i}},function(e,t){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,a){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(a){var i=encodeURIComponent(r(a))+n;return Array.isArray(e[a])?e[a].map(function(e){return i+encodeURIComponent(r(e))}).join(t):i+encodeURIComponent(r(e[a]))}).join(t):a?encodeURIComponent(r(a))+n+encodeURIComponent(r(e)):""}},function(e,t,r){"use strict";function n(e,t,r,n){return this.validateSchema(e,n,t,r).valid}function a(e,t,r,n,a,i){if(!t.properties||void 0===t.properties[a])if(t.additionalProperties===!1)i.addError({name:"additionalProperties",argument:a,message:"additionalProperty "+JSON.stringify(a)+" exists in instance when not allowed"});else{var o=t.additionalProperties||{},s=this.validateSchema(e[a],o,r,n.makeChild(o,a));s.instance!==i.instance[a]&&(i.instance[a]=s.instance),i.importErrors(s)}}function i(e,t,r){var n,a=r.length;for(n=t+1,a;a>n;n++)if(o.deepCompareStrict(e,r[n]))return!1;return!0}var o=r(12),s=o.ValidatorResult,u=o.SchemaError,l={};l.ignoreProperties={id:!0,"default":!0,description:!0,title:!0,exclusiveMinimum:!0,exclusiveMaximum:!0,additionalItems:!0,$schema:!0,$ref:!0,"extends":!0};var c=l.validators={};c.type=function(e,t,r,n){if(void 0===e)return null;var a=new s(e,t,r,n),i=t.type instanceof Array?t.type:[t.type];if(!i.some(this.testType.bind(this,e,t,r,n))){var o=i.map(function(e){return e.id&&"<"+e.id+">"||e+""});a.addError({name:"type",argument:o,message:"is not of a type(s) "+o})}return a},c.anyOf=function(e,t,r,a){if(void 0===e)return null;var i=new s(e,t,r,a);if(!(t.anyOf instanceof Array))throw new u("anyOf must be an array");if(!t.anyOf.some(n.bind(this,e,r,a))){var o=t.anyOf.map(function(e,t){return e.id&&"<"+e.id+">"||e.title&&JSON.stringify(e.title)||e.$ref&&"<"+e.$ref+">"||"[subschema "+t+"]"});i.addError({name:"anyOf",argument:o,message:"is not any of "+o.join(",")})}return i},c.allOf=function(e,t,r,n){if(void 0===e)return null;if(!(t.allOf instanceof Array))throw new u("allOf must be an array");var a=new s(e,t,r,n),i=this;return t.allOf.forEach(function(t,o){var s=i.validateSchema(e,t,r,n);if(!s.valid){var u=t.id&&"<"+t.id+">"||t.title&&JSON.stringify(t.title)||t.$ref&&"<"+t.$ref+">"||"[subschema "+o+"]";a.addError({name:"allOf",argument:{id:u,length:s.errors.length,valid:s},message:"does not match allOf schema "+u+" with "+s.errors.length+" error[s]:"}),a.importErrors(s)}}),a},c.oneOf=function(e,t,r,a){if(void 0===e)return null;if(!(t.oneOf instanceof Array))throw new u("oneOf must be an array");var i=new s(e,t,r,a),o=t.oneOf.filter(n.bind(this,e,r,a)).length,l=t.oneOf.map(function(e,t){return e.id&&"<"+e.id+">"||e.title&&JSON.stringify(e.title)||e.$ref&&"<"+e.$ref+">"||"[subschema "+t+"]"});return 1!==o&&i.addError({name:"oneOf",argument:l,message:"is not exactly one from "+l.join(",")}),i},c.properties=function(e,t,r,n){if(void 0!==e&&e instanceof Object){var a=new s(e,t,r,n),i=t.properties||{};for(var o in i){var u=(e||void 0)&&e[o],l=this.validateSchema(u,i[o],r,n.makeChild(i[o],o));l.instance!==a.instance[o]&&(a.instance[o]=l.instance),a.importErrors(l)}return a}},c.patternProperties=function(e,t,r,n){if(void 0!==e&&this.types.object(e)){var i=new s(e,t,r,n),o=t.patternProperties||{};for(var u in e){var l=!0;for(var c in o){var f=new RegExp(c);if(f.test(u)){l=!1;var h=this.validateSchema(e[u],o[c],r,n.makeChild(o[c],u));h.instance!==i.instance[u]&&(i.instance[u]=h.instance),i.importErrors(h)}}l&&a.call(this,e,t,r,n,u,i)}return i}},c.additionalProperties=function(e,t,r,n){if(void 0!==e&&this.types.object(e)){if(t.patternProperties)return null;var i=new s(e,t,r,n);for(var o in e)a.call(this,e,t,r,n,o,i);return i}},c.minProperties=function(e,t,r,n){if(!e||"object"!=typeof e)return null;var a=new s(e,t,r,n),i=Object.keys(e);return i.length>=t.minProperties||a.addError({name:"minProperties",argument:t.minProperties,message:"does not meet minimum property length of "+t.minProperties}),a},c.maxProperties=function(e,t,r,n){if(!e||"object"!=typeof e)return null;var a=new s(e,t,r,n),i=Object.keys(e);return i.length<=t.maxProperties||a.addError({name:"maxProperties",argument:t.maxProperties,message:"does not meet maximum property length of "+t.maxProperties}),a},c.items=function(e,t,r,n){if(!(e instanceof Array))return null;var a=this,i=new s(e,t,r,n);return void 0!==e&&t.items?(e.every(function(e,o){var s=t.items instanceof Array?t.items[o]||t.additionalItems:t.items;if(void 0===s)return!0;if(s===!1)return i.addError({name:"items",message:"additionalItems not permitted"}),!1;var u=a.validateSchema(e,s,r,n.makeChild(s,o));return u.instance!==i.instance[o]&&(i.instance[o]=u.instance),i.importErrors(u),!0}),i):i},c.minimum=function(e,t,r,n){if("number"!=typeof e)return null;var a=new s(e,t,r,n),i=!0;return i=t.exclusiveMinimum&&t.exclusiveMinimum===!0?e>t.minimum:e>=t.minimum,i||a.addError({name:"minimum",argument:t.minimum,message:"must have a minimum value of "+t.minimum}),a},c.maximum=function(e,t,r,n){if("number"!=typeof e)return null;var a,i=new s(e,t,r,n);return a=t.exclusiveMaximum&&t.exclusiveMaximum===!0?e=t.minLength||a.addError({name:"minLength",argument:t.minLength,message:"does not meet minimum length of "+t.minLength}),a},c.maxLength=function(e,t,r,n){if("string"!=typeof e)return null;var a=new s(e,t,r,n);return e.length<=t.maxLength||a.addError({name:"maxLength",argument:t.maxLength,message:"does not meet maximum length of "+t.maxLength}),a},c.minItems=function(e,t,r,n){if(!(e instanceof Array))return null;var a=new s(e,t,r,n);return e.length>=t.minItems||a.addError({name:"minItems",argument:t.minItems,message:"does not meet minimum length of "+t.minItems}),a},c.maxItems=function(e,t,r,n){if(!(e instanceof Array))return null;var a=new s(e,t,r,n);return e.length<=t.maxItems||a.addError({name:"maxItems",argument:t.maxItems,message:"does not meet maximum length of "+t.maxItems}),a},c.uniqueItems=function(e,t,r,n){function a(e,t,r){for(var n=t+1;n"||o;i.addError({name:"not",argument:s,message:"is of prohibited type "+s})}}),i):null},e.exports=l},function(e,t,r){"use strict";var n=r(5),a=t.ValidationError=function(e,t,r,n,a,i){n&&(this.property=n),e&&(this.message=e),r&&(r.id?this.schema=r.id:this.schema=r),t&&(this.instance=t),this.name=a,this.argument=i,this.stack=this.toString()};a.prototype.toString=function(){return this.property+" "+this.message};var i=t.ValidatorResult=function(e,t,r,n){this.instance=e,this.schema=t,this.propertyPath=n.propertyPath,this.errors=[],this.throwError=r&&r.throwError};i.prototype.addError=function(e){var t;if("string"==typeof e)t=new a(e,this.instance,this.schema,this.propertyPath);else{if(!e)throw new Error("Missing error detail");if(!e.message)throw new Error("Missing error message");if(!e.name)throw new Error("Missing validator type");t=new a(e.message,this.instance,this.schema,this.propertyPath,e.name,e.argument)}if(this.throwError)throw t;return this.errors.push(t),t},i.prototype.importErrors=function(e){if("string"==typeof e||e&&e.validatorType)this.addError(e);else if(e&&e.errors){var t=this.errors;e.errors.forEach(function(e){t.push(e)})}},i.prototype.toString=function(e){return this.errors.map(function(e,t){return t+": "+e.toString()+"\n"}).join("")},Object.defineProperty(i.prototype,"valid",{get:function(){return!this.errors.length}});var o=t.SchemaError=function c(e,t){this.message=e,this.schema=t,Error.call(this,e),Error.captureStackTrace(this,c)};o.prototype=Object.create(Error.prototype,{constructor:{value:o,enumerable:!1},name:{value:"SchemaError",enumerable:!1}});var s=t.SchemaContext=function(e,t,r,n,a){this.schema=e,this.options=t,this.propertyPath=r,this.base=n,this.schemas=a};s.prototype.resolve=function(e){return n.resolve(this.base,e)},s.prototype.makeChild=function(e,t){var r=void 0===t?this.propertyPath:this.propertyPath+l(t),a=n.resolve(this.base,e.id||""),i=new s(e,this.options,r,a,Object.create(this.schemas));return e.id&&!i.schemas[a]&&(i.schemas[a]=e),i};var u=t.FORMAT_REGEXPS={"date-time":/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\d{2}:\d{2}:\d{2}(\.\d+)?([zZ]|[+-]\d{2}:\d{2})$/,date:/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/,time:/^\d{2}:\d{2}:\d{2}$/,email:/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/,"ip-address":/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,ipv6:/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,uri:/^[a-zA-Z][a-zA-Z0-9+-.]*:[^\s]*$/,color:/^(#?([0-9A-Fa-f]{3}){1,2}\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\)))$/,hostname:/^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,"host-name":/^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,alpha:/^[a-zA-Z]+$/,alphanumeric:/^[a-zA-Z0-9]+$/,"utc-millisec":function(e){return"string"==typeof e&&parseFloat(e)===parseInt(e,10)&&!isNaN(e)},regex:function(e){var t=!0;try{new RegExp(e)}catch(r){t=!1}return t},style:/\s*(.+?):\s*([^;]+);?/g,phone:/^\+(?:[0-9] ?){6,14}[0-9]$/};u.regexp=u.regex,u.pattern=u.regex,u.ipv4=u["ip-address"],t.isFormat=function(e,t){if(void 0!==u[t]){if(u[t]instanceof RegExp)return u[t].test(e);if("function"==typeof u[t])return u[t](e)}return!1};var l=t.makeSuffix=function(e){return e=e.toString(),e.match(/[.\s\[\]]/)||e.match(/^[\d]/)?e.match(/^\d+$/)?"["+e+"]":"["+JSON.stringify(e)+"]":"."+e};t.deepCompareStrict=function f(e,t){if(typeof e!=typeof t)return!1;if(e instanceof Array)return t instanceof Array?e.length!==t.length?!1:e.every(function(r,n){return f(e[n],t[n])}):!1;if("object"==typeof e){if(!e||!t)return e===t;var r=Object.keys(e),n=Object.keys(t);return r.length!==n.length?!1:r.every(function(r){return f(e[r],t[r])})}return e===t},e.exports.deepMerge=function h(e,t){var r=Array.isArray(t),n=r&&[]||{};return r?(e=e||[],n=n.concat(e),t.forEach(function(t,r){"object"==typeof t?n[r]=h(e[r],t):-1===e.indexOf(t)&&n.push(t)})):(e&&"object"==typeof e&&Object.keys(e).forEach(function(t){n[t]=e[t]}),Object.keys(t).forEach(function(r){"object"==typeof t[r]&&t[r]&&e[r]?n[r]=h(e[r],t[r]):n[r]=t[r]})),n},t.objectGetPath=function(e,t){for(var r,n=t.split("/").slice(1);"string"==typeof(r=n.shift());){var a=decodeURIComponent(r.replace(/~0/,"~").replace(/~1/g,"/"));if(!(a in e))return;e=e[a]}return e},t.encodePath=function(e){return e.map(function(e){return"/"+encodeURIComponent(e).replace(/~/g,"%7E")}).join("")}},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){return e?t?e+S:e:null}function i(e){var t=e.type,r=e.label,n=e.required,i=e.children;return-1!==["object","array"].indexOf(t)?i:l["default"].createElement("label",null,a(r,n),i)}function o(e){var t=e.type,r=e.classNames;return l["default"].createElement("div",{className:"field field-"+t+" "+r},i(e))}function s(e){var t=e.schema,r=e.uiSchema,n=e.name,a=e.required,i=E[t.type]||w["default"];return l["default"].createElement(o,{label:t.title||n,required:a,type:t.type,classNames:r.classNames},l["default"].createElement(i,e))}Object.defineProperty(t,"__esModule",{value:!0});var u=r(2),l=n(u),c=r(14),f=n(c),h=r(22),d=n(h),m=r(24),p=n(m),v=r(27),y=n(v),g=r(25),b=n(g),O=r(28),w=n(O),S="*",E={array:f["default"],"boolean":d["default"],"date-time":b["default"],integer:p["default"],number:p["default"],object:y["default"],string:b["default"]};o.defaultProps={classNames:""},s.defaultProps={uiSchema:{}},t["default"]=s,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0}},{key:"asyncSetState",value:function(e,t){var r=this;this.setState(e,function(e){return r.props.onChange(r.state.items,t)})}},{key:"onAddClick",value:function(e){e.preventDefault();var t=this.state.items,r=this.props.schema;this.asyncSetState({items:t.concat((0,c.getDefaultFormState)(r.items))},{validate:!1})}},{key:"onDropClick",value:function(e,t){t.preventDefault(),this.asyncSetState({items:this.state.items.filter(function(t,r){return r!==e})},{validate:!1})}},{key:"onChange",value:function(e,t){this.asyncSetState({items:this.state.items.map(function(r,n){return e===n?t:r})},{validate:!1})}},{key:"render",value:function(){var e=this,t=this.props,r=t.schema,n=t.uiSchema,a=t.name,i=r.title||a,o=this.state.items,s=this.props.registry.SchemaField;return l["default"].createElement("fieldset",{className:"field field-array field-array-of-"+r.items.type},i?l["default"].createElement("legend",null,i):null,r.description?l["default"].createElement("div",{className:"field-description"},r.description):null,l["default"].createElement("div",{className:"array-item-list"},o.map(function(t,a){return l["default"].createElement("div",{key:a},l["default"].createElement(s,{schema:r.items,uiSchema:n.items,formData:o[a],required:e.isItemRequired(r.items),onChange:e.onChange.bind(e,a),registry:e.props.registry}),l["default"].createElement("p",{className:"array-item-remove"},l["default"].createElement("button",{type:"button",onClick:e.onDropClick.bind(e,a)},"-")))})),l["default"].createElement("p",{className:"array-item-add"},l["default"].createElement("button",{type:"button",onClick:this.onAddClick.bind(this)},"+")))}},{key:"itemTitle",get:function(){var e=this.props.schema;return e.items.title||e.items.description||"Item"}}]),t}(u.Component);t["default"]=f,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){switch(e){case"array":return[];case"boolean":return!1;case"date-time":return"";case"number":return 0;case"object":return{};case"string":return"";default:return}}function i(e,t){return null===e?a(t.type):e}function o(e,t){if("function"==typeof t)return t;if("string"!=typeof t)throw new Error("Unsupported widget definition: "+typeof t);if(!S.hasOwnProperty(e))throw new Error("No alternative widget for type "+e);if(!S[e].hasOwnProperty(t))throw new Error('No alternative widget "'+t+'" for type '+e);return S[e][t]}function s(e){if("object"!=typeof e)throw new Error("Invalid schema: "+e);return"default"in e?e["default"]:"object"===e.type?Object.keys(e.properties).reduce(function(t,r){return t[r]=s(e.properties[r]),t},{}):a(e.type)}function u(e){var t=Number(e),r="number"==typeof t&&!Number.isNaN(t);return r?t:e}function l(e,t){if(!Array.isArray(t))return e;if(t.length!==e.length)throw new Error("uiSchema order list length should match object properties length");var r=function(e){return[].slice.call(e).sort().toString()};if(r(t)!==r(e))throw new Error("uiSchema order list does not match object properties list");return t}Object.defineProperty(t,"__esModule",{value:!0}),t.defaultTypeValue=a,t.defaultFieldValue=i,t.getAlternativeWidget=o,t.getDefaultFormState=s,t.asNumber=u,t.orderProperties=l;var c=r(16),f=n(c),h=r(17),d=n(h),m=r(18),p=n(m),v=r(19),y=n(v),g=r(20),b=n(g),O=r(21),w=n(O),S={"boolean":{radio:d["default"],select:b["default"]},string:{password:f["default"],radio:d["default"],select:b["default"],textarea:w["default"]},number:{updown:p["default"],range:y["default"]},integer:{updown:p["default"],range:y["default"]}}},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){var t=(e.schema,e.placeholder),r=e.value,n=e.defaultValue,a=e.required,i=e.onChange;return o["default"].createElement("input",{type:"password",value:r,defaultValue:n,placeholder:t,required:a,onChange:function(e){return i(e.target.value)}})}Object.defineProperty(t,"__esModule",{value:!0});var i=r(2),o=n(i);t["default"]=a,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){var t=(e.schema,e.options),r=e.placeholder,n=e.value,a=e.defaultValue,i=(e.required,e.onChange),s=Math.random().toString();return o["default"].createElement("div",{className:"field-radio-group"},t.map(function(e,t){var u=void 0!==n?e===n:e===a;return o["default"].createElement("label",{key:t},o["default"].createElement("input",{type:"radio",name:s,value:e,checked:u,placeholder:r,onChange:function(t){return i(e)}}),String(e))}))}Object.defineProperty(t,"__esModule",{value:!0});var i=r(2),o=n(i);t["default"]=a,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){var t={};return e.multipleOf&&(t.step=e.multipleOf),e.minimum&&(t.min=e.minimum),e.maximum&&(t.max=e.maximum),t}function i(e){var t=e.schema,r=e.placeholder,n=e.value,i=e.defaultValue,s=e.required,l=e.onChange;return u["default"].createElement("input",o({type:"number",value:n,defaultValue:i,placeholder:r,required:s,onChange:function(e){return l(e.target.value)}},a(t)))}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t0?void this.setState({errors:r},function(e){t.props.onError?t.props.onError(r):console.error("Form validation failed",r)}):(this.props.onSubmit&&this.props.onSubmit(this.state),void this.setState({status:"initial"}))}},{key:"getRegistry",value:function(){return{SchemaField:this.props.SchemaField||h["default"],TitleField:this.props.TitleField||m["default"]}}},{key:"render",value:function(){var e=this.props,t=e.children,r=e.schema,n=e.uiSchema,a=this.state.formData,i=this.getRegistry(),o=i.SchemaField;return l["default"].createElement("form",{className:"rjsf",onSubmit:this.onSubmit.bind(this)},this.renderErrors(),l["default"].createElement(o,{schema:r,uiSchema:n,formData:a,onChange:this.onChange.bind(this),registry:i}),t?t:l["default"].createElement("p",null,l["default"].createElement("button",{type:"submit"},"Submit")))}}]),t}(u.Component);t["default"]=g,t["default"]=g,e.exports=t["default"]},function(t,r){t.exports=e},function(e,t,r){"use strict";var n=e.exports.Validator=r(4);e.exports.ValidatorResult=r(12).ValidatorResult,e.exports.ValidationError=r(12).ValidationError,e.exports.SchemaError=r(12).SchemaError,e.exports.validate=function(e,t,r){var a=new n;return a.validate(e,t,r)}},function(e,t,r){"use strict";var n=r(5),a=r(11),i=r(12),o=i.ValidatorResult,s=i.SchemaError,u=i.SchemaContext,l=function(){this.schemas={},this.unresolvedRefs=[],this.types=Object.create(c),this.attributes=Object.create(a.validators)};l.prototype.schemas=null,l.prototype.types=null,l.prototype.attributes=null,l.prototype.unresolvedRefs=null,l.prototype.addSchema=function(e,t){if(!e)return null;var r=t||e.id;return this.addSubSchema(r,e),r&&(this.schemas[r]=e),this.schemas[r]},l.prototype.addSubSchema=function(e,t){if(t&&"object"==typeof t){if(t.$ref){var r=n.resolve(e,t.$ref);return void(void 0===this.schemas[r]&&(this.schemas[r]=null,this.unresolvedRefs.push(r)))}var a=t.id&&n.resolve(e,t.id),o=a||e;if(a){if(this.schemas[a]){if(!i.deepCompareStrict(this.schemas[a],t))throw new Error("Schema <"+t+"> already exists with different definition");return this.schemas[a]}this.schemas[a]=t;var s=a.replace(/^([^#]*)#$/,"$1");this.schemas[s]=t}return this.addSubSchemaArray(o,t.items instanceof Array?t.items:[t.items]),this.addSubSchemaArray(o,t["extends"]instanceof Array?t["extends"]:[t["extends"]]),this.addSubSchema(o,t.additionalItems),this.addSubSchemaObject(o,t.properties),this.addSubSchema(o,t.additionalProperties),this.addSubSchemaObject(o,t.definitions),this.addSubSchemaObject(o,t.patternProperties),this.addSubSchemaObject(o,t.dependencies),this.addSubSchemaArray(o,t.disallow),this.addSubSchemaArray(o,t.allOf),this.addSubSchemaArray(o,t.anyOf),this.addSubSchemaArray(o,t.oneOf),this.addSubSchema(o,t.not),this.schemas[a]}},l.prototype.addSubSchemaArray=function(e,t){if(t instanceof Array)for(var r=0;r",e);var l=i.objectGetPath(r.schemas[u],o.substr(1));if(void 0===l)throw new s("no such schema "+o+" located in <"+u+">",e);return{subschema:l,switchSchema:t}},l.prototype.testType=function(e,t,r,n,a){if("function"==typeof this.types[a])return this.types[a].call(this,e);if(a&&"object"==typeof a){var i=this.validateSchema(e,a,r,n);return void 0===i||!(i&&i.errors.length)}return!0};var c=l.prototype.types={};c.string=function(e){return"string"==typeof e},c.number=function(e){return"number"==typeof e},c.integer=function(e){return"number"==typeof e&&e%1===0},c["boolean"]=function(e){return"boolean"==typeof e},c.number=function(e){return"number"==typeof e},c.array=function(e){return e instanceof Array},c["null"]=function(e){return null===e},c.date=function(e){return e instanceof Date},c.any=function(e){return!0},c.object=function(e){return e&&"object"==typeof e&&!(e instanceof Array)&&!(e instanceof Date)},e.exports=l},function(e,t,r){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function a(e,t,r){if(e&&l(e)&&e instanceof n)return e;var a=new n;return a.parse(e,t,r),a}function i(e){return u(e)&&(e=a(e)),e instanceof n?e.format():n.prototype.format.call(e)}function o(e,t){return a(e,!1,!0).resolve(t)}function s(e,t){return e?a(e,!1,!0).resolveObject(t):t}function u(e){return"string"==typeof e}function l(e){return"object"==typeof e&&null!==e}function c(e){return null===e}function f(e){return null==e}var h=r(6);t.parse=a,t.resolve=o,t.resolveObject=s,t.format=i,t.Url=n;var d=/^([a-z0-9.+-]+:)/i,m=/:[0-9]*$/,p=["<",">",'"',"`"," ","\r","\n"," "],v=["{","}","|","\\","^","`"].concat(p),y=["'"].concat(v),g=["%","/","?",";","#"].concat(y),b=["/","?","#"],S=255,O=/^[a-z0-9A-Z_-]{0,63}$/,w=/^([a-z0-9A-Z_-]{0,63})(.*)$/,E={javascript:!0,"javascript:":!0},j={javascript:!0,"javascript:":!0},x={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},A=r(8);n.prototype.parse=function(e,t,r){if(!u(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e;n=n.trim();var a=d.exec(n);if(a){a=a[0];var i=a.toLowerCase();this.protocol=i,n=n.substr(a.length)}if(r||a||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var o="//"===n.substr(0,2);!o||a&&j[a]||(n=n.substr(2),this.slashes=!0)}if(!j[a]&&(o||a&&!x[a])){for(var s=-1,l=0;lc)&&(s=c)}var f,m;m=-1===s?n.lastIndexOf("@"):n.lastIndexOf("@",s),-1!==m&&(f=n.slice(0,m),n=n.slice(m+1),this.auth=decodeURIComponent(f)),s=-1;for(var l=0;lc)&&(s=c)}-1===s&&(s=n.length),this.host=n.slice(0,s),n=n.slice(s),this.parseHost(),this.hostname=this.hostname||"";var p="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!p)for(var v=this.hostname.split(/\./),l=0,P=v.length;P>l;l++){var _=v[l];if(_&&!_.match(O)){for(var C="",k=0,q=_.length;q>k;k++)C+=_.charCodeAt(k)>127?"x":_[k];if(!C.match(O)){var F=v.slice(0,l),M=v.slice(l+1),I=_.match(w);I&&(F.push(I[1]),M.unshift(I[2])),M.length&&(n="/"+M.join(".")+n),this.hostname=F.join(".");break}}}if(this.hostname.length>S?this.hostname="":this.hostname=this.hostname.toLowerCase(),!p){for(var N=this.hostname.split("."),R=[],l=0;ll;l++){var D=y[l],Z=encodeURIComponent(D);Z===D&&(Z=escape(D)),n=n.split(D).join(Z)}var T=n.indexOf("#");-1!==T&&(this.hash=n.substr(T),n=n.slice(0,T));var U=n.indexOf("?");if(-1!==U?(this.search=n.substr(U),this.query=n.substr(U+1),t&&(this.query=A.parse(this.query)),n=n.slice(0,U)):t&&(this.search="",this.query={}),n&&(this.pathname=n),x[i]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var V=this.pathname||"",$=this.search||"";this.path=V+$}return this.href=this.format(),this},n.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",a=!1,i="";this.host?a=e+this.host:this.hostname&&(a=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(a+=":"+this.port)),this.query&&l(this.query)&&Object.keys(this.query).length&&(i=A.stringify(this.query));var o=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||x[t])&&a!==!1?(a="//"+(a||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):a||(a=""),n&&"#"!==n.charAt(0)&&(n="#"+n),o&&"?"!==o.charAt(0)&&(o="?"+o),r=r.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),o=o.replace("#","%23"),t+a+r+o+n},n.prototype.resolve=function(e){return this.resolveObject(a(e,!1,!0)).format()},n.prototype.resolveObject=function(e){if(u(e)){var t=new n;t.parse(e,!1,!0),e=t}var r=new n;if(Object.keys(this).forEach(function(e){r[e]=this[e]},this),r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol)return Object.keys(e).forEach(function(t){"protocol"!==t&&(r[t]=e[t])}),x[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r;if(e.protocol&&e.protocol!==r.protocol){if(!x[e.protocol])return Object.keys(e).forEach(function(t){r[t]=e[t]}),r.href=r.format(),r;if(r.protocol=e.protocol,e.host||j[e.protocol])r.pathname=e.pathname;else{for(var a=(e.pathname||"").split("/");a.length&&!(e.host=a.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==a[0]&&a.unshift(""),a.length<2&&a.unshift(""),r.pathname=a.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var i=r.pathname||"",o=r.search||"";r.path=i+o}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var s=r.pathname&&"/"===r.pathname.charAt(0),l=e.host||e.pathname&&"/"===e.pathname.charAt(0),h=l||s||r.host&&e.pathname,d=h,m=r.pathname&&r.pathname.split("/")||[],a=e.pathname&&e.pathname.split("/")||[],p=r.protocol&&!x[r.protocol];if(p&&(r.hostname="",r.port=null,r.host&&(""===m[0]?m[0]=r.host:m.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===a[0]?a[0]=e.host:a.unshift(e.host)),e.host=null),h=h&&(""===a[0]||""===m[0])),l)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,m=a;else if(a.length)m||(m=[]),m.pop(),m=m.concat(a),r.search=e.search,r.query=e.query;else if(!f(e.search)){if(p){r.hostname=r.host=m.shift();var v=r.host&&r.host.indexOf("@")>0?r.host.split("@"):!1;v&&(r.auth=v.shift(),r.host=r.hostname=v.shift())}return r.search=e.search,r.query=e.query,c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!m.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var y=m.slice(-1)[0],g=(r.host||e.host)&&("."===y||".."===y)||""===y,b=0,S=m.length;S>=0;S--)y=m[S],"."==y?m.splice(S,1):".."===y?(m.splice(S,1),b++):b&&(m.splice(S,1),b--);if(!h&&!d)for(;b--;b)m.unshift("..");!h||""===m[0]||m[0]&&"/"===m[0].charAt(0)||m.unshift(""),g&&"/"!==m.join("/").substr(-1)&&m.push("");var O=""===m[0]||m[0]&&"/"===m[0].charAt(0);if(p){r.hostname=r.host=O?"":m.length?m.shift():"";var v=r.host&&r.host.indexOf("@")>0?r.host.split("@"):!1;v&&(r.auth=v.shift(),r.host=r.hostname=v.shift())}return h=h||r.host&&m.length,h&&!O&&m.unshift(""),m.length?r.pathname=m.join("/"):(r.pathname=null,r.path=null),c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},n.prototype.parseHost=function(){var e=this.host,t=m.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,r){var n;(function(e,a){/*! https://mths.be/punycode v1.3.2 by @mathias */ +"use strict";!function(i){function o(e){throw RangeError(F[e])}function s(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function u(e,t){var r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]),e=e.replace(q,".");var a=e.split("."),i=s(a,t).join(".");return n+i}function l(e){for(var t,r,n=[],a=0,i=e.length;i>a;)t=e.charCodeAt(a++),t>=55296&&56319>=t&&i>a?(r=e.charCodeAt(a++),56320==(64512&r)?n.push(((1023&t)<<10)+(1023&r)+65536):(n.push(t),a--)):n.push(t);return n}function c(e){return s(e,function(e){var t="";return e>65535&&(e-=65536,t+=N(e>>>10&1023|55296),e=56320|1023&e),t+=N(e)}).join("")}function f(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:O}function h(e,t){return e+22+75*(26>e)-((0!=t)<<5)}function d(e,t,r){var n=0;for(e=r?I(e/x):e>>1,e+=I(e/t);e>M*E>>1;n+=O)e=I(e/M);return I(n+(M+1)*e/(e+j))}function m(e){var t,r,n,a,i,s,u,l,h,m,p=[],v=e.length,y=0,g=P,b=A;for(r=e.lastIndexOf(_),0>r&&(r=0),n=0;r>n;++n)e.charCodeAt(n)>=128&&o("not-basic"),p.push(e.charCodeAt(n));for(a=r>0?r+1:0;v>a;){for(i=y,s=1,u=O;a>=v&&o("invalid-input"),l=f(e.charCodeAt(a++)),(l>=O||l>I((S-y)/s))&&o("overflow"),y+=l*s,h=b>=u?w:u>=b+E?E:u-b,!(h>l);u+=O)m=O-h,s>I(S/m)&&o("overflow"),s*=m;t=p.length+1,b=d(y-i,t,0==i),I(y/t)>S-g&&o("overflow"),g+=I(y/t),y%=t,p.splice(y++,0,g)}return c(p)}function p(e){var t,r,n,a,i,s,u,c,f,m,p,v,y,g,b,j=[];for(e=l(e),v=e.length,t=P,r=0,i=A,s=0;v>s;++s)p=e[s],128>p&&j.push(N(p));for(n=a=j.length,a&&j.push(_);v>n;){for(u=S,s=0;v>s;++s)p=e[s],p>=t&&u>p&&(u=p);for(y=n+1,u-t>I((S-r)/y)&&o("overflow"),r+=(u-t)*y,t=u,s=0;v>s;++s)if(p=e[s],t>p&&++r>S&&o("overflow"),p==t){for(c=r,f=O;m=i>=f?w:f>=i+E?E:f-i,!(m>c);f+=O)b=c-m,g=O-m,j.push(N(h(m+b%g,0))),c=I(b/g);j.push(N(h(c,0))),i=d(r,y,n==a),r=0,++n}++r,++t}return j.join("")}function v(e){return u(e,function(e){return C.test(e)?m(e.slice(4).toLowerCase()):e})}function y(e){return u(e,function(e){return k.test(e)?"xn--"+p(e):e})}var g=("object"==typeof t&&t&&!t.nodeType&&t,"object"==typeof e&&e&&!e.nodeType&&e,"object"==typeof a&&a);(g.global===g||g.window===g||g.self===g)&&(i=g);var b,S=2147483647,O=36,w=1,E=26,j=38,x=700,A=72,P=128,_="-",C=/^xn--/,k=/[^\x20-\x7E]/,q=/[\x2E\u3002\uFF0E\uFF61]/g,F={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},M=O-w,I=Math.floor,N=String.fromCharCode;b={version:"1.3.2",ucs2:{decode:l,encode:c},decode:m,encode:p,toASCII:y,toUnicode:v},n=function(){return b}.call(t,r,t,e),!(void 0!==n&&(e.exports=n))}(void 0)}).call(t,r(7)(e),function(){return this}())},function(e,t){"use strict";e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,r){"use strict";t.decode=t.parse=r(9),t.encode=t.stringify=r(10)},function(e,t){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,a){t=t||"&",n=n||"=";var i={};if("string"!=typeof e||0===e.length)return i;var o=/\+/g;e=e.split(t);var s=1e3;a&&"number"==typeof a.maxKeys&&(s=a.maxKeys);var u=e.length;s>0&&u>s&&(u=s);for(var l=0;u>l;++l){var c,f,h,d,m=e[l].replace(o,"%20"),p=m.indexOf(n);p>=0?(c=m.substr(0,p),f=m.substr(p+1)):(c=m,f=""),h=decodeURIComponent(c),d=decodeURIComponent(f),r(i,h)?Array.isArray(i[h])?i[h].push(d):i[h]=[i[h],d]:i[h]=d}return i}},function(e,t){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,a){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(a){var i=encodeURIComponent(r(a))+n;return Array.isArray(e[a])?e[a].map(function(e){return i+encodeURIComponent(r(e))}).join(t):i+encodeURIComponent(r(e[a]))}).join(t):a?encodeURIComponent(r(a))+n+encodeURIComponent(r(e)):""}},function(e,t,r){"use strict";function n(e,t,r,n){return this.validateSchema(e,n,t,r).valid}function a(e,t,r,n,a,i){if(!t.properties||void 0===t.properties[a])if(t.additionalProperties===!1)i.addError({name:"additionalProperties",argument:a,message:"additionalProperty "+JSON.stringify(a)+" exists in instance when not allowed"});else{var o=t.additionalProperties||{},s=this.validateSchema(e[a],o,r,n.makeChild(o,a));s.instance!==i.instance[a]&&(i.instance[a]=s.instance),i.importErrors(s)}}function i(e,t,r){var n,a=r.length;for(n=t+1,a;a>n;n++)if(o.deepCompareStrict(e,r[n]))return!1;return!0}var o=r(12),s=o.ValidatorResult,u=o.SchemaError,l={};l.ignoreProperties={id:!0,"default":!0,description:!0,title:!0,exclusiveMinimum:!0,exclusiveMaximum:!0,additionalItems:!0,$schema:!0,$ref:!0,"extends":!0};var c=l.validators={};c.type=function(e,t,r,n){if(void 0===e)return null;var a=new s(e,t,r,n),i=t.type instanceof Array?t.type:[t.type];if(!i.some(this.testType.bind(this,e,t,r,n))){var o=i.map(function(e){return e.id&&"<"+e.id+">"||e+""});a.addError({name:"type",argument:o,message:"is not of a type(s) "+o})}return a},c.anyOf=function(e,t,r,a){if(void 0===e)return null;var i=new s(e,t,r,a);if(!(t.anyOf instanceof Array))throw new u("anyOf must be an array");if(!t.anyOf.some(n.bind(this,e,r,a))){var o=t.anyOf.map(function(e,t){return e.id&&"<"+e.id+">"||e.title&&JSON.stringify(e.title)||e.$ref&&"<"+e.$ref+">"||"[subschema "+t+"]"});i.addError({name:"anyOf",argument:o,message:"is not any of "+o.join(",")})}return i},c.allOf=function(e,t,r,n){if(void 0===e)return null;if(!(t.allOf instanceof Array))throw new u("allOf must be an array");var a=new s(e,t,r,n),i=this;return t.allOf.forEach(function(t,o){var s=i.validateSchema(e,t,r,n);if(!s.valid){var u=t.id&&"<"+t.id+">"||t.title&&JSON.stringify(t.title)||t.$ref&&"<"+t.$ref+">"||"[subschema "+o+"]";a.addError({name:"allOf",argument:{id:u,length:s.errors.length,valid:s},message:"does not match allOf schema "+u+" with "+s.errors.length+" error[s]:"}),a.importErrors(s)}}),a},c.oneOf=function(e,t,r,a){if(void 0===e)return null;if(!(t.oneOf instanceof Array))throw new u("oneOf must be an array");var i=new s(e,t,r,a),o=t.oneOf.filter(n.bind(this,e,r,a)).length,l=t.oneOf.map(function(e,t){return e.id&&"<"+e.id+">"||e.title&&JSON.stringify(e.title)||e.$ref&&"<"+e.$ref+">"||"[subschema "+t+"]"});return 1!==o&&i.addError({name:"oneOf",argument:l,message:"is not exactly one from "+l.join(",")}),i},c.properties=function(e,t,r,n){if(void 0!==e&&e instanceof Object){var a=new s(e,t,r,n),i=t.properties||{};for(var o in i){var u=(e||void 0)&&e[o],l=this.validateSchema(u,i[o],r,n.makeChild(i[o],o));l.instance!==a.instance[o]&&(a.instance[o]=l.instance),a.importErrors(l)}return a}},c.patternProperties=function(e,t,r,n){if(void 0!==e&&this.types.object(e)){var i=new s(e,t,r,n),o=t.patternProperties||{};for(var u in e){var l=!0;for(var c in o){var f=new RegExp(c);if(f.test(u)){l=!1;var h=this.validateSchema(e[u],o[c],r,n.makeChild(o[c],u));h.instance!==i.instance[u]&&(i.instance[u]=h.instance),i.importErrors(h)}}l&&a.call(this,e,t,r,n,u,i)}return i}},c.additionalProperties=function(e,t,r,n){if(void 0!==e&&this.types.object(e)){if(t.patternProperties)return null;var i=new s(e,t,r,n);for(var o in e)a.call(this,e,t,r,n,o,i);return i}},c.minProperties=function(e,t,r,n){if(!e||"object"!=typeof e)return null;var a=new s(e,t,r,n),i=Object.keys(e);return i.length>=t.minProperties||a.addError({name:"minProperties",argument:t.minProperties,message:"does not meet minimum property length of "+t.minProperties}),a},c.maxProperties=function(e,t,r,n){if(!e||"object"!=typeof e)return null;var a=new s(e,t,r,n),i=Object.keys(e);return i.length<=t.maxProperties||a.addError({name:"maxProperties",argument:t.maxProperties,message:"does not meet maximum property length of "+t.maxProperties}),a},c.items=function(e,t,r,n){if(!(e instanceof Array))return null;var a=this,i=new s(e,t,r,n);return void 0!==e&&t.items?(e.every(function(e,o){var s=t.items instanceof Array?t.items[o]||t.additionalItems:t.items;if(void 0===s)return!0;if(s===!1)return i.addError({name:"items",message:"additionalItems not permitted"}),!1;var u=a.validateSchema(e,s,r,n.makeChild(s,o));return u.instance!==i.instance[o]&&(i.instance[o]=u.instance),i.importErrors(u),!0}),i):i},c.minimum=function(e,t,r,n){if("number"!=typeof e)return null;var a=new s(e,t,r,n),i=!0;return i=t.exclusiveMinimum&&t.exclusiveMinimum===!0?e>t.minimum:e>=t.minimum,i||a.addError({name:"minimum",argument:t.minimum,message:"must have a minimum value of "+t.minimum}),a},c.maximum=function(e,t,r,n){if("number"!=typeof e)return null;var a,i=new s(e,t,r,n);return a=t.exclusiveMaximum&&t.exclusiveMaximum===!0?e=t.minLength||a.addError({name:"minLength",argument:t.minLength,message:"does not meet minimum length of "+t.minLength}),a},c.maxLength=function(e,t,r,n){if("string"!=typeof e)return null;var a=new s(e,t,r,n);return e.length<=t.maxLength||a.addError({name:"maxLength",argument:t.maxLength,message:"does not meet maximum length of "+t.maxLength}),a},c.minItems=function(e,t,r,n){if(!(e instanceof Array))return null;var a=new s(e,t,r,n);return e.length>=t.minItems||a.addError({name:"minItems",argument:t.minItems,message:"does not meet minimum length of "+t.minItems}),a},c.maxItems=function(e,t,r,n){if(!(e instanceof Array))return null;var a=new s(e,t,r,n);return e.length<=t.maxItems||a.addError({name:"maxItems",argument:t.maxItems,message:"does not meet maximum length of "+t.maxItems}),a},c.uniqueItems=function(e,t,r,n){function a(e,t,r){for(var n=t+1;n"||o;i.addError({name:"not",argument:s,message:"is of prohibited type "+s})}}),i):null},e.exports=l},function(e,t,r){"use strict";var n=r(5),a=t.ValidationError=function(e,t,r,n,a,i){n&&(this.property=n),e&&(this.message=e),r&&(r.id?this.schema=r.id:this.schema=r),t&&(this.instance=t),this.name=a,this.argument=i,this.stack=this.toString()};a.prototype.toString=function(){return this.property+" "+this.message};var i=t.ValidatorResult=function(e,t,r,n){this.instance=e,this.schema=t,this.propertyPath=n.propertyPath,this.errors=[],this.throwError=r&&r.throwError};i.prototype.addError=function(e){var t;if("string"==typeof e)t=new a(e,this.instance,this.schema,this.propertyPath);else{if(!e)throw new Error("Missing error detail");if(!e.message)throw new Error("Missing error message");if(!e.name)throw new Error("Missing validator type");t=new a(e.message,this.instance,this.schema,this.propertyPath,e.name,e.argument)}if(this.throwError)throw t;return this.errors.push(t),t},i.prototype.importErrors=function(e){if("string"==typeof e||e&&e.validatorType)this.addError(e);else if(e&&e.errors){var t=this.errors;e.errors.forEach(function(e){t.push(e)})}},i.prototype.toString=function(e){return this.errors.map(function(e,t){return t+": "+e.toString()+"\n"}).join("")},Object.defineProperty(i.prototype,"valid",{get:function(){return!this.errors.length}});var o=t.SchemaError=function c(e,t){this.message=e,this.schema=t,Error.call(this,e),Error.captureStackTrace(this,c)};o.prototype=Object.create(Error.prototype,{constructor:{value:o,enumerable:!1},name:{value:"SchemaError",enumerable:!1}});var s=t.SchemaContext=function(e,t,r,n,a){this.schema=e,this.options=t,this.propertyPath=r,this.base=n,this.schemas=a};s.prototype.resolve=function(e){return n.resolve(this.base,e)},s.prototype.makeChild=function(e,t){var r=void 0===t?this.propertyPath:this.propertyPath+l(t),a=n.resolve(this.base,e.id||""),i=new s(e,this.options,r,a,Object.create(this.schemas));return e.id&&!i.schemas[a]&&(i.schemas[a]=e),i};var u=t.FORMAT_REGEXPS={"date-time":/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\d{2}:\d{2}:\d{2}(\.\d+)?([zZ]|[+-]\d{2}:\d{2})$/,date:/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/,time:/^\d{2}:\d{2}:\d{2}$/,email:/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/,"ip-address":/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,ipv6:/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,uri:/^[a-zA-Z][a-zA-Z0-9+-.]*:[^\s]*$/,color:/^(#?([0-9A-Fa-f]{3}){1,2}\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\)))$/,hostname:/^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,"host-name":/^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,alpha:/^[a-zA-Z]+$/,alphanumeric:/^[a-zA-Z0-9]+$/,"utc-millisec":function(e){return"string"==typeof e&&parseFloat(e)===parseInt(e,10)&&!isNaN(e)},regex:function(e){var t=!0;try{new RegExp(e)}catch(r){t=!1}return t},style:/\s*(.+?):\s*([^;]+);?/g,phone:/^\+(?:[0-9] ?){6,14}[0-9]$/};u.regexp=u.regex,u.pattern=u.regex,u.ipv4=u["ip-address"],t.isFormat=function(e,t){if(void 0!==u[t]){if(u[t]instanceof RegExp)return u[t].test(e);if("function"==typeof u[t])return u[t](e)}return!1};var l=t.makeSuffix=function(e){return e=e.toString(),e.match(/[.\s\[\]]/)||e.match(/^[\d]/)?e.match(/^\d+$/)?"["+e+"]":"["+JSON.stringify(e)+"]":"."+e};t.deepCompareStrict=function f(e,t){if(typeof e!=typeof t)return!1;if(e instanceof Array)return t instanceof Array?e.length!==t.length?!1:e.every(function(r,n){return f(e[n],t[n])}):!1;if("object"==typeof e){if(!e||!t)return e===t;var r=Object.keys(e),n=Object.keys(t);return r.length!==n.length?!1:r.every(function(r){return f(e[r],t[r])})}return e===t},e.exports.deepMerge=function h(e,t){var r=Array.isArray(t),n=r&&[]||{};return r?(e=e||[],n=n.concat(e),t.forEach(function(t,r){"object"==typeof t?n[r]=h(e[r],t):-1===e.indexOf(t)&&n.push(t)})):(e&&"object"==typeof e&&Object.keys(e).forEach(function(t){n[t]=e[t]}),Object.keys(t).forEach(function(r){"object"==typeof t[r]&&t[r]&&e[r]?n[r]=h(e[r],t[r]):n[r]=t[r]})),n},t.objectGetPath=function(e,t){for(var r,n=t.split("/").slice(1);"string"==typeof(r=n.shift());){var a=decodeURIComponent(r.replace(/~0/,"~").replace(/~1/g,"/"));if(!(a in e))return;e=e[a]}return e},t.encodePath=function(e){return e.map(function(e){return"/"+encodeURIComponent(e).replace(/~/g,"%7E")}).join("")}},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){return e?t?e+E:e:null}function i(e){var t=(e.type,e.label),r=e.required,n=e.children,i=e.displayLabel;return i?l["default"].createElement("label",null,a(t,r),n):n}function o(e){var t=e.type,r=e.classNames;return l["default"].createElement("div",{className:"field field-"+t+" "+r},i(e))}function s(e){var t=e.schema,r=e.uiSchema,n=e.name,a=e.required,i=j[t.type]||w["default"],s=!0;return"array"===t.type&&(s=(0,c.isMultiSelect)(t)),"object"===t.type&&(s=!1),l["default"].createElement(o,{label:t.title||n,required:a,type:t.type,displayLabel:s,classNames:r.classNames},l["default"].createElement(i,e))}Object.defineProperty(t,"__esModule",{value:!0});var u=r(2),l=n(u),c=r(14),f=r(21),h=n(f),d=r(22),m=n(d),p=r(24),v=n(p),y=r(27),g=n(y),b=r(25),S=n(b),O=r(28),w=n(O),E="*",j={array:h["default"],"boolean":m["default"],"date-time":S["default"],integer:v["default"],number:v["default"],object:g["default"],string:S["default"]};o.defaultProps={classNames:""},s.defaultProps={uiSchema:{}},t["default"]=s,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){switch(e){case"array":return[];case"boolean":return!1;case"date-time":return"";case"number":return 0;case"object":return{};case"string":return"";default:return}}function i(e,t){return null===e?a(t.type):e}function o(e,t){if("function"==typeof t)return t;if("string"!=typeof t)throw new Error("Unsupported widget definition: "+typeof t);if(!E.hasOwnProperty(e))throw new Error("No alternative widget for type "+e);if(!E[e].hasOwnProperty(t))throw new Error('No alternative widget "'+t+'" for type '+e);return E[e][t]}function s(e){if("object"!=typeof e)throw new Error("Invalid schema: "+e);return"default"in e?e["default"]:"object"===e.type?Object.keys(e.properties).reduce(function(t,r){return t[r]=s(e.properties[r]),t},{}):a(e.type)}function u(e){var t=Number(e),r="number"==typeof t&&!Number.isNaN(t);return r?t:e}function l(e,t){if(!Array.isArray(t))return e;if(t.length!==e.length)throw new Error("uiSchema order list length should match object properties length");var r=function(e){return[].slice.call(e).sort().toString()};if(r(t)!==r(e))throw new Error("uiSchema order list does not match object properties list");return t}function c(e){return Array.isArray(e.items["enum"])&&e.uniqueItems}Object.defineProperty(t,"__esModule",{value:!0}),t.defaultTypeValue=a,t.defaultFieldValue=i,t.getAlternativeWidget=o,t.getDefaultFormState=s,t.asNumber=u,t.orderProperties=l,t.isMultiSelect=c;var f=r(15),h=n(f),d=r(16),m=n(d),p=r(17),v=n(p),y=r(18),g=n(y),b=r(19),S=n(b),O=r(20),w=n(O),E={"boolean":{radio:m["default"],select:S["default"]},string:{password:h["default"],radio:m["default"],select:S["default"],textarea:w["default"]},number:{updown:v["default"],range:g["default"]},integer:{updown:v["default"],range:g["default"]}}},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){var t=(e.schema,e.placeholder),r=e.value,n=e.defaultValue,a=e.required,i=e.onChange;return o["default"].createElement("input",{type:"password",value:r,defaultValue:n,placeholder:t,required:a,onChange:function(e){return i(e.target.value)}})}Object.defineProperty(t,"__esModule",{value:!0});var i=r(2),o=n(i);t["default"]=a,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){var t=(e.schema,e.options),r=e.placeholder,n=e.value,a=e.defaultValue,i=(e.required,e.onChange),s=Math.random().toString();return o["default"].createElement("div",{className:"field-radio-group"},t.map(function(e,t){var u=void 0!==n?e===n:e===a;return o["default"].createElement("label",{key:t},o["default"].createElement("input",{type:"radio",name:s,value:e,checked:u,placeholder:r,onChange:function(t){return i(e)}}),String(e))}))}Object.defineProperty(t,"__esModule",{value:!0});var i=r(2),o=n(i);t["default"]=a,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){var t={};return e.multipleOf&&(t.step=e.multipleOf),e.minimum&&(t.min=e.minimum),e.maximum&&(t.max=e.maximum),t}function i(e){var t=e.schema,r=e.placeholder,n=e.value,i=e.defaultValue,s=e.required,l=e.onChange;return u["default"].createElement("input",o({type:"number",value:n,defaultValue:i,placeholder:r,required:s,onChange:function(e){return l(e.target.value)}},a(t)))}Object.defineProperty(t,"__esModule",{value:!0});var o=Object.assign||function(e){for(var t=1;t0}},{key:"asyncSetState",value:function(e,t){var r=this;this.setState(e,function(e){return r.props.onChange(r.state.items,t)})}},{key:"onAddClick",value:function(e){e.preventDefault();var t=this.state.items,r=this.props.schema;this.asyncSetState({items:t.concat((0,c.getDefaultFormState)(r.items))},{validate:!1})}},{key:"onDropClick",value:function(e,t){t.preventDefault(),this.asyncSetState({items:this.state.items.filter(function(t,r){return r!==e})},{validate:!1})}},{key:"onChange",value:function(e,t){this.asyncSetState({items:this.state.items.map(function(r,n){return e===n?t:r})},{validate:!1})}},{key:"onSelectChange",value:function(e){this.asyncSetState({items:e},{validate:!1})}},{key:"render",value:function(){var e=this,t=this.props,r=t.schema,n=t.uiSchema,a=t.name,i=r.title||a,o=this.state.items,s=this.props.registry.SchemaField;return(0,c.isMultiSelect)(r)?l["default"].createElement(h["default"],{multiple:!0,onChange:this.onSelectChange.bind(this),options:r.items["enum"],schema:r,title:i,defaultValue:r["default"],value:o}):l["default"].createElement("fieldset",{className:"field field-array field-array-of-"+r.items.type},i?l["default"].createElement("legend",null,i):null,r.description?l["default"].createElement("div",{className:"field-description"},r.description):null,l["default"].createElement("div",{className:"array-item-list"},o.map(function(t,a){return l["default"].createElement("div",{key:a},l["default"].createElement(s,{schema:r.items,uiSchema:n.items,formData:o[a],required:e.isItemRequired(r.items),onChange:e.onChange.bind(e,a),registry:e.props.registry}),l["default"].createElement("p",{className:"array-item-remove"},l["default"].createElement("button",{type:"button",onClick:e.onDropClick.bind(e,a)},"-")))})),l["default"].createElement("p",{className:"array-item-add"},l["default"].createElement("button",{type:"button",onClick:this.onAddClick.bind(this)},"+")))}},{key:"itemTitle",get:function(){var e=this.props.schema;return e.items.title||e.items.description||"Item"}}]),t}(u.Component);t["default"]=d,e.exports=t["default"]},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function a(e){var t=e.schema,r=e.name,n=e.uiSchema,a=e.formData,o=e.required,l=e.onChange,f=t.title,h=t.description,d=n["ui:widget"],m={schema:t,onChange:l,label:f||r,placeholder:h,defaultValue:t["default"],value:(0,u.defaultFieldValue)(a,t),required:o};if(d){var p=(0,u.getAlternativeWidget)(t.type,d);return s["default"].createElement(p,i({options:[!0,!1]},m))}return s["default"].createElement(c["default"],m)}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t 0) {\n\t this.setState({ errors: errors }, function (_) {\n\t if (_this2.props.onError) {\n\t _this2.props.onError(errors);\n\t } else {\n\t console.error(\"Form validation failed\", errors);\n\t }\n\t });\n\t return;\n\t } else if (this.props.onSubmit) {\n\t this.props.onSubmit(this.state);\n\t }\n\t this.setState({ status: \"initial\" });\n\t }\n\t }, {\n\t key: \"getRegistry\",\n\t value: function getRegistry() {\n\t return {\n\t SchemaField: this.props.SchemaField || _fieldsSchemaField2[\"default\"],\n\t TitleField: this.props.TitleField || _fieldsTitleField2[\"default\"]\n\t };\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _props = this.props;\n\t var children = _props.children;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t var formData = this.state.formData;\n\t\n\t var registry = this.getRegistry();\n\t var _SchemaField = registry.SchemaField;\n\t return _react2[\"default\"].createElement(\n\t \"form\",\n\t { className: \"rjsf\", onSubmit: this.onSubmit.bind(this) },\n\t this.renderErrors(),\n\t _react2[\"default\"].createElement(_SchemaField, {\n\t schema: schema,\n\t uiSchema: uiSchema,\n\t formData: formData,\n\t onChange: this.onChange.bind(this),\n\t registry: registry }),\n\t children ? children : _react2[\"default\"].createElement(\n\t \"p\",\n\t null,\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"submit\" },\n\t \"Submit\"\n\t )\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Form;\n\t})(_react.Component);\n\t\n\texports[\"default\"] = Form;\n\t\n\tif (false) {\n\t Form.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t formData: _react.PropTypes.any,\n\t onChange: _react.PropTypes.func,\n\t onError: _react.PropTypes.func,\n\t onSubmit: _react.PropTypes.func,\n\t SchemaField: _react.PropTypes.func,\n\t TitleField: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = Form;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar Validator = module.exports.Validator = __webpack_require__(4);\n\t\n\tmodule.exports.ValidatorResult = __webpack_require__(12).ValidatorResult;\n\tmodule.exports.ValidationError = __webpack_require__(12).ValidationError;\n\tmodule.exports.SchemaError = __webpack_require__(12).SchemaError;\n\t\n\tmodule.exports.validate = function (instance, schema, options) {\n\t var v = new Validator();\n\t return v.validate(instance, schema, options);\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar urilib = __webpack_require__(5);\n\t\n\tvar attribute = __webpack_require__(11);\n\tvar helpers = __webpack_require__(12);\n\tvar ValidatorResult = helpers.ValidatorResult;\n\tvar SchemaError = helpers.SchemaError;\n\tvar SchemaContext = helpers.SchemaContext;\n\t\n\t/**\n\t * Creates a new Validator object\n\t * @name Validator\n\t * @constructor\n\t */\n\tvar Validator = function Validator() {\n\t this.schemas = {};\n\t this.unresolvedRefs = [];\n\t\n\t // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n\t this.types = Object.create(types);\n\t this.attributes = Object.create(attribute.validators);\n\t};\n\t\n\t// Hint at the presence of a property\n\tValidator.prototype.schemas = null;\n\tValidator.prototype.types = null;\n\tValidator.prototype.attributes = null;\n\tValidator.prototype.unresolvedRefs = null;\n\t\n\t/**\n\t * Adds a schema with a certain urn to the Validator instance.\n\t * @param schema\n\t * @param urn\n\t * @return {Object}\n\t */\n\tValidator.prototype.addSchema = function addSchema(schema, uri) {\n\t if (!schema) {\n\t return null;\n\t }\n\t var ourUri = uri || schema.id;\n\t this.addSubSchema(ourUri, schema);\n\t if (ourUri) {\n\t this.schemas[ourUri] = schema;\n\t }\n\t return this.schemas[ourUri];\n\t};\n\t\n\tValidator.prototype.addSubSchema = function addSubSchema(baseuri, schema) {\n\t if (!schema || typeof schema != 'object') return;\n\t // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n\t if (schema.$ref) {\n\t var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n\t // Only mark unknown schemas as unresolved\n\t if (this.schemas[resolvedUri] === undefined) {\n\t this.schemas[resolvedUri] = null;\n\t this.unresolvedRefs.push(resolvedUri);\n\t }\n\t return;\n\t }\n\t var ourUri = schema.id && urilib.resolve(baseuri, schema.id);\n\t var ourBase = ourUri || baseuri;\n\t if (ourUri) {\n\t if (this.schemas[ourUri]) {\n\t if (!helpers.deepCompareStrict(this.schemas[ourUri], schema)) {\n\t throw new Error('Schema <' + schema + '> already exists with different definition');\n\t }\n\t return this.schemas[ourUri];\n\t }\n\t this.schemas[ourUri] = schema;\n\t var documentUri = ourUri.replace(/^([^#]*)#$/, '$1');\n\t this.schemas[documentUri] = schema;\n\t }\n\t this.addSubSchemaArray(ourBase, schema.items instanceof Array ? schema.items : [schema.items]);\n\t this.addSubSchemaArray(ourBase, schema['extends'] instanceof Array ? schema['extends'] : [schema['extends']]);\n\t this.addSubSchema(ourBase, schema.additionalItems);\n\t this.addSubSchemaObject(ourBase, schema.properties);\n\t this.addSubSchema(ourBase, schema.additionalProperties);\n\t this.addSubSchemaObject(ourBase, schema.definitions);\n\t this.addSubSchemaObject(ourBase, schema.patternProperties);\n\t this.addSubSchemaObject(ourBase, schema.dependencies);\n\t this.addSubSchemaArray(ourBase, schema.disallow);\n\t this.addSubSchemaArray(ourBase, schema.allOf);\n\t this.addSubSchemaArray(ourBase, schema.anyOf);\n\t this.addSubSchemaArray(ourBase, schema.oneOf);\n\t this.addSubSchema(ourBase, schema.not);\n\t return this.schemas[ourUri];\n\t};\n\t\n\tValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n\t if (!(schemas instanceof Array)) return;\n\t for (var i = 0; i < schemas.length; i++) {\n\t this.addSubSchema(baseuri, schemas[i]);\n\t }\n\t};\n\t\n\tValidator.prototype.addSubSchemaObject = function addSubSchemaArray(baseuri, schemas) {\n\t if (!schemas || typeof schemas != 'object') return;\n\t for (var p in schemas) {\n\t this.addSubSchema(baseuri, schemas[p]);\n\t }\n\t};\n\t\n\t/**\n\t * Sets all the schemas of the Validator instance.\n\t * @param schemas\n\t */\n\tValidator.prototype.setSchemas = function setSchemas(schemas) {\n\t this.schemas = schemas;\n\t};\n\t\n\t/**\n\t * Returns the schema of a certain urn\n\t * @param urn\n\t */\n\tValidator.prototype.getSchema = function getSchema(urn) {\n\t return this.schemas[urn];\n\t};\n\t\n\t/**\n\t * Validates instance against the provided schema\n\t * @param instance\n\t * @param schema\n\t * @param [options]\n\t * @param [ctx]\n\t * @return {Array}\n\t */\n\tValidator.prototype.validate = function validate(instance, schema, options, ctx) {\n\t if (!options) {\n\t options = {};\n\t }\n\t var propertyName = options.propertyName || 'instance';\n\t // This will work so long as the function at uri.resolve() will resolve a relative URI to a relative URI\n\t var base = urilib.resolve(options.base || '/', schema.id || '');\n\t if (!ctx) {\n\t ctx = new SchemaContext(schema, options, propertyName, base, Object.create(this.schemas));\n\t if (!ctx.schemas[base]) {\n\t ctx.schemas[base] = schema;\n\t }\n\t }\n\t if (schema) {\n\t var result = this.validateSchema(instance, schema, options, ctx);\n\t if (!result) {\n\t throw new Error('Result undefined');\n\t }\n\t return result;\n\t }\n\t throw new SchemaError('no schema specified', schema);\n\t};\n\t\n\t/**\n\t * Validates an instance against the schema (the actual work horse)\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @private\n\t * @return {ValidatorResult}\n\t */\n\tValidator.prototype.validateSchema = function validateSchema(instance, schema, options, ctx) {\n\t var self = this;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!schema) {\n\t throw new Error(\"schema is undefined\");\n\t }\n\t\n\t /**\n\t * @param Object schema\n\t * @return mixed schema uri or false\n\t */\n\t function shouldResolve(schema) {\n\t var ref = typeof schema === 'string' ? schema : schema.$ref;\n\t if (typeof ref == 'string') return ref;\n\t return false;\n\t }\n\t /**\n\t * @param Object schema\n\t * @param SchemaContext ctx\n\t * @returns Object schema or resolved schema\n\t */\n\t function resolve(schema, ctx) {\n\t var ref;\n\t if (ref = shouldResolve(schema)) {\n\t return self.resolve(schema, ref, ctx).subschema;\n\t }\n\t return schema;\n\t }\n\t\n\t if (schema['extends']) {\n\t if (schema['extends'] instanceof Array) {\n\t schema['extends'].forEach(function (s) {\n\t schema = helpers.deepMerge(schema, resolve(s, ctx));\n\t });\n\t } else {\n\t schema = helpers.deepMerge(schema, resolve(schema['extends'], ctx));\n\t }\n\t }\n\t\n\t var switchSchema;\n\t if (switchSchema = shouldResolve(schema)) {\n\t var resolved = this.resolve(schema, switchSchema, ctx);\n\t var subctx = new SchemaContext(resolved.subschema, options, ctx.propertyPath, resolved.switchSchema, ctx.schemas);\n\t return this.validateSchema(instance, resolved.subschema, options, subctx);\n\t }\n\t\n\t var skipAttributes = options && options.skipAttributes || [];\n\t // Validate each schema attribute against the instance\n\t for (var key in schema) {\n\t if (!attribute.ignoreProperties[key] && skipAttributes.indexOf(key) < 0) {\n\t var validatorErr = null;\n\t var validator = self.attributes[key];\n\t if (validator) {\n\t validatorErr = validator.call(self, instance, schema, options, ctx);\n\t } else if (options.allowUnknownAttributes === false) {\n\t // This represents an error with the schema itself, not an invalid instance\n\t throw new SchemaError(\"Unsupported attribute: \" + key, schema);\n\t }\n\t if (validatorErr) {\n\t result.importErrors(validatorErr);\n\t }\n\t }\n\t }\n\t\n\t if (typeof options.rewrite == 'function') {\n\t var value = options.rewrite.call(this, instance, schema, options, ctx);\n\t result.instance = value;\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t* @private\n\t* @param Object schema\n\t* @param Object switchSchema\n\t* @param SchemaContext ctx\n\t* @return Object resolved schemas {subschema:String, switchSchema: String}\n\t* @thorws SchemaError\n\t*/\n\tValidator.prototype.resolve = function resolve(schema, switchSchema, ctx) {\n\t switchSchema = ctx.resolve(switchSchema);\n\t // First see if the schema exists under the provided URI\n\t if (ctx.schemas[switchSchema]) {\n\t return { subschema: ctx.schemas[switchSchema], switchSchema: switchSchema };\n\t }\n\t // Else try walking the property pointer\n\t var parsed = urilib.parse(switchSchema);\n\t var fragment = parsed && parsed.hash;\n\t var document = fragment && fragment.length && switchSchema.substr(0, switchSchema.length - fragment.length);\n\t if (!document || !ctx.schemas[document]) {\n\t throw new SchemaError(\"no such schema <\" + switchSchema + \">\", schema);\n\t }\n\t var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n\t if (subschema === undefined) {\n\t throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n\t }\n\t return { subschema: subschema, switchSchema: switchSchema };\n\t};\n\t\n\t/**\n\t * Tests whether the instance if of a certain type.\n\t * @private\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @param type\n\t * @return {boolean}\n\t */\n\tValidator.prototype.testType = function validateType(instance, schema, options, ctx, type) {\n\t if (typeof this.types[type] == 'function') {\n\t return this.types[type].call(this, instance);\n\t }\n\t if (type && typeof type == 'object') {\n\t var res = this.validateSchema(instance, type, options, ctx);\n\t return res === undefined || !(res && res.errors.length);\n\t }\n\t // Undefined or properties not on the list are acceptable, same as not being defined\n\t return true;\n\t};\n\t\n\tvar types = Validator.prototype.types = {};\n\ttypes.string = function testString(instance) {\n\t return typeof instance == 'string';\n\t};\n\ttypes.number = function testNumber(instance) {\n\t return typeof instance == 'number';\n\t};\n\ttypes.integer = function testInteger(instance) {\n\t return typeof instance == 'number' && instance % 1 === 0;\n\t};\n\ttypes.boolean = function testBoolean(instance) {\n\t return typeof instance == 'boolean';\n\t};\n\ttypes.number = function testNumber(instance) {\n\t return typeof instance == 'number';\n\t};\n\ttypes.array = function testArray(instance) {\n\t return instance instanceof Array;\n\t};\n\ttypes['null'] = function testNull(instance) {\n\t return instance === null;\n\t};\n\ttypes.date = function testDate(instance) {\n\t return instance instanceof Date;\n\t};\n\ttypes.any = function testAny(instance) {\n\t return true;\n\t};\n\ttypes.object = function testObject(instance) {\n\t // TODO: fix this - see #15\n\t return instance && typeof instance === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n\t};\n\t\n\tmodule.exports = Validator;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\tvar punycode = __webpack_require__(6);\n\t\n\texports.parse = urlParse;\n\texports.resolve = urlResolve;\n\texports.resolveObject = urlResolveObject;\n\texports.format = urlFormat;\n\t\n\texports.Url = Url;\n\t\n\tfunction Url() {\n\t this.protocol = null;\n\t this.slashes = null;\n\t this.auth = null;\n\t this.host = null;\n\t this.port = null;\n\t this.hostname = null;\n\t this.hash = null;\n\t this.search = null;\n\t this.query = null;\n\t this.pathname = null;\n\t this.path = null;\n\t this.href = null;\n\t}\n\t\n\t// Reference: RFC 3986, RFC 1808, RFC 2396\n\t\n\t// define these here so at least they only have to be\n\t// compiled once on the first module load.\n\tvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n\t portPattern = /:[0-9]*$/,\n\t\n\t// RFC 2396: characters reserved for delimiting URLs.\n\t// We actually just auto-escape these.\n\tdelims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\t\n\t// RFC 2396: characters not allowed for various reasons.\n\tunwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\t\n\t// Allowed by RFCs, but cause of XSS attacks. Always escape these.\n\tautoEscape = ['\\''].concat(unwise),\n\t\n\t// Characters that are never ever allowed in a hostname.\n\t// Note that any invalid chars are also handled, but these\n\t// are the ones that are *expected* to be seen, so we fast-path\n\t// them.\n\tnonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n\t hostEndingChars = ['/', '?', '#'],\n\t hostnameMaxLen = 255,\n\t hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n\t hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n\t\n\t// protocols that can allow \"unsafe\" and \"unwise\" chars.\n\tunsafeProtocol = {\n\t 'javascript': true,\n\t 'javascript:': true\n\t},\n\t\n\t// protocols that never have a hostname.\n\thostlessProtocol = {\n\t 'javascript': true,\n\t 'javascript:': true\n\t},\n\t\n\t// protocols that always contain a // bit.\n\tslashedProtocol = {\n\t 'http': true,\n\t 'https': true,\n\t 'ftp': true,\n\t 'gopher': true,\n\t 'file': true,\n\t 'http:': true,\n\t 'https:': true,\n\t 'ftp:': true,\n\t 'gopher:': true,\n\t 'file:': true\n\t},\n\t querystring = __webpack_require__(8);\n\t\n\tfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n\t if (url && isObject(url) && url instanceof Url) return url;\n\t\n\t var u = new Url();\n\t u.parse(url, parseQueryString, slashesDenoteHost);\n\t return u;\n\t}\n\t\n\tUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n\t if (!isString(url)) {\n\t throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n\t }\n\t\n\t var rest = url;\n\t\n\t // trim before proceeding.\n\t // This is to support parse stuff like \" http://foo.com \\n\"\n\t rest = rest.trim();\n\t\n\t var proto = protocolPattern.exec(rest);\n\t if (proto) {\n\t proto = proto[0];\n\t var lowerProto = proto.toLowerCase();\n\t this.protocol = lowerProto;\n\t rest = rest.substr(proto.length);\n\t }\n\t\n\t // figure out if it's got a host\n\t // user@server is *always* interpreted as a hostname, and url\n\t // resolution will treat //foo/bar as host=foo,path=bar because that's\n\t // how the browser resolves relative URLs.\n\t if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n\t var slashes = rest.substr(0, 2) === '//';\n\t if (slashes && !(proto && hostlessProtocol[proto])) {\n\t rest = rest.substr(2);\n\t this.slashes = true;\n\t }\n\t }\n\t\n\t if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n\t\n\t // there's a hostname.\n\t // the first instance of /, ?, ;, or # ends the host.\n\t //\n\t // If there is an @ in the hostname, then non-host chars *are* allowed\n\t // to the left of the last @ sign, unless some host-ending character\n\t // comes *before* the @-sign.\n\t // URLs are obnoxious.\n\t //\n\t // ex:\n\t // http://a@b@c/ => user:a@b host:c\n\t // http://a@b?@c => user:a host:c path:/?@c\n\t\n\t // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n\t // Review our test case against browsers more comprehensively.\n\t\n\t // find the first instance of any hostEndingChars\n\t var hostEnd = -1;\n\t for (var i = 0; i < hostEndingChars.length; i++) {\n\t var hec = rest.indexOf(hostEndingChars[i]);\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n\t }\n\t\n\t // at this point, either we have an explicit point where the\n\t // auth portion cannot go past, or the last @ char is the decider.\n\t var auth, atSign;\n\t if (hostEnd === -1) {\n\t // atSign can be anywhere.\n\t atSign = rest.lastIndexOf('@');\n\t } else {\n\t // atSign must be in auth portion.\n\t // http://a@b/c@d => host:b auth:a path:/c@d\n\t atSign = rest.lastIndexOf('@', hostEnd);\n\t }\n\t\n\t // Now we have a portion which is definitely the auth.\n\t // Pull that off.\n\t if (atSign !== -1) {\n\t auth = rest.slice(0, atSign);\n\t rest = rest.slice(atSign + 1);\n\t this.auth = decodeURIComponent(auth);\n\t }\n\t\n\t // the host is the remaining to the left of the first non-host char\n\t hostEnd = -1;\n\t for (var i = 0; i < nonHostChars.length; i++) {\n\t var hec = rest.indexOf(nonHostChars[i]);\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n\t }\n\t // if we still have not hit it, then the entire thing is a host.\n\t if (hostEnd === -1) hostEnd = rest.length;\n\t\n\t this.host = rest.slice(0, hostEnd);\n\t rest = rest.slice(hostEnd);\n\t\n\t // pull out port.\n\t this.parseHost();\n\t\n\t // we've indicated that there is a hostname,\n\t // so even if it's empty, it has to be present.\n\t this.hostname = this.hostname || '';\n\t\n\t // if hostname begins with [ and ends with ]\n\t // assume that it's an IPv6 address.\n\t var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\t\n\t // validate a little.\n\t if (!ipv6Hostname) {\n\t var hostparts = this.hostname.split(/\\./);\n\t for (var i = 0, l = hostparts.length; i < l; i++) {\n\t var part = hostparts[i];\n\t if (!part) continue;\n\t if (!part.match(hostnamePartPattern)) {\n\t var newpart = '';\n\t for (var j = 0, k = part.length; j < k; j++) {\n\t if (part.charCodeAt(j) > 127) {\n\t // we replace non-ASCII char with a temporary placeholder\n\t // we need this to make sure size of hostname is not\n\t // broken by replacing non-ASCII by nothing\n\t newpart += 'x';\n\t } else {\n\t newpart += part[j];\n\t }\n\t }\n\t // we test again with ASCII char only\n\t if (!newpart.match(hostnamePartPattern)) {\n\t var validParts = hostparts.slice(0, i);\n\t var notHost = hostparts.slice(i + 1);\n\t var bit = part.match(hostnamePartStart);\n\t if (bit) {\n\t validParts.push(bit[1]);\n\t notHost.unshift(bit[2]);\n\t }\n\t if (notHost.length) {\n\t rest = '/' + notHost.join('.') + rest;\n\t }\n\t this.hostname = validParts.join('.');\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t if (this.hostname.length > hostnameMaxLen) {\n\t this.hostname = '';\n\t } else {\n\t // hostnames are always lower case.\n\t this.hostname = this.hostname.toLowerCase();\n\t }\n\t\n\t if (!ipv6Hostname) {\n\t // IDNA Support: Returns a puny coded representation of \"domain\".\n\t // It only converts the part of the domain name that\n\t // has non ASCII characters. I.e. it dosent matter if\n\t // you call it with a domain that already is in ASCII.\n\t var domainArray = this.hostname.split('.');\n\t var newOut = [];\n\t for (var i = 0; i < domainArray.length; ++i) {\n\t var s = domainArray[i];\n\t newOut.push(s.match(/[^A-Za-z0-9_-]/) ? 'xn--' + punycode.encode(s) : s);\n\t }\n\t this.hostname = newOut.join('.');\n\t }\n\t\n\t var p = this.port ? ':' + this.port : '';\n\t var h = this.hostname || '';\n\t this.host = h + p;\n\t this.href += this.host;\n\t\n\t // strip [ and ] from the hostname\n\t // the host field still retains them, though\n\t if (ipv6Hostname) {\n\t this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n\t if (rest[0] !== '/') {\n\t rest = '/' + rest;\n\t }\n\t }\n\t }\n\t\n\t // now rest is set to the post-host stuff.\n\t // chop off any delim chars.\n\t if (!unsafeProtocol[lowerProto]) {\n\t\n\t // First, make 100% sure that any \"autoEscape\" chars get\n\t // escaped, even if encodeURIComponent doesn't think they\n\t // need to be.\n\t for (var i = 0, l = autoEscape.length; i < l; i++) {\n\t var ae = autoEscape[i];\n\t var esc = encodeURIComponent(ae);\n\t if (esc === ae) {\n\t esc = escape(ae);\n\t }\n\t rest = rest.split(ae).join(esc);\n\t }\n\t }\n\t\n\t // chop off from the tail first.\n\t var hash = rest.indexOf('#');\n\t if (hash !== -1) {\n\t // got a fragment string.\n\t this.hash = rest.substr(hash);\n\t rest = rest.slice(0, hash);\n\t }\n\t var qm = rest.indexOf('?');\n\t if (qm !== -1) {\n\t this.search = rest.substr(qm);\n\t this.query = rest.substr(qm + 1);\n\t if (parseQueryString) {\n\t this.query = querystring.parse(this.query);\n\t }\n\t rest = rest.slice(0, qm);\n\t } else if (parseQueryString) {\n\t // no query string, but parseQueryString still requested\n\t this.search = '';\n\t this.query = {};\n\t }\n\t if (rest) this.pathname = rest;\n\t if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n\t this.pathname = '/';\n\t }\n\t\n\t //to support http.request\n\t if (this.pathname || this.search) {\n\t var p = this.pathname || '';\n\t var s = this.search || '';\n\t this.path = p + s;\n\t }\n\t\n\t // finally, reconstruct the href based on what has been validated.\n\t this.href = this.format();\n\t return this;\n\t};\n\t\n\t// format a parsed object into a url string\n\tfunction urlFormat(obj) {\n\t // ensure it's an object, and not a string url.\n\t // If it's an obj, this is a no-op.\n\t // this way, you can call url_format() on strings\n\t // to clean up potentially wonky urls.\n\t if (isString(obj)) obj = urlParse(obj);\n\t if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n\t return obj.format();\n\t}\n\t\n\tUrl.prototype.format = function () {\n\t var auth = this.auth || '';\n\t if (auth) {\n\t auth = encodeURIComponent(auth);\n\t auth = auth.replace(/%3A/i, ':');\n\t auth += '@';\n\t }\n\t\n\t var protocol = this.protocol || '',\n\t pathname = this.pathname || '',\n\t hash = this.hash || '',\n\t host = false,\n\t query = '';\n\t\n\t if (this.host) {\n\t host = auth + this.host;\n\t } else if (this.hostname) {\n\t host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n\t if (this.port) {\n\t host += ':' + this.port;\n\t }\n\t }\n\t\n\t if (this.query && isObject(this.query) && Object.keys(this.query).length) {\n\t query = querystring.stringify(this.query);\n\t }\n\t\n\t var search = this.search || query && '?' + query || '';\n\t\n\t if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\t\n\t // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n\t // unless they had them to begin with.\n\t if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n\t host = '//' + (host || '');\n\t if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n\t } else if (!host) {\n\t host = '';\n\t }\n\t\n\t if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n\t if (search && search.charAt(0) !== '?') search = '?' + search;\n\t\n\t pathname = pathname.replace(/[?#]/g, function (match) {\n\t return encodeURIComponent(match);\n\t });\n\t search = search.replace('#', '%23');\n\t\n\t return protocol + host + pathname + search + hash;\n\t};\n\t\n\tfunction urlResolve(source, relative) {\n\t return urlParse(source, false, true).resolve(relative);\n\t}\n\t\n\tUrl.prototype.resolve = function (relative) {\n\t return this.resolveObject(urlParse(relative, false, true)).format();\n\t};\n\t\n\tfunction urlResolveObject(source, relative) {\n\t if (!source) return relative;\n\t return urlParse(source, false, true).resolveObject(relative);\n\t}\n\t\n\tUrl.prototype.resolveObject = function (relative) {\n\t if (isString(relative)) {\n\t var rel = new Url();\n\t rel.parse(relative, false, true);\n\t relative = rel;\n\t }\n\t\n\t var result = new Url();\n\t Object.keys(this).forEach(function (k) {\n\t result[k] = this[k];\n\t }, this);\n\t\n\t // hash is always overridden, no matter what.\n\t // even href=\"\" will remove it.\n\t result.hash = relative.hash;\n\t\n\t // if the relative url is empty, then there's nothing left to do here.\n\t if (relative.href === '') {\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t // hrefs like //foo/bar always cut to the protocol.\n\t if (relative.slashes && !relative.protocol) {\n\t // take everything except the protocol from relative\n\t Object.keys(relative).forEach(function (k) {\n\t if (k !== 'protocol') result[k] = relative[k];\n\t });\n\t\n\t //urlParse appends trailing / to urls like http://www.example.com\n\t if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n\t result.path = result.pathname = '/';\n\t }\n\t\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t if (relative.protocol && relative.protocol !== result.protocol) {\n\t // if it's a known url protocol, then changing\n\t // the protocol does weird things\n\t // first, if it's not file:, then we MUST have a host,\n\t // and if there was a path\n\t // to begin with, then we MUST have a path.\n\t // if it is file:, then the host is dropped,\n\t // because that's known to be hostless.\n\t // anything else is assumed to be absolute.\n\t if (!slashedProtocol[relative.protocol]) {\n\t Object.keys(relative).forEach(function (k) {\n\t result[k] = relative[k];\n\t });\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t result.protocol = relative.protocol;\n\t if (!relative.host && !hostlessProtocol[relative.protocol]) {\n\t var relPath = (relative.pathname || '').split('/');\n\t while (relPath.length && !(relative.host = relPath.shift()));\n\t if (!relative.host) relative.host = '';\n\t if (!relative.hostname) relative.hostname = '';\n\t if (relPath[0] !== '') relPath.unshift('');\n\t if (relPath.length < 2) relPath.unshift('');\n\t result.pathname = relPath.join('/');\n\t } else {\n\t result.pathname = relative.pathname;\n\t }\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t result.host = relative.host || '';\n\t result.auth = relative.auth;\n\t result.hostname = relative.hostname || relative.host;\n\t result.port = relative.port;\n\t // to support http.request\n\t if (result.pathname || result.search) {\n\t var p = result.pathname || '';\n\t var s = result.search || '';\n\t result.path = p + s;\n\t }\n\t result.slashes = result.slashes || relative.slashes;\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n\t isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n\t mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname,\n\t removeAllDots = mustEndAbs,\n\t srcPath = result.pathname && result.pathname.split('/') || [],\n\t relPath = relative.pathname && relative.pathname.split('/') || [],\n\t psychotic = result.protocol && !slashedProtocol[result.protocol];\n\t\n\t // if the url is a non-slashed url, then relative\n\t // links like ../.. should be able\n\t // to crawl up to the hostname, as well. This is strange.\n\t // result.protocol has already been set by now.\n\t // Later on, put the first path part into the host field.\n\t if (psychotic) {\n\t result.hostname = '';\n\t result.port = null;\n\t if (result.host) {\n\t if (srcPath[0] === '') srcPath[0] = result.host;else srcPath.unshift(result.host);\n\t }\n\t result.host = '';\n\t if (relative.protocol) {\n\t relative.hostname = null;\n\t relative.port = null;\n\t if (relative.host) {\n\t if (relPath[0] === '') relPath[0] = relative.host;else relPath.unshift(relative.host);\n\t }\n\t relative.host = null;\n\t }\n\t mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n\t }\n\t\n\t if (isRelAbs) {\n\t // it's absolute.\n\t result.host = relative.host || relative.host === '' ? relative.host : result.host;\n\t result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t srcPath = relPath;\n\t // fall through to the dot-handling below.\n\t } else if (relPath.length) {\n\t // it's relative\n\t // throw away the existing file, and take the new path instead.\n\t if (!srcPath) srcPath = [];\n\t srcPath.pop();\n\t srcPath = srcPath.concat(relPath);\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t } else if (!isNullOrUndefined(relative.search)) {\n\t // just pull out the search.\n\t // like href='?foo'.\n\t // Put this after the other two cases because it simplifies the booleans\n\t if (psychotic) {\n\t result.hostname = result.host = srcPath.shift();\n\t //occationaly the auth can get stuck only in host\n\t //this especialy happens in cases like\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\t if (authInHost) {\n\t result.auth = authInHost.shift();\n\t result.host = result.hostname = authInHost.shift();\n\t }\n\t }\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t //to support http.request\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\n\t result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n\t }\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t if (!srcPath.length) {\n\t // no path at all. easy.\n\t // we've already handled the other stuff above.\n\t result.pathname = null;\n\t //to support http.request\n\t if (result.search) {\n\t result.path = '/' + result.search;\n\t } else {\n\t result.path = null;\n\t }\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t // if a url ENDs in . or .., then it must get a trailing slash.\n\t // however, if it ends in anything else non-slashy,\n\t // then it must NOT get a trailing slash.\n\t var last = srcPath.slice(-1)[0];\n\t var hasTrailingSlash = (result.host || relative.host) && (last === '.' || last === '..') || last === '';\n\t\n\t // strip single dots, resolve double dots to parent dir\n\t // if the path tries to go above the root, `up` ends up > 0\n\t var up = 0;\n\t for (var i = srcPath.length; i >= 0; i--) {\n\t last = srcPath[i];\n\t if (last == '.') {\n\t srcPath.splice(i, 1);\n\t } else if (last === '..') {\n\t srcPath.splice(i, 1);\n\t up++;\n\t } else if (up) {\n\t srcPath.splice(i, 1);\n\t up--;\n\t }\n\t }\n\t\n\t // if the path is allowed to go above the root, restore leading ..s\n\t if (!mustEndAbs && !removeAllDots) {\n\t for (; up--; up) {\n\t srcPath.unshift('..');\n\t }\n\t }\n\t\n\t if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n\t srcPath.unshift('');\n\t }\n\t\n\t if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') {\n\t srcPath.push('');\n\t }\n\t\n\t var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/';\n\t\n\t // put the host back\n\t if (psychotic) {\n\t result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n\t //occationaly the auth can get stuck only in host\n\t //this especialy happens in cases like\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\t if (authInHost) {\n\t result.auth = authInHost.shift();\n\t result.host = result.hostname = authInHost.shift();\n\t }\n\t }\n\t\n\t mustEndAbs = mustEndAbs || result.host && srcPath.length;\n\t\n\t if (mustEndAbs && !isAbsolute) {\n\t srcPath.unshift('');\n\t }\n\t\n\t if (!srcPath.length) {\n\t result.pathname = null;\n\t result.path = null;\n\t } else {\n\t result.pathname = srcPath.join('/');\n\t }\n\t\n\t //to support request.http\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\n\t result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n\t }\n\t result.auth = relative.auth || result.auth;\n\t result.slashes = result.slashes || relative.slashes;\n\t result.href = result.format();\n\t return result;\n\t};\n\t\n\tUrl.prototype.parseHost = function () {\n\t var host = this.host;\n\t var port = portPattern.exec(host);\n\t if (port) {\n\t port = port[0];\n\t if (port !== ':') {\n\t this.port = port.substr(1);\n\t }\n\t host = host.substr(0, host.length - port.length);\n\t }\n\t if (host) this.hostname = host;\n\t};\n\t\n\tfunction isString(arg) {\n\t return typeof arg === \"string\";\n\t}\n\t\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\t\n\tfunction isNull(arg) {\n\t return arg === null;\n\t}\n\tfunction isNullOrUndefined(arg) {\n\t return arg == null;\n\t}\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */\n\t'use strict';\n\t\n\t;(function (root) {\n\t\n\t\t/** Detect free variables */\n\t\tvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\t\tvar freeModule = typeof module == 'object' && module && !module.nodeType && module;\n\t\tvar freeGlobal = typeof global == 'object' && global;\n\t\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n\t\t\troot = freeGlobal;\n\t\t}\n\t\n\t\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\t\tvar punycode,\n\t\t \n\t\n\t\t/** Highest positive signed 32-bit float value */\n\t\tmaxInt = 2147483647,\n\t\t // aka. 0x7FFFFFFF or 2^31-1\n\t\n\t\t/** Bootstring parameters */\n\t\tbase = 36,\n\t\t tMin = 1,\n\t\t tMax = 26,\n\t\t skew = 38,\n\t\t damp = 700,\n\t\t initialBias = 72,\n\t\t initialN = 128,\n\t\t // 0x80\n\t\tdelimiter = '-',\n\t\t // '\\x2D'\n\t\n\t\t/** Regular expressions */\n\t\tregexPunycode = /^xn--/,\n\t\t regexNonASCII = /[^\\x20-\\x7E]/,\n\t\t // unprintable ASCII chars + non-ASCII chars\n\t\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n\t\t // RFC 3490 separators\n\t\n\t\t/** Error messages */\n\t\terrors = {\n\t\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t\t'invalid-input': 'Invalid input'\n\t\t},\n\t\t \n\t\n\t\t/** Convenience shortcuts */\n\t\tbaseMinusTMin = base - tMin,\n\t\t floor = Math.floor,\n\t\t stringFromCharCode = String.fromCharCode,\n\t\t \n\t\n\t\t/** Temporary variable */\n\t\tkey;\n\t\n\t\t/*--------------------------------------------------------------------------*/\n\t\n\t\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\t\tfunction error(type) {\n\t\t\tthrow RangeError(errors[type]);\n\t\t}\n\t\n\t\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\t\tfunction map(array, fn) {\n\t\t\tvar length = array.length;\n\t\t\tvar result = [];\n\t\t\twhile (length--) {\n\t\t\t\tresult[length] = fn(array[length]);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\n\t\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\t\tfunction mapDomain(string, fn) {\n\t\t\tvar parts = string.split('@');\n\t\t\tvar result = '';\n\t\t\tif (parts.length > 1) {\n\t\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\t\tresult = parts[0] + '@';\n\t\t\t\tstring = parts[1];\n\t\t\t}\n\t\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\t\tvar labels = string.split('.');\n\t\t\tvar encoded = map(labels, fn).join('.');\n\t\t\treturn result + encoded;\n\t\t}\n\t\n\t\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\t\tfunction ucs2decode(string) {\n\t\t\tvar output = [],\n\t\t\t counter = 0,\n\t\t\t length = string.length,\n\t\t\t value,\n\t\t\t extra;\n\t\t\twhile (counter < length) {\n\t\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t\t// low surrogate\n\t\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\t\toutput.push(value);\n\t\t\t\t\t\tcounter--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\n\t\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\t\tfunction ucs2encode(array) {\n\t\t\treturn map(array, function (value) {\n\t\t\t\tvar output = '';\n\t\t\t\tif (value > 0xFFFF) {\n\t\t\t\t\tvalue -= 0x10000;\n\t\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t\t}\n\t\t\t\toutput += stringFromCharCode(value);\n\t\t\t\treturn output;\n\t\t\t}).join('');\n\t\t}\n\t\n\t\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\t\tfunction basicToDigit(codePoint) {\n\t\t\tif (codePoint - 48 < 10) {\n\t\t\t\treturn codePoint - 22;\n\t\t\t}\n\t\t\tif (codePoint - 65 < 26) {\n\t\t\t\treturn codePoint - 65;\n\t\t\t}\n\t\t\tif (codePoint - 97 < 26) {\n\t\t\t\treturn codePoint - 97;\n\t\t\t}\n\t\t\treturn base;\n\t\t}\n\t\n\t\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\t\tfunction digitToBasic(digit, flag) {\n\t\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t\t// 26..35 map to ASCII 0..9\n\t\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t\t}\n\t\n\t\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\t\tfunction adapt(delta, numPoints, firstTime) {\n\t\t\tvar k = 0;\n\t\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\t\tdelta += floor(delta / numPoints);\n\t\t\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t\t}\n\t\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t\t}\n\t\n\t\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\t\tfunction decode(input) {\n\t\t\t// Don't use UCS-2\n\t\t\tvar output = [],\n\t\t\t inputLength = input.length,\n\t\t\t out,\n\t\t\t i = 0,\n\t\t\t n = initialN,\n\t\t\t bias = initialBias,\n\t\t\t basic,\n\t\t\t j,\n\t\t\t index,\n\t\t\t oldi,\n\t\t\t w,\n\t\t\t k,\n\t\t\t digit,\n\t\t\t t,\n\t\t\t \n\t\t\t/** Cached calculation results */\n\t\t\tbaseMinusT;\n\t\n\t\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t\t// the first basic code points to the output.\n\t\n\t\t\tbasic = input.lastIndexOf(delimiter);\n\t\t\tif (basic < 0) {\n\t\t\t\tbasic = 0;\n\t\t\t}\n\t\n\t\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t\t// if it's not a basic code point\n\t\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\t\terror('not-basic');\n\t\t\t\t}\n\t\t\t\toutput.push(input.charCodeAt(j));\n\t\t\t}\n\t\n\t\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t\t// points were copied; start at the beginning otherwise.\n\t\n\t\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\t\n\t\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t\t// value at the end to obtain `delta`.\n\t\t\t\tfor (oldi = i, w = 1, k = base;; /* no condition */k += base) {\n\t\n\t\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\t\terror('invalid-input');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\t\n\t\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += digit * w;\n\t\t\t\t\tt = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\n\t\t\t\t\tif (digit < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tw *= baseMinusT;\n\t\t\t\t}\n\t\n\t\t\t\tout = output.length + 1;\n\t\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\t\n\t\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\t\n\t\t\t\tn += floor(i / out);\n\t\t\t\ti %= out;\n\t\n\t\t\t\t// Insert `n` at position `i` of the output\n\t\t\t\toutput.splice(i++, 0, n);\n\t\t\t}\n\t\n\t\t\treturn ucs2encode(output);\n\t\t}\n\t\n\t\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\t\tfunction encode(input) {\n\t\t\tvar n,\n\t\t\t delta,\n\t\t\t handledCPCount,\n\t\t\t basicLength,\n\t\t\t bias,\n\t\t\t j,\n\t\t\t m,\n\t\t\t q,\n\t\t\t k,\n\t\t\t t,\n\t\t\t currentValue,\n\t\t\t output = [],\n\t\t\t \n\t\t\t/** `inputLength` will hold the number of code points in `input`. */\n\t\t\tinputLength,\n\t\t\t \n\t\t\t/** Cached calculation results */\n\t\t\thandledCPCountPlusOne,\n\t\t\t baseMinusT,\n\t\t\t qMinusT;\n\t\n\t\t\t// Convert the input in UCS-2 to Unicode\n\t\t\tinput = ucs2decode(input);\n\t\n\t\t\t// Cache the length\n\t\t\tinputLength = input.length;\n\t\n\t\t\t// Initialize the state\n\t\t\tn = initialN;\n\t\t\tdelta = 0;\n\t\t\tbias = initialBias;\n\t\n\t\t\t// Handle the basic code points\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue < 0x80) {\n\t\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\thandledCPCount = basicLength = output.length;\n\t\n\t\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t\t// `basicLength` is the number of basic code points.\n\t\n\t\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\t\tif (basicLength) {\n\t\t\t\toutput.push(delimiter);\n\t\t\t}\n\t\n\t\t\t// Main encoding loop:\n\t\t\twhile (handledCPCount < inputLength) {\n\t\n\t\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t\t// larger one:\n\t\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\t\tm = currentValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t\t// but guard against overflow\n\t\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\t\n\t\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\t\tn = m;\n\t\n\t\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\n\t\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\t\tfor (q = delta, k = base;; /* no condition */k += base) {\n\t\t\t\t\t\t\tt = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\t\tdelta = 0;\n\t\t\t\t\t\t++handledCPCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t++delta;\n\t\t\t\t++n;\n\t\t\t}\n\t\t\treturn output.join('');\n\t\t}\n\t\n\t\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\t\tfunction toUnicode(input) {\n\t\t\treturn mapDomain(input, function (string) {\n\t\t\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t\t\t});\n\t\t}\n\t\n\t\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\t\tfunction toASCII(input) {\n\t\t\treturn mapDomain(input, function (string) {\n\t\t\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t\t\t});\n\t\t}\n\t\n\t\t/*--------------------------------------------------------------------------*/\n\t\n\t\t/** Define the public API */\n\t\tpunycode = {\n\t\t\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t\t\t'version': '1.3.2',\n\t\t\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t\t\t'ucs2': {\n\t\t\t\t'decode': ucs2decode,\n\t\t\t\t'encode': ucs2encode\n\t\t\t},\n\t\t\t'decode': decode,\n\t\t\t'encode': encode,\n\t\t\t'toASCII': toASCII,\n\t\t\t'toUnicode': toUnicode\n\t\t};\n\t\n\t\t/** Expose `punycode` */\n\t\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t\t// like the following:\n\t\tif (true) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\t\treturn punycode;\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else if (freeExports && freeModule) {\n\t\t\tif (module.exports == freeExports) {\n\t\t\t\t// in Node.js or RingoJS v0.8.0+\n\t\t\t\tfreeModule.exports = punycode;\n\t\t\t} else {\n\t\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\t\tfor (key in punycode) {\n\t\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// in Rhino or a web browser\n\t\t\troot.punycode = punycode;\n\t\t}\n\t})(undefined);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)(module), (function() { return this; }())))\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (module) {\n\t\tif (!module.webpackPolyfill) {\n\t\t\tmodule.deprecate = function () {};\n\t\t\tmodule.paths = [];\n\t\t\t// module.parent = undefined by default\n\t\t\tmodule.children = [];\n\t\t\tmodule.webpackPolyfill = 1;\n\t\t}\n\t\treturn module;\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.decode = exports.parse = __webpack_require__(9);\n\texports.encode = exports.stringify = __webpack_require__(10);\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\t// If obj.hasOwnProperty has been overridden, then calling\n\t// obj.hasOwnProperty(prop) will break.\n\t// See: https://github.com/joyent/node/issues/1707\n\tfunction hasOwnProperty(obj, prop) {\n\t return Object.prototype.hasOwnProperty.call(obj, prop);\n\t}\n\t\n\tmodule.exports = function (qs, sep, eq, options) {\n\t sep = sep || '&';\n\t eq = eq || '=';\n\t var obj = {};\n\t\n\t if (typeof qs !== 'string' || qs.length === 0) {\n\t return obj;\n\t }\n\t\n\t var regexp = /\\+/g;\n\t qs = qs.split(sep);\n\t\n\t var maxKeys = 1000;\n\t if (options && typeof options.maxKeys === 'number') {\n\t maxKeys = options.maxKeys;\n\t }\n\t\n\t var len = qs.length;\n\t // maxKeys <= 0 means that we should not limit keys count\n\t if (maxKeys > 0 && len > maxKeys) {\n\t len = maxKeys;\n\t }\n\t\n\t for (var i = 0; i < len; ++i) {\n\t var x = qs[i].replace(regexp, '%20'),\n\t idx = x.indexOf(eq),\n\t kstr,\n\t vstr,\n\t k,\n\t v;\n\t\n\t if (idx >= 0) {\n\t kstr = x.substr(0, idx);\n\t vstr = x.substr(idx + 1);\n\t } else {\n\t kstr = x;\n\t vstr = '';\n\t }\n\t\n\t k = decodeURIComponent(kstr);\n\t v = decodeURIComponent(vstr);\n\t\n\t if (!hasOwnProperty(obj, k)) {\n\t obj[k] = v;\n\t } else if (Array.isArray(obj[k])) {\n\t obj[k].push(v);\n\t } else {\n\t obj[k] = [obj[k], v];\n\t }\n\t }\n\t\n\t return obj;\n\t};\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\tvar stringifyPrimitive = function stringifyPrimitive(v) {\n\t switch (typeof v) {\n\t case 'string':\n\t return v;\n\t\n\t case 'boolean':\n\t return v ? 'true' : 'false';\n\t\n\t case 'number':\n\t return isFinite(v) ? v : '';\n\t\n\t default:\n\t return '';\n\t }\n\t};\n\t\n\tmodule.exports = function (obj, sep, eq, name) {\n\t sep = sep || '&';\n\t eq = eq || '=';\n\t if (obj === null) {\n\t obj = undefined;\n\t }\n\t\n\t if (typeof obj === 'object') {\n\t return Object.keys(obj).map(function (k) {\n\t var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\t if (Array.isArray(obj[k])) {\n\t return obj[k].map(function (v) {\n\t return ks + encodeURIComponent(stringifyPrimitive(v));\n\t }).join(sep);\n\t } else {\n\t return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n\t }\n\t }).join(sep);\n\t }\n\t\n\t if (!name) return '';\n\t return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar helpers = __webpack_require__(12);\n\t\n\t/** @type ValidatorResult */\n\tvar ValidatorResult = helpers.ValidatorResult;\n\t/** @type SchemaError */\n\tvar SchemaError = helpers.SchemaError;\n\t\n\tvar attribute = {};\n\t\n\tattribute.ignoreProperties = {\n\t // informative properties\n\t 'id': true,\n\t 'default': true,\n\t 'description': true,\n\t 'title': true,\n\t // arguments to other properties\n\t 'exclusiveMinimum': true,\n\t 'exclusiveMaximum': true,\n\t 'additionalItems': true,\n\t // special-handled properties\n\t '$schema': true,\n\t '$ref': true,\n\t 'extends': true\n\t};\n\t\n\t/**\n\t * @name validators\n\t */\n\tvar validators = attribute.validators = {};\n\t\n\t/**\n\t * Validates whether the instance if of a certain type\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators.type = function validateType(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var types = schema.type instanceof Array ? schema.type : [schema.type];\n\t if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n\t var list = types.map(function (v) {\n\t return v.id && '<' + v.id + '>' || v + '';\n\t });\n\t result.addError({\n\t name: 'type',\n\t argument: list,\n\t message: \"is not of a type(s) \" + list\n\t });\n\t }\n\t return result;\n\t};\n\t\n\tfunction testSchema(instance, options, ctx, schema) {\n\t return this.validateSchema(instance, schema, options, ctx).valid;\n\t}\n\t\n\t/**\n\t * Validates whether the instance matches some of the given schemas\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators.anyOf = function validateAnyOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(schema.anyOf instanceof Array)) {\n\t throw new SchemaError(\"anyOf must be an array\");\n\t }\n\t if (!schema.anyOf.some(testSchema.bind(this, instance, options, ctx))) {\n\t var list = schema.anyOf.map(function (v, i) {\n\t return v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t });\n\t result.addError({\n\t name: 'anyOf',\n\t argument: list,\n\t message: \"is not any of \" + list.join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance matches every given schema\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null}\n\t */\n\tvalidators.allOf = function validateAllOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t if (!(schema.allOf instanceof Array)) {\n\t throw new SchemaError(\"allOf must be an array\");\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var self = this;\n\t schema.allOf.forEach(function (v, i) {\n\t var valid = self.validateSchema(instance, v, options, ctx);\n\t if (!valid.valid) {\n\t var msg = v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t result.addError({\n\t name: 'allOf',\n\t argument: { id: msg, length: valid.errors.length, valid: valid },\n\t message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:'\n\t });\n\t result.importErrors(valid);\n\t }\n\t });\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance matches exactly one of the given schemas\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null}\n\t */\n\tvalidators.oneOf = function validateOneOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t if (!(schema.oneOf instanceof Array)) {\n\t throw new SchemaError(\"oneOf must be an array\");\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var count = schema.oneOf.filter(testSchema.bind(this, instance, options, ctx)).length;\n\t var list = schema.oneOf.map(function (v, i) {\n\t return v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t });\n\t if (count !== 1) {\n\t result.addError({\n\t name: 'oneOf',\n\t argument: list,\n\t message: \"is not exactly one from \" + list.join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates properties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.properties = function validateProperties(instance, schema, options, ctx) {\n\t if (instance === undefined || !(instance instanceof Object)) return;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var properties = schema.properties || {};\n\t for (var property in properties) {\n\t var prop = (instance || undefined) && instance[property];\n\t var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Test a specific property within in instance against the additionalProperties schema attribute\n\t * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n\t * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n\t * @private\n\t * @return {boolean}\n\t */\n\tfunction testAdditionalProperty(instance, schema, options, ctx, property, result) {\n\t if (schema.properties && schema.properties[property] !== undefined) {\n\t return;\n\t }\n\t if (schema.additionalProperties === false) {\n\t result.addError({\n\t name: 'additionalProperties',\n\t argument: property,\n\t message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\"\n\t });\n\t } else {\n\t var additionalProperties = schema.additionalProperties || {};\n\t var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t}\n\t\n\t/**\n\t * Validates patternProperties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.patternProperties = function validatePatternProperties(instance, schema, options, ctx) {\n\t if (instance === undefined) return;\n\t if (!this.types.object(instance)) return;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var patternProperties = schema.patternProperties || {};\n\t\n\t for (var property in instance) {\n\t var test = true;\n\t for (var pattern in patternProperties) {\n\t var expr = new RegExp(pattern);\n\t if (!expr.test(property)) {\n\t continue;\n\t }\n\t test = false;\n\t var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t if (test) {\n\t testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n\t }\n\t }\n\t\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates additionalProperties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.additionalProperties = function validateAdditionalProperties(instance, schema, options, ctx) {\n\t if (instance === undefined) return;\n\t if (!this.types.object(instance)) return;\n\t // if patternProperties is defined then we'll test when that one is called instead\n\t if (schema.patternProperties) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t for (var property in instance) {\n\t testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minProperties = function validateMinProperties(instance, schema, options, ctx) {\n\t if (!instance || typeof instance !== 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var keys = Object.keys(instance);\n\t if (!(keys.length >= schema.minProperties)) {\n\t result.addError({\n\t name: 'minProperties',\n\t argument: schema.minProperties,\n\t message: \"does not meet minimum property length of \" + schema.minProperties\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxProperties = function validateMaxProperties(instance, schema, options, ctx) {\n\t if (!instance || typeof instance !== 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var keys = Object.keys(instance);\n\t if (!(keys.length <= schema.maxProperties)) {\n\t result.addError({\n\t name: 'maxProperties',\n\t argument: schema.maxProperties,\n\t message: \"does not meet maximum property length of \" + schema.maxProperties\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates items when instance is an array\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.items = function validateItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var self = this;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance === undefined || !schema.items) {\n\t return result;\n\t }\n\t instance.every(function (value, i) {\n\t var items = schema.items instanceof Array ? schema.items[i] || schema.additionalItems : schema.items;\n\t if (items === undefined) {\n\t return true;\n\t }\n\t if (items === false) {\n\t result.addError({\n\t name: 'items',\n\t message: \"additionalItems not permitted\"\n\t });\n\t return false;\n\t }\n\t var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n\t if (res.instance !== result.instance[i]) result.instance[i] = res.instance;\n\t result.importErrors(res);\n\t return true;\n\t });\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minimum = function validateMinimum(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var valid = true;\n\t if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n\t valid = instance > schema.minimum;\n\t } else {\n\t valid = instance >= schema.minimum;\n\t }\n\t if (!valid) {\n\t result.addError({\n\t name: 'minimum',\n\t argument: schema.minimum,\n\t message: \"must have a minimum value of \" + schema.minimum\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maximum = function validateMaximum(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var valid;\n\t if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n\t valid = instance < schema.maximum;\n\t } else {\n\t valid = instance <= schema.maximum;\n\t }\n\t if (!valid) {\n\t result.addError({\n\t name: 'maximum',\n\t argument: schema.maximum,\n\t message: \"must have a maximum value of \" + schema.maximum\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates divisibleBy when the type of the instance value is a number.\n\t * Of course, this is susceptible to floating point error since it compares the floating points\n\t * and not the JSON byte sequences to arbitrary precision.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.divisibleBy = function validateDivisibleBy(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t\n\t if (schema.divisibleBy == 0) {\n\t throw new SchemaError(\"divisibleBy cannot be zero\");\n\t }\n\t\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance / schema.divisibleBy % 1) {\n\t result.addError({\n\t name: 'divisibleBy',\n\t argument: schema.divisibleBy,\n\t message: \"is not divisible by (multiple of) \" + JSON.stringify(schema.divisibleBy)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates divisibleBy when the type of the instance value is a number.\n\t * Of course, this is susceptible to floating point error since it compares the floating points\n\t * and not the JSON byte sequences to arbitrary precision.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.multipleOf = function validateMultipleOf(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t\n\t if (schema.multipleOf == 0) {\n\t throw new SchemaError(\"multipleOf cannot be zero\");\n\t }\n\t\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance / schema.multipleOf % 1) {\n\t result.addError({\n\t name: 'multipleOf',\n\t argument: schema.multipleOf,\n\t message: \"is not a multiple of (divisible by) \" + JSON.stringify(schema.multipleOf)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is present.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.required = function validateRequired(instance, schema, options, ctx) {\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance === undefined && schema.required === true) {\n\t result.addError({\n\t name: 'required',\n\t message: \"is required\"\n\t });\n\t } else if (instance && typeof instance === 'object' && Array.isArray(schema.required)) {\n\t schema.required.forEach(function (n) {\n\t if (instance[n] === undefined) {\n\t result.addError({\n\t name: 'required',\n\t argument: n,\n\t message: \"requires property \" + JSON.stringify(n)\n\t });\n\t }\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value matches the regular expression, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.pattern = function validatePattern(instance, schema, options, ctx) {\n\t if (typeof instance !== 'string') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!instance.match(schema.pattern)) {\n\t result.addError({\n\t name: 'pattern',\n\t argument: schema.pattern,\n\t message: \"does not match pattern \" + JSON.stringify(schema.pattern)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is of a certain defined format, when the instance value is a string.\n\t * The following format are supported:\n\t * - date-time\n\t * - date\n\t * - time\n\t * - ip-address\n\t * - ipv6\n\t * - uri\n\t * - color\n\t * - host-name\n\t * - alpha\n\t * - alpha-numeric\n\t * - utc-millisec\n\t * @param instance\n\t * @param schema\n\t * @param [options]\n\t * @param [ctx]\n\t * @return {String|null}\n\t */\n\tvalidators.format = function validateFormat(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!helpers.isFormat(instance, schema.format)) {\n\t result.addError({\n\t name: 'format',\n\t argument: schema.format,\n\t message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minLength = function validateMinLength(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length >= schema.minLength)) {\n\t result.addError({\n\t name: 'minLength',\n\t argument: schema.minLength,\n\t message: \"does not meet minimum length of \" + schema.minLength\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxLength = function validateMaxLength(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length <= schema.maxLength)) {\n\t result.addError({\n\t name: 'maxLength',\n\t argument: schema.maxLength,\n\t message: \"does not meet maximum length of \" + schema.maxLength\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minItems = function validateMinItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length >= schema.minItems)) {\n\t result.addError({\n\t name: 'minItems',\n\t argument: schema.minItems,\n\t message: \"does not meet minimum length of \" + schema.minItems\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxItems = function validateMaxItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length <= schema.maxItems)) {\n\t result.addError({\n\t name: 'maxItems',\n\t argument: schema.maxItems,\n\t message: \"does not meet maximum length of \" + schema.maxItems\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates that every item in an instance array is unique, when instance is an array\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.uniqueItems = function validateUniqueItems(instance, schema, options, ctx) {\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance instanceof Array)) {\n\t return result;\n\t }\n\t function testArrays(v, i, a) {\n\t for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n\t return false;\n\t }\n\t return true;\n\t }\n\t if (!instance.every(testArrays)) {\n\t result.addError({\n\t name: 'uniqueItems',\n\t message: \"contains duplicate item\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Deep compares arrays for duplicates\n\t * @param v\n\t * @param i\n\t * @param a\n\t * @private\n\t * @return {boolean}\n\t */\n\tfunction testArrays(v, i, a) {\n\t var j,\n\t len = a.length;\n\t for (j = i + 1, len; j < len; j++) {\n\t if (helpers.deepCompareStrict(v, a[j])) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\t\n\t/**\n\t * Validates whether there are no duplicates, when the instance is an Array.\n\t * @param instance\n\t * @return {String|null}\n\t */\n\tvalidators.uniqueItems = function validateUniqueItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!instance.every(testArrays)) {\n\t result.addError({\n\t name: 'uniqueItems',\n\t message: \"contains duplicate item\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validate for the presence of dependency properties, if the instance is an object.\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {null|ValidatorResult}\n\t */\n\tvalidators.dependencies = function validateDependencies(instance, schema, options, ctx) {\n\t if (!instance || typeof instance != 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t for (var property in schema.dependencies) {\n\t if (instance[property] === undefined) {\n\t continue;\n\t }\n\t var dep = schema.dependencies[property];\n\t var childContext = ctx.makeChild(dep, property);\n\t if (typeof dep == 'string') {\n\t dep = [dep];\n\t }\n\t if (dep instanceof Array) {\n\t dep.forEach(function (prop) {\n\t if (instance[prop] === undefined) {\n\t result.addError({\n\t // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n\t // Can we make these the same? Or should we create different error types?\n\t name: 'dependencies',\n\t argument: childContext.propertyPath,\n\t message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath\n\t });\n\t }\n\t });\n\t } else {\n\t var res = this.validateSchema(instance, dep, options, childContext);\n\t if (result.instance !== res.instance) result.instance = res.instance;\n\t if (res && res.errors.length) {\n\t result.addError({\n\t name: 'dependencies',\n\t argument: childContext.propertyPath,\n\t message: \"does not meet dependency required by \" + childContext.propertyPath\n\t });\n\t result.importErrors(res);\n\t }\n\t }\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is one of the enumerated values.\n\t *\n\t * @param instance\n\t * @param schema\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators['enum'] = function validateEnum(instance, schema, options, ctx) {\n\t if (!(schema['enum'] instanceof Array)) {\n\t throw new SchemaError(\"enum expects an array\", schema);\n\t }\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n\t result.addError({\n\t name: 'enum',\n\t argument: schema['enum'],\n\t message: \"is not one of enum values: \" + schema['enum'].join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance if of a prohibited type.\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {null|ValidatorResult}\n\t */\n\tvalidators.not = validators.disallow = function validateNot(instance, schema, options, ctx) {\n\t var self = this;\n\t if (instance === undefined) return null;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var notTypes = schema.not || schema.disallow;\n\t if (!notTypes) return null;\n\t if (!(notTypes instanceof Array)) notTypes = [notTypes];\n\t notTypes.forEach(function (type) {\n\t if (self.testType(instance, schema, options, ctx, type)) {\n\t var schemaId = type && type.id && '<' + type.id + '>' || type;\n\t result.addError({\n\t name: 'not',\n\t argument: schemaId,\n\t message: \"is of prohibited type \" + schemaId\n\t });\n\t }\n\t });\n\t return result;\n\t};\n\t\n\tmodule.exports = attribute;\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar uri = __webpack_require__(5);\n\t\n\tvar ValidationError = exports.ValidationError = function ValidationError(message, instance, schema, propertyPath, name, argument) {\n\t if (propertyPath) {\n\t this.property = propertyPath;\n\t }\n\t if (message) {\n\t this.message = message;\n\t }\n\t if (schema) {\n\t if (schema.id) {\n\t this.schema = schema.id;\n\t } else {\n\t this.schema = schema;\n\t }\n\t }\n\t if (instance) {\n\t this.instance = instance;\n\t }\n\t this.name = name;\n\t this.argument = argument;\n\t this.stack = this.toString();\n\t};\n\t\n\tValidationError.prototype.toString = function toString() {\n\t return this.property + ' ' + this.message;\n\t};\n\t\n\tvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n\t this.instance = instance;\n\t this.schema = schema;\n\t this.propertyPath = ctx.propertyPath;\n\t this.errors = [];\n\t this.throwError = options && options.throwError;\n\t};\n\t\n\tValidatorResult.prototype.addError = function addError(detail) {\n\t var err;\n\t if (typeof detail == 'string') {\n\t err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n\t } else {\n\t if (!detail) throw new Error('Missing error detail');\n\t if (!detail.message) throw new Error('Missing error message');\n\t if (!detail.name) throw new Error('Missing validator type');\n\t err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n\t }\n\t\n\t if (this.throwError) {\n\t throw err;\n\t }\n\t this.errors.push(err);\n\t return err;\n\t};\n\t\n\tValidatorResult.prototype.importErrors = function importErrors(res) {\n\t if (typeof res == 'string' || res && res.validatorType) {\n\t this.addError(res);\n\t } else if (res && res.errors) {\n\t var errs = this.errors;\n\t res.errors.forEach(function (v) {\n\t errs.push(v);\n\t });\n\t }\n\t};\n\t\n\tValidatorResult.prototype.toString = function toString(res) {\n\t return this.errors.map(function (v, i) {\n\t return i + ': ' + v.toString() + '\\n';\n\t }).join('');\n\t};\n\t\n\tObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function get() {\n\t return !this.errors.length;\n\t } });\n\t\n\t/**\n\t * Describes a problem with a Schema which prevents validation of an instance\n\t * @name SchemaError\n\t * @constructor\n\t */\n\tvar SchemaError = exports.SchemaError = function SchemaError(msg, schema) {\n\t this.message = msg;\n\t this.schema = schema;\n\t Error.call(this, msg);\n\t Error.captureStackTrace(this, SchemaError);\n\t};\n\tSchemaError.prototype = Object.create(Error.prototype, { constructor: { value: SchemaError, enumerable: false },\n\t name: { value: 'SchemaError', enumerable: false }\n\t});\n\t\n\tvar SchemaContext = exports.SchemaContext = function SchemaContext(schema, options, propertyPath, base, schemas) {\n\t this.schema = schema;\n\t this.options = options;\n\t this.propertyPath = propertyPath;\n\t this.base = base;\n\t this.schemas = schemas;\n\t};\n\t\n\tSchemaContext.prototype.resolve = function resolve(target) {\n\t return uri.resolve(this.base, target);\n\t};\n\t\n\tSchemaContext.prototype.makeChild = function makeChild(schema, propertyName) {\n\t var propertyPath = propertyName === undefined ? this.propertyPath : this.propertyPath + makeSuffix(propertyName);\n\t var base = uri.resolve(this.base, schema.id || '');\n\t var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n\t if (schema.id && !ctx.schemas[base]) {\n\t ctx.schemas[base] = schema;\n\t }\n\t return ctx;\n\t};\n\t\n\tvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n\t 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([zZ]|[+-]\\d{2}:\\d{2})$/,\n\t 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/,\n\t 'time': /^\\d{2}:\\d{2}:\\d{2}$/,\n\t\n\t 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n\t 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n\t 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\t 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\t\n\t 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\t\n\t // hostname regex from: http://stackoverflow.com/a/1420225/5628\n\t 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\t 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\t\n\t 'alpha': /^[a-zA-Z]+$/,\n\t 'alphanumeric': /^[a-zA-Z0-9]+$/,\n\t 'utc-millisec': function utcMillisec(input) {\n\t return typeof input === 'string' && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n\t },\n\t 'regex': function regex(input) {\n\t var result = true;\n\t try {\n\t new RegExp(input);\n\t } catch (e) {\n\t result = false;\n\t }\n\t return result;\n\t },\n\t 'style': /\\s*(.+?):\\s*([^;]+);?/g,\n\t 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n\t};\n\t\n\tFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\n\tFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\n\tFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\t\n\texports.isFormat = function isFormat(input, format) {\n\t if (FORMAT_REGEXPS[format] !== undefined) {\n\t if (FORMAT_REGEXPS[format] instanceof RegExp) {\n\t return FORMAT_REGEXPS[format].test(input);\n\t }\n\t if (typeof FORMAT_REGEXPS[format] === 'function') {\n\t return FORMAT_REGEXPS[format](input);\n\t }\n\t }\n\t return false;\n\t};\n\t\n\tvar makeSuffix = exports.makeSuffix = function makeSuffix(key) {\n\t key = key.toString();\n\t // This function could be capable of outputting valid a ECMAScript string, but the\n\t // resulting code for testing which form to use would be tens of thousands of characters long\n\t // That means this will use the name form for some illegal forms\n\t if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n\t return '.' + key;\n\t }\n\t if (key.match(/^\\d+$/)) {\n\t return '[' + key + ']';\n\t }\n\t return '[' + JSON.stringify(key) + ']';\n\t};\n\t\n\texports.deepCompareStrict = function deepCompareStrict(a, b) {\n\t if (typeof a !== typeof b) {\n\t return false;\n\t }\n\t if (a instanceof Array) {\n\t if (!(b instanceof Array)) {\n\t return false;\n\t }\n\t if (a.length !== b.length) {\n\t return false;\n\t }\n\t return a.every(function (v, i) {\n\t return deepCompareStrict(a[i], b[i]);\n\t });\n\t }\n\t if (typeof a === 'object') {\n\t if (!a || !b) {\n\t return a === b;\n\t }\n\t var aKeys = Object.keys(a);\n\t var bKeys = Object.keys(b);\n\t if (aKeys.length !== bKeys.length) {\n\t return false;\n\t }\n\t return aKeys.every(function (v) {\n\t return deepCompareStrict(a[v], b[v]);\n\t });\n\t }\n\t return a === b;\n\t};\n\t\n\tmodule.exports.deepMerge = function deepMerge(target, src) {\n\t var array = Array.isArray(src);\n\t var dst = array && [] || {};\n\t\n\t if (array) {\n\t target = target || [];\n\t dst = dst.concat(target);\n\t src.forEach(function (e, i) {\n\t if (typeof e === 'object') {\n\t dst[i] = deepMerge(target[i], e);\n\t } else {\n\t if (target.indexOf(e) === -1) {\n\t dst.push(e);\n\t }\n\t }\n\t });\n\t } else {\n\t if (target && typeof target === 'object') {\n\t Object.keys(target).forEach(function (key) {\n\t dst[key] = target[key];\n\t });\n\t }\n\t Object.keys(src).forEach(function (key) {\n\t if (typeof src[key] !== 'object' || !src[key]) {\n\t dst[key] = src[key];\n\t } else {\n\t if (!target[key]) {\n\t dst[key] = src[key];\n\t } else {\n\t dst[key] = deepMerge(target[key], src[key]);\n\t }\n\t }\n\t });\n\t }\n\t\n\t return dst;\n\t};\n\t\n\t/**\n\t * Validates instance against the provided schema\n\t * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n\t * @param o\n\t * @param s The path to walk o along\n\t * @return any\n\t */\n\texports.objectGetPath = function objectGetPath(o, s) {\n\t var parts = s.split('/').slice(1);\n\t var k;\n\t while (typeof (k = parts.shift()) == 'string') {\n\t var n = decodeURIComponent(k.replace(/~0/, '~').replace(/~1/g, '/'));\n\t if (!(n in o)) return;\n\t o = o[n];\n\t }\n\t return o;\n\t};\n\t\n\t/**\n\t * Accept an Array of property names and return a JSON Pointer URI fragment\n\t * @param Array a\n\t * @return {String}\n\t */\n\texports.encodePath = function encodePointer(a) {\n\t // ~ must be encoded explicitly because hacks\n\t // the slash is encoded by encodeURIComponent\n\t return a.map(function (v) {\n\t return '/' + encodeURIComponent(v).replace(/~/g, '%7E');\n\t }).join('');\n\t};\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _ArrayField = __webpack_require__(14);\n\t\n\tvar _ArrayField2 = _interopRequireDefault(_ArrayField);\n\t\n\tvar _BooleanField = __webpack_require__(22);\n\t\n\tvar _BooleanField2 = _interopRequireDefault(_BooleanField);\n\t\n\tvar _NumberField = __webpack_require__(24);\n\t\n\tvar _NumberField2 = _interopRequireDefault(_NumberField);\n\t\n\tvar _ObjectField = __webpack_require__(27);\n\t\n\tvar _ObjectField2 = _interopRequireDefault(_ObjectField);\n\t\n\tvar _StringField = __webpack_require__(25);\n\t\n\tvar _StringField2 = _interopRequireDefault(_StringField);\n\t\n\tvar _UnsupportedField = __webpack_require__(28);\n\t\n\tvar _UnsupportedField2 = _interopRequireDefault(_UnsupportedField);\n\t\n\tvar REQUIRED_FIELD_SYMBOL = \"*\";\n\tvar COMPONENT_TYPES = {\n\t \"array\": _ArrayField2[\"default\"],\n\t \"boolean\": _BooleanField2[\"default\"],\n\t \"date-time\": _StringField2[\"default\"],\n\t \"integer\": _NumberField2[\"default\"],\n\t \"number\": _NumberField2[\"default\"],\n\t \"object\": _ObjectField2[\"default\"],\n\t \"string\": _StringField2[\"default\"]\n\t};\n\t\n\tfunction getLabel(label, required) {\n\t if (!label) {\n\t return null;\n\t }\n\t if (required) {\n\t return label + REQUIRED_FIELD_SYMBOL;\n\t }\n\t return label;\n\t}\n\t\n\tfunction getContent(_ref) {\n\t var type = _ref.type;\n\t var label = _ref.label;\n\t var required = _ref.required;\n\t var children = _ref.children;\n\t\n\t if ([\"object\", \"array\"].indexOf(type) !== -1) {\n\t return children;\n\t }\n\t return _react2[\"default\"].createElement(\n\t \"label\",\n\t null,\n\t getLabel(label, required),\n\t children\n\t );\n\t}\n\t\n\tfunction Wrapper(props) {\n\t var type = props.type;\n\t var classNames = props.classNames;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field field-\" + type + \" \" + classNames },\n\t getContent(props)\n\t );\n\t}\n\t\n\tif (false) {\n\t Wrapper.propTypes = {\n\t type: _react.PropTypes.string.isRequired,\n\t label: _react.PropTypes.string,\n\t required: _react.PropTypes.bool,\n\t children: _react2[\"default\"].PropTypes.node.isRequired,\n\t classNames: _react2[\"default\"].PropTypes.string\n\t };\n\t}\n\t\n\tWrapper.defaultProps = {\n\t classNames: \"\"\n\t};\n\t\n\tfunction SchemaField(props) {\n\t var schema = props.schema;\n\t var uiSchema = props.uiSchema;\n\t var name = props.name;\n\t var required = props.required;\n\t\n\t var FieldComponent = COMPONENT_TYPES[schema.type] || _UnsupportedField2[\"default\"];\n\t return _react2[\"default\"].createElement(\n\t Wrapper,\n\t {\n\t label: schema.title || name,\n\t required: required,\n\t type: schema.type,\n\t classNames: uiSchema.classNames },\n\t _react2[\"default\"].createElement(FieldComponent, props)\n\t );\n\t}\n\t\n\tSchemaField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\tif (false) {\n\t SchemaField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object\n\t };\n\t}\n\t\n\texports[\"default\"] = SchemaField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(15);\n\t\n\tvar ArrayField = (function (_Component) {\n\t _inherits(ArrayField, _Component);\n\t\n\t _createClass(ArrayField, null, [{\n\t key: \"defaultProps\",\n\t value: {\n\t uiSchema: {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function ArrayField(props) {\n\t _classCallCheck(this, ArrayField);\n\t\n\t _get(Object.getPrototypeOf(ArrayField.prototype), \"constructor\", this).call(this, props);\n\t this.state = this.getStateFromProps(props);\n\t }\n\t\n\t _createClass(ArrayField, [{\n\t key: \"componentWillReceiveProps\",\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.getStateFromProps(nextProps));\n\t }\n\t }, {\n\t key: \"getStateFromProps\",\n\t value: function getStateFromProps(props) {\n\t var formData = Array.isArray(props.formData) ? props.formData : null;\n\t return { items: formData || (0, _utils.getDefaultFormState)(props.schema) || [] };\n\t }\n\t }, {\n\t key: \"isItemRequired\",\n\t value: function isItemRequired(itemsSchema) {\n\t return itemsSchema.type === \"string\" && itemsSchema.minLength > 0;\n\t }\n\t }, {\n\t key: \"asyncSetState\",\n\t value: function asyncSetState(state, options) {\n\t var _this = this;\n\t\n\t // ensure state is propagated to parent component when it's actually set\n\t this.setState(state, function (_) {\n\t return _this.props.onChange(_this.state.items, options);\n\t });\n\t }\n\t }, {\n\t key: \"onAddClick\",\n\t value: function onAddClick(event) {\n\t event.preventDefault();\n\t var items = this.state.items;\n\t var schema = this.props.schema;\n\t\n\t this.asyncSetState({\n\t items: items.concat((0, _utils.getDefaultFormState)(schema.items))\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"onDropClick\",\n\t value: function onDropClick(index, event) {\n\t event.preventDefault();\n\t this.asyncSetState({\n\t items: this.state.items.filter(function (_, i) {\n\t return i !== index;\n\t })\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"onChange\",\n\t value: function onChange(index, value) {\n\t this.asyncSetState({\n\t items: this.state.items.map(function (item, i) {\n\t return index === i ? value : item;\n\t })\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t var name = _props.name;\n\t\n\t var title = schema.title || name;\n\t var items = this.state.items;\n\t\n\t var SchemaField = this.props.registry.SchemaField;\n\t return _react2[\"default\"].createElement(\n\t \"fieldset\",\n\t {\n\t className: \"field field-array field-array-of-\" + schema.items.type },\n\t title ? _react2[\"default\"].createElement(\n\t \"legend\",\n\t null,\n\t title\n\t ) : null,\n\t schema.description ? _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-description\" },\n\t schema.description\n\t ) : null,\n\t _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"array-item-list\" },\n\t items.map(function (item, index) {\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { key: index },\n\t _react2[\"default\"].createElement(SchemaField, {\n\t schema: schema.items,\n\t uiSchema: uiSchema.items,\n\t formData: items[index],\n\t required: _this2.isItemRequired(schema.items),\n\t onChange: _this2.onChange.bind(_this2, index),\n\t registry: _this2.props.registry }),\n\t _react2[\"default\"].createElement(\n\t \"p\",\n\t { className: \"array-item-remove\" },\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"button\",\n\t onClick: _this2.onDropClick.bind(_this2, index) },\n\t \"-\"\n\t )\n\t )\n\t );\n\t })\n\t ),\n\t _react2[\"default\"].createElement(\n\t \"p\",\n\t { className: \"array-item-add\" },\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"button\", onClick: this.onAddClick.bind(this) },\n\t \"+\"\n\t )\n\t )\n\t );\n\t }\n\t }, {\n\t key: \"itemTitle\",\n\t get: function get() {\n\t var schema = this.props.schema;\n\t\n\t return schema.items.title || schema.items.description || \"Item\";\n\t }\n\t }]);\n\t\n\t return ArrayField;\n\t})(_react.Component);\n\t\n\tif (false) {\n\t ArrayField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.array,\n\t registry: _react.PropTypes.shape({\n\t SchemaField: _react.PropTypes.func.isRequired,\n\t TitleField: _react.PropTypes.func.isRequired\n\t })\n\t };\n\t}\n\t\n\texports[\"default\"] = ArrayField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.defaultTypeValue = defaultTypeValue;\n\texports.defaultFieldValue = defaultFieldValue;\n\texports.getAlternativeWidget = getAlternativeWidget;\n\texports.getDefaultFormState = getDefaultFormState;\n\texports.asNumber = asNumber;\n\texports.orderProperties = orderProperties;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _componentsWidgetsPasswordWidget = __webpack_require__(16);\n\t\n\tvar _componentsWidgetsPasswordWidget2 = _interopRequireDefault(_componentsWidgetsPasswordWidget);\n\t\n\tvar _componentsWidgetsRadioWidget = __webpack_require__(17);\n\t\n\tvar _componentsWidgetsRadioWidget2 = _interopRequireDefault(_componentsWidgetsRadioWidget);\n\t\n\tvar _componentsWidgetsUpDownWidget = __webpack_require__(18);\n\t\n\tvar _componentsWidgetsUpDownWidget2 = _interopRequireDefault(_componentsWidgetsUpDownWidget);\n\t\n\tvar _componentsWidgetsRangeWidget = __webpack_require__(19);\n\t\n\tvar _componentsWidgetsRangeWidget2 = _interopRequireDefault(_componentsWidgetsRangeWidget);\n\t\n\tvar _componentsWidgetsSelectWidget = __webpack_require__(20);\n\t\n\tvar _componentsWidgetsSelectWidget2 = _interopRequireDefault(_componentsWidgetsSelectWidget);\n\t\n\tvar _componentsWidgetsTextareaWidget = __webpack_require__(21);\n\t\n\tvar _componentsWidgetsTextareaWidget2 = _interopRequireDefault(_componentsWidgetsTextareaWidget);\n\t\n\tvar altWidgetMap = {\n\t boolean: {\n\t radio: _componentsWidgetsRadioWidget2[\"default\"],\n\t select: _componentsWidgetsSelectWidget2[\"default\"]\n\t },\n\t string: {\n\t password: _componentsWidgetsPasswordWidget2[\"default\"],\n\t radio: _componentsWidgetsRadioWidget2[\"default\"],\n\t select: _componentsWidgetsSelectWidget2[\"default\"],\n\t textarea: _componentsWidgetsTextareaWidget2[\"default\"]\n\t },\n\t number: {\n\t updown: _componentsWidgetsUpDownWidget2[\"default\"],\n\t range: _componentsWidgetsRangeWidget2[\"default\"]\n\t },\n\t integer: {\n\t updown: _componentsWidgetsUpDownWidget2[\"default\"],\n\t range: _componentsWidgetsRangeWidget2[\"default\"]\n\t }\n\t};\n\t\n\tfunction defaultTypeValue(type) {\n\t switch (type) {\n\t case \"array\":\n\t return [];\n\t case \"boolean\":\n\t return false;\n\t case \"date-time\":\n\t return \"\";\n\t case \"number\":\n\t return 0;\n\t case \"object\":\n\t return {};\n\t case \"string\":\n\t return \"\";\n\t default:\n\t return undefined;\n\t }\n\t}\n\t\n\tfunction defaultFieldValue(formData, schema) {\n\t return formData === null ? defaultTypeValue(schema.type) : formData;\n\t}\n\t\n\tfunction getAlternativeWidget(type, widget) {\n\t if (typeof widget === \"function\") {\n\t return widget;\n\t }\n\t if (typeof widget !== \"string\") {\n\t throw new Error(\"Unsupported widget definition: \" + typeof widget);\n\t }\n\t if (!altWidgetMap.hasOwnProperty(type)) {\n\t throw new Error(\"No alternative widget for type \" + type);\n\t }\n\t if (!altWidgetMap[type].hasOwnProperty(widget)) {\n\t throw new Error(\"No alternative widget \\\"\" + widget + \"\\\" for type \" + type);\n\t }\n\t return altWidgetMap[type][widget];\n\t}\n\t\n\tfunction getDefaultFormState(schema) {\n\t if (typeof schema !== \"object\") {\n\t throw new Error(\"Invalid schema: \" + schema);\n\t }\n\t if (\"default\" in schema) {\n\t return schema[\"default\"];\n\t }\n\t if (schema.type === \"object\") {\n\t return Object.keys(schema.properties).reduce(function (acc, key) {\n\t acc[key] = getDefaultFormState(schema.properties[key]);\n\t return acc;\n\t }, {});\n\t }\n\t return defaultTypeValue(schema.type);\n\t}\n\t\n\tfunction asNumber(value) {\n\t var n = Number(value);\n\t var valid = typeof n === \"number\" && !Number.isNaN(n);\n\t return valid ? n : value;\n\t}\n\t\n\tfunction orderProperties(properties, order) {\n\t if (!Array.isArray(order)) {\n\t return properties;\n\t }\n\t if (order.length !== properties.length) {\n\t throw new Error(\"uiSchema order list length should match object properties length\");\n\t }\n\t var fingerprint = function fingerprint(arr) {\n\t return [].slice.call(arr).sort().toString();\n\t };\n\t if (fingerprint(order) !== fingerprint(properties)) {\n\t throw new Error(\"uiSchema order list does not match object properties list\");\n\t }\n\t return order;\n\t}\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction PasswordWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"input\", { type: \"password\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t } });\n\t}\n\t\n\tif (false) {\n\t PasswordWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t defaultValue: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = PasswordWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction RadioWidget(_ref) {\n\t var schema = _ref.schema;\n\t var options = _ref.options;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t // Generating a unique field name to identify this set of radio buttons\n\t var name = Math.random().toString();\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-radio-group\" },\n\t options.map(function (option, i) {\n\t var checked = value !== undefined ? option === value : option === defaultValue;\n\t return _react2[\"default\"].createElement(\n\t \"label\",\n\t { key: i },\n\t _react2[\"default\"].createElement(\"input\", { type: \"radio\",\n\t name: name,\n\t value: option,\n\t checked: checked,\n\t placeholder: placeholder,\n\t onChange: function (_) {\n\t return onChange(option);\n\t } }),\n\t String(option)\n\t );\n\t })\n\t );\n\t}\n\t\n\tif (false) {\n\t RadioWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t options: _react.PropTypes.array.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.any,\n\t defaultValue: _react.PropTypes.any,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\texports[\"default\"] = RadioWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction rangeSpec(schema) {\n\t var spec = {};\n\t if (schema.multipleOf) {\n\t spec.step = schema.multipleOf;\n\t }\n\t if (schema.minimum) {\n\t spec.min = schema.minimum;\n\t }\n\t if (schema.maximum) {\n\t spec.max = schema.maximum;\n\t }\n\t return spec;\n\t}\n\t\n\tfunction UpDownWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"input\", _extends({ type: \"number\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t }\n\t }, rangeSpec(schema)));\n\t}\n\t\n\tif (false) {\n\t UpDownWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t defaultValue: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = UpDownWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction rangeSpec(schema) {\n\t var spec = {};\n\t if (schema.multipleOf) {\n\t spec.step = schema.multipleOf;\n\t }\n\t if (schema.minimum) {\n\t spec.min = schema.minimum;\n\t }\n\t if (schema.maximum) {\n\t spec.max = schema.maximum;\n\t }\n\t return spec;\n\t}\n\t\n\tfunction RangeWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-range-wrapper\" },\n\t _react2[\"default\"].createElement(\"input\", _extends({ type: \"range\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t }\n\t }, rangeSpec(schema))),\n\t _react2[\"default\"].createElement(\n\t \"span\",\n\t { className: \"range-view\" },\n\t value\n\t )\n\t );\n\t}\n\t\n\tif (false) {\n\t RangeWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t defaultValue: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = RangeWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(15);\n\t\n\t/**\n\t * This is a silly limitation in the DOM where option change event values are\n\t * always retrieved as strings.\n\t */\n\tfunction processValue(type, value) {\n\t if (type === \"boolean\") {\n\t return value === \"true\";\n\t } else if (type === \"number\") {\n\t return (0, _utils.asNumber)(value);\n\t }\n\t return value;\n\t}\n\t\n\tfunction SelectWidget(_ref) {\n\t var schema = _ref.schema;\n\t var options = _ref.options;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"select\",\n\t {\n\t title: placeholder,\n\t value: value,\n\t defaultValue: defaultValue,\n\t onChange: function (event) {\n\t onChange(processValue(schema.type, event.target.value));\n\t } },\n\t options.map(function (option, i) {\n\t return _react2[\"default\"].createElement(\n\t \"option\",\n\t { key: i, value: option },\n\t String(option)\n\t );\n\t })\n\t );\n\t}\n\t\n\tif (false) {\n\t SelectWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t options: _react.PropTypes.array.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.any,\n\t defaultValue: _react.PropTypes.any,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = SelectWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction TextWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"textarea\", {\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t } });\n\t}\n\t\n\tif (false) {\n\t TextWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.string,\n\t defaultValue: _react.PropTypes.string,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = TextWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(15);\n\t\n\tvar _widgetsCheckboxWidget = __webpack_require__(23);\n\t\n\tvar _widgetsCheckboxWidget2 = _interopRequireDefault(_widgetsCheckboxWidget);\n\t\n\tfunction BooleanField(_ref) {\n\t var schema = _ref.schema;\n\t var name = _ref.name;\n\t var uiSchema = _ref.uiSchema;\n\t var formData = _ref.formData;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t var title = schema.title;\n\t var description = schema.description;\n\t\n\t var widget = uiSchema[\"ui:widget\"];\n\t var commonProps = {\n\t schema: schema,\n\t onChange: onChange,\n\t label: title || name,\n\t placeholder: description,\n\t defaultValue: schema[\"default\"],\n\t value: (0, _utils.defaultFieldValue)(formData, schema),\n\t required: required\n\t };\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(schema.type, widget);\n\t return _react2[\"default\"].createElement(Widget, _extends({ options: [true, false] }, commonProps));\n\t }\n\t return _react2[\"default\"].createElement(_widgetsCheckboxWidget2[\"default\"], commonProps);\n\t}\n\t\n\tif (false) {\n\t BooleanField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.bool,\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\tBooleanField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\texports[\"default\"] = BooleanField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction CheckboxWidget(_ref) {\n\t var schema = _ref.schema;\n\t var defaultValue = _ref.defaultValue;\n\t var value = _ref.value;\n\t var required = _ref.required;\n\t var placeholder = _ref.placeholder;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"input\", { type: \"checkbox\",\n\t title: placeholder,\n\t checked: value,\n\t defaultChecked: defaultValue,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.checked);\n\t } });\n\t}\n\tif (false) {\n\t CheckboxWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t onChange: _react.PropTypes.func,\n\t defaultValue: _react.PropTypes.bool,\n\t value: _react.PropTypes.bool,\n\t required: _react.PropTypes.bool,\n\t placeholder: _react.PropTypes.string\n\t };\n\t}\n\t\n\texports[\"default\"] = CheckboxWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(15);\n\t\n\tvar _StringField = __webpack_require__(25);\n\t\n\tvar _StringField2 = _interopRequireDefault(_StringField);\n\t\n\tfunction NumberField(props) {\n\t return _react2[\"default\"].createElement(_StringField2[\"default\"], _extends({}, props, {\n\t onChange: function (value) {\n\t return props.onChange((0, _utils.asNumber)(value));\n\t } }));\n\t}\n\t\n\tif (false) {\n\t NumberField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.number,\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\tNumberField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\texports[\"default\"] = NumberField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(15);\n\t\n\tvar _widgetsTextWidget = __webpack_require__(26);\n\t\n\tvar _widgetsTextWidget2 = _interopRequireDefault(_widgetsTextWidget);\n\t\n\tvar _widgetsSelectWidget = __webpack_require__(20);\n\t\n\tvar _widgetsSelectWidget2 = _interopRequireDefault(_widgetsSelectWidget);\n\t\n\tfunction StringField(_ref) {\n\t var schema = _ref.schema;\n\t var name = _ref.name;\n\t var uiSchema = _ref.uiSchema;\n\t var formData = _ref.formData;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t var title = schema.title;\n\t var description = schema.description;\n\t\n\t var widget = uiSchema[\"ui:widget\"];\n\t var commonProps = {\n\t schema: schema,\n\t label: title || name,\n\t placeholder: description,\n\t onChange: onChange,\n\t value: (0, _utils.defaultFieldValue)(formData, schema),\n\t required: required,\n\t defaultValue: schema[\"default\"]\n\t };\n\t if (Array.isArray(schema[\"enum\"])) {\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(schema.type, widget);\n\t return _react2[\"default\"].createElement(Widget, _extends({ options: schema[\"enum\"] }, commonProps));\n\t }\n\t return _react2[\"default\"].createElement(_widgetsSelectWidget2[\"default\"], _extends({ options: schema[\"enum\"] }, commonProps));\n\t }\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(schema.type, widget);\n\t return _react2[\"default\"].createElement(Widget, commonProps);\n\t }\n\t return _react2[\"default\"].createElement(_widgetsTextWidget2[\"default\"], commonProps);\n\t}\n\t\n\tif (false) {\n\t StringField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\tStringField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\texports[\"default\"] = StringField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction TextWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"input\", { type: \"text\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t } });\n\t}\n\t\n\tif (false) {\n\t TextWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t defaultValue: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = TextWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(15);\n\t\n\tvar ObjectField = (function (_Component) {\n\t _inherits(ObjectField, _Component);\n\t\n\t _createClass(ObjectField, null, [{\n\t key: \"defaultProps\",\n\t value: {\n\t uiSchema: {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function ObjectField(props) {\n\t _classCallCheck(this, ObjectField);\n\t\n\t _get(Object.getPrototypeOf(ObjectField.prototype), \"constructor\", this).call(this, props);\n\t this.state = this.getStateFromProps(props);\n\t }\n\t\n\t _createClass(ObjectField, [{\n\t key: \"componentWillReceiveProps\",\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.getStateFromProps(nextProps));\n\t }\n\t }, {\n\t key: \"getStateFromProps\",\n\t value: function getStateFromProps(props) {\n\t return props.formData || (0, _utils.getDefaultFormState)(props.schema) || {};\n\t }\n\t }, {\n\t key: \"isRequired\",\n\t value: function isRequired(name) {\n\t var schema = this.props.schema;\n\t return Array.isArray(schema.required) && schema.required.indexOf(name) !== -1;\n\t }\n\t }, {\n\t key: \"asyncSetState\",\n\t value: function asyncSetState(state) {\n\t var _this = this;\n\t\n\t // ensure state is propagated to parent component when it's actually set\n\t this.setState(state, function (_) {\n\t return _this.props.onChange(_this.state);\n\t });\n\t }\n\t }, {\n\t key: \"onChange\",\n\t value: function onChange(name, value) {\n\t this.asyncSetState(_defineProperty({}, name, value));\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t var name = _props.name;\n\t\n\t var title = schema.title || name;\n\t var _props$registry = this.props.registry;\n\t var SchemaField = _props$registry.SchemaField;\n\t var TitleField = _props$registry.TitleField;\n\t\n\t try {\n\t var orderedProperties = (0, _utils.orderProperties)(Object.keys(schema.properties), uiSchema[\"ui:order\"]);\n\t } catch (err) {\n\t return _react2[\"default\"].createElement(\n\t \"p\",\n\t { className: \"config-error\", style: { color: \"red\" } },\n\t \"Invalid \",\n\t name || \"root\",\n\t \" object field configuration:\",\n\t _react2[\"default\"].createElement(\n\t \"em\",\n\t null,\n\t err.message\n\t ),\n\t \".\"\n\t );\n\t }\n\t return _react2[\"default\"].createElement(\n\t \"fieldset\",\n\t null,\n\t title ? _react2[\"default\"].createElement(TitleField, { title: title }) : null,\n\t schema.description ? _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-description\" },\n\t schema.description\n\t ) : null,\n\t orderedProperties.map(function (name, index) {\n\t return _react2[\"default\"].createElement(SchemaField, { key: index,\n\t name: name,\n\t required: _this2.isRequired(name),\n\t schema: schema.properties[name],\n\t uiSchema: uiSchema[name],\n\t formData: _this2.state[name],\n\t onChange: _this2.onChange.bind(_this2, name),\n\t registry: _this2.props.registry });\n\t })\n\t );\n\t }\n\t }]);\n\t\n\t return ObjectField;\n\t})(_react.Component);\n\t\n\tif (false) {\n\t ObjectField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.object,\n\t required: _react.PropTypes.bool,\n\t registry: _react.PropTypes.shape({\n\t SchemaField: _react.PropTypes.func.isRequired,\n\t TitleField: _react.PropTypes.func.isRequired\n\t })\n\t };\n\t}\n\t\n\texports[\"default\"] = ObjectField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports[\"default\"] = UnsupportedField;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction UnsupportedField(_ref) {\n\t var schema = _ref.schema;\n\t\n\t // XXX render json as string so dev can inspect faulty subschema\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"unsupported-field\" },\n\t \"Unsupported field schema \",\n\t JSON.stringify(schema, null, 2),\n\t \".\"\n\t );\n\t}\n\t\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction TitleField(props) {\n\t return _react2[\"default\"].createElement(\n\t \"legend\",\n\t null,\n\t props.title\n\t );\n\t}\n\t\n\tif (false) {\n\t TitleField.propTypes = {\n\t title: _react.PropTypes.string\n\t };\n\t}\n\t\n\texports[\"default\"] = TitleField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports[\"default\"] = ErrorList;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction ErrorList(_ref) {\n\t var errors = _ref.errors;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"errors\" },\n\t _react2[\"default\"].createElement(\n\t \"h2\",\n\t null,\n\t \"Errors\"\n\t ),\n\t _react2[\"default\"].createElement(\n\t \"ul\",\n\t null,\n\t errors.map(function (error, i) {\n\t return _react2[\"default\"].createElement(\n\t \"li\",\n\t { key: i },\n\t error.stack\n\t );\n\t })\n\t )\n\t );\n\t}\n\t\n\tmodule.exports = exports[\"default\"];\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** react-jsonschema-form.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 584c5fc2395af6569fc5\n **/","import Form from \"./components/Form\";\n\nexport default Form;\n\n\n\n/** WEBPACK FOOTER **\n ** ./index.js\n **/","import React, { Component, PropTypes } from \"react\";\nimport { Validator } from \"jsonschema\";\nimport SchemaField from \"./fields/SchemaField\";\nimport TitleField from \"./fields/TitleField\";\nimport { getDefaultFormState } from \"../utils\";\nimport ErrorList from \"./ErrorList\";\n\nexport default class Form extends Component {\n static defaultProps = {\n uiSchema: {}\n }\n\n constructor(props) {\n super(props);\n this.state = this.getStateFromProps(props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState(this.getStateFromProps(nextProps));\n }\n\n getStateFromProps(props) {\n const edit = !!props.formData;\n const formData = props.formData || getDefaultFormState(props.schema) || null;\n return {\n status: \"initial\",\n formData,\n edit,\n errors: edit ? this.validate(formData) : []\n };\n }\n\n validate(formData) {\n const validator = new Validator();\n return validator.validate(formData, this.props.schema).errors;\n }\n\n renderErrors() {\n const {status, errors} = this.state;\n if (status !== \"editing\" && errors.length) {\n return ;\n }\n return null;\n }\n\n onChange(formData, options={validate: true}) {\n this.setState({\n status: \"editing\",\n formData,\n errors: options.validate ? this.validate(formData) : this.state.errors\n }, _ => {\n if (this.props.onChange) {\n this.props.onChange(this.state);\n }\n });\n }\n\n onSubmit(event) {\n event.preventDefault();\n this.setState({status: \"submitted\"});\n const errors = this.validate(this.state.formData);\n if (Object.keys(errors).length > 0) {\n this.setState({errors}, _ => {\n if (this.props.onError) {\n this.props.onError(errors);\n } else {\n console.error(\"Form validation failed\", errors);\n }\n });\n return;\n } else if (this.props.onSubmit) {\n this.props.onSubmit(this.state);\n }\n this.setState({status: \"initial\"});\n }\n\n getRegistry() {\n return {\n SchemaField: this.props.SchemaField || SchemaField,\n TitleField: this.props.TitleField || TitleField,\n };\n }\n\n render() {\n const {children, schema, uiSchema} = this.props;\n const {formData} = this.state;\n const registry = this.getRegistry();\n const _SchemaField = registry.SchemaField;\n return (\n
\n {this.renderErrors()}\n <_SchemaField\n schema={schema}\n uiSchema={uiSchema}\n formData={formData}\n onChange={this.onChange.bind(this)}\n registry={registry}/>\n { children ? children :

}\n
\n );\n }\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Form.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n formData: PropTypes.any,\n onChange: PropTypes.func,\n onError: PropTypes.func,\n onSubmit: PropTypes.func,\n SchemaField: PropTypes.func,\n TitleField: PropTypes.func,\n };\n}\n\nexport default Form;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/Form.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}\n ** module id = 2\n ** module chunks = 0\n **/","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/index.js\n **/","'use strict';\n\nvar urilib = require('url');\n\nvar attribute = require('./attribute');\nvar helpers = require('./helpers');\nvar ValidatorResult = helpers.ValidatorResult;\nvar SchemaError = helpers.SchemaError;\nvar SchemaContext = helpers.SchemaContext;\n\n/**\n * Creates a new Validator object\n * @name Validator\n * @constructor\n */\nvar Validator = function Validator () {\n this.schemas = {};\n this.unresolvedRefs = [];\n\n // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n this.types = Object.create(types);\n this.attributes = Object.create(attribute.validators);\n};\n\n// Hint at the presence of a property\nValidator.prototype.schemas = null;\nValidator.prototype.types = null;\nValidator.prototype.attributes = null;\nValidator.prototype.unresolvedRefs = null;\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param schema\n * @param urn\n * @return {Object}\n */\nValidator.prototype.addSchema = function addSchema (schema, uri) {\n if (!schema) {\n return null;\n }\n var ourUri = uri || schema.id;\n this.addSubSchema(ourUri, schema);\n if (ourUri) {\n this.schemas[ourUri] = schema;\n }\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchema = function addSubSchema(baseuri, schema) {\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n // Only mark unknown schemas as unresolved\n if (this.schemas[resolvedUri] === undefined) {\n this.schemas[resolvedUri] = null;\n this.unresolvedRefs.push(resolvedUri);\n }\n return;\n }\n var ourUri = schema.id && urilib.resolve(baseuri, schema.id);\n var ourBase = ourUri || baseuri;\n if (ourUri) {\n if(this.schemas[ourUri]){\n if(!helpers.deepCompareStrict(this.schemas[ourUri], schema)){\n throw new Error('Schema <'+schema+'> already exists with different definition');\n }\n return this.schemas[ourUri];\n }\n this.schemas[ourUri] = schema;\n var documentUri = ourUri.replace(/^([^#]*)#$/, '$1');\n this.schemas[documentUri] = schema;\n }\n this.addSubSchemaArray(ourBase, ((schema.items instanceof Array)?schema.items:[schema.items]));\n this.addSubSchemaArray(ourBase, ((schema.extends instanceof Array)?schema.extends:[schema.extends]));\n this.addSubSchema(ourBase, schema.additionalItems);\n this.addSubSchemaObject(ourBase, schema.properties);\n this.addSubSchema(ourBase, schema.additionalProperties);\n this.addSubSchemaObject(ourBase, schema.definitions);\n this.addSubSchemaObject(ourBase, schema.patternProperties);\n this.addSubSchemaObject(ourBase, schema.dependencies);\n this.addSubSchemaArray(ourBase, schema.disallow);\n this.addSubSchemaArray(ourBase, schema.allOf);\n this.addSubSchemaArray(ourBase, schema.anyOf);\n this.addSubSchemaArray(ourBase, schema.oneOf);\n this.addSubSchema(ourBase, schema.not);\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n if(!(schemas instanceof Array)) return;\n for(var i=0; i\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n return typeof instance == 'number';\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.number = function testNumber (instance) {\n return typeof instance == 'number';\n};\ntypes.array = function testArray (instance) {\n return instance instanceof Array;\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance) === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/validator.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/url.js\n **/","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/punycode/punycode.js\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/buildin/module.js\n **/","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/index.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/decode.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/encode.js\n **/","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'exclusiveMinimum': true,\n 'exclusiveMaximum': true,\n 'additionalItems': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = (schema.type instanceof Array) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n return v.id && ('<' + v.id + '>') || (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchema(instance, options, ctx, schema){\n return this.validateSchema(instance, schema, options, ctx).valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(schema.anyOf instanceof Array)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(testSchema.bind(this, instance, options, ctx))) {\n var list = schema.anyOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!(schema.allOf instanceof Array)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var msg = (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!(schema.oneOf instanceof Array)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(testSchema.bind(this, instance, options, ctx)).length;\n var list = schema.oneOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(instance === undefined || !(instance instanceof Object)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var prop = (instance || undefined) && instance[property];\n var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\",\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(instance === undefined) return;\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var expr = new RegExp(pattern);\n if (!expr.test(property)) {\n continue;\n }\n test = false;\n var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(instance === undefined) return;\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!instance || typeof instance !== 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n })\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!instance || typeof instance !== 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var self = this;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined || !schema.items) {\n return result;\n }\n instance.every(function (value, i) {\n var items = (schema.items instanceof Array) ? (schema.items[i] || schema.additionalItems) : schema.items;\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = true;\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n valid = instance > schema.minimum;\n } else {\n valid = instance >= schema.minimum;\n }\n if (!valid) {\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must have a minimum value of \" + schema.minimum,\n });\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid;\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n valid = instance < schema.maximum;\n } else {\n valid = instance <= schema.maximum;\n }\n if (!valid) {\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must have a maximum value of \" + schema.maximum,\n });\n }\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * Of course, this is susceptible to floating point error since it compares the floating points\n * and not the JSON byte sequences to arbitrary precision.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n\n if (schema.divisibleBy == 0) {\n throw new SchemaError(\"divisibleBy cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance / schema.divisibleBy % 1) {\n result.addError({\n name: 'divisibleBy',\n argument: schema.divisibleBy,\n message: \"is not divisible by (multiple of) \" + JSON.stringify(schema.divisibleBy),\n });\n }\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * Of course, this is susceptible to floating point error since it compares the floating points\n * and not the JSON byte sequences to arbitrary precision.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n\n if (schema.multipleOf == 0) {\n throw new SchemaError(\"multipleOf cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance / schema.multipleOf % 1) {\n result.addError({\n name: 'multipleOf',\n argument: schema.multipleOf,\n message: \"is not a multiple of (divisible by) \" + JSON.stringify(schema.multipleOf),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n result.addError({\n name: 'required',\n message: \"is required\"\n });\n } else if (instance && typeof instance==='object' && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(instance[n]===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (typeof instance !== 'string') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.match(schema.pattern)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format, when the instance value is a string.\n * The following format are supported:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.isFormat(instance, schema.format)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Validates that every item in an instance array is unique, when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance instanceof Array)) {\n return result;\n }\n function testArrays (v, i, a) {\n for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n return true;\n }\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!instance || typeof instance != 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (dep instanceof Array) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (!(schema['enum'] instanceof Array)) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!(notTypes instanceof Array)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var schemaId = type && type.id && ('<' + type.id + '>') || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/attribute.js\n **/","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, propertyPath, name, argument) {\n if (propertyPath) {\n this.property = propertyPath;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n if (schema.id) {\n this.schema = schema.id;\n } else {\n this.schema = schema;\n }\n }\n if (instance) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n }\n\n if (this.throwError) {\n throw err;\n }\n this.errors.push(err);\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n var errs = this.errors;\n res.errors.forEach(function (v) {\n errs.push(v);\n });\n }\n};\n\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(function(v,i){ return i+': '+v.toString()+'\\n'; }).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n { constructor: {value: SchemaError, enumerable: false}\n , name: {value: 'SchemaError', enumerable: false}\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, propertyPath, base, schemas) {\n this.schema = schema;\n this.options = options;\n this.propertyPath = propertyPath;\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var propertyPath = (propertyName===undefined) ? this.propertyPath : this.propertyPath+makeSuffix(propertyName);\n var base = uri.resolve(this.base, schema.id||'');\n var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n if(schema.id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n}\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([zZ]|[+-]\\d{2}:\\d{2})$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/,\n 'time': /^\\d{2}:\\d{2}:\\d{2}$/,\n\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n 'style': /\\s*(.+?):\\s*([^;]+);?/g,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format) {\n if (FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n }\n return false;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (a instanceof Array) {\n if (!(b instanceof Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nmodule.exports.deepMerge = function deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(function (e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e)\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e)\n }\n }\n });\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(function (key) {\n dst[key] = target[key];\n });\n }\n Object.keys(src).forEach(function (key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key])\n }\n }\n });\n }\n\n return dst;\n};\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n\t// ~ must be encoded explicitly because hacks\n\t// the slash is encoded by encodeURIComponent\n\treturn a.map(function(v){ return '/'+encodeURIComponent(v).replace(/~/g,'%7E'); }).join('');\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/helpers.js\n **/","import React, { PropTypes } from \"react\";\n\nimport ArrayField from \"./ArrayField\";\nimport BooleanField from \"./BooleanField\";\nimport NumberField from \"./NumberField\";\nimport ObjectField from \"./ObjectField\";\nimport StringField from \"./StringField\";\nimport UnsupportedField from \"./UnsupportedField\";\n\nconst REQUIRED_FIELD_SYMBOL = \"*\";\nconst COMPONENT_TYPES = {\n \"array\": ArrayField,\n \"boolean\": BooleanField,\n \"date-time\": StringField,\n \"integer\": NumberField,\n \"number\": NumberField,\n \"object\": ObjectField,\n \"string\": StringField,\n};\n\n\nfunction getLabel(label, required) {\n if (!label) {\n return null;\n }\n if (required) {\n return label + REQUIRED_FIELD_SYMBOL;\n }\n return label;\n}\n\nfunction getContent({type, label, required, children}) {\n if ([\"object\", \"array\"].indexOf(type) !==-1) {\n return children;\n }\n return (\n \n );\n}\n\nfunction Wrapper(props) {\n const {type, classNames} = props;\n return (\n
\n {getContent(props)}\n
\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Wrapper.propTypes = {\n type: PropTypes.string.isRequired,\n label: PropTypes.string,\n required: PropTypes.bool,\n children: React.PropTypes.node.isRequired,\n classNames: React.PropTypes.string,\n };\n}\n\nWrapper.defaultProps = {\n classNames: \"\"\n};\n\nfunction SchemaField(props) {\n const {schema, uiSchema, name, required} = props;\n const FieldComponent = COMPONENT_TYPES[schema.type] || UnsupportedField;\n return (\n \n \n \n );\n}\n\nSchemaField.defaultProps = {\n uiSchema: {}\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n SchemaField.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n };\n}\n\nexport default SchemaField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/SchemaField.js\n **/","import React, { Component, PropTypes } from \"react\";\n\nimport { getDefaultFormState } from \"../../utils\";\n\n\nclass ArrayField extends Component {\n static defaultProps = {\n uiSchema: {}\n };\n\n constructor(props) {\n super(props);\n this.state = this.getStateFromProps(props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState(this.getStateFromProps(nextProps));\n }\n\n getStateFromProps(props) {\n const formData = Array.isArray(props.formData) ? props.formData : null;\n return {items: formData || getDefaultFormState(props.schema) || []};\n }\n\n get itemTitle() {\n const {schema} = this.props;\n return schema.items.title || schema.items.description || \"Item\";\n }\n\n isItemRequired(itemsSchema) {\n return itemsSchema.type === \"string\" && itemsSchema.minLength > 0;\n }\n\n asyncSetState(state, options) {\n // ensure state is propagated to parent component when it's actually set\n this.setState(state, _ => this.props.onChange(this.state.items, options));\n }\n\n onAddClick(event) {\n event.preventDefault();\n const {items} = this.state;\n const {schema} = this.props;\n this.asyncSetState({\n items: items.concat(getDefaultFormState(schema.items))\n }, {validate: false});\n }\n\n onDropClick(index, event) {\n event.preventDefault();\n this.asyncSetState({\n items: this.state.items.filter((_, i) => i !== index)\n }, {validate: false});\n }\n\n onChange(index, value) {\n this.asyncSetState({\n items: this.state.items.map((item, i) => {\n return index === i ? value : item;\n })\n }, {validate: false});\n }\n\n render() {\n const {schema, uiSchema, name} = this.props;\n const title = schema.title || name;\n const {items} = this.state;\n const SchemaField = this.props.registry.SchemaField;\n return (\n \n {title ? {title} : null}\n {schema.description ?\n
{schema.description}
: null}\n
{\n items.map((item, index) => {\n return (\n
\n \n

\n

\n
\n );\n })\n }
\n

\n \n

\n \n );\n }\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n ArrayField.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.array,\n registry: PropTypes.shape({\n SchemaField: PropTypes.func.isRequired,\n TitleField: PropTypes.func.isRequired\n })\n };\n}\n\nexport default ArrayField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/ArrayField.js\n **/","import PasswordWidget from \"./components/widgets/PasswordWidget\";\nimport RadioWidget from \"./components/widgets/RadioWidget\";\nimport UpDownWidget from \"./components/widgets/UpDownWidget\";\nimport RangeWidget from \"./components/widgets/RangeWidget\";\nimport SelectWidget from \"./components/widgets/SelectWidget\";\nimport TextareaWidget from \"./components/widgets/TextareaWidget\";\n\n\nconst altWidgetMap = {\n boolean: {\n radio: RadioWidget,\n select: SelectWidget,\n },\n string: {\n password: PasswordWidget,\n radio: RadioWidget,\n select: SelectWidget,\n textarea: TextareaWidget,\n },\n number: {\n updown: UpDownWidget,\n range: RangeWidget,\n },\n integer: {\n updown: UpDownWidget,\n range: RangeWidget,\n }\n};\n\nexport function defaultTypeValue(type) {\n switch (type) {\n case \"array\": return [];\n case \"boolean\": return false;\n case \"date-time\": return \"\";\n case \"number\": return 0;\n case \"object\": return {};\n case \"string\": return \"\";\n default: return undefined;\n }\n}\n\nexport function defaultFieldValue(formData, schema) {\n return formData === null ? defaultTypeValue(schema.type) : formData;\n}\n\nexport function getAlternativeWidget(type, widget) {\n if (typeof widget === \"function\") {\n return widget;\n }\n if (typeof widget !== \"string\") {\n throw new Error(`Unsupported widget definition: ${typeof widget}`);\n }\n if (!altWidgetMap.hasOwnProperty(type)) {\n throw new Error(`No alternative widget for type ${type}`);\n }\n if (!altWidgetMap[type].hasOwnProperty(widget)) {\n throw new Error(`No alternative widget \"${widget}\" for type ${type}`);\n }\n return altWidgetMap[type][widget];\n}\n\nexport function getDefaultFormState(schema) {\n if (typeof schema !== \"object\") {\n throw new Error(\"Invalid schema: \" + schema);\n }\n if (\"default\" in schema) {\n return schema.default;\n }\n if (schema.type === \"object\") {\n return Object.keys(schema.properties).reduce((acc, key) => {\n acc[key] = getDefaultFormState(schema.properties[key]);\n return acc;\n }, {});\n }\n return defaultTypeValue(schema.type);\n}\n\nexport function asNumber(value) {\n const n = Number(value);\n const valid = typeof n === \"number\" && !Number.isNaN(n);\n return valid ? n : value;\n}\n\nexport function orderProperties(properties, order) {\n if (!Array.isArray(order)) {\n return properties;\n }\n if (order.length !== properties.length) {\n throw new Error(\n \"uiSchema order list length should match object properties length\");\n }\n const fingerprint = (arr) => [].slice.call(arr).sort().toString();\n if (fingerprint(order) !== fingerprint(properties)) {\n throw new Error(\n \"uiSchema order list does not match object properties list\");\n }\n return order;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./utils.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction PasswordWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n onChange(event.target.value)} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n PasswordWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n defaultValue: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default PasswordWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/PasswordWidget.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction RadioWidget({\n schema,\n options,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n // Generating a unique field name to identify this set of radio buttons\n const name = Math.random().toString();\n return (\n
{\n options.map((option, i) => {\n const checked = value !== undefined ? option === value :\n option === defaultValue;\n return (\n \n );\n })\n }
\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n RadioWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n options: PropTypes.array.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\nexport default RadioWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/RadioWidget.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction rangeSpec(schema) {\n const spec = {};\n if (schema.multipleOf) {\n spec.step = schema.multipleOf;\n }\n if (schema.minimum) {\n spec.min = schema.minimum;\n }\n if (schema.maximum) {\n spec.max = schema.maximum;\n }\n return spec;\n}\n\nfunction UpDownWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n onChange(event.target.value)}\n {...rangeSpec(schema)} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n UpDownWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n defaultValue: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default UpDownWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/UpDownWidget.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction rangeSpec(schema) {\n const spec = {};\n if (schema.multipleOf) {\n spec.step = schema.multipleOf;\n }\n if (schema.minimum) {\n spec.min = schema.minimum;\n }\n if (schema.maximum) {\n spec.max = schema.maximum;\n }\n return spec;\n}\n\nfunction RangeWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n
\n onChange(event.target.value)}\n {...rangeSpec(schema)} />\n {value}\n
\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n RangeWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n defaultValue: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default RangeWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/RangeWidget.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { asNumber } from \"../../utils\";\n\n\n/**\n * This is a silly limitation in the DOM where option change event values are\n * always retrieved as strings.\n */\nfunction processValue(type, value) {\n if (type === \"boolean\") {\n return value === \"true\";\n } else if (type === \"number\") {\n return asNumber(value);\n }\n return value;\n}\n\nfunction SelectWidget({\n schema,\n options,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n {\n onChange(processValue(schema.type, event.target.value));\n }}>{\n options.map((option, i) => {\n return ;\n })\n }\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n SelectWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n options: PropTypes.array.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default SelectWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/SelectWidget.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction TextWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n onChange(event.target.value)} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n TextWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default TextWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/TextareaWidget.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { defaultFieldValue, getAlternativeWidget } from \"../../utils\";\nimport CheckboxWidget from \"./../widgets/CheckboxWidget\";\n\nfunction BooleanField({schema, name, uiSchema, formData, required, onChange}) {\n const {title, description} = schema;\n const widget = uiSchema[\"ui:widget\"];\n const commonProps = {\n schema,\n onChange,\n label: title || name,\n placeholder: description,\n defaultValue: schema.default,\n value: defaultFieldValue(formData, schema),\n required,\n };\n if (widget) {\n const Widget = getAlternativeWidget(schema.type, widget);\n return ;\n }\n return ;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n BooleanField.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.bool,\n required: PropTypes.bool,\n };\n}\n\nBooleanField.defaultProps = {\n uiSchema: {}\n};\n\nexport default BooleanField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/BooleanField.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction CheckboxWidget({\n schema,\n defaultValue,\n value,\n required,\n placeholder,\n onChange,\n}) {\n return (\n onChange(event.target.checked)} />\n );\n}\nif (process.env.NODE_ENV !== \"production\") {\n CheckboxWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n defaultValue: PropTypes.bool,\n value: PropTypes.bool,\n required: PropTypes.bool,\n placeholder: PropTypes.string,\n };\n}\n\nexport default CheckboxWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/CheckboxWidget.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { asNumber } from \"../../utils\";\nimport StringField from \"./StringField\";\n\nfunction NumberField(props) {\n return (\n props.onChange(asNumber(value))} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n NumberField.propTypes = {\n schema: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.number,\n required: PropTypes.bool,\n };\n}\n\nNumberField.defaultProps = {\n uiSchema: {}\n};\n\nexport default NumberField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/NumberField.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { defaultFieldValue, getAlternativeWidget } from \"../../utils\";\nimport TextWidget from \"./../widgets/TextWidget\";\nimport SelectWidget from \"./../widgets/SelectWidget\";\n\n\nfunction StringField({schema, name, uiSchema, formData, required, onChange}) {\n const {title, description} = schema;\n const widget = uiSchema[\"ui:widget\"];\n const commonProps = {\n schema,\n label: title || name,\n placeholder: description,\n onChange,\n value: defaultFieldValue(formData, schema),\n required: required,\n defaultValue: schema.default,\n };\n if (Array.isArray(schema.enum)) {\n if (widget) {\n const Widget = getAlternativeWidget(schema.type, widget);\n return ;\n }\n return ;\n }\n if (widget) {\n const Widget = getAlternativeWidget(schema.type, widget);\n return ;\n }\n return ;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n StringField.propTypes = {\n schema: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n };\n}\n\nStringField.defaultProps = {\n uiSchema: {}\n};\n\nexport default StringField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/StringField.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction TextWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n onChange(event.target.value)} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n TextWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n defaultValue: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default TextWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/TextWidget.js\n **/","import React, { Component, PropTypes } from \"react\";\n\nimport { getDefaultFormState, orderProperties } from \"../../utils\";\n\n\nclass ObjectField extends Component {\n static defaultProps = {\n uiSchema: {}\n }\n\n constructor(props) {\n super(props);\n this.state = this.getStateFromProps(props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState(this.getStateFromProps(nextProps));\n }\n\n getStateFromProps(props) {\n return props.formData || getDefaultFormState(props.schema) || {};\n }\n\n isRequired(name) {\n const schema = this.props.schema;\n return Array.isArray(schema.required) &&\n schema.required.indexOf(name) !== -1;\n }\n\n asyncSetState(state) {\n // ensure state is propagated to parent component when it's actually set\n this.setState(state, _ => this.props.onChange(this.state));\n }\n\n onChange(name, value) {\n this.asyncSetState({[name]: value});\n }\n\n render() {\n const {schema, uiSchema, name} = this.props;\n const title = schema.title || name;\n const {SchemaField, TitleField} = this.props.registry;\n try {\n var orderedProperties = orderProperties(\n Object.keys(schema.properties), uiSchema[\"ui:order\"]);\n } catch(err) {\n return (\n

\n Invalid {name || \"root\"} object field configuration:\n {err.message}.\n

\n );\n }\n return (\n
\n {title ? : null}\n {schema.description ?\n
{schema.description}
: null}\n {\n orderedProperties.map((name, index) => {\n return (\n \n );\n })\n }
\n );\n }\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n ObjectField.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.object,\n required: PropTypes.bool,\n registry: PropTypes.shape({\n SchemaField: PropTypes.func.isRequired,\n TitleField: PropTypes.func.isRequired\n })\n };\n}\n\nexport default ObjectField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/ObjectField.js\n **/","import React from \"react\";\n\n\nexport default function UnsupportedField({schema}) {\n // XXX render json as string so dev can inspect faulty subschema\n return (\n
\n Unsupported field schema {JSON.stringify(schema, null, 2)}.\n
\n );\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/UnsupportedField.js\n **/","import React, {PropTypes} from \"react\";\n\nfunction TitleField(props) {\n return {props.title};\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n TitleField.propTypes = {\n title: PropTypes.string\n };\n}\n\nexport default TitleField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/TitleField.js\n **/","import React from \"react\";\n\n\nexport default function ErrorList({errors}) {\n return (\n
\n

Errors

\n
    {\n errors.map((error, i) => {\n return
  • {error.stack}
  • ;\n })\n }
\n
\n );\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/ErrorList.js\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///react-jsonschema-form.js","webpack:///webpack/bootstrap 204d85c9545248ecf948","webpack:///./index.js","webpack:///./components/Form.js","webpack:///external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}","webpack:///../~/jsonschema/lib/index.js","webpack:///../~/jsonschema/lib/validator.js","webpack:///../~/webpack/~/node-libs-browser/~/url/url.js","webpack:///../~/webpack/~/node-libs-browser/~/url/~/punycode/punycode.js","webpack:///../~/webpack/buildin/module.js","webpack:///../~/webpack/~/node-libs-browser/~/url/~/querystring/index.js","webpack:///../~/webpack/~/node-libs-browser/~/url/~/querystring/decode.js","webpack:///../~/webpack/~/node-libs-browser/~/url/~/querystring/encode.js","webpack:///../~/jsonschema/lib/attribute.js","webpack:///../~/jsonschema/lib/helpers.js","webpack:///./components/fields/SchemaField.js","webpack:///./utils.js","webpack:///./components/widgets/PasswordWidget.js","webpack:///./components/widgets/RadioWidget.js","webpack:///./components/widgets/UpDownWidget.js","webpack:///./components/widgets/RangeWidget.js","webpack:///./components/widgets/SelectWidget.js","webpack:///./components/widgets/TextareaWidget.js","webpack:///./components/fields/ArrayField.js","webpack:///./components/fields/BooleanField.js","webpack:///./components/widgets/CheckboxWidget.js","webpack:///./components/fields/NumberField.js","webpack:///./components/fields/StringField.js","webpack:///./components/widgets/TextWidget.js","webpack:///./components/fields/ObjectField.js","webpack:///./components/fields/UnsupportedField.js","webpack:///./components/fields/TitleField.js","webpack:///./components/ErrorList.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_componentsForm","_componentsForm2","_classCallCheck","instance","Constructor","TypeError","_inherits","subClass","superClass","prototype","create","constructor","enumerable","writable","configurable","setPrototypeOf","__proto__","_createClass","defineProperties","target","props","i","length","descriptor","key","protoProps","staticProps","_get","_x2","_x3","_x4","_again","object","property","receiver","Function","desc","getOwnPropertyDescriptor","undefined","getter","get","parent","getPrototypeOf","_react","_react2","_jsonschema","_fieldsSchemaField","_fieldsSchemaField2","_fieldsTitleField","_fieldsTitleField2","_utils","_ErrorList","_ErrorList2","Form","_Component","state","getStateFromProps","uiSchema","nextProps","setState","edit","formData","getDefaultFormState","schema","status","errors","validate","validator","Validator","_state","createElement","_this","options","arguments","_","onChange","event","_this2","preventDefault","keys","onError","console","error","onSubmit","SchemaField","TitleField","_props","children","registry","getRegistry","_SchemaField","className","bind","renderErrors","type","Component","ValidatorResult","ValidationError","SchemaError","v","urilib","attribute","helpers","SchemaContext","schemas","unresolvedRefs","types","attributes","validators","addSchema","uri","ourUri","addSubSchema","baseuri","$ref","resolvedUri","resolve","push","ourBase","deepCompareStrict","Error","documentUri","replace","addSubSchemaArray","items","Array","additionalItems","addSubSchemaObject","properties","additionalProperties","definitions","patternProperties","dependencies","disallow","allOf","anyOf","oneOf","not","setSchemas","getSchema","urn","ctx","propertyName","base","result","validateSchema","shouldResolve","ref","self","subschema","forEach","s","deepMerge","switchSchema","resolved","subctx","propertyPath","skipAttributes","ignoreProperties","indexOf","validatorErr","allowUnknownAttributes","importErrors","rewrite","parsed","parse","fragment","hash","document","substr","objectGetPath","testType","res","string","number","integer","array","date","Date","any","Url","protocol","slashes","auth","host","port","hostname","search","query","pathname","path","href","urlParse","url","parseQueryString","slashesDenoteHost","isObject","u","urlFormat","isString","format","urlResolve","source","relative","urlResolveObject","resolveObject","arg","isNull","isNullOrUndefined","punycode","protocolPattern","portPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","rest","trim","proto","exec","lowerProto","toLowerCase","match","hostEnd","hec","atSign","lastIndexOf","slice","decodeURIComponent","parseHost","ipv6Hostname","hostparts","split","l","part","newpart","j","k","charCodeAt","validParts","notHost","bit","unshift","join","domainArray","newOut","encode","h","ae","esc","encodeURIComponent","escape","qm","stringify","charAt","rel","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","splice","isAbsolute","__WEBPACK_AMD_DEFINE_RESULT__","global","RangeError","map","fn","mapDomain","parts","regexSeparators","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","out","basic","index","oldi","w","t","baseMinusT","inputLength","n","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","test","toASCII","regexNonASCII","freeGlobal","nodeType","window","overflow","not-basic","invalid-input","Math","String","fromCharCode","version","ucs2","webpackPolyfill","deprecate","paths","hasOwnProperty","prop","qs","sep","eq","regexp","maxKeys","len","kstr","vstr","x","idx","isArray","stringifyPrimitive","isFinite","name","ks","testSchema","valid","testAdditionalProperty","addError","argument","message","JSON","makeChild","testArrays","a","description","title","exclusiveMinimum","exclusiveMaximum","$schema","extends","some","list","msg","count","filter","pattern","expr","RegExp","minProperties","maxProperties","every","minimum","maximum","divisibleBy","multipleOf","required","isFormat","minLength","maxLength","minItems","maxItems","uniqueItems","dep","childContext","notTypes","schemaId","stack","toString","throwError","detail","err","validatorType","errs","captureStackTrace","makeSuffix","FORMAT_REGEXPS","date-time","time","email","ip-address","ipv6","color","host-name","alpha","alphanumeric","utc-millisec","parseFloat","parseInt","isNaN","regex","e","style","phone","ipv4","b","aKeys","bKeys","src","dst","o","encodePath","getLabel","label","REQUIRED_FIELD_SYMBOL","getContent","_ref","displayLabel","Wrapper","classNames","FieldComponent","COMPONENT_TYPES","_UnsupportedField2","isMultiSelect","_ArrayField","_ArrayField2","_BooleanField","_BooleanField2","_NumberField","_NumberField2","_ObjectField","_ObjectField2","_StringField","_StringField2","_UnsupportedField","boolean","defaultProps","defaultTypeValue","defaultFieldValue","getAlternativeWidget","widget","altWidgetMap","reduce","acc","asNumber","Number","orderProperties","order","fingerprint","arr","sort","_componentsWidgetsPasswordWidget","_componentsWidgetsPasswordWidget2","_componentsWidgetsRadioWidget","_componentsWidgetsRadioWidget2","_componentsWidgetsUpDownWidget","_componentsWidgetsUpDownWidget2","_componentsWidgetsRangeWidget","_componentsWidgetsRangeWidget2","_componentsWidgetsSelectWidget","_componentsWidgetsSelectWidget2","_componentsWidgetsTextareaWidget","_componentsWidgetsTextareaWidget2","radio","select","password","textarea","updown","range","PasswordWidget","placeholder","defaultValue","RadioWidget","random","option","checked","rangeSpec","spec","step","min","max","UpDownWidget","_extends","assign","RangeWidget","processValue","SelectWidget","multiple","newValue","selected","TextWidget","_x","_widgetsSelectWidget","_widgetsSelectWidget2","ArrayField","itemsSchema","asyncSetState","item","onSelectChange","isItemRequired","onClick","onDropClick","onAddClick","BooleanField","commonProps","Widget","_widgetsCheckboxWidget2","_widgetsCheckboxWidget","CheckboxWidget","defaultChecked","NumberField","StringField","_widgetsTextWidget2","_widgetsTextWidget","_defineProperty","ObjectField","_props$registry","orderedProperties","isRequired","UnsupportedField","ErrorList"],"mappings":"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","file":"react-jsonschema-form.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSONSchemaForm\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"JSONSchemaForm\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSONSchemaForm\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"JSONSchemaForm\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _componentsForm = __webpack_require__(1);\n\t\n\tvar _componentsForm2 = _interopRequireDefault(_componentsForm);\n\n\texports[\"default\"] = _componentsForm2[\"default\"];\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tvar _get = function get(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x2 = parent; _x3 = property; _x4 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _jsonschema = __webpack_require__(3);\n\t\n\tvar _fieldsSchemaField = __webpack_require__(13);\n\t\n\tvar _fieldsSchemaField2 = _interopRequireDefault(_fieldsSchemaField);\n\t\n\tvar _fieldsTitleField = __webpack_require__(29);\n\t\n\tvar _fieldsTitleField2 = _interopRequireDefault(_fieldsTitleField);\n\t\n\tvar _utils = __webpack_require__(14);\n\t\n\tvar _ErrorList = __webpack_require__(30);\n\t\n\tvar _ErrorList2 = _interopRequireDefault(_ErrorList);\n\t\n\tvar Form = (function (_Component) {\n\t _inherits(Form, _Component);\n\t\n\t _createClass(Form, null, [{\n\t key: \"defaultProps\",\n\t value: {\n\t uiSchema: {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function Form(props) {\n\t _classCallCheck(this, Form);\n\t\n\t _get(Object.getPrototypeOf(Form.prototype), \"constructor\", this).call(this, props);\n\t this.state = this.getStateFromProps(props);\n\t }\n\t\n\t _createClass(Form, [{\n\t key: \"componentWillReceiveProps\",\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.getStateFromProps(nextProps));\n\t }\n\t }, {\n\t key: \"getStateFromProps\",\n\t value: function getStateFromProps(props) {\n\t var edit = !!props.formData;\n\t var formData = props.formData || (0, _utils.getDefaultFormState)(props.schema) || null;\n\t return {\n\t status: \"initial\",\n\t formData: formData,\n\t edit: edit,\n\t errors: edit ? this.validate(formData) : []\n\t };\n\t }\n\t }, {\n\t key: \"validate\",\n\t value: function validate(formData) {\n\t var validator = new _jsonschema.Validator();\n\t return validator.validate(formData, this.props.schema).errors;\n\t }\n\t }, {\n\t key: \"renderErrors\",\n\t value: function renderErrors() {\n\t var _state = this.state;\n\t var status = _state.status;\n\t var errors = _state.errors;\n\t\n\t if (status !== \"editing\" && errors.length) {\n\t return _react2[\"default\"].createElement(_ErrorList2[\"default\"], { errors: errors });\n\t }\n\t return null;\n\t }\n\t }, {\n\t key: \"onChange\",\n\t value: function onChange(formData) {\n\t var _this = this;\n\t\n\t var options = arguments.length <= 1 || arguments[1] === undefined ? { validate: true } : arguments[1];\n\t\n\t this.setState({\n\t status: \"editing\",\n\t formData: formData,\n\t errors: options.validate ? this.validate(formData) : this.state.errors\n\t }, function (_) {\n\t if (_this.props.onChange) {\n\t _this.props.onChange(_this.state);\n\t }\n\t });\n\t }\n\t }, {\n\t key: \"onSubmit\",\n\t value: function onSubmit(event) {\n\t var _this2 = this;\n\t\n\t event.preventDefault();\n\t this.setState({ status: \"submitted\" });\n\t var errors = this.validate(this.state.formData);\n\t if (Object.keys(errors).length > 0) {\n\t this.setState({ errors: errors }, function (_) {\n\t if (_this2.props.onError) {\n\t _this2.props.onError(errors);\n\t } else {\n\t console.error(\"Form validation failed\", errors);\n\t }\n\t });\n\t return;\n\t } else if (this.props.onSubmit) {\n\t this.props.onSubmit(this.state);\n\t }\n\t this.setState({ status: \"initial\" });\n\t }\n\t }, {\n\t key: \"getRegistry\",\n\t value: function getRegistry() {\n\t return {\n\t SchemaField: this.props.SchemaField || _fieldsSchemaField2[\"default\"],\n\t TitleField: this.props.TitleField || _fieldsTitleField2[\"default\"]\n\t };\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _props = this.props;\n\t var children = _props.children;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t var formData = this.state.formData;\n\t\n\t var registry = this.getRegistry();\n\t var _SchemaField = registry.SchemaField;\n\t return _react2[\"default\"].createElement(\n\t \"form\",\n\t { className: \"rjsf\", onSubmit: this.onSubmit.bind(this) },\n\t this.renderErrors(),\n\t _react2[\"default\"].createElement(_SchemaField, {\n\t schema: schema,\n\t uiSchema: uiSchema,\n\t formData: formData,\n\t onChange: this.onChange.bind(this),\n\t registry: registry }),\n\t children ? children : _react2[\"default\"].createElement(\n\t \"p\",\n\t null,\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"submit\" },\n\t \"Submit\"\n\t )\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Form;\n\t})(_react.Component);\n\t\n\texports[\"default\"] = Form;\n\t\n\tif (false) {\n\t Form.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t formData: _react.PropTypes.any,\n\t onChange: _react.PropTypes.func,\n\t onError: _react.PropTypes.func,\n\t onSubmit: _react.PropTypes.func,\n\t SchemaField: _react.PropTypes.func,\n\t TitleField: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = Form;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar Validator = module.exports.Validator = __webpack_require__(4);\n\t\n\tmodule.exports.ValidatorResult = __webpack_require__(12).ValidatorResult;\n\tmodule.exports.ValidationError = __webpack_require__(12).ValidationError;\n\tmodule.exports.SchemaError = __webpack_require__(12).SchemaError;\n\t\n\tmodule.exports.validate = function (instance, schema, options) {\n\t var v = new Validator();\n\t return v.validate(instance, schema, options);\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar urilib = __webpack_require__(5);\n\t\n\tvar attribute = __webpack_require__(11);\n\tvar helpers = __webpack_require__(12);\n\tvar ValidatorResult = helpers.ValidatorResult;\n\tvar SchemaError = helpers.SchemaError;\n\tvar SchemaContext = helpers.SchemaContext;\n\t\n\t/**\n\t * Creates a new Validator object\n\t * @name Validator\n\t * @constructor\n\t */\n\tvar Validator = function Validator() {\n\t this.schemas = {};\n\t this.unresolvedRefs = [];\n\t\n\t // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n\t this.types = Object.create(types);\n\t this.attributes = Object.create(attribute.validators);\n\t};\n\t\n\t// Hint at the presence of a property\n\tValidator.prototype.schemas = null;\n\tValidator.prototype.types = null;\n\tValidator.prototype.attributes = null;\n\tValidator.prototype.unresolvedRefs = null;\n\t\n\t/**\n\t * Adds a schema with a certain urn to the Validator instance.\n\t * @param schema\n\t * @param urn\n\t * @return {Object}\n\t */\n\tValidator.prototype.addSchema = function addSchema(schema, uri) {\n\t if (!schema) {\n\t return null;\n\t }\n\t var ourUri = uri || schema.id;\n\t this.addSubSchema(ourUri, schema);\n\t if (ourUri) {\n\t this.schemas[ourUri] = schema;\n\t }\n\t return this.schemas[ourUri];\n\t};\n\t\n\tValidator.prototype.addSubSchema = function addSubSchema(baseuri, schema) {\n\t if (!schema || typeof schema != 'object') return;\n\t // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n\t if (schema.$ref) {\n\t var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n\t // Only mark unknown schemas as unresolved\n\t if (this.schemas[resolvedUri] === undefined) {\n\t this.schemas[resolvedUri] = null;\n\t this.unresolvedRefs.push(resolvedUri);\n\t }\n\t return;\n\t }\n\t var ourUri = schema.id && urilib.resolve(baseuri, schema.id);\n\t var ourBase = ourUri || baseuri;\n\t if (ourUri) {\n\t if (this.schemas[ourUri]) {\n\t if (!helpers.deepCompareStrict(this.schemas[ourUri], schema)) {\n\t throw new Error('Schema <' + schema + '> already exists with different definition');\n\t }\n\t return this.schemas[ourUri];\n\t }\n\t this.schemas[ourUri] = schema;\n\t var documentUri = ourUri.replace(/^([^#]*)#$/, '$1');\n\t this.schemas[documentUri] = schema;\n\t }\n\t this.addSubSchemaArray(ourBase, schema.items instanceof Array ? schema.items : [schema.items]);\n\t this.addSubSchemaArray(ourBase, schema['extends'] instanceof Array ? schema['extends'] : [schema['extends']]);\n\t this.addSubSchema(ourBase, schema.additionalItems);\n\t this.addSubSchemaObject(ourBase, schema.properties);\n\t this.addSubSchema(ourBase, schema.additionalProperties);\n\t this.addSubSchemaObject(ourBase, schema.definitions);\n\t this.addSubSchemaObject(ourBase, schema.patternProperties);\n\t this.addSubSchemaObject(ourBase, schema.dependencies);\n\t this.addSubSchemaArray(ourBase, schema.disallow);\n\t this.addSubSchemaArray(ourBase, schema.allOf);\n\t this.addSubSchemaArray(ourBase, schema.anyOf);\n\t this.addSubSchemaArray(ourBase, schema.oneOf);\n\t this.addSubSchema(ourBase, schema.not);\n\t return this.schemas[ourUri];\n\t};\n\t\n\tValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n\t if (!(schemas instanceof Array)) return;\n\t for (var i = 0; i < schemas.length; i++) {\n\t this.addSubSchema(baseuri, schemas[i]);\n\t }\n\t};\n\t\n\tValidator.prototype.addSubSchemaObject = function addSubSchemaArray(baseuri, schemas) {\n\t if (!schemas || typeof schemas != 'object') return;\n\t for (var p in schemas) {\n\t this.addSubSchema(baseuri, schemas[p]);\n\t }\n\t};\n\t\n\t/**\n\t * Sets all the schemas of the Validator instance.\n\t * @param schemas\n\t */\n\tValidator.prototype.setSchemas = function setSchemas(schemas) {\n\t this.schemas = schemas;\n\t};\n\t\n\t/**\n\t * Returns the schema of a certain urn\n\t * @param urn\n\t */\n\tValidator.prototype.getSchema = function getSchema(urn) {\n\t return this.schemas[urn];\n\t};\n\t\n\t/**\n\t * Validates instance against the provided schema\n\t * @param instance\n\t * @param schema\n\t * @param [options]\n\t * @param [ctx]\n\t * @return {Array}\n\t */\n\tValidator.prototype.validate = function validate(instance, schema, options, ctx) {\n\t if (!options) {\n\t options = {};\n\t }\n\t var propertyName = options.propertyName || 'instance';\n\t // This will work so long as the function at uri.resolve() will resolve a relative URI to a relative URI\n\t var base = urilib.resolve(options.base || '/', schema.id || '');\n\t if (!ctx) {\n\t ctx = new SchemaContext(schema, options, propertyName, base, Object.create(this.schemas));\n\t if (!ctx.schemas[base]) {\n\t ctx.schemas[base] = schema;\n\t }\n\t }\n\t if (schema) {\n\t var result = this.validateSchema(instance, schema, options, ctx);\n\t if (!result) {\n\t throw new Error('Result undefined');\n\t }\n\t return result;\n\t }\n\t throw new SchemaError('no schema specified', schema);\n\t};\n\t\n\t/**\n\t * Validates an instance against the schema (the actual work horse)\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @private\n\t * @return {ValidatorResult}\n\t */\n\tValidator.prototype.validateSchema = function validateSchema(instance, schema, options, ctx) {\n\t var self = this;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!schema) {\n\t throw new Error(\"schema is undefined\");\n\t }\n\t\n\t /**\n\t * @param Object schema\n\t * @return mixed schema uri or false\n\t */\n\t function shouldResolve(schema) {\n\t var ref = typeof schema === 'string' ? schema : schema.$ref;\n\t if (typeof ref == 'string') return ref;\n\t return false;\n\t }\n\t /**\n\t * @param Object schema\n\t * @param SchemaContext ctx\n\t * @returns Object schema or resolved schema\n\t */\n\t function resolve(schema, ctx) {\n\t var ref;\n\t if (ref = shouldResolve(schema)) {\n\t return self.resolve(schema, ref, ctx).subschema;\n\t }\n\t return schema;\n\t }\n\t\n\t if (schema['extends']) {\n\t if (schema['extends'] instanceof Array) {\n\t schema['extends'].forEach(function (s) {\n\t schema = helpers.deepMerge(schema, resolve(s, ctx));\n\t });\n\t } else {\n\t schema = helpers.deepMerge(schema, resolve(schema['extends'], ctx));\n\t }\n\t }\n\t\n\t var switchSchema;\n\t if (switchSchema = shouldResolve(schema)) {\n\t var resolved = this.resolve(schema, switchSchema, ctx);\n\t var subctx = new SchemaContext(resolved.subschema, options, ctx.propertyPath, resolved.switchSchema, ctx.schemas);\n\t return this.validateSchema(instance, resolved.subschema, options, subctx);\n\t }\n\t\n\t var skipAttributes = options && options.skipAttributes || [];\n\t // Validate each schema attribute against the instance\n\t for (var key in schema) {\n\t if (!attribute.ignoreProperties[key] && skipAttributes.indexOf(key) < 0) {\n\t var validatorErr = null;\n\t var validator = self.attributes[key];\n\t if (validator) {\n\t validatorErr = validator.call(self, instance, schema, options, ctx);\n\t } else if (options.allowUnknownAttributes === false) {\n\t // This represents an error with the schema itself, not an invalid instance\n\t throw new SchemaError(\"Unsupported attribute: \" + key, schema);\n\t }\n\t if (validatorErr) {\n\t result.importErrors(validatorErr);\n\t }\n\t }\n\t }\n\t\n\t if (typeof options.rewrite == 'function') {\n\t var value = options.rewrite.call(this, instance, schema, options, ctx);\n\t result.instance = value;\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t* @private\n\t* @param Object schema\n\t* @param Object switchSchema\n\t* @param SchemaContext ctx\n\t* @return Object resolved schemas {subschema:String, switchSchema: String}\n\t* @thorws SchemaError\n\t*/\n\tValidator.prototype.resolve = function resolve(schema, switchSchema, ctx) {\n\t switchSchema = ctx.resolve(switchSchema);\n\t // First see if the schema exists under the provided URI\n\t if (ctx.schemas[switchSchema]) {\n\t return { subschema: ctx.schemas[switchSchema], switchSchema: switchSchema };\n\t }\n\t // Else try walking the property pointer\n\t var parsed = urilib.parse(switchSchema);\n\t var fragment = parsed && parsed.hash;\n\t var document = fragment && fragment.length && switchSchema.substr(0, switchSchema.length - fragment.length);\n\t if (!document || !ctx.schemas[document]) {\n\t throw new SchemaError(\"no such schema <\" + switchSchema + \">\", schema);\n\t }\n\t var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n\t if (subschema === undefined) {\n\t throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n\t }\n\t return { subschema: subschema, switchSchema: switchSchema };\n\t};\n\t\n\t/**\n\t * Tests whether the instance if of a certain type.\n\t * @private\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @param type\n\t * @return {boolean}\n\t */\n\tValidator.prototype.testType = function validateType(instance, schema, options, ctx, type) {\n\t if (typeof this.types[type] == 'function') {\n\t return this.types[type].call(this, instance);\n\t }\n\t if (type && typeof type == 'object') {\n\t var res = this.validateSchema(instance, type, options, ctx);\n\t return res === undefined || !(res && res.errors.length);\n\t }\n\t // Undefined or properties not on the list are acceptable, same as not being defined\n\t return true;\n\t};\n\t\n\tvar types = Validator.prototype.types = {};\n\ttypes.string = function testString(instance) {\n\t return typeof instance == 'string';\n\t};\n\ttypes.number = function testNumber(instance) {\n\t return typeof instance == 'number';\n\t};\n\ttypes.integer = function testInteger(instance) {\n\t return typeof instance == 'number' && instance % 1 === 0;\n\t};\n\ttypes.boolean = function testBoolean(instance) {\n\t return typeof instance == 'boolean';\n\t};\n\ttypes.number = function testNumber(instance) {\n\t return typeof instance == 'number';\n\t};\n\ttypes.array = function testArray(instance) {\n\t return instance instanceof Array;\n\t};\n\ttypes['null'] = function testNull(instance) {\n\t return instance === null;\n\t};\n\ttypes.date = function testDate(instance) {\n\t return instance instanceof Date;\n\t};\n\ttypes.any = function testAny(instance) {\n\t return true;\n\t};\n\ttypes.object = function testObject(instance) {\n\t // TODO: fix this - see #15\n\t return instance && typeof instance === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n\t};\n\t\n\tmodule.exports = Validator;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\tvar punycode = __webpack_require__(6);\n\t\n\texports.parse = urlParse;\n\texports.resolve = urlResolve;\n\texports.resolveObject = urlResolveObject;\n\texports.format = urlFormat;\n\t\n\texports.Url = Url;\n\t\n\tfunction Url() {\n\t this.protocol = null;\n\t this.slashes = null;\n\t this.auth = null;\n\t this.host = null;\n\t this.port = null;\n\t this.hostname = null;\n\t this.hash = null;\n\t this.search = null;\n\t this.query = null;\n\t this.pathname = null;\n\t this.path = null;\n\t this.href = null;\n\t}\n\t\n\t// Reference: RFC 3986, RFC 1808, RFC 2396\n\t\n\t// define these here so at least they only have to be\n\t// compiled once on the first module load.\n\tvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n\t portPattern = /:[0-9]*$/,\n\t\n\t// RFC 2396: characters reserved for delimiting URLs.\n\t// We actually just auto-escape these.\n\tdelims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\t\n\t// RFC 2396: characters not allowed for various reasons.\n\tunwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\t\n\t// Allowed by RFCs, but cause of XSS attacks. Always escape these.\n\tautoEscape = ['\\''].concat(unwise),\n\t\n\t// Characters that are never ever allowed in a hostname.\n\t// Note that any invalid chars are also handled, but these\n\t// are the ones that are *expected* to be seen, so we fast-path\n\t// them.\n\tnonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n\t hostEndingChars = ['/', '?', '#'],\n\t hostnameMaxLen = 255,\n\t hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n\t hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n\t\n\t// protocols that can allow \"unsafe\" and \"unwise\" chars.\n\tunsafeProtocol = {\n\t 'javascript': true,\n\t 'javascript:': true\n\t},\n\t\n\t// protocols that never have a hostname.\n\thostlessProtocol = {\n\t 'javascript': true,\n\t 'javascript:': true\n\t},\n\t\n\t// protocols that always contain a // bit.\n\tslashedProtocol = {\n\t 'http': true,\n\t 'https': true,\n\t 'ftp': true,\n\t 'gopher': true,\n\t 'file': true,\n\t 'http:': true,\n\t 'https:': true,\n\t 'ftp:': true,\n\t 'gopher:': true,\n\t 'file:': true\n\t},\n\t querystring = __webpack_require__(8);\n\t\n\tfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n\t if (url && isObject(url) && url instanceof Url) return url;\n\t\n\t var u = new Url();\n\t u.parse(url, parseQueryString, slashesDenoteHost);\n\t return u;\n\t}\n\t\n\tUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n\t if (!isString(url)) {\n\t throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n\t }\n\t\n\t var rest = url;\n\t\n\t // trim before proceeding.\n\t // This is to support parse stuff like \" http://foo.com \\n\"\n\t rest = rest.trim();\n\t\n\t var proto = protocolPattern.exec(rest);\n\t if (proto) {\n\t proto = proto[0];\n\t var lowerProto = proto.toLowerCase();\n\t this.protocol = lowerProto;\n\t rest = rest.substr(proto.length);\n\t }\n\t\n\t // figure out if it's got a host\n\t // user@server is *always* interpreted as a hostname, and url\n\t // resolution will treat //foo/bar as host=foo,path=bar because that's\n\t // how the browser resolves relative URLs.\n\t if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n\t var slashes = rest.substr(0, 2) === '//';\n\t if (slashes && !(proto && hostlessProtocol[proto])) {\n\t rest = rest.substr(2);\n\t this.slashes = true;\n\t }\n\t }\n\t\n\t if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n\t\n\t // there's a hostname.\n\t // the first instance of /, ?, ;, or # ends the host.\n\t //\n\t // If there is an @ in the hostname, then non-host chars *are* allowed\n\t // to the left of the last @ sign, unless some host-ending character\n\t // comes *before* the @-sign.\n\t // URLs are obnoxious.\n\t //\n\t // ex:\n\t // http://a@b@c/ => user:a@b host:c\n\t // http://a@b?@c => user:a host:c path:/?@c\n\t\n\t // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n\t // Review our test case against browsers more comprehensively.\n\t\n\t // find the first instance of any hostEndingChars\n\t var hostEnd = -1;\n\t for (var i = 0; i < hostEndingChars.length; i++) {\n\t var hec = rest.indexOf(hostEndingChars[i]);\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n\t }\n\t\n\t // at this point, either we have an explicit point where the\n\t // auth portion cannot go past, or the last @ char is the decider.\n\t var auth, atSign;\n\t if (hostEnd === -1) {\n\t // atSign can be anywhere.\n\t atSign = rest.lastIndexOf('@');\n\t } else {\n\t // atSign must be in auth portion.\n\t // http://a@b/c@d => host:b auth:a path:/c@d\n\t atSign = rest.lastIndexOf('@', hostEnd);\n\t }\n\t\n\t // Now we have a portion which is definitely the auth.\n\t // Pull that off.\n\t if (atSign !== -1) {\n\t auth = rest.slice(0, atSign);\n\t rest = rest.slice(atSign + 1);\n\t this.auth = decodeURIComponent(auth);\n\t }\n\t\n\t // the host is the remaining to the left of the first non-host char\n\t hostEnd = -1;\n\t for (var i = 0; i < nonHostChars.length; i++) {\n\t var hec = rest.indexOf(nonHostChars[i]);\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n\t }\n\t // if we still have not hit it, then the entire thing is a host.\n\t if (hostEnd === -1) hostEnd = rest.length;\n\t\n\t this.host = rest.slice(0, hostEnd);\n\t rest = rest.slice(hostEnd);\n\t\n\t // pull out port.\n\t this.parseHost();\n\t\n\t // we've indicated that there is a hostname,\n\t // so even if it's empty, it has to be present.\n\t this.hostname = this.hostname || '';\n\t\n\t // if hostname begins with [ and ends with ]\n\t // assume that it's an IPv6 address.\n\t var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\t\n\t // validate a little.\n\t if (!ipv6Hostname) {\n\t var hostparts = this.hostname.split(/\\./);\n\t for (var i = 0, l = hostparts.length; i < l; i++) {\n\t var part = hostparts[i];\n\t if (!part) continue;\n\t if (!part.match(hostnamePartPattern)) {\n\t var newpart = '';\n\t for (var j = 0, k = part.length; j < k; j++) {\n\t if (part.charCodeAt(j) > 127) {\n\t // we replace non-ASCII char with a temporary placeholder\n\t // we need this to make sure size of hostname is not\n\t // broken by replacing non-ASCII by nothing\n\t newpart += 'x';\n\t } else {\n\t newpart += part[j];\n\t }\n\t }\n\t // we test again with ASCII char only\n\t if (!newpart.match(hostnamePartPattern)) {\n\t var validParts = hostparts.slice(0, i);\n\t var notHost = hostparts.slice(i + 1);\n\t var bit = part.match(hostnamePartStart);\n\t if (bit) {\n\t validParts.push(bit[1]);\n\t notHost.unshift(bit[2]);\n\t }\n\t if (notHost.length) {\n\t rest = '/' + notHost.join('.') + rest;\n\t }\n\t this.hostname = validParts.join('.');\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t if (this.hostname.length > hostnameMaxLen) {\n\t this.hostname = '';\n\t } else {\n\t // hostnames are always lower case.\n\t this.hostname = this.hostname.toLowerCase();\n\t }\n\t\n\t if (!ipv6Hostname) {\n\t // IDNA Support: Returns a puny coded representation of \"domain\".\n\t // It only converts the part of the domain name that\n\t // has non ASCII characters. I.e. it dosent matter if\n\t // you call it with a domain that already is in ASCII.\n\t var domainArray = this.hostname.split('.');\n\t var newOut = [];\n\t for (var i = 0; i < domainArray.length; ++i) {\n\t var s = domainArray[i];\n\t newOut.push(s.match(/[^A-Za-z0-9_-]/) ? 'xn--' + punycode.encode(s) : s);\n\t }\n\t this.hostname = newOut.join('.');\n\t }\n\t\n\t var p = this.port ? ':' + this.port : '';\n\t var h = this.hostname || '';\n\t this.host = h + p;\n\t this.href += this.host;\n\t\n\t // strip [ and ] from the hostname\n\t // the host field still retains them, though\n\t if (ipv6Hostname) {\n\t this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n\t if (rest[0] !== '/') {\n\t rest = '/' + rest;\n\t }\n\t }\n\t }\n\t\n\t // now rest is set to the post-host stuff.\n\t // chop off any delim chars.\n\t if (!unsafeProtocol[lowerProto]) {\n\t\n\t // First, make 100% sure that any \"autoEscape\" chars get\n\t // escaped, even if encodeURIComponent doesn't think they\n\t // need to be.\n\t for (var i = 0, l = autoEscape.length; i < l; i++) {\n\t var ae = autoEscape[i];\n\t var esc = encodeURIComponent(ae);\n\t if (esc === ae) {\n\t esc = escape(ae);\n\t }\n\t rest = rest.split(ae).join(esc);\n\t }\n\t }\n\t\n\t // chop off from the tail first.\n\t var hash = rest.indexOf('#');\n\t if (hash !== -1) {\n\t // got a fragment string.\n\t this.hash = rest.substr(hash);\n\t rest = rest.slice(0, hash);\n\t }\n\t var qm = rest.indexOf('?');\n\t if (qm !== -1) {\n\t this.search = rest.substr(qm);\n\t this.query = rest.substr(qm + 1);\n\t if (parseQueryString) {\n\t this.query = querystring.parse(this.query);\n\t }\n\t rest = rest.slice(0, qm);\n\t } else if (parseQueryString) {\n\t // no query string, but parseQueryString still requested\n\t this.search = '';\n\t this.query = {};\n\t }\n\t if (rest) this.pathname = rest;\n\t if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n\t this.pathname = '/';\n\t }\n\t\n\t //to support http.request\n\t if (this.pathname || this.search) {\n\t var p = this.pathname || '';\n\t var s = this.search || '';\n\t this.path = p + s;\n\t }\n\t\n\t // finally, reconstruct the href based on what has been validated.\n\t this.href = this.format();\n\t return this;\n\t};\n\t\n\t// format a parsed object into a url string\n\tfunction urlFormat(obj) {\n\t // ensure it's an object, and not a string url.\n\t // If it's an obj, this is a no-op.\n\t // this way, you can call url_format() on strings\n\t // to clean up potentially wonky urls.\n\t if (isString(obj)) obj = urlParse(obj);\n\t if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n\t return obj.format();\n\t}\n\t\n\tUrl.prototype.format = function () {\n\t var auth = this.auth || '';\n\t if (auth) {\n\t auth = encodeURIComponent(auth);\n\t auth = auth.replace(/%3A/i, ':');\n\t auth += '@';\n\t }\n\t\n\t var protocol = this.protocol || '',\n\t pathname = this.pathname || '',\n\t hash = this.hash || '',\n\t host = false,\n\t query = '';\n\t\n\t if (this.host) {\n\t host = auth + this.host;\n\t } else if (this.hostname) {\n\t host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n\t if (this.port) {\n\t host += ':' + this.port;\n\t }\n\t }\n\t\n\t if (this.query && isObject(this.query) && Object.keys(this.query).length) {\n\t query = querystring.stringify(this.query);\n\t }\n\t\n\t var search = this.search || query && '?' + query || '';\n\t\n\t if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\t\n\t // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n\t // unless they had them to begin with.\n\t if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n\t host = '//' + (host || '');\n\t if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n\t } else if (!host) {\n\t host = '';\n\t }\n\t\n\t if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n\t if (search && search.charAt(0) !== '?') search = '?' + search;\n\t\n\t pathname = pathname.replace(/[?#]/g, function (match) {\n\t return encodeURIComponent(match);\n\t });\n\t search = search.replace('#', '%23');\n\t\n\t return protocol + host + pathname + search + hash;\n\t};\n\t\n\tfunction urlResolve(source, relative) {\n\t return urlParse(source, false, true).resolve(relative);\n\t}\n\t\n\tUrl.prototype.resolve = function (relative) {\n\t return this.resolveObject(urlParse(relative, false, true)).format();\n\t};\n\t\n\tfunction urlResolveObject(source, relative) {\n\t if (!source) return relative;\n\t return urlParse(source, false, true).resolveObject(relative);\n\t}\n\t\n\tUrl.prototype.resolveObject = function (relative) {\n\t if (isString(relative)) {\n\t var rel = new Url();\n\t rel.parse(relative, false, true);\n\t relative = rel;\n\t }\n\t\n\t var result = new Url();\n\t Object.keys(this).forEach(function (k) {\n\t result[k] = this[k];\n\t }, this);\n\t\n\t // hash is always overridden, no matter what.\n\t // even href=\"\" will remove it.\n\t result.hash = relative.hash;\n\t\n\t // if the relative url is empty, then there's nothing left to do here.\n\t if (relative.href === '') {\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t // hrefs like //foo/bar always cut to the protocol.\n\t if (relative.slashes && !relative.protocol) {\n\t // take everything except the protocol from relative\n\t Object.keys(relative).forEach(function (k) {\n\t if (k !== 'protocol') result[k] = relative[k];\n\t });\n\t\n\t //urlParse appends trailing / to urls like http://www.example.com\n\t if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n\t result.path = result.pathname = '/';\n\t }\n\t\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t if (relative.protocol && relative.protocol !== result.protocol) {\n\t // if it's a known url protocol, then changing\n\t // the protocol does weird things\n\t // first, if it's not file:, then we MUST have a host,\n\t // and if there was a path\n\t // to begin with, then we MUST have a path.\n\t // if it is file:, then the host is dropped,\n\t // because that's known to be hostless.\n\t // anything else is assumed to be absolute.\n\t if (!slashedProtocol[relative.protocol]) {\n\t Object.keys(relative).forEach(function (k) {\n\t result[k] = relative[k];\n\t });\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t result.protocol = relative.protocol;\n\t if (!relative.host && !hostlessProtocol[relative.protocol]) {\n\t var relPath = (relative.pathname || '').split('/');\n\t while (relPath.length && !(relative.host = relPath.shift()));\n\t if (!relative.host) relative.host = '';\n\t if (!relative.hostname) relative.hostname = '';\n\t if (relPath[0] !== '') relPath.unshift('');\n\t if (relPath.length < 2) relPath.unshift('');\n\t result.pathname = relPath.join('/');\n\t } else {\n\t result.pathname = relative.pathname;\n\t }\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t result.host = relative.host || '';\n\t result.auth = relative.auth;\n\t result.hostname = relative.hostname || relative.host;\n\t result.port = relative.port;\n\t // to support http.request\n\t if (result.pathname || result.search) {\n\t var p = result.pathname || '';\n\t var s = result.search || '';\n\t result.path = p + s;\n\t }\n\t result.slashes = result.slashes || relative.slashes;\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n\t isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n\t mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname,\n\t removeAllDots = mustEndAbs,\n\t srcPath = result.pathname && result.pathname.split('/') || [],\n\t relPath = relative.pathname && relative.pathname.split('/') || [],\n\t psychotic = result.protocol && !slashedProtocol[result.protocol];\n\t\n\t // if the url is a non-slashed url, then relative\n\t // links like ../.. should be able\n\t // to crawl up to the hostname, as well. This is strange.\n\t // result.protocol has already been set by now.\n\t // Later on, put the first path part into the host field.\n\t if (psychotic) {\n\t result.hostname = '';\n\t result.port = null;\n\t if (result.host) {\n\t if (srcPath[0] === '') srcPath[0] = result.host;else srcPath.unshift(result.host);\n\t }\n\t result.host = '';\n\t if (relative.protocol) {\n\t relative.hostname = null;\n\t relative.port = null;\n\t if (relative.host) {\n\t if (relPath[0] === '') relPath[0] = relative.host;else relPath.unshift(relative.host);\n\t }\n\t relative.host = null;\n\t }\n\t mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n\t }\n\t\n\t if (isRelAbs) {\n\t // it's absolute.\n\t result.host = relative.host || relative.host === '' ? relative.host : result.host;\n\t result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t srcPath = relPath;\n\t // fall through to the dot-handling below.\n\t } else if (relPath.length) {\n\t // it's relative\n\t // throw away the existing file, and take the new path instead.\n\t if (!srcPath) srcPath = [];\n\t srcPath.pop();\n\t srcPath = srcPath.concat(relPath);\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t } else if (!isNullOrUndefined(relative.search)) {\n\t // just pull out the search.\n\t // like href='?foo'.\n\t // Put this after the other two cases because it simplifies the booleans\n\t if (psychotic) {\n\t result.hostname = result.host = srcPath.shift();\n\t //occationaly the auth can get stuck only in host\n\t //this especialy happens in cases like\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\t if (authInHost) {\n\t result.auth = authInHost.shift();\n\t result.host = result.hostname = authInHost.shift();\n\t }\n\t }\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t //to support http.request\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\n\t result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n\t }\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t if (!srcPath.length) {\n\t // no path at all. easy.\n\t // we've already handled the other stuff above.\n\t result.pathname = null;\n\t //to support http.request\n\t if (result.search) {\n\t result.path = '/' + result.search;\n\t } else {\n\t result.path = null;\n\t }\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t // if a url ENDs in . or .., then it must get a trailing slash.\n\t // however, if it ends in anything else non-slashy,\n\t // then it must NOT get a trailing slash.\n\t var last = srcPath.slice(-1)[0];\n\t var hasTrailingSlash = (result.host || relative.host) && (last === '.' || last === '..') || last === '';\n\t\n\t // strip single dots, resolve double dots to parent dir\n\t // if the path tries to go above the root, `up` ends up > 0\n\t var up = 0;\n\t for (var i = srcPath.length; i >= 0; i--) {\n\t last = srcPath[i];\n\t if (last == '.') {\n\t srcPath.splice(i, 1);\n\t } else if (last === '..') {\n\t srcPath.splice(i, 1);\n\t up++;\n\t } else if (up) {\n\t srcPath.splice(i, 1);\n\t up--;\n\t }\n\t }\n\t\n\t // if the path is allowed to go above the root, restore leading ..s\n\t if (!mustEndAbs && !removeAllDots) {\n\t for (; up--; up) {\n\t srcPath.unshift('..');\n\t }\n\t }\n\t\n\t if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n\t srcPath.unshift('');\n\t }\n\t\n\t if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') {\n\t srcPath.push('');\n\t }\n\t\n\t var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/';\n\t\n\t // put the host back\n\t if (psychotic) {\n\t result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n\t //occationaly the auth can get stuck only in host\n\t //this especialy happens in cases like\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\t if (authInHost) {\n\t result.auth = authInHost.shift();\n\t result.host = result.hostname = authInHost.shift();\n\t }\n\t }\n\t\n\t mustEndAbs = mustEndAbs || result.host && srcPath.length;\n\t\n\t if (mustEndAbs && !isAbsolute) {\n\t srcPath.unshift('');\n\t }\n\t\n\t if (!srcPath.length) {\n\t result.pathname = null;\n\t result.path = null;\n\t } else {\n\t result.pathname = srcPath.join('/');\n\t }\n\t\n\t //to support request.http\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\n\t result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n\t }\n\t result.auth = relative.auth || result.auth;\n\t result.slashes = result.slashes || relative.slashes;\n\t result.href = result.format();\n\t return result;\n\t};\n\t\n\tUrl.prototype.parseHost = function () {\n\t var host = this.host;\n\t var port = portPattern.exec(host);\n\t if (port) {\n\t port = port[0];\n\t if (port !== ':') {\n\t this.port = port.substr(1);\n\t }\n\t host = host.substr(0, host.length - port.length);\n\t }\n\t if (host) this.hostname = host;\n\t};\n\t\n\tfunction isString(arg) {\n\t return typeof arg === \"string\";\n\t}\n\t\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\t\n\tfunction isNull(arg) {\n\t return arg === null;\n\t}\n\tfunction isNullOrUndefined(arg) {\n\t return arg == null;\n\t}\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */\n\t'use strict';\n\t\n\t;(function (root) {\n\t\n\t\t/** Detect free variables */\n\t\tvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\t\tvar freeModule = typeof module == 'object' && module && !module.nodeType && module;\n\t\tvar freeGlobal = typeof global == 'object' && global;\n\t\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n\t\t\troot = freeGlobal;\n\t\t}\n\t\n\t\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\t\tvar punycode,\n\t\t \n\t\n\t\t/** Highest positive signed 32-bit float value */\n\t\tmaxInt = 2147483647,\n\t\t // aka. 0x7FFFFFFF or 2^31-1\n\t\n\t\t/** Bootstring parameters */\n\t\tbase = 36,\n\t\t tMin = 1,\n\t\t tMax = 26,\n\t\t skew = 38,\n\t\t damp = 700,\n\t\t initialBias = 72,\n\t\t initialN = 128,\n\t\t // 0x80\n\t\tdelimiter = '-',\n\t\t // '\\x2D'\n\t\n\t\t/** Regular expressions */\n\t\tregexPunycode = /^xn--/,\n\t\t regexNonASCII = /[^\\x20-\\x7E]/,\n\t\t // unprintable ASCII chars + non-ASCII chars\n\t\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n\t\t // RFC 3490 separators\n\t\n\t\t/** Error messages */\n\t\terrors = {\n\t\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t\t'invalid-input': 'Invalid input'\n\t\t},\n\t\t \n\t\n\t\t/** Convenience shortcuts */\n\t\tbaseMinusTMin = base - tMin,\n\t\t floor = Math.floor,\n\t\t stringFromCharCode = String.fromCharCode,\n\t\t \n\t\n\t\t/** Temporary variable */\n\t\tkey;\n\t\n\t\t/*--------------------------------------------------------------------------*/\n\t\n\t\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\t\tfunction error(type) {\n\t\t\tthrow RangeError(errors[type]);\n\t\t}\n\t\n\t\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\t\tfunction map(array, fn) {\n\t\t\tvar length = array.length;\n\t\t\tvar result = [];\n\t\t\twhile (length--) {\n\t\t\t\tresult[length] = fn(array[length]);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\n\t\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\t\tfunction mapDomain(string, fn) {\n\t\t\tvar parts = string.split('@');\n\t\t\tvar result = '';\n\t\t\tif (parts.length > 1) {\n\t\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\t\tresult = parts[0] + '@';\n\t\t\t\tstring = parts[1];\n\t\t\t}\n\t\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\t\tvar labels = string.split('.');\n\t\t\tvar encoded = map(labels, fn).join('.');\n\t\t\treturn result + encoded;\n\t\t}\n\t\n\t\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\t\tfunction ucs2decode(string) {\n\t\t\tvar output = [],\n\t\t\t counter = 0,\n\t\t\t length = string.length,\n\t\t\t value,\n\t\t\t extra;\n\t\t\twhile (counter < length) {\n\t\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t\t// low surrogate\n\t\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\t\toutput.push(value);\n\t\t\t\t\t\tcounter--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\n\t\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\t\tfunction ucs2encode(array) {\n\t\t\treturn map(array, function (value) {\n\t\t\t\tvar output = '';\n\t\t\t\tif (value > 0xFFFF) {\n\t\t\t\t\tvalue -= 0x10000;\n\t\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t\t}\n\t\t\t\toutput += stringFromCharCode(value);\n\t\t\t\treturn output;\n\t\t\t}).join('');\n\t\t}\n\t\n\t\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\t\tfunction basicToDigit(codePoint) {\n\t\t\tif (codePoint - 48 < 10) {\n\t\t\t\treturn codePoint - 22;\n\t\t\t}\n\t\t\tif (codePoint - 65 < 26) {\n\t\t\t\treturn codePoint - 65;\n\t\t\t}\n\t\t\tif (codePoint - 97 < 26) {\n\t\t\t\treturn codePoint - 97;\n\t\t\t}\n\t\t\treturn base;\n\t\t}\n\t\n\t\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\t\tfunction digitToBasic(digit, flag) {\n\t\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t\t// 26..35 map to ASCII 0..9\n\t\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t\t}\n\t\n\t\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\t\tfunction adapt(delta, numPoints, firstTime) {\n\t\t\tvar k = 0;\n\t\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\t\tdelta += floor(delta / numPoints);\n\t\t\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t\t}\n\t\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t\t}\n\t\n\t\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\t\tfunction decode(input) {\n\t\t\t// Don't use UCS-2\n\t\t\tvar output = [],\n\t\t\t inputLength = input.length,\n\t\t\t out,\n\t\t\t i = 0,\n\t\t\t n = initialN,\n\t\t\t bias = initialBias,\n\t\t\t basic,\n\t\t\t j,\n\t\t\t index,\n\t\t\t oldi,\n\t\t\t w,\n\t\t\t k,\n\t\t\t digit,\n\t\t\t t,\n\t\t\t \n\t\t\t/** Cached calculation results */\n\t\t\tbaseMinusT;\n\t\n\t\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t\t// the first basic code points to the output.\n\t\n\t\t\tbasic = input.lastIndexOf(delimiter);\n\t\t\tif (basic < 0) {\n\t\t\t\tbasic = 0;\n\t\t\t}\n\t\n\t\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t\t// if it's not a basic code point\n\t\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\t\terror('not-basic');\n\t\t\t\t}\n\t\t\t\toutput.push(input.charCodeAt(j));\n\t\t\t}\n\t\n\t\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t\t// points were copied; start at the beginning otherwise.\n\t\n\t\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\t\n\t\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t\t// value at the end to obtain `delta`.\n\t\t\t\tfor (oldi = i, w = 1, k = base;; /* no condition */k += base) {\n\t\n\t\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\t\terror('invalid-input');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\t\n\t\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += digit * w;\n\t\t\t\t\tt = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\n\t\t\t\t\tif (digit < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tw *= baseMinusT;\n\t\t\t\t}\n\t\n\t\t\t\tout = output.length + 1;\n\t\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\t\n\t\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\t\n\t\t\t\tn += floor(i / out);\n\t\t\t\ti %= out;\n\t\n\t\t\t\t// Insert `n` at position `i` of the output\n\t\t\t\toutput.splice(i++, 0, n);\n\t\t\t}\n\t\n\t\t\treturn ucs2encode(output);\n\t\t}\n\t\n\t\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\t\tfunction encode(input) {\n\t\t\tvar n,\n\t\t\t delta,\n\t\t\t handledCPCount,\n\t\t\t basicLength,\n\t\t\t bias,\n\t\t\t j,\n\t\t\t m,\n\t\t\t q,\n\t\t\t k,\n\t\t\t t,\n\t\t\t currentValue,\n\t\t\t output = [],\n\t\t\t \n\t\t\t/** `inputLength` will hold the number of code points in `input`. */\n\t\t\tinputLength,\n\t\t\t \n\t\t\t/** Cached calculation results */\n\t\t\thandledCPCountPlusOne,\n\t\t\t baseMinusT,\n\t\t\t qMinusT;\n\t\n\t\t\t// Convert the input in UCS-2 to Unicode\n\t\t\tinput = ucs2decode(input);\n\t\n\t\t\t// Cache the length\n\t\t\tinputLength = input.length;\n\t\n\t\t\t// Initialize the state\n\t\t\tn = initialN;\n\t\t\tdelta = 0;\n\t\t\tbias = initialBias;\n\t\n\t\t\t// Handle the basic code points\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue < 0x80) {\n\t\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\thandledCPCount = basicLength = output.length;\n\t\n\t\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t\t// `basicLength` is the number of basic code points.\n\t\n\t\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\t\tif (basicLength) {\n\t\t\t\toutput.push(delimiter);\n\t\t\t}\n\t\n\t\t\t// Main encoding loop:\n\t\t\twhile (handledCPCount < inputLength) {\n\t\n\t\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t\t// larger one:\n\t\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\t\tm = currentValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t\t// but guard against overflow\n\t\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\t\n\t\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\t\tn = m;\n\t\n\t\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\n\t\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\t\tfor (q = delta, k = base;; /* no condition */k += base) {\n\t\t\t\t\t\t\tt = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\t\tdelta = 0;\n\t\t\t\t\t\t++handledCPCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t++delta;\n\t\t\t\t++n;\n\t\t\t}\n\t\t\treturn output.join('');\n\t\t}\n\t\n\t\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\t\tfunction toUnicode(input) {\n\t\t\treturn mapDomain(input, function (string) {\n\t\t\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t\t\t});\n\t\t}\n\t\n\t\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\t\tfunction toASCII(input) {\n\t\t\treturn mapDomain(input, function (string) {\n\t\t\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t\t\t});\n\t\t}\n\t\n\t\t/*--------------------------------------------------------------------------*/\n\t\n\t\t/** Define the public API */\n\t\tpunycode = {\n\t\t\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t\t\t'version': '1.3.2',\n\t\t\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t\t\t'ucs2': {\n\t\t\t\t'decode': ucs2decode,\n\t\t\t\t'encode': ucs2encode\n\t\t\t},\n\t\t\t'decode': decode,\n\t\t\t'encode': encode,\n\t\t\t'toASCII': toASCII,\n\t\t\t'toUnicode': toUnicode\n\t\t};\n\t\n\t\t/** Expose `punycode` */\n\t\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t\t// like the following:\n\t\tif (true) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\t\treturn punycode;\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else if (freeExports && freeModule) {\n\t\t\tif (module.exports == freeExports) {\n\t\t\t\t// in Node.js or RingoJS v0.8.0+\n\t\t\t\tfreeModule.exports = punycode;\n\t\t\t} else {\n\t\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\t\tfor (key in punycode) {\n\t\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// in Rhino or a web browser\n\t\t\troot.punycode = punycode;\n\t\t}\n\t})(undefined);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)(module), (function() { return this; }())))\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (module) {\n\t\tif (!module.webpackPolyfill) {\n\t\t\tmodule.deprecate = function () {};\n\t\t\tmodule.paths = [];\n\t\t\t// module.parent = undefined by default\n\t\t\tmodule.children = [];\n\t\t\tmodule.webpackPolyfill = 1;\n\t\t}\n\t\treturn module;\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.decode = exports.parse = __webpack_require__(9);\n\texports.encode = exports.stringify = __webpack_require__(10);\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\t// If obj.hasOwnProperty has been overridden, then calling\n\t// obj.hasOwnProperty(prop) will break.\n\t// See: https://github.com/joyent/node/issues/1707\n\tfunction hasOwnProperty(obj, prop) {\n\t return Object.prototype.hasOwnProperty.call(obj, prop);\n\t}\n\t\n\tmodule.exports = function (qs, sep, eq, options) {\n\t sep = sep || '&';\n\t eq = eq || '=';\n\t var obj = {};\n\t\n\t if (typeof qs !== 'string' || qs.length === 0) {\n\t return obj;\n\t }\n\t\n\t var regexp = /\\+/g;\n\t qs = qs.split(sep);\n\t\n\t var maxKeys = 1000;\n\t if (options && typeof options.maxKeys === 'number') {\n\t maxKeys = options.maxKeys;\n\t }\n\t\n\t var len = qs.length;\n\t // maxKeys <= 0 means that we should not limit keys count\n\t if (maxKeys > 0 && len > maxKeys) {\n\t len = maxKeys;\n\t }\n\t\n\t for (var i = 0; i < len; ++i) {\n\t var x = qs[i].replace(regexp, '%20'),\n\t idx = x.indexOf(eq),\n\t kstr,\n\t vstr,\n\t k,\n\t v;\n\t\n\t if (idx >= 0) {\n\t kstr = x.substr(0, idx);\n\t vstr = x.substr(idx + 1);\n\t } else {\n\t kstr = x;\n\t vstr = '';\n\t }\n\t\n\t k = decodeURIComponent(kstr);\n\t v = decodeURIComponent(vstr);\n\t\n\t if (!hasOwnProperty(obj, k)) {\n\t obj[k] = v;\n\t } else if (Array.isArray(obj[k])) {\n\t obj[k].push(v);\n\t } else {\n\t obj[k] = [obj[k], v];\n\t }\n\t }\n\t\n\t return obj;\n\t};\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\tvar stringifyPrimitive = function stringifyPrimitive(v) {\n\t switch (typeof v) {\n\t case 'string':\n\t return v;\n\t\n\t case 'boolean':\n\t return v ? 'true' : 'false';\n\t\n\t case 'number':\n\t return isFinite(v) ? v : '';\n\t\n\t default:\n\t return '';\n\t }\n\t};\n\t\n\tmodule.exports = function (obj, sep, eq, name) {\n\t sep = sep || '&';\n\t eq = eq || '=';\n\t if (obj === null) {\n\t obj = undefined;\n\t }\n\t\n\t if (typeof obj === 'object') {\n\t return Object.keys(obj).map(function (k) {\n\t var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\t if (Array.isArray(obj[k])) {\n\t return obj[k].map(function (v) {\n\t return ks + encodeURIComponent(stringifyPrimitive(v));\n\t }).join(sep);\n\t } else {\n\t return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n\t }\n\t }).join(sep);\n\t }\n\t\n\t if (!name) return '';\n\t return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar helpers = __webpack_require__(12);\n\t\n\t/** @type ValidatorResult */\n\tvar ValidatorResult = helpers.ValidatorResult;\n\t/** @type SchemaError */\n\tvar SchemaError = helpers.SchemaError;\n\t\n\tvar attribute = {};\n\t\n\tattribute.ignoreProperties = {\n\t // informative properties\n\t 'id': true,\n\t 'default': true,\n\t 'description': true,\n\t 'title': true,\n\t // arguments to other properties\n\t 'exclusiveMinimum': true,\n\t 'exclusiveMaximum': true,\n\t 'additionalItems': true,\n\t // special-handled properties\n\t '$schema': true,\n\t '$ref': true,\n\t 'extends': true\n\t};\n\t\n\t/**\n\t * @name validators\n\t */\n\tvar validators = attribute.validators = {};\n\t\n\t/**\n\t * Validates whether the instance if of a certain type\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators.type = function validateType(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var types = schema.type instanceof Array ? schema.type : [schema.type];\n\t if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n\t var list = types.map(function (v) {\n\t return v.id && '<' + v.id + '>' || v + '';\n\t });\n\t result.addError({\n\t name: 'type',\n\t argument: list,\n\t message: \"is not of a type(s) \" + list\n\t });\n\t }\n\t return result;\n\t};\n\t\n\tfunction testSchema(instance, options, ctx, schema) {\n\t return this.validateSchema(instance, schema, options, ctx).valid;\n\t}\n\t\n\t/**\n\t * Validates whether the instance matches some of the given schemas\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators.anyOf = function validateAnyOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(schema.anyOf instanceof Array)) {\n\t throw new SchemaError(\"anyOf must be an array\");\n\t }\n\t if (!schema.anyOf.some(testSchema.bind(this, instance, options, ctx))) {\n\t var list = schema.anyOf.map(function (v, i) {\n\t return v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t });\n\t result.addError({\n\t name: 'anyOf',\n\t argument: list,\n\t message: \"is not any of \" + list.join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance matches every given schema\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null}\n\t */\n\tvalidators.allOf = function validateAllOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t if (!(schema.allOf instanceof Array)) {\n\t throw new SchemaError(\"allOf must be an array\");\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var self = this;\n\t schema.allOf.forEach(function (v, i) {\n\t var valid = self.validateSchema(instance, v, options, ctx);\n\t if (!valid.valid) {\n\t var msg = v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t result.addError({\n\t name: 'allOf',\n\t argument: { id: msg, length: valid.errors.length, valid: valid },\n\t message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:'\n\t });\n\t result.importErrors(valid);\n\t }\n\t });\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance matches exactly one of the given schemas\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null}\n\t */\n\tvalidators.oneOf = function validateOneOf(instance, schema, options, ctx) {\n\t // Ignore undefined instances\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t if (!(schema.oneOf instanceof Array)) {\n\t throw new SchemaError(\"oneOf must be an array\");\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var count = schema.oneOf.filter(testSchema.bind(this, instance, options, ctx)).length;\n\t var list = schema.oneOf.map(function (v, i) {\n\t return v.id && '<' + v.id + '>' || v.title && JSON.stringify(v.title) || v['$ref'] && '<' + v['$ref'] + '>' || '[subschema ' + i + ']';\n\t });\n\t if (count !== 1) {\n\t result.addError({\n\t name: 'oneOf',\n\t argument: list,\n\t message: \"is not exactly one from \" + list.join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates properties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.properties = function validateProperties(instance, schema, options, ctx) {\n\t if (instance === undefined || !(instance instanceof Object)) return;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var properties = schema.properties || {};\n\t for (var property in properties) {\n\t var prop = (instance || undefined) && instance[property];\n\t var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Test a specific property within in instance against the additionalProperties schema attribute\n\t * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n\t * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n\t * @private\n\t * @return {boolean}\n\t */\n\tfunction testAdditionalProperty(instance, schema, options, ctx, property, result) {\n\t if (schema.properties && schema.properties[property] !== undefined) {\n\t return;\n\t }\n\t if (schema.additionalProperties === false) {\n\t result.addError({\n\t name: 'additionalProperties',\n\t argument: property,\n\t message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\"\n\t });\n\t } else {\n\t var additionalProperties = schema.additionalProperties || {};\n\t var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t}\n\t\n\t/**\n\t * Validates patternProperties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.patternProperties = function validatePatternProperties(instance, schema, options, ctx) {\n\t if (instance === undefined) return;\n\t if (!this.types.object(instance)) return;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var patternProperties = schema.patternProperties || {};\n\t\n\t for (var property in instance) {\n\t var test = true;\n\t for (var pattern in patternProperties) {\n\t var expr = new RegExp(pattern);\n\t if (!expr.test(property)) {\n\t continue;\n\t }\n\t test = false;\n\t var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n\t if (res.instance !== result.instance[property]) result.instance[property] = res.instance;\n\t result.importErrors(res);\n\t }\n\t if (test) {\n\t testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n\t }\n\t }\n\t\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates additionalProperties\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.additionalProperties = function validateAdditionalProperties(instance, schema, options, ctx) {\n\t if (instance === undefined) return;\n\t if (!this.types.object(instance)) return;\n\t // if patternProperties is defined then we'll test when that one is called instead\n\t if (schema.patternProperties) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t for (var property in instance) {\n\t testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minProperties = function validateMinProperties(instance, schema, options, ctx) {\n\t if (!instance || typeof instance !== 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var keys = Object.keys(instance);\n\t if (!(keys.length >= schema.minProperties)) {\n\t result.addError({\n\t name: 'minProperties',\n\t argument: schema.minProperties,\n\t message: \"does not meet minimum property length of \" + schema.minProperties\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxProperties = function validateMaxProperties(instance, schema, options, ctx) {\n\t if (!instance || typeof instance !== 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var keys = Object.keys(instance);\n\t if (!(keys.length <= schema.maxProperties)) {\n\t result.addError({\n\t name: 'maxProperties',\n\t argument: schema.maxProperties,\n\t message: \"does not meet maximum property length of \" + schema.maxProperties\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates items when instance is an array\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.items = function validateItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var self = this;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance === undefined || !schema.items) {\n\t return result;\n\t }\n\t instance.every(function (value, i) {\n\t var items = schema.items instanceof Array ? schema.items[i] || schema.additionalItems : schema.items;\n\t if (items === undefined) {\n\t return true;\n\t }\n\t if (items === false) {\n\t result.addError({\n\t name: 'items',\n\t message: \"additionalItems not permitted\"\n\t });\n\t return false;\n\t }\n\t var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n\t if (res.instance !== result.instance[i]) result.instance[i] = res.instance;\n\t result.importErrors(res);\n\t return true;\n\t });\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minimum = function validateMinimum(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var valid = true;\n\t if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n\t valid = instance > schema.minimum;\n\t } else {\n\t valid = instance >= schema.minimum;\n\t }\n\t if (!valid) {\n\t result.addError({\n\t name: 'minimum',\n\t argument: schema.minimum,\n\t message: \"must have a minimum value of \" + schema.minimum\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maximum = function validateMaximum(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var valid;\n\t if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n\t valid = instance < schema.maximum;\n\t } else {\n\t valid = instance <= schema.maximum;\n\t }\n\t if (!valid) {\n\t result.addError({\n\t name: 'maximum',\n\t argument: schema.maximum,\n\t message: \"must have a maximum value of \" + schema.maximum\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates divisibleBy when the type of the instance value is a number.\n\t * Of course, this is susceptible to floating point error since it compares the floating points\n\t * and not the JSON byte sequences to arbitrary precision.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.divisibleBy = function validateDivisibleBy(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t\n\t if (schema.divisibleBy == 0) {\n\t throw new SchemaError(\"divisibleBy cannot be zero\");\n\t }\n\t\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance / schema.divisibleBy % 1) {\n\t result.addError({\n\t name: 'divisibleBy',\n\t argument: schema.divisibleBy,\n\t message: \"is not divisible by (multiple of) \" + JSON.stringify(schema.divisibleBy)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates divisibleBy when the type of the instance value is a number.\n\t * Of course, this is susceptible to floating point error since it compares the floating points\n\t * and not the JSON byte sequences to arbitrary precision.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.multipleOf = function validateMultipleOf(instance, schema, options, ctx) {\n\t if (typeof instance !== 'number') {\n\t return null;\n\t }\n\t\n\t if (schema.multipleOf == 0) {\n\t throw new SchemaError(\"multipleOf cannot be zero\");\n\t }\n\t\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance / schema.multipleOf % 1) {\n\t result.addError({\n\t name: 'multipleOf',\n\t argument: schema.multipleOf,\n\t message: \"is not a multiple of (divisible by) \" + JSON.stringify(schema.multipleOf)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is present.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.required = function validateRequired(instance, schema, options, ctx) {\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (instance === undefined && schema.required === true) {\n\t result.addError({\n\t name: 'required',\n\t message: \"is required\"\n\t });\n\t } else if (instance && typeof instance === 'object' && Array.isArray(schema.required)) {\n\t schema.required.forEach(function (n) {\n\t if (instance[n] === undefined) {\n\t result.addError({\n\t name: 'required',\n\t argument: n,\n\t message: \"requires property \" + JSON.stringify(n)\n\t });\n\t }\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value matches the regular expression, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.pattern = function validatePattern(instance, schema, options, ctx) {\n\t if (typeof instance !== 'string') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!instance.match(schema.pattern)) {\n\t result.addError({\n\t name: 'pattern',\n\t argument: schema.pattern,\n\t message: \"does not match pattern \" + JSON.stringify(schema.pattern)\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is of a certain defined format, when the instance value is a string.\n\t * The following format are supported:\n\t * - date-time\n\t * - date\n\t * - time\n\t * - ip-address\n\t * - ipv6\n\t * - uri\n\t * - color\n\t * - host-name\n\t * - alpha\n\t * - alpha-numeric\n\t * - utc-millisec\n\t * @param instance\n\t * @param schema\n\t * @param [options]\n\t * @param [ctx]\n\t * @return {String|null}\n\t */\n\tvalidators.format = function validateFormat(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!helpers.isFormat(instance, schema.format)) {\n\t result.addError({\n\t name: 'format',\n\t argument: schema.format,\n\t message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minLength = function validateMinLength(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length >= schema.minLength)) {\n\t result.addError({\n\t name: 'minLength',\n\t argument: schema.minLength,\n\t message: \"does not meet minimum length of \" + schema.minLength\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxLength = function validateMaxLength(instance, schema, options, ctx) {\n\t if (!(typeof instance === 'string')) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length <= schema.maxLength)) {\n\t result.addError({\n\t name: 'maxLength',\n\t argument: schema.maxLength,\n\t message: \"does not meet maximum length of \" + schema.maxLength\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.minItems = function validateMinItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length >= schema.minItems)) {\n\t result.addError({\n\t name: 'minItems',\n\t argument: schema.minItems,\n\t message: \"does not meet minimum length of \" + schema.minItems\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n\t * @param instance\n\t * @param schema\n\t * @return {String|null}\n\t */\n\tvalidators.maxItems = function validateMaxItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance.length <= schema.maxItems)) {\n\t result.addError({\n\t name: 'maxItems',\n\t argument: schema.maxItems,\n\t message: \"does not meet maximum length of \" + schema.maxItems\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates that every item in an instance array is unique, when instance is an array\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {String|null|ValidatorResult}\n\t */\n\tvalidators.uniqueItems = function validateUniqueItems(instance, schema, options, ctx) {\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!(instance instanceof Array)) {\n\t return result;\n\t }\n\t function testArrays(v, i, a) {\n\t for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n\t return false;\n\t }\n\t return true;\n\t }\n\t if (!instance.every(testArrays)) {\n\t result.addError({\n\t name: 'uniqueItems',\n\t message: \"contains duplicate item\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Deep compares arrays for duplicates\n\t * @param v\n\t * @param i\n\t * @param a\n\t * @private\n\t * @return {boolean}\n\t */\n\tfunction testArrays(v, i, a) {\n\t var j,\n\t len = a.length;\n\t for (j = i + 1, len; j < len; j++) {\n\t if (helpers.deepCompareStrict(v, a[j])) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\t\n\t/**\n\t * Validates whether there are no duplicates, when the instance is an Array.\n\t * @param instance\n\t * @return {String|null}\n\t */\n\tvalidators.uniqueItems = function validateUniqueItems(instance, schema, options, ctx) {\n\t if (!(instance instanceof Array)) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!instance.every(testArrays)) {\n\t result.addError({\n\t name: 'uniqueItems',\n\t message: \"contains duplicate item\"\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validate for the presence of dependency properties, if the instance is an object.\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {null|ValidatorResult}\n\t */\n\tvalidators.dependencies = function validateDependencies(instance, schema, options, ctx) {\n\t if (!instance || typeof instance != 'object') {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t for (var property in schema.dependencies) {\n\t if (instance[property] === undefined) {\n\t continue;\n\t }\n\t var dep = schema.dependencies[property];\n\t var childContext = ctx.makeChild(dep, property);\n\t if (typeof dep == 'string') {\n\t dep = [dep];\n\t }\n\t if (dep instanceof Array) {\n\t dep.forEach(function (prop) {\n\t if (instance[prop] === undefined) {\n\t result.addError({\n\t // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n\t // Can we make these the same? Or should we create different error types?\n\t name: 'dependencies',\n\t argument: childContext.propertyPath,\n\t message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath\n\t });\n\t }\n\t });\n\t } else {\n\t var res = this.validateSchema(instance, dep, options, childContext);\n\t if (result.instance !== res.instance) result.instance = res.instance;\n\t if (res && res.errors.length) {\n\t result.addError({\n\t name: 'dependencies',\n\t argument: childContext.propertyPath,\n\t message: \"does not meet dependency required by \" + childContext.propertyPath\n\t });\n\t result.importErrors(res);\n\t }\n\t }\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance value is one of the enumerated values.\n\t *\n\t * @param instance\n\t * @param schema\n\t * @return {ValidatorResult|null}\n\t */\n\tvalidators['enum'] = function validateEnum(instance, schema, options, ctx) {\n\t if (!(schema['enum'] instanceof Array)) {\n\t throw new SchemaError(\"enum expects an array\", schema);\n\t }\n\t if (instance === undefined) {\n\t return null;\n\t }\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n\t result.addError({\n\t name: 'enum',\n\t argument: schema['enum'],\n\t message: \"is not one of enum values: \" + schema['enum'].join(',')\n\t });\n\t }\n\t return result;\n\t};\n\t\n\t/**\n\t * Validates whether the instance if of a prohibited type.\n\t * @param instance\n\t * @param schema\n\t * @param options\n\t * @param ctx\n\t * @return {null|ValidatorResult}\n\t */\n\tvalidators.not = validators.disallow = function validateNot(instance, schema, options, ctx) {\n\t var self = this;\n\t if (instance === undefined) return null;\n\t var result = new ValidatorResult(instance, schema, options, ctx);\n\t var notTypes = schema.not || schema.disallow;\n\t if (!notTypes) return null;\n\t if (!(notTypes instanceof Array)) notTypes = [notTypes];\n\t notTypes.forEach(function (type) {\n\t if (self.testType(instance, schema, options, ctx, type)) {\n\t var schemaId = type && type.id && '<' + type.id + '>' || type;\n\t result.addError({\n\t name: 'not',\n\t argument: schemaId,\n\t message: \"is of prohibited type \" + schemaId\n\t });\n\t }\n\t });\n\t return result;\n\t};\n\t\n\tmodule.exports = attribute;\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar uri = __webpack_require__(5);\n\t\n\tvar ValidationError = exports.ValidationError = function ValidationError(message, instance, schema, propertyPath, name, argument) {\n\t if (propertyPath) {\n\t this.property = propertyPath;\n\t }\n\t if (message) {\n\t this.message = message;\n\t }\n\t if (schema) {\n\t if (schema.id) {\n\t this.schema = schema.id;\n\t } else {\n\t this.schema = schema;\n\t }\n\t }\n\t if (instance) {\n\t this.instance = instance;\n\t }\n\t this.name = name;\n\t this.argument = argument;\n\t this.stack = this.toString();\n\t};\n\t\n\tValidationError.prototype.toString = function toString() {\n\t return this.property + ' ' + this.message;\n\t};\n\t\n\tvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n\t this.instance = instance;\n\t this.schema = schema;\n\t this.propertyPath = ctx.propertyPath;\n\t this.errors = [];\n\t this.throwError = options && options.throwError;\n\t};\n\t\n\tValidatorResult.prototype.addError = function addError(detail) {\n\t var err;\n\t if (typeof detail == 'string') {\n\t err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n\t } else {\n\t if (!detail) throw new Error('Missing error detail');\n\t if (!detail.message) throw new Error('Missing error message');\n\t if (!detail.name) throw new Error('Missing validator type');\n\t err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n\t }\n\t\n\t if (this.throwError) {\n\t throw err;\n\t }\n\t this.errors.push(err);\n\t return err;\n\t};\n\t\n\tValidatorResult.prototype.importErrors = function importErrors(res) {\n\t if (typeof res == 'string' || res && res.validatorType) {\n\t this.addError(res);\n\t } else if (res && res.errors) {\n\t var errs = this.errors;\n\t res.errors.forEach(function (v) {\n\t errs.push(v);\n\t });\n\t }\n\t};\n\t\n\tValidatorResult.prototype.toString = function toString(res) {\n\t return this.errors.map(function (v, i) {\n\t return i + ': ' + v.toString() + '\\n';\n\t }).join('');\n\t};\n\t\n\tObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function get() {\n\t return !this.errors.length;\n\t } });\n\t\n\t/**\n\t * Describes a problem with a Schema which prevents validation of an instance\n\t * @name SchemaError\n\t * @constructor\n\t */\n\tvar SchemaError = exports.SchemaError = function SchemaError(msg, schema) {\n\t this.message = msg;\n\t this.schema = schema;\n\t Error.call(this, msg);\n\t Error.captureStackTrace(this, SchemaError);\n\t};\n\tSchemaError.prototype = Object.create(Error.prototype, { constructor: { value: SchemaError, enumerable: false },\n\t name: { value: 'SchemaError', enumerable: false }\n\t});\n\t\n\tvar SchemaContext = exports.SchemaContext = function SchemaContext(schema, options, propertyPath, base, schemas) {\n\t this.schema = schema;\n\t this.options = options;\n\t this.propertyPath = propertyPath;\n\t this.base = base;\n\t this.schemas = schemas;\n\t};\n\t\n\tSchemaContext.prototype.resolve = function resolve(target) {\n\t return uri.resolve(this.base, target);\n\t};\n\t\n\tSchemaContext.prototype.makeChild = function makeChild(schema, propertyName) {\n\t var propertyPath = propertyName === undefined ? this.propertyPath : this.propertyPath + makeSuffix(propertyName);\n\t var base = uri.resolve(this.base, schema.id || '');\n\t var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n\t if (schema.id && !ctx.schemas[base]) {\n\t ctx.schemas[base] = schema;\n\t }\n\t return ctx;\n\t};\n\t\n\tvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n\t 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([zZ]|[+-]\\d{2}:\\d{2})$/,\n\t 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/,\n\t 'time': /^\\d{2}:\\d{2}:\\d{2}$/,\n\t\n\t 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n\t 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n\t 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\t 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\t\n\t 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\t\n\t // hostname regex from: http://stackoverflow.com/a/1420225/5628\n\t 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\t 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\t\n\t 'alpha': /^[a-zA-Z]+$/,\n\t 'alphanumeric': /^[a-zA-Z0-9]+$/,\n\t 'utc-millisec': function utcMillisec(input) {\n\t return typeof input === 'string' && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n\t },\n\t 'regex': function regex(input) {\n\t var result = true;\n\t try {\n\t new RegExp(input);\n\t } catch (e) {\n\t result = false;\n\t }\n\t return result;\n\t },\n\t 'style': /\\s*(.+?):\\s*([^;]+);?/g,\n\t 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n\t};\n\t\n\tFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\n\tFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\n\tFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\t\n\texports.isFormat = function isFormat(input, format) {\n\t if (FORMAT_REGEXPS[format] !== undefined) {\n\t if (FORMAT_REGEXPS[format] instanceof RegExp) {\n\t return FORMAT_REGEXPS[format].test(input);\n\t }\n\t if (typeof FORMAT_REGEXPS[format] === 'function') {\n\t return FORMAT_REGEXPS[format](input);\n\t }\n\t }\n\t return false;\n\t};\n\t\n\tvar makeSuffix = exports.makeSuffix = function makeSuffix(key) {\n\t key = key.toString();\n\t // This function could be capable of outputting valid a ECMAScript string, but the\n\t // resulting code for testing which form to use would be tens of thousands of characters long\n\t // That means this will use the name form for some illegal forms\n\t if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n\t return '.' + key;\n\t }\n\t if (key.match(/^\\d+$/)) {\n\t return '[' + key + ']';\n\t }\n\t return '[' + JSON.stringify(key) + ']';\n\t};\n\t\n\texports.deepCompareStrict = function deepCompareStrict(a, b) {\n\t if (typeof a !== typeof b) {\n\t return false;\n\t }\n\t if (a instanceof Array) {\n\t if (!(b instanceof Array)) {\n\t return false;\n\t }\n\t if (a.length !== b.length) {\n\t return false;\n\t }\n\t return a.every(function (v, i) {\n\t return deepCompareStrict(a[i], b[i]);\n\t });\n\t }\n\t if (typeof a === 'object') {\n\t if (!a || !b) {\n\t return a === b;\n\t }\n\t var aKeys = Object.keys(a);\n\t var bKeys = Object.keys(b);\n\t if (aKeys.length !== bKeys.length) {\n\t return false;\n\t }\n\t return aKeys.every(function (v) {\n\t return deepCompareStrict(a[v], b[v]);\n\t });\n\t }\n\t return a === b;\n\t};\n\t\n\tmodule.exports.deepMerge = function deepMerge(target, src) {\n\t var array = Array.isArray(src);\n\t var dst = array && [] || {};\n\t\n\t if (array) {\n\t target = target || [];\n\t dst = dst.concat(target);\n\t src.forEach(function (e, i) {\n\t if (typeof e === 'object') {\n\t dst[i] = deepMerge(target[i], e);\n\t } else {\n\t if (target.indexOf(e) === -1) {\n\t dst.push(e);\n\t }\n\t }\n\t });\n\t } else {\n\t if (target && typeof target === 'object') {\n\t Object.keys(target).forEach(function (key) {\n\t dst[key] = target[key];\n\t });\n\t }\n\t Object.keys(src).forEach(function (key) {\n\t if (typeof src[key] !== 'object' || !src[key]) {\n\t dst[key] = src[key];\n\t } else {\n\t if (!target[key]) {\n\t dst[key] = src[key];\n\t } else {\n\t dst[key] = deepMerge(target[key], src[key]);\n\t }\n\t }\n\t });\n\t }\n\t\n\t return dst;\n\t};\n\t\n\t/**\n\t * Validates instance against the provided schema\n\t * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n\t * @param o\n\t * @param s The path to walk o along\n\t * @return any\n\t */\n\texports.objectGetPath = function objectGetPath(o, s) {\n\t var parts = s.split('/').slice(1);\n\t var k;\n\t while (typeof (k = parts.shift()) == 'string') {\n\t var n = decodeURIComponent(k.replace(/~0/, '~').replace(/~1/g, '/'));\n\t if (!(n in o)) return;\n\t o = o[n];\n\t }\n\t return o;\n\t};\n\t\n\t/**\n\t * Accept an Array of property names and return a JSON Pointer URI fragment\n\t * @param Array a\n\t * @return {String}\n\t */\n\texports.encodePath = function encodePointer(a) {\n\t // ~ must be encoded explicitly because hacks\n\t // the slash is encoded by encodeURIComponent\n\t return a.map(function (v) {\n\t return '/' + encodeURIComponent(v).replace(/~/g, '%7E');\n\t }).join('');\n\t};\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(14);\n\t\n\tvar _ArrayField = __webpack_require__(21);\n\t\n\tvar _ArrayField2 = _interopRequireDefault(_ArrayField);\n\t\n\tvar _BooleanField = __webpack_require__(22);\n\t\n\tvar _BooleanField2 = _interopRequireDefault(_BooleanField);\n\t\n\tvar _NumberField = __webpack_require__(24);\n\t\n\tvar _NumberField2 = _interopRequireDefault(_NumberField);\n\t\n\tvar _ObjectField = __webpack_require__(27);\n\t\n\tvar _ObjectField2 = _interopRequireDefault(_ObjectField);\n\t\n\tvar _StringField = __webpack_require__(25);\n\t\n\tvar _StringField2 = _interopRequireDefault(_StringField);\n\t\n\tvar _UnsupportedField = __webpack_require__(28);\n\t\n\tvar _UnsupportedField2 = _interopRequireDefault(_UnsupportedField);\n\t\n\tvar REQUIRED_FIELD_SYMBOL = \"*\";\n\tvar COMPONENT_TYPES = {\n\t \"array\": _ArrayField2[\"default\"],\n\t \"boolean\": _BooleanField2[\"default\"],\n\t \"date-time\": _StringField2[\"default\"],\n\t \"integer\": _NumberField2[\"default\"],\n\t \"number\": _NumberField2[\"default\"],\n\t \"object\": _ObjectField2[\"default\"],\n\t \"string\": _StringField2[\"default\"]\n\t};\n\t\n\tfunction getLabel(label, required) {\n\t if (!label) {\n\t return null;\n\t }\n\t if (required) {\n\t return label + REQUIRED_FIELD_SYMBOL;\n\t }\n\t return label;\n\t}\n\t\n\tfunction getContent(_ref) {\n\t var type = _ref.type;\n\t var label = _ref.label;\n\t var required = _ref.required;\n\t var children = _ref.children;\n\t var displayLabel = _ref.displayLabel;\n\t\n\t if (!displayLabel) {\n\t return children;\n\t }\n\t\n\t return _react2[\"default\"].createElement(\n\t \"label\",\n\t null,\n\t getLabel(label, required),\n\t children\n\t );\n\t}\n\t\n\tfunction Wrapper(props) {\n\t var type = props.type;\n\t var classNames = props.classNames;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field field-\" + type + \" \" + classNames },\n\t getContent(props)\n\t );\n\t}\n\t\n\tif (false) {\n\t Wrapper.propTypes = {\n\t type: _react.PropTypes.string.isRequired,\n\t label: _react.PropTypes.string,\n\t required: _react.PropTypes.bool,\n\t isEnum: _react.PropTypes.bool,\n\t children: _react2[\"default\"].PropTypes.node.isRequired,\n\t classNames: _react2[\"default\"].PropTypes.string\n\t };\n\t}\n\t\n\tWrapper.defaultProps = {\n\t classNames: \"\"\n\t};\n\t\n\tfunction SchemaField(props) {\n\t var schema = props.schema;\n\t var uiSchema = props.uiSchema;\n\t var name = props.name;\n\t var required = props.required;\n\t\n\t var FieldComponent = COMPONENT_TYPES[schema.type] || _UnsupportedField2[\"default\"];\n\t var displayLabel = true;\n\t if (schema.type === \"array\") {\n\t displayLabel = (0, _utils.isMultiSelect)(schema);\n\t }\n\t if (schema.type === \"object\") {\n\t displayLabel = false;\n\t }\n\t\n\t return _react2[\"default\"].createElement(\n\t Wrapper,\n\t {\n\t label: schema.title || name,\n\t required: required,\n\t type: schema.type,\n\t displayLabel: displayLabel,\n\t classNames: uiSchema.classNames },\n\t _react2[\"default\"].createElement(FieldComponent, props)\n\t );\n\t}\n\t\n\tSchemaField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\tif (false) {\n\t SchemaField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object\n\t };\n\t}\n\t\n\texports[\"default\"] = SchemaField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.defaultTypeValue = defaultTypeValue;\n\texports.defaultFieldValue = defaultFieldValue;\n\texports.getAlternativeWidget = getAlternativeWidget;\n\texports.getDefaultFormState = getDefaultFormState;\n\texports.asNumber = asNumber;\n\texports.orderProperties = orderProperties;\n\texports.isMultiSelect = isMultiSelect;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _componentsWidgetsPasswordWidget = __webpack_require__(15);\n\t\n\tvar _componentsWidgetsPasswordWidget2 = _interopRequireDefault(_componentsWidgetsPasswordWidget);\n\t\n\tvar _componentsWidgetsRadioWidget = __webpack_require__(16);\n\t\n\tvar _componentsWidgetsRadioWidget2 = _interopRequireDefault(_componentsWidgetsRadioWidget);\n\t\n\tvar _componentsWidgetsUpDownWidget = __webpack_require__(17);\n\t\n\tvar _componentsWidgetsUpDownWidget2 = _interopRequireDefault(_componentsWidgetsUpDownWidget);\n\t\n\tvar _componentsWidgetsRangeWidget = __webpack_require__(18);\n\t\n\tvar _componentsWidgetsRangeWidget2 = _interopRequireDefault(_componentsWidgetsRangeWidget);\n\t\n\tvar _componentsWidgetsSelectWidget = __webpack_require__(19);\n\t\n\tvar _componentsWidgetsSelectWidget2 = _interopRequireDefault(_componentsWidgetsSelectWidget);\n\t\n\tvar _componentsWidgetsTextareaWidget = __webpack_require__(20);\n\t\n\tvar _componentsWidgetsTextareaWidget2 = _interopRequireDefault(_componentsWidgetsTextareaWidget);\n\t\n\tvar altWidgetMap = {\n\t boolean: {\n\t radio: _componentsWidgetsRadioWidget2[\"default\"],\n\t select: _componentsWidgetsSelectWidget2[\"default\"]\n\t },\n\t string: {\n\t password: _componentsWidgetsPasswordWidget2[\"default\"],\n\t radio: _componentsWidgetsRadioWidget2[\"default\"],\n\t select: _componentsWidgetsSelectWidget2[\"default\"],\n\t textarea: _componentsWidgetsTextareaWidget2[\"default\"]\n\t },\n\t number: {\n\t updown: _componentsWidgetsUpDownWidget2[\"default\"],\n\t range: _componentsWidgetsRangeWidget2[\"default\"]\n\t },\n\t integer: {\n\t updown: _componentsWidgetsUpDownWidget2[\"default\"],\n\t range: _componentsWidgetsRangeWidget2[\"default\"]\n\t }\n\t};\n\t\n\tfunction defaultTypeValue(type) {\n\t switch (type) {\n\t case \"array\":\n\t return [];\n\t case \"boolean\":\n\t return false;\n\t case \"date-time\":\n\t return \"\";\n\t case \"number\":\n\t return 0;\n\t case \"object\":\n\t return {};\n\t case \"string\":\n\t return \"\";\n\t default:\n\t return undefined;\n\t }\n\t}\n\t\n\tfunction defaultFieldValue(formData, schema) {\n\t return formData === null ? defaultTypeValue(schema.type) : formData;\n\t}\n\t\n\tfunction getAlternativeWidget(type, widget) {\n\t if (typeof widget === \"function\") {\n\t return widget;\n\t }\n\t if (typeof widget !== \"string\") {\n\t throw new Error(\"Unsupported widget definition: \" + typeof widget);\n\t }\n\t if (!altWidgetMap.hasOwnProperty(type)) {\n\t throw new Error(\"No alternative widget for type \" + type);\n\t }\n\t if (!altWidgetMap[type].hasOwnProperty(widget)) {\n\t throw new Error(\"No alternative widget \\\"\" + widget + \"\\\" for type \" + type);\n\t }\n\t return altWidgetMap[type][widget];\n\t}\n\t\n\tfunction getDefaultFormState(schema) {\n\t if (typeof schema !== \"object\") {\n\t throw new Error(\"Invalid schema: \" + schema);\n\t }\n\t if (\"default\" in schema) {\n\t return schema[\"default\"];\n\t }\n\t if (schema.type === \"object\") {\n\t return Object.keys(schema.properties).reduce(function (acc, key) {\n\t acc[key] = getDefaultFormState(schema.properties[key]);\n\t return acc;\n\t }, {});\n\t }\n\t return defaultTypeValue(schema.type);\n\t}\n\t\n\tfunction asNumber(value) {\n\t var n = Number(value);\n\t var valid = typeof n === \"number\" && !Number.isNaN(n);\n\t return valid ? n : value;\n\t}\n\t\n\tfunction orderProperties(properties, order) {\n\t if (!Array.isArray(order)) {\n\t return properties;\n\t }\n\t if (order.length !== properties.length) {\n\t throw new Error(\"uiSchema order list length should match object properties length\");\n\t }\n\t var fingerprint = function fingerprint(arr) {\n\t return [].slice.call(arr).sort().toString();\n\t };\n\t if (fingerprint(order) !== fingerprint(properties)) {\n\t throw new Error(\"uiSchema order list does not match object properties list\");\n\t }\n\t return order;\n\t}\n\t\n\tfunction isMultiSelect(schema) {\n\t return Array.isArray(schema.items[\"enum\"]) && schema.uniqueItems;\n\t}\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction PasswordWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"input\", { type: \"password\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t } });\n\t}\n\t\n\tif (false) {\n\t PasswordWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t defaultValue: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = PasswordWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction RadioWidget(_ref) {\n\t var schema = _ref.schema;\n\t var options = _ref.options;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t // Generating a unique field name to identify this set of radio buttons\n\t var name = Math.random().toString();\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-radio-group\" },\n\t options.map(function (option, i) {\n\t var checked = value !== undefined ? option === value : option === defaultValue;\n\t return _react2[\"default\"].createElement(\n\t \"label\",\n\t { key: i },\n\t _react2[\"default\"].createElement(\"input\", { type: \"radio\",\n\t name: name,\n\t value: option,\n\t checked: checked,\n\t placeholder: placeholder,\n\t onChange: function (_) {\n\t return onChange(option);\n\t } }),\n\t String(option)\n\t );\n\t })\n\t );\n\t}\n\t\n\tif (false) {\n\t RadioWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t options: _react.PropTypes.array.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.any,\n\t defaultValue: _react.PropTypes.any,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\texports[\"default\"] = RadioWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction rangeSpec(schema) {\n\t var spec = {};\n\t if (schema.multipleOf) {\n\t spec.step = schema.multipleOf;\n\t }\n\t if (schema.minimum) {\n\t spec.min = schema.minimum;\n\t }\n\t if (schema.maximum) {\n\t spec.max = schema.maximum;\n\t }\n\t return spec;\n\t}\n\t\n\tfunction UpDownWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"input\", _extends({ type: \"number\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t }\n\t }, rangeSpec(schema)));\n\t}\n\t\n\tif (false) {\n\t UpDownWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t defaultValue: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = UpDownWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction rangeSpec(schema) {\n\t var spec = {};\n\t if (schema.multipleOf) {\n\t spec.step = schema.multipleOf;\n\t }\n\t if (schema.minimum) {\n\t spec.min = schema.minimum;\n\t }\n\t if (schema.maximum) {\n\t spec.max = schema.maximum;\n\t }\n\t return spec;\n\t}\n\t\n\tfunction RangeWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-range-wrapper\" },\n\t _react2[\"default\"].createElement(\"input\", _extends({ type: \"range\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t }\n\t }, rangeSpec(schema))),\n\t _react2[\"default\"].createElement(\n\t \"span\",\n\t { className: \"range-view\" },\n\t value\n\t )\n\t );\n\t}\n\t\n\tif (false) {\n\t RangeWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t defaultValue: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = RangeWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(14);\n\t\n\t/**\n\t * This is a silly limitation in the DOM where option change event values are\n\t * always retrieved as strings.\n\t */\n\tfunction processValue(type, value) {\n\t if (type === \"boolean\") {\n\t return value === \"true\";\n\t } else if (type === \"number\") {\n\t return (0, _utils.asNumber)(value);\n\t }\n\t return value;\n\t}\n\t\n\tfunction SelectWidget(_ref) {\n\t var schema = _ref.schema;\n\t var options = _ref.options;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var multiple = _ref.multiple;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"select\",\n\t {\n\t multiple: multiple,\n\t title: placeholder,\n\t value: value,\n\t defaultValue: defaultValue,\n\t onChange: function (event) {\n\t var newValue = undefined;\n\t if (multiple) {\n\t newValue = [].filter.call(event.target.options, function (o) {\n\t return o.selected;\n\t }).map(function (o) {\n\t return o.value;\n\t });\n\t } else {\n\t newValue = event.target.value;\n\t }\n\t\n\t onChange(processValue(schema.type, newValue));\n\t } },\n\t options.map(function (option, i) {\n\t return _react2[\"default\"].createElement(\n\t \"option\",\n\t { key: i, value: option },\n\t String(option)\n\t );\n\t })\n\t );\n\t}\n\t\n\tif (false) {\n\t SelectWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t options: _react.PropTypes.array.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.any,\n\t defaultValue: _react.PropTypes.any,\n\t required: _react.PropTypes.bool,\n\t multiple: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = SelectWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction TextWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"textarea\", {\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t } });\n\t}\n\t\n\tif (false) {\n\t TextWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.string,\n\t defaultValue: _react.PropTypes.string,\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = TextWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(14);\n\t\n\tvar _widgetsSelectWidget = __webpack_require__(19);\n\t\n\tvar _widgetsSelectWidget2 = _interopRequireDefault(_widgetsSelectWidget);\n\t\n\tvar ArrayField = (function (_Component) {\n\t _inherits(ArrayField, _Component);\n\t\n\t _createClass(ArrayField, null, [{\n\t key: \"defaultProps\",\n\t value: {\n\t uiSchema: {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function ArrayField(props) {\n\t _classCallCheck(this, ArrayField);\n\t\n\t _get(Object.getPrototypeOf(ArrayField.prototype), \"constructor\", this).call(this, props);\n\t this.state = this.getStateFromProps(props);\n\t }\n\t\n\t _createClass(ArrayField, [{\n\t key: \"componentWillReceiveProps\",\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.getStateFromProps(nextProps));\n\t }\n\t }, {\n\t key: \"getStateFromProps\",\n\t value: function getStateFromProps(props) {\n\t var formData = Array.isArray(props.formData) ? props.formData : null;\n\t return { items: formData || (0, _utils.getDefaultFormState)(props.schema) || [] };\n\t }\n\t }, {\n\t key: \"isItemRequired\",\n\t value: function isItemRequired(itemsSchema) {\n\t return itemsSchema.type === \"string\" && itemsSchema.minLength > 0;\n\t }\n\t }, {\n\t key: \"asyncSetState\",\n\t value: function asyncSetState(state, options) {\n\t var _this = this;\n\t\n\t // ensure state is propagated to parent component when it's actually set\n\t this.setState(state, function (_) {\n\t return _this.props.onChange(_this.state.items, options);\n\t });\n\t }\n\t }, {\n\t key: \"onAddClick\",\n\t value: function onAddClick(event) {\n\t event.preventDefault();\n\t var items = this.state.items;\n\t var schema = this.props.schema;\n\t\n\t this.asyncSetState({\n\t items: items.concat((0, _utils.getDefaultFormState)(schema.items))\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"onDropClick\",\n\t value: function onDropClick(index, event) {\n\t event.preventDefault();\n\t this.asyncSetState({\n\t items: this.state.items.filter(function (_, i) {\n\t return i !== index;\n\t })\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"onChange\",\n\t value: function onChange(index, value) {\n\t this.asyncSetState({\n\t items: this.state.items.map(function (item, i) {\n\t return index === i ? value : item;\n\t })\n\t }, { validate: false });\n\t }\n\t }, {\n\t key: \"onSelectChange\",\n\t value: function onSelectChange(value) {\n\t this.asyncSetState({ items: value }, { validate: false });\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t var name = _props.name;\n\t\n\t var title = schema.title || name;\n\t var items = this.state.items;\n\t\n\t var SchemaField = this.props.registry.SchemaField;\n\t if ((0, _utils.isMultiSelect)(schema)) {\n\t return _react2[\"default\"].createElement(_widgetsSelectWidget2[\"default\"], {\n\t multiple: true,\n\t onChange: this.onSelectChange.bind(this),\n\t options: schema.items[\"enum\"],\n\t schema: schema,\n\t title: title,\n\t defaultValue: schema[\"default\"],\n\t value: items\n\t });\n\t }\n\t\n\t return _react2[\"default\"].createElement(\n\t \"fieldset\",\n\t {\n\t className: \"field field-array field-array-of-\" + schema.items.type },\n\t title ? _react2[\"default\"].createElement(\n\t \"legend\",\n\t null,\n\t title\n\t ) : null,\n\t schema.description ? _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-description\" },\n\t schema.description\n\t ) : null,\n\t _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"array-item-list\" },\n\t items.map(function (item, index) {\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { key: index },\n\t _react2[\"default\"].createElement(SchemaField, {\n\t schema: schema.items,\n\t uiSchema: uiSchema.items,\n\t formData: items[index],\n\t required: _this2.isItemRequired(schema.items),\n\t onChange: _this2.onChange.bind(_this2, index),\n\t registry: _this2.props.registry }),\n\t _react2[\"default\"].createElement(\n\t \"p\",\n\t { className: \"array-item-remove\" },\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"button\",\n\t onClick: _this2.onDropClick.bind(_this2, index) },\n\t \"-\"\n\t )\n\t )\n\t );\n\t })\n\t ),\n\t _react2[\"default\"].createElement(\n\t \"p\",\n\t { className: \"array-item-add\" },\n\t _react2[\"default\"].createElement(\n\t \"button\",\n\t { type: \"button\", onClick: this.onAddClick.bind(this) },\n\t \"+\"\n\t )\n\t )\n\t );\n\t }\n\t }, {\n\t key: \"itemTitle\",\n\t get: function get() {\n\t var schema = this.props.schema;\n\t\n\t return schema.items.title || schema.items.description || \"Item\";\n\t }\n\t }]);\n\t\n\t return ArrayField;\n\t})(_react.Component);\n\t\n\tif (false) {\n\t ArrayField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.array,\n\t registry: _react.PropTypes.shape({\n\t SchemaField: _react.PropTypes.func.isRequired,\n\t TitleField: _react.PropTypes.func.isRequired\n\t })\n\t };\n\t}\n\t\n\texports[\"default\"] = ArrayField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(14);\n\t\n\tvar _widgetsCheckboxWidget = __webpack_require__(23);\n\t\n\tvar _widgetsCheckboxWidget2 = _interopRequireDefault(_widgetsCheckboxWidget);\n\t\n\tfunction BooleanField(_ref) {\n\t var schema = _ref.schema;\n\t var name = _ref.name;\n\t var uiSchema = _ref.uiSchema;\n\t var formData = _ref.formData;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t var title = schema.title;\n\t var description = schema.description;\n\t\n\t var widget = uiSchema[\"ui:widget\"];\n\t var commonProps = {\n\t schema: schema,\n\t onChange: onChange,\n\t label: title || name,\n\t placeholder: description,\n\t defaultValue: schema[\"default\"],\n\t value: (0, _utils.defaultFieldValue)(formData, schema),\n\t required: required\n\t };\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(schema.type, widget);\n\t return _react2[\"default\"].createElement(Widget, _extends({ options: [true, false] }, commonProps));\n\t }\n\t return _react2[\"default\"].createElement(_widgetsCheckboxWidget2[\"default\"], commonProps);\n\t}\n\t\n\tif (false) {\n\t BooleanField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.bool,\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\tBooleanField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\texports[\"default\"] = BooleanField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction CheckboxWidget(_ref) {\n\t var schema = _ref.schema;\n\t var defaultValue = _ref.defaultValue;\n\t var value = _ref.value;\n\t var required = _ref.required;\n\t var placeholder = _ref.placeholder;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"input\", { type: \"checkbox\",\n\t title: placeholder,\n\t checked: value,\n\t defaultChecked: defaultValue,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.checked);\n\t } });\n\t}\n\tif (false) {\n\t CheckboxWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t onChange: _react.PropTypes.func,\n\t defaultValue: _react.PropTypes.bool,\n\t value: _react.PropTypes.bool,\n\t required: _react.PropTypes.bool,\n\t placeholder: _react.PropTypes.string\n\t };\n\t}\n\t\n\texports[\"default\"] = CheckboxWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(14);\n\t\n\tvar _StringField = __webpack_require__(25);\n\t\n\tvar _StringField2 = _interopRequireDefault(_StringField);\n\t\n\tfunction NumberField(props) {\n\t return _react2[\"default\"].createElement(_StringField2[\"default\"], _extends({}, props, {\n\t onChange: function (value) {\n\t return props.onChange((0, _utils.asNumber)(value));\n\t } }));\n\t}\n\t\n\tif (false) {\n\t NumberField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.number,\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\tNumberField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\texports[\"default\"] = NumberField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(14);\n\t\n\tvar _widgetsTextWidget = __webpack_require__(26);\n\t\n\tvar _widgetsTextWidget2 = _interopRequireDefault(_widgetsTextWidget);\n\t\n\tvar _widgetsSelectWidget = __webpack_require__(19);\n\t\n\tvar _widgetsSelectWidget2 = _interopRequireDefault(_widgetsSelectWidget);\n\t\n\tfunction StringField(_ref) {\n\t var schema = _ref.schema;\n\t var name = _ref.name;\n\t var uiSchema = _ref.uiSchema;\n\t var formData = _ref.formData;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t var title = schema.title;\n\t var description = schema.description;\n\t\n\t var widget = uiSchema[\"ui:widget\"];\n\t var commonProps = {\n\t schema: schema,\n\t label: title || name,\n\t placeholder: description,\n\t onChange: onChange,\n\t value: (0, _utils.defaultFieldValue)(formData, schema),\n\t required: required,\n\t defaultValue: schema[\"default\"]\n\t };\n\t if (Array.isArray(schema[\"enum\"])) {\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(schema.type, widget);\n\t return _react2[\"default\"].createElement(Widget, _extends({ options: schema[\"enum\"] }, commonProps));\n\t }\n\t return _react2[\"default\"].createElement(_widgetsSelectWidget2[\"default\"], _extends({ options: schema[\"enum\"] }, commonProps));\n\t }\n\t if (widget) {\n\t var Widget = (0, _utils.getAlternativeWidget)(schema.type, widget);\n\t return _react2[\"default\"].createElement(Widget, commonProps);\n\t }\n\t return _react2[\"default\"].createElement(_widgetsTextWidget2[\"default\"], commonProps);\n\t}\n\t\n\tif (false) {\n\t StringField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool\n\t };\n\t}\n\t\n\tStringField.defaultProps = {\n\t uiSchema: {}\n\t};\n\t\n\texports[\"default\"] = StringField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction TextWidget(_ref) {\n\t var schema = _ref.schema;\n\t var placeholder = _ref.placeholder;\n\t var value = _ref.value;\n\t var defaultValue = _ref.defaultValue;\n\t var required = _ref.required;\n\t var onChange = _ref.onChange;\n\t\n\t return _react2[\"default\"].createElement(\"input\", { type: \"text\",\n\t value: value,\n\t defaultValue: defaultValue,\n\t placeholder: placeholder,\n\t required: required,\n\t onChange: function (event) {\n\t return onChange(event.target.value);\n\t } });\n\t}\n\t\n\tif (false) {\n\t TextWidget.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t placeholder: _react.PropTypes.string,\n\t value: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t defaultValue: _react.PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.number]),\n\t required: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func\n\t };\n\t}\n\t\n\texports[\"default\"] = TextWidget;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _utils = __webpack_require__(14);\n\t\n\tvar ObjectField = (function (_Component) {\n\t _inherits(ObjectField, _Component);\n\t\n\t _createClass(ObjectField, null, [{\n\t key: \"defaultProps\",\n\t value: {\n\t uiSchema: {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function ObjectField(props) {\n\t _classCallCheck(this, ObjectField);\n\t\n\t _get(Object.getPrototypeOf(ObjectField.prototype), \"constructor\", this).call(this, props);\n\t this.state = this.getStateFromProps(props);\n\t }\n\t\n\t _createClass(ObjectField, [{\n\t key: \"componentWillReceiveProps\",\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.getStateFromProps(nextProps));\n\t }\n\t }, {\n\t key: \"getStateFromProps\",\n\t value: function getStateFromProps(props) {\n\t return props.formData || (0, _utils.getDefaultFormState)(props.schema) || {};\n\t }\n\t }, {\n\t key: \"isRequired\",\n\t value: function isRequired(name) {\n\t var schema = this.props.schema;\n\t return Array.isArray(schema.required) && schema.required.indexOf(name) !== -1;\n\t }\n\t }, {\n\t key: \"asyncSetState\",\n\t value: function asyncSetState(state) {\n\t var _this = this;\n\t\n\t // ensure state is propagated to parent component when it's actually set\n\t this.setState(state, function (_) {\n\t return _this.props.onChange(_this.state);\n\t });\n\t }\n\t }, {\n\t key: \"onChange\",\n\t value: function onChange(name, value) {\n\t this.asyncSetState(_defineProperty({}, name, value));\n\t }\n\t }, {\n\t key: \"render\",\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props;\n\t var schema = _props.schema;\n\t var uiSchema = _props.uiSchema;\n\t var name = _props.name;\n\t\n\t var title = schema.title || name;\n\t var _props$registry = this.props.registry;\n\t var SchemaField = _props$registry.SchemaField;\n\t var TitleField = _props$registry.TitleField;\n\t\n\t try {\n\t var orderedProperties = (0, _utils.orderProperties)(Object.keys(schema.properties), uiSchema[\"ui:order\"]);\n\t } catch (err) {\n\t return _react2[\"default\"].createElement(\n\t \"p\",\n\t { className: \"config-error\", style: { color: \"red\" } },\n\t \"Invalid \",\n\t name || \"root\",\n\t \" object field configuration:\",\n\t _react2[\"default\"].createElement(\n\t \"em\",\n\t null,\n\t err.message\n\t ),\n\t \".\"\n\t );\n\t }\n\t return _react2[\"default\"].createElement(\n\t \"fieldset\",\n\t null,\n\t title ? _react2[\"default\"].createElement(TitleField, { title: title }) : null,\n\t schema.description ? _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"field-description\" },\n\t schema.description\n\t ) : null,\n\t orderedProperties.map(function (name, index) {\n\t return _react2[\"default\"].createElement(SchemaField, { key: index,\n\t name: name,\n\t required: _this2.isRequired(name),\n\t schema: schema.properties[name],\n\t uiSchema: uiSchema[name],\n\t formData: _this2.state[name],\n\t onChange: _this2.onChange.bind(_this2, name),\n\t registry: _this2.props.registry });\n\t })\n\t );\n\t }\n\t }]);\n\t\n\t return ObjectField;\n\t})(_react.Component);\n\t\n\tif (false) {\n\t ObjectField.propTypes = {\n\t schema: _react.PropTypes.object.isRequired,\n\t uiSchema: _react.PropTypes.object,\n\t onChange: _react.PropTypes.func.isRequired,\n\t formData: _react.PropTypes.object,\n\t required: _react.PropTypes.bool,\n\t registry: _react.PropTypes.shape({\n\t SchemaField: _react.PropTypes.func.isRequired,\n\t TitleField: _react.PropTypes.func.isRequired\n\t })\n\t };\n\t}\n\t\n\texports[\"default\"] = ObjectField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports[\"default\"] = UnsupportedField;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction UnsupportedField(_ref) {\n\t var schema = _ref.schema;\n\t\n\t // XXX render json as string so dev can inspect faulty subschema\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"unsupported-field\" },\n\t \"Unsupported field schema \",\n\t JSON.stringify(schema, null, 2),\n\t \".\"\n\t );\n\t}\n\t\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction TitleField(props) {\n\t return _react2[\"default\"].createElement(\n\t \"legend\",\n\t null,\n\t props.title\n\t );\n\t}\n\t\n\tif (false) {\n\t TitleField.propTypes = {\n\t title: _react.PropTypes.string\n\t };\n\t}\n\t\n\texports[\"default\"] = TitleField;\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports[\"default\"] = ErrorList;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tvar _react = __webpack_require__(2);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction ErrorList(_ref) {\n\t var errors = _ref.errors;\n\t\n\t return _react2[\"default\"].createElement(\n\t \"div\",\n\t { className: \"errors\" },\n\t _react2[\"default\"].createElement(\n\t \"h2\",\n\t null,\n\t \"Errors\"\n\t ),\n\t _react2[\"default\"].createElement(\n\t \"ul\",\n\t null,\n\t errors.map(function (error, i) {\n\t return _react2[\"default\"].createElement(\n\t \"li\",\n\t { key: i },\n\t error.stack\n\t );\n\t })\n\t )\n\t );\n\t}\n\t\n\tmodule.exports = exports[\"default\"];\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** react-jsonschema-form.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 204d85c9545248ecf948\n **/","import Form from \"./components/Form\";\n\nexport default Form;\n\n\n\n/** WEBPACK FOOTER **\n ** ./index.js\n **/","import React, { Component, PropTypes } from \"react\";\nimport { Validator } from \"jsonschema\";\nimport SchemaField from \"./fields/SchemaField\";\nimport TitleField from \"./fields/TitleField\";\nimport { getDefaultFormState } from \"../utils\";\nimport ErrorList from \"./ErrorList\";\n\nexport default class Form extends Component {\n static defaultProps = {\n uiSchema: {}\n }\n\n constructor(props) {\n super(props);\n this.state = this.getStateFromProps(props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState(this.getStateFromProps(nextProps));\n }\n\n getStateFromProps(props) {\n const edit = !!props.formData;\n const formData = props.formData || getDefaultFormState(props.schema) || null;\n return {\n status: \"initial\",\n formData,\n edit,\n errors: edit ? this.validate(formData) : []\n };\n }\n\n validate(formData) {\n const validator = new Validator();\n return validator.validate(formData, this.props.schema).errors;\n }\n\n renderErrors() {\n const {status, errors} = this.state;\n if (status !== \"editing\" && errors.length) {\n return ;\n }\n return null;\n }\n\n onChange(formData, options={validate: true}) {\n this.setState({\n status: \"editing\",\n formData,\n errors: options.validate ? this.validate(formData) : this.state.errors\n }, _ => {\n if (this.props.onChange) {\n this.props.onChange(this.state);\n }\n });\n }\n\n onSubmit(event) {\n event.preventDefault();\n this.setState({status: \"submitted\"});\n const errors = this.validate(this.state.formData);\n if (Object.keys(errors).length > 0) {\n this.setState({errors}, _ => {\n if (this.props.onError) {\n this.props.onError(errors);\n } else {\n console.error(\"Form validation failed\", errors);\n }\n });\n return;\n } else if (this.props.onSubmit) {\n this.props.onSubmit(this.state);\n }\n this.setState({status: \"initial\"});\n }\n\n getRegistry() {\n return {\n SchemaField: this.props.SchemaField || SchemaField,\n TitleField: this.props.TitleField || TitleField,\n };\n }\n\n render() {\n const {children, schema, uiSchema} = this.props;\n const {formData} = this.state;\n const registry = this.getRegistry();\n const _SchemaField = registry.SchemaField;\n return (\n
\n {this.renderErrors()}\n <_SchemaField\n schema={schema}\n uiSchema={uiSchema}\n formData={formData}\n onChange={this.onChange.bind(this)}\n registry={registry}/>\n { children ? children :

}\n
\n );\n }\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Form.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n formData: PropTypes.any,\n onChange: PropTypes.func,\n onError: PropTypes.func,\n onSubmit: PropTypes.func,\n SchemaField: PropTypes.func,\n TitleField: PropTypes.func,\n };\n}\n\nexport default Form;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/Form.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}\n ** module id = 2\n ** module chunks = 0\n **/","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/index.js\n **/","'use strict';\n\nvar urilib = require('url');\n\nvar attribute = require('./attribute');\nvar helpers = require('./helpers');\nvar ValidatorResult = helpers.ValidatorResult;\nvar SchemaError = helpers.SchemaError;\nvar SchemaContext = helpers.SchemaContext;\n\n/**\n * Creates a new Validator object\n * @name Validator\n * @constructor\n */\nvar Validator = function Validator () {\n this.schemas = {};\n this.unresolvedRefs = [];\n\n // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n this.types = Object.create(types);\n this.attributes = Object.create(attribute.validators);\n};\n\n// Hint at the presence of a property\nValidator.prototype.schemas = null;\nValidator.prototype.types = null;\nValidator.prototype.attributes = null;\nValidator.prototype.unresolvedRefs = null;\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param schema\n * @param urn\n * @return {Object}\n */\nValidator.prototype.addSchema = function addSchema (schema, uri) {\n if (!schema) {\n return null;\n }\n var ourUri = uri || schema.id;\n this.addSubSchema(ourUri, schema);\n if (ourUri) {\n this.schemas[ourUri] = schema;\n }\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchema = function addSubSchema(baseuri, schema) {\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n // Only mark unknown schemas as unresolved\n if (this.schemas[resolvedUri] === undefined) {\n this.schemas[resolvedUri] = null;\n this.unresolvedRefs.push(resolvedUri);\n }\n return;\n }\n var ourUri = schema.id && urilib.resolve(baseuri, schema.id);\n var ourBase = ourUri || baseuri;\n if (ourUri) {\n if(this.schemas[ourUri]){\n if(!helpers.deepCompareStrict(this.schemas[ourUri], schema)){\n throw new Error('Schema <'+schema+'> already exists with different definition');\n }\n return this.schemas[ourUri];\n }\n this.schemas[ourUri] = schema;\n var documentUri = ourUri.replace(/^([^#]*)#$/, '$1');\n this.schemas[documentUri] = schema;\n }\n this.addSubSchemaArray(ourBase, ((schema.items instanceof Array)?schema.items:[schema.items]));\n this.addSubSchemaArray(ourBase, ((schema.extends instanceof Array)?schema.extends:[schema.extends]));\n this.addSubSchema(ourBase, schema.additionalItems);\n this.addSubSchemaObject(ourBase, schema.properties);\n this.addSubSchema(ourBase, schema.additionalProperties);\n this.addSubSchemaObject(ourBase, schema.definitions);\n this.addSubSchemaObject(ourBase, schema.patternProperties);\n this.addSubSchemaObject(ourBase, schema.dependencies);\n this.addSubSchemaArray(ourBase, schema.disallow);\n this.addSubSchemaArray(ourBase, schema.allOf);\n this.addSubSchemaArray(ourBase, schema.anyOf);\n this.addSubSchemaArray(ourBase, schema.oneOf);\n this.addSubSchema(ourBase, schema.not);\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n if(!(schemas instanceof Array)) return;\n for(var i=0; i\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n return typeof instance == 'number';\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.number = function testNumber (instance) {\n return typeof instance == 'number';\n};\ntypes.array = function testArray (instance) {\n return instance instanceof Array;\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance) === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/validator.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/url.js\n **/","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/punycode/punycode.js\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/buildin/module.js\n **/","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/index.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/decode.js\n **/","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/webpack/~/node-libs-browser/~/url/~/querystring/encode.js\n **/","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'exclusiveMinimum': true,\n 'exclusiveMaximum': true,\n 'additionalItems': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = (schema.type instanceof Array) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n return v.id && ('<' + v.id + '>') || (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchema(instance, options, ctx, schema){\n return this.validateSchema(instance, schema, options, ctx).valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(schema.anyOf instanceof Array)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(testSchema.bind(this, instance, options, ctx))) {\n var list = schema.anyOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!(schema.allOf instanceof Array)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var msg = (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!(schema.oneOf instanceof Array)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(testSchema.bind(this, instance, options, ctx)).length;\n var list = schema.oneOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(instance === undefined || !(instance instanceof Object)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var prop = (instance || undefined) && instance[property];\n var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\",\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(instance === undefined) return;\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var expr = new RegExp(pattern);\n if (!expr.test(property)) {\n continue;\n }\n test = false;\n var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(instance === undefined) return;\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!instance || typeof instance !== 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n })\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!instance || typeof instance !== 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var self = this;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined || !schema.items) {\n return result;\n }\n instance.every(function (value, i) {\n var items = (schema.items instanceof Array) ? (schema.items[i] || schema.additionalItems) : schema.items;\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = true;\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n valid = instance > schema.minimum;\n } else {\n valid = instance >= schema.minimum;\n }\n if (!valid) {\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must have a minimum value of \" + schema.minimum,\n });\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid;\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n valid = instance < schema.maximum;\n } else {\n valid = instance <= schema.maximum;\n }\n if (!valid) {\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must have a maximum value of \" + schema.maximum,\n });\n }\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * Of course, this is susceptible to floating point error since it compares the floating points\n * and not the JSON byte sequences to arbitrary precision.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n\n if (schema.divisibleBy == 0) {\n throw new SchemaError(\"divisibleBy cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance / schema.divisibleBy % 1) {\n result.addError({\n name: 'divisibleBy',\n argument: schema.divisibleBy,\n message: \"is not divisible by (multiple of) \" + JSON.stringify(schema.divisibleBy),\n });\n }\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * Of course, this is susceptible to floating point error since it compares the floating points\n * and not the JSON byte sequences to arbitrary precision.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n\n if (schema.multipleOf == 0) {\n throw new SchemaError(\"multipleOf cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance / schema.multipleOf % 1) {\n result.addError({\n name: 'multipleOf',\n argument: schema.multipleOf,\n message: \"is not a multiple of (divisible by) \" + JSON.stringify(schema.multipleOf),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n result.addError({\n name: 'required',\n message: \"is required\"\n });\n } else if (instance && typeof instance==='object' && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(instance[n]===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (typeof instance !== 'string') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.match(schema.pattern)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format, when the instance value is a string.\n * The following format are supported:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.isFormat(instance, schema.format)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Validates that every item in an instance array is unique, when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance instanceof Array)) {\n return result;\n }\n function testArrays (v, i, a) {\n for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n return true;\n }\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (!(instance instanceof Array)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!instance || typeof instance != 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (dep instanceof Array) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (!(schema['enum'] instanceof Array)) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!(notTypes instanceof Array)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var schemaId = type && type.id && ('<' + type.id + '>') || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/attribute.js\n **/","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, propertyPath, name, argument) {\n if (propertyPath) {\n this.property = propertyPath;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n if (schema.id) {\n this.schema = schema.id;\n } else {\n this.schema = schema;\n }\n }\n if (instance) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n }\n\n if (this.throwError) {\n throw err;\n }\n this.errors.push(err);\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n var errs = this.errors;\n res.errors.forEach(function (v) {\n errs.push(v);\n });\n }\n};\n\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(function(v,i){ return i+': '+v.toString()+'\\n'; }).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n { constructor: {value: SchemaError, enumerable: false}\n , name: {value: 'SchemaError', enumerable: false}\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, propertyPath, base, schemas) {\n this.schema = schema;\n this.options = options;\n this.propertyPath = propertyPath;\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var propertyPath = (propertyName===undefined) ? this.propertyPath : this.propertyPath+makeSuffix(propertyName);\n var base = uri.resolve(this.base, schema.id||'');\n var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n if(schema.id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n}\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([zZ]|[+-]\\d{2}:\\d{2})$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/,\n 'time': /^\\d{2}:\\d{2}:\\d{2}$/,\n\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n 'style': /\\s*(.+?):\\s*([^;]+);?/g,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format) {\n if (FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n }\n return false;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (a instanceof Array) {\n if (!(b instanceof Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nmodule.exports.deepMerge = function deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(function (e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e)\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e)\n }\n }\n });\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(function (key) {\n dst[key] = target[key];\n });\n }\n Object.keys(src).forEach(function (key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key])\n }\n }\n });\n }\n\n return dst;\n};\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n\t// ~ must be encoded explicitly because hacks\n\t// the slash is encoded by encodeURIComponent\n\treturn a.map(function(v){ return '/'+encodeURIComponent(v).replace(/~/g,'%7E'); }).join('');\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jsonschema/lib/helpers.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { isMultiSelect } from \"../../utils\";\nimport ArrayField from \"./ArrayField\";\nimport BooleanField from \"./BooleanField\";\nimport NumberField from \"./NumberField\";\nimport ObjectField from \"./ObjectField\";\nimport StringField from \"./StringField\";\nimport UnsupportedField from \"./UnsupportedField\";\n\nconst REQUIRED_FIELD_SYMBOL = \"*\";\nconst COMPONENT_TYPES = {\n \"array\": ArrayField,\n \"boolean\": BooleanField,\n \"date-time\": StringField,\n \"integer\": NumberField,\n \"number\": NumberField,\n \"object\": ObjectField,\n \"string\": StringField,\n};\n\n\nfunction getLabel(label, required) {\n if (!label) {\n return null;\n }\n if (required) {\n return label + REQUIRED_FIELD_SYMBOL;\n }\n return label;\n}\n\nfunction getContent({type, label, required, children, displayLabel}) {\n if (!displayLabel) {\n return children;\n }\n\n return (\n \n );\n}\n\nfunction Wrapper(props) {\n const {type, classNames} = props;\n return (\n
\n {getContent(props)}\n
\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Wrapper.propTypes = {\n type: PropTypes.string.isRequired,\n label: PropTypes.string,\n required: PropTypes.bool,\n isEnum: PropTypes.bool,\n children: React.PropTypes.node.isRequired,\n classNames: React.PropTypes.string,\n };\n}\n\nWrapper.defaultProps = {\n classNames: \"\"\n};\n\nfunction SchemaField(props) {\n const {schema, uiSchema, name, required} = props;\n const FieldComponent = COMPONENT_TYPES[schema.type] || UnsupportedField;\n let displayLabel = true;\n if (schema.type === \"array\") {\n displayLabel = isMultiSelect(schema);\n }\n if (schema.type === \"object\") {\n displayLabel = false;\n }\n\n return (\n \n \n \n );\n}\n\nSchemaField.defaultProps = {\n uiSchema: {}\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n SchemaField.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n };\n}\n\nexport default SchemaField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/SchemaField.js\n **/","import PasswordWidget from \"./components/widgets/PasswordWidget\";\nimport RadioWidget from \"./components/widgets/RadioWidget\";\nimport UpDownWidget from \"./components/widgets/UpDownWidget\";\nimport RangeWidget from \"./components/widgets/RangeWidget\";\nimport SelectWidget from \"./components/widgets/SelectWidget\";\nimport TextareaWidget from \"./components/widgets/TextareaWidget\";\n\n\nconst altWidgetMap = {\n boolean: {\n radio: RadioWidget,\n select: SelectWidget,\n },\n string: {\n password: PasswordWidget,\n radio: RadioWidget,\n select: SelectWidget,\n textarea: TextareaWidget,\n },\n number: {\n updown: UpDownWidget,\n range: RangeWidget,\n },\n integer: {\n updown: UpDownWidget,\n range: RangeWidget,\n }\n};\n\nexport function defaultTypeValue(type) {\n switch (type) {\n case \"array\": return [];\n case \"boolean\": return false;\n case \"date-time\": return \"\";\n case \"number\": return 0;\n case \"object\": return {};\n case \"string\": return \"\";\n default: return undefined;\n }\n}\n\nexport function defaultFieldValue(formData, schema) {\n return formData === null ? defaultTypeValue(schema.type) : formData;\n}\n\nexport function getAlternativeWidget(type, widget) {\n if (typeof widget === \"function\") {\n return widget;\n }\n if (typeof widget !== \"string\") {\n throw new Error(`Unsupported widget definition: ${typeof widget}`);\n }\n if (!altWidgetMap.hasOwnProperty(type)) {\n throw new Error(`No alternative widget for type ${type}`);\n }\n if (!altWidgetMap[type].hasOwnProperty(widget)) {\n throw new Error(`No alternative widget \"${widget}\" for type ${type}`);\n }\n return altWidgetMap[type][widget];\n}\n\nexport function getDefaultFormState(schema) {\n if (typeof schema !== \"object\") {\n throw new Error(\"Invalid schema: \" + schema);\n }\n if (\"default\" in schema) {\n return schema.default;\n }\n if (schema.type === \"object\") {\n return Object.keys(schema.properties).reduce((acc, key) => {\n acc[key] = getDefaultFormState(schema.properties[key]);\n return acc;\n }, {});\n }\n return defaultTypeValue(schema.type);\n}\n\nexport function asNumber(value) {\n const n = Number(value);\n const valid = typeof n === \"number\" && !Number.isNaN(n);\n return valid ? n : value;\n}\n\nexport function orderProperties(properties, order) {\n if (!Array.isArray(order)) {\n return properties;\n }\n if (order.length !== properties.length) {\n throw new Error(\n \"uiSchema order list length should match object properties length\");\n }\n const fingerprint = (arr) => [].slice.call(arr).sort().toString();\n if (fingerprint(order) !== fingerprint(properties)) {\n throw new Error(\n \"uiSchema order list does not match object properties list\");\n }\n return order;\n}\n\nexport function isMultiSelect(schema) {\n return Array.isArray(schema.items.enum) && schema.uniqueItems;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./utils.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction PasswordWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n onChange(event.target.value)} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n PasswordWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n defaultValue: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default PasswordWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/PasswordWidget.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction RadioWidget({\n schema,\n options,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n // Generating a unique field name to identify this set of radio buttons\n const name = Math.random().toString();\n return (\n
{\n options.map((option, i) => {\n const checked = value !== undefined ? option === value :\n option === defaultValue;\n return (\n \n );\n })\n }
\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n RadioWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n options: PropTypes.array.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\nexport default RadioWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/RadioWidget.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction rangeSpec(schema) {\n const spec = {};\n if (schema.multipleOf) {\n spec.step = schema.multipleOf;\n }\n if (schema.minimum) {\n spec.min = schema.minimum;\n }\n if (schema.maximum) {\n spec.max = schema.maximum;\n }\n return spec;\n}\n\nfunction UpDownWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n onChange(event.target.value)}\n {...rangeSpec(schema)} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n UpDownWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n defaultValue: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default UpDownWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/UpDownWidget.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction rangeSpec(schema) {\n const spec = {};\n if (schema.multipleOf) {\n spec.step = schema.multipleOf;\n }\n if (schema.minimum) {\n spec.min = schema.minimum;\n }\n if (schema.maximum) {\n spec.max = schema.maximum;\n }\n return spec;\n}\n\nfunction RangeWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n
\n onChange(event.target.value)}\n {...rangeSpec(schema)} />\n {value}\n
\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n RangeWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n defaultValue: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default RangeWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/RangeWidget.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { asNumber } from \"../../utils\";\n\n\n/**\n * This is a silly limitation in the DOM where option change event values are\n * always retrieved as strings.\n */\nfunction processValue(type, value) {\n if (type === \"boolean\") {\n return value === \"true\";\n } else if (type === \"number\") {\n return asNumber(value);\n }\n return value;\n}\n\nfunction SelectWidget({\n schema,\n options,\n placeholder,\n value,\n defaultValue,\n required,\n multiple,\n onChange\n}) {\n return (\n {\n let newValue;\n if (multiple) {\n newValue = [].filter.call(\n event.target.options, o => o.selected).map(o => o.value);\n } else {\n newValue = event.target.value;\n }\n\n onChange(processValue(schema.type, newValue));\n }}>{\n options.map((option, i) => {\n return ;\n })\n }\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n SelectWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n options: PropTypes.array.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n required: PropTypes.bool,\n multiple: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default SelectWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/SelectWidget.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction TextWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n onChange(event.target.value)} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n TextWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default TextWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/TextareaWidget.js\n **/","import React, { Component, PropTypes } from \"react\";\n\nimport { getDefaultFormState, isMultiSelect } from \"../../utils\";\nimport SelectWidget from \"./../widgets/SelectWidget\";\n\n\nclass ArrayField extends Component {\n static defaultProps = {\n uiSchema: {}\n };\n\n constructor(props) {\n super(props);\n this.state = this.getStateFromProps(props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState(this.getStateFromProps(nextProps));\n }\n\n getStateFromProps(props) {\n const formData = Array.isArray(props.formData) ? props.formData : null;\n return {items: formData || getDefaultFormState(props.schema) || []};\n }\n\n get itemTitle() {\n const {schema} = this.props;\n return schema.items.title || schema.items.description || \"Item\";\n }\n\n isItemRequired(itemsSchema) {\n return itemsSchema.type === \"string\" && itemsSchema.minLength > 0;\n }\n\n asyncSetState(state, options) {\n // ensure state is propagated to parent component when it's actually set\n this.setState(state, _ => this.props.onChange(this.state.items, options));\n }\n\n onAddClick(event) {\n event.preventDefault();\n const {items} = this.state;\n const {schema} = this.props;\n this.asyncSetState({\n items: items.concat(getDefaultFormState(schema.items))\n }, {validate: false});\n }\n\n onDropClick(index, event) {\n event.preventDefault();\n this.asyncSetState({\n items: this.state.items.filter((_, i) => i !== index)\n }, {validate: false});\n }\n\n onChange(index, value) {\n this.asyncSetState({\n items: this.state.items.map((item, i) => {\n return index === i ? value : item;\n })\n }, {validate: false});\n }\n\n onSelectChange(value) {\n this.asyncSetState({items: value}, {validate: false});\n }\n\n render() {\n const {schema, uiSchema, name} = this.props;\n const title = schema.title || name;\n const {items} = this.state;\n const SchemaField = this.props.registry.SchemaField;\n if (isMultiSelect(schema)) {\n return (\n \n );\n }\n\n return (\n \n {title ? {title} : null}\n {schema.description ?\n
{schema.description}
: null}\n
{\n items.map((item, index) => {\n return (\n
\n \n

\n

\n
\n );\n })\n }
\n

\n \n

\n \n );\n }\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n ArrayField.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.array,\n registry: PropTypes.shape({\n SchemaField: PropTypes.func.isRequired,\n TitleField: PropTypes.func.isRequired\n })\n };\n}\n\nexport default ArrayField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/ArrayField.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { defaultFieldValue, getAlternativeWidget } from \"../../utils\";\nimport CheckboxWidget from \"./../widgets/CheckboxWidget\";\n\nfunction BooleanField({schema, name, uiSchema, formData, required, onChange}) {\n const {title, description} = schema;\n const widget = uiSchema[\"ui:widget\"];\n const commonProps = {\n schema,\n onChange,\n label: title || name,\n placeholder: description,\n defaultValue: schema.default,\n value: defaultFieldValue(formData, schema),\n required,\n };\n if (widget) {\n const Widget = getAlternativeWidget(schema.type, widget);\n return ;\n }\n return ;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n BooleanField.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.bool,\n required: PropTypes.bool,\n };\n}\n\nBooleanField.defaultProps = {\n uiSchema: {}\n};\n\nexport default BooleanField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/BooleanField.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction CheckboxWidget({\n schema,\n defaultValue,\n value,\n required,\n placeholder,\n onChange,\n}) {\n return (\n onChange(event.target.checked)} />\n );\n}\nif (process.env.NODE_ENV !== \"production\") {\n CheckboxWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n defaultValue: PropTypes.bool,\n value: PropTypes.bool,\n required: PropTypes.bool,\n placeholder: PropTypes.string,\n };\n}\n\nexport default CheckboxWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/CheckboxWidget.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { asNumber } from \"../../utils\";\nimport StringField from \"./StringField\";\n\nfunction NumberField(props) {\n return (\n props.onChange(asNumber(value))} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n NumberField.propTypes = {\n schema: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.number,\n required: PropTypes.bool,\n };\n}\n\nNumberField.defaultProps = {\n uiSchema: {}\n};\n\nexport default NumberField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/NumberField.js\n **/","import React, { PropTypes } from \"react\";\n\nimport { defaultFieldValue, getAlternativeWidget } from \"../../utils\";\nimport TextWidget from \"./../widgets/TextWidget\";\nimport SelectWidget from \"./../widgets/SelectWidget\";\n\n\nfunction StringField({schema, name, uiSchema, formData, required, onChange}) {\n const {title, description} = schema;\n const widget = uiSchema[\"ui:widget\"];\n const commonProps = {\n schema,\n label: title || name,\n placeholder: description,\n onChange,\n value: defaultFieldValue(formData, schema),\n required: required,\n defaultValue: schema.default,\n };\n if (Array.isArray(schema.enum)) {\n if (widget) {\n const Widget = getAlternativeWidget(schema.type, widget);\n return ;\n }\n return ;\n }\n if (widget) {\n const Widget = getAlternativeWidget(schema.type, widget);\n return ;\n }\n return ;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n StringField.propTypes = {\n schema: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n };\n}\n\nStringField.defaultProps = {\n uiSchema: {}\n};\n\nexport default StringField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/StringField.js\n **/","import React, { PropTypes } from \"react\";\n\n\nfunction TextWidget({\n schema,\n placeholder,\n value,\n defaultValue,\n required,\n onChange\n}) {\n return (\n onChange(event.target.value)} />\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n TextWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n defaultValue: PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n required: PropTypes.bool,\n onChange: PropTypes.func,\n };\n}\n\nexport default TextWidget;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/widgets/TextWidget.js\n **/","import React, { Component, PropTypes } from \"react\";\n\nimport { getDefaultFormState, orderProperties } from \"../../utils\";\n\n\nclass ObjectField extends Component {\n static defaultProps = {\n uiSchema: {}\n }\n\n constructor(props) {\n super(props);\n this.state = this.getStateFromProps(props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState(this.getStateFromProps(nextProps));\n }\n\n getStateFromProps(props) {\n return props.formData || getDefaultFormState(props.schema) || {};\n }\n\n isRequired(name) {\n const schema = this.props.schema;\n return Array.isArray(schema.required) &&\n schema.required.indexOf(name) !== -1;\n }\n\n asyncSetState(state) {\n // ensure state is propagated to parent component when it's actually set\n this.setState(state, _ => this.props.onChange(this.state));\n }\n\n onChange(name, value) {\n this.asyncSetState({[name]: value});\n }\n\n render() {\n const {schema, uiSchema, name} = this.props;\n const title = schema.title || name;\n const {SchemaField, TitleField} = this.props.registry;\n try {\n var orderedProperties = orderProperties(\n Object.keys(schema.properties), uiSchema[\"ui:order\"]);\n } catch(err) {\n return (\n

\n Invalid {name || \"root\"} object field configuration:\n {err.message}.\n

\n );\n }\n return (\n
\n {title ? : null}\n {schema.description ?\n
{schema.description}
: null}\n {\n orderedProperties.map((name, index) => {\n return (\n \n );\n })\n }
\n );\n }\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n ObjectField.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n formData: PropTypes.object,\n required: PropTypes.bool,\n registry: PropTypes.shape({\n SchemaField: PropTypes.func.isRequired,\n TitleField: PropTypes.func.isRequired\n })\n };\n}\n\nexport default ObjectField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/ObjectField.js\n **/","import React from \"react\";\n\n\nexport default function UnsupportedField({schema}) {\n // XXX render json as string so dev can inspect faulty subschema\n return (\n
\n Unsupported field schema {JSON.stringify(schema, null, 2)}.\n
\n );\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/UnsupportedField.js\n **/","import React, {PropTypes} from \"react\";\n\nfunction TitleField(props) {\n return {props.title};\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n TitleField.propTypes = {\n title: PropTypes.string\n };\n}\n\nexport default TitleField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/fields/TitleField.js\n **/","import React from \"react\";\n\n\nexport default function ErrorList({errors}) {\n return (\n
\n

Errors

\n
    {\n errors.map((error, i) => {\n return
  • {error.stack}
  • ;\n })\n }
\n
\n );\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./components/ErrorList.js\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index ae2bde3e1d..7803d42da0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-jsonschema-form", - "version": "0.11.0", + "version": "0.12.0", "description": "A simple React component capable of building HTML forms out of a JSON schema.", "scripts": { "build:css": "cp css/react-jsonschema-form.css dist/",