!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r(n.d3_hierarchy=n.d3_hierarchy||{})}(this,function(n){"use strict";function r(n){var r,e,t,u,i=this,a=[i];do for(r=a.reverse(),a=[];null!=(i=r.pop());)if(n(i),e=i.children)for(t=0,u=e.length;u>t;++t)a.push(e[t]);while(a.length)}function e(n){for(var r,e,t=this,u=[t],i=[];null!=(t=u.pop());)if(i.push(t),r=t.children)for(e=r.length-1;e>=0;--e)u.push(r[e]);for(;null!=(t=i.pop());)n(t)}function t(n){for(var r,e,t=this,u=[t];null!=(t=u.pop());)if(n(t),r=t.children)for(e=r.length-1;e>=0;--e)u.push(r[e])}function u(n){this.eachBefore(function(r){r.children&&r.children.sort(n)})}function i(){}function a(n){return n.id}function o(n){return n.parent}function f(n){return n.value}function c(n,r){return r.value-n.value}function l(n){var r=new Array(n);return function(n){var e=n.index;if(r[e])throw new Error("cycle");n.depth=n.parent?n.parent.depth+1:0,r[e]=1}}function h(){function n(n){var t=r(n),u=t[0],i=-1;return u.eachBefore(l(n.length)),u.eachAfter(e(n)),null!=d&&u.sort(d),u.each(function(n){t[++i]=n}),t.data=n,t}function r(n){var r,e,a,o,f,c,l,h=n.length,d={},v=new Array(h);for(r=0;h>r;++r){if(o=M+(a=t(e=n[r],r,n)+""),d[o])throw new Error("duplicate: "+a);d[o]=v[r]=f=new i,f.id=a,f.data=e,f.index=r}for(r=0;h>r;++r)if(f=v[r],a=u(e=n[r],r,n),null==a){if(l)throw new Error("multiple roots");l=v[0],v[0]=f,v[r]=l}else{if(c=d[M+a],!c)throw new Error("missing: "+a);f.parent=c,c.children?c.children.push(f):c.children=[f]}if(!l)throw new Error("cycle");return v}function e(n){return function(r){for(var e=+h(r.data,r.index,n)||0,t=r.children,u=t&&t.length;--u>=0;)e+=t[u].value;r.value=e}}var t=a,u=o,h=f,d=c;return n.revalue=function(n){return n[0].eachAfter(e(n.data)),n},n.id=function(r){return arguments.length?(t=r,n):t},n.parentId=function(r){return arguments.length?(u=r,n):u},n.value=function(r){return arguments.length?(h=r,n):h},n.sort=function(r){return arguments.length?(d=r,n):d},n}function d(n,r){return n.revalue=r.revalue,n.id=function(){var e=r.id.apply(r,arguments);return e===r?n:e},n.parentId=function(){var e=r.parentId.apply(r,arguments);return e===r?n:e},n.value=function(){var e=r.value.apply(r,arguments);return e===r?n:e},n.sort=function(){var e=r.sort.apply(r,arguments);return e===r?n:e},n}function v(){function n(n){var e=t(n);return r(e[0]),e}function r(n){n.x0=n.y0=-a,n.x1=u+a,n.y1=i+a,n.eachBefore(e),l&&n.eachBefore(p)}function e(n){var r=n.x0+a,e=n.y0+a,t=n.x1-a,u=n.y1-a;r>t&&(r=t=(r+t)/2),e>u&&(e=u=(e+u)/2),n.x0=r,n.y0=e,n.x1=t,n.y1=u,n.children&&(r+=f,e+=f,t-=f,u-=f,r>t&&(r=t=(r+t)/2),e>u&&(e=u=(e+u)/2),c(n,r,e,t,u))}var t=h(),u=1,i=1,a=0,o=0,f=0,c=q,l=!1;return d(n,t),n.revalue=function(n){return t.revalue(n),r(n[0]),n},n.round=function(r){return arguments.length?(l=!!r,n):l},n.size=function(r){return arguments.length?(u=+r[0],i=+r[1],n):[u,i]},n.tile=function(r){return arguments.length?(c=r,n):c},n.padding=function(r){return arguments.length?(a=(o=+r)/2,f=a,n):2*a},n.paddingInner=function(r){return arguments.length?(a=r/2,f=o-a,n):2*a},n.paddingOuter=function(r){return arguments.length?(o=+r,f=o-a,n):o},n}function p(n){n.x0=Math.round(n.x0),n.y0=Math.round(n.y0),n.x1=Math.round(n.x1),n.y1=Math.round(n.y1)}function y(n,r,e,t,u){var i=n.children;s(i,0,i.length,n.value,r,e,t,u)}function s(n,r,e,t,u,i,a,o){if(r>=e-1)return n=n[r],n.x0=u,n.y0=i,n.x1=a,n.y1=o,void 0;var f=r,c=t/2,l=0;do l+=n[f].value;while(++fl);var h=t-l;if(o-i>a-u){var d=(i*h+o*l)/t;s(n,r,f,l,u,i,a,d),s(n,f,e,h,u,d,a,o)}else{var v=(u*h+a*l)/t;s(n,r,f,l,u,i,v,o),s(n,f,e,h,v,i,a,o)}}function x(n,r,e,t,u){for(var i,a=n.children,o=-1,f=a.length,c=(t-r)/n.value;++oM;){if(h=u-e,d=i-t,v=(a=m[M]).value,a._squarify)for(f=M+1;ff;++f){if(v+=o=m[f].value,p>o&&(p=o),o>y&&(y=o),x=v*v*s,g=Math.max(y/x,x/p),g>w){v-=o;break}w=g}a._squarify=d>h?f:-f}if(a._squarify>0){for(c=e,l=t+d*v/B,h/=v;f>M;++M)a=m[M],a.x0=c,a.y0=t,a.y1=l,a.x1=c+=a.value*h;t=l}else{for(l=t,c=e+h*v/B,d/=v;f>M;++M)a=m[M],a.y0=l,a.x0=e,a.x1=c,a.y1=l+=a.value*d;e=c}B-=v}}return r.ratio=function(n){return B((n=+n)>1?n:1)},r}((1+Math.sqrt(5))/2);n.version=m,n.hierarchy=h,n.treemap=v,n.treemapBinary=y,n.treemapDice=x,n.treemapSlice=g,n.treemapSliceDice=w,n.treemapSquarify=q});