Skip to content

Instantly share code, notes, and snippets.

@SBoudrias
Created August 4, 2018 15:15
Show Gist options
  • Save SBoudrias/3004406099a97f05478305311e5dc3a3 to your computer and use it in GitHub Desktop.
Save SBoudrias/3004406099a97f05478305311e5dc3a3 to your computer and use it in GitHub Desktop.
// source https://jsbin.com
This file has been truncated, but you can view the full file.
<html>
<head>
<meta charset="utf-8">
<style> /*! TACHYONS v4.11.1 | http://tachyons.io */
/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}.border-box,a,article,aside,blockquote,body,code,dd,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,html,input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],legend,li,main,nav,ol,p,pre,section,table,td,textarea,th,tr,ul{box-sizing:border-box}.aspect-ratio{height:0;position:relative}.aspect-ratio--16x9{padding-bottom:56.25%}.aspect-ratio--9x16{padding-bottom:177.77%}.aspect-ratio--4x3{padding-bottom:75%}.aspect-ratio--3x4{padding-bottom:133.33%}.aspect-ratio--6x4{padding-bottom:66.6%}.aspect-ratio--4x6{padding-bottom:150%}.aspect-ratio--8x5{padding-bottom:62.5%}.aspect-ratio--5x8{padding-bottom:160%}.aspect-ratio--7x5{padding-bottom:71.42%}.aspect-ratio--5x7{padding-bottom:140%}.aspect-ratio--1x1{padding-bottom:100%}.aspect-ratio--object{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}img{max-width:100%}.cover{background-size:cover!important}.contain{background-size:contain!important}.bg-center{background-position:50%}.bg-center,.bg-top{background-repeat:no-repeat}.bg-top{background-position:top}.bg-right{background-position:100%}.bg-bottom,.bg-right{background-repeat:no-repeat}.bg-bottom{background-position:bottom}.bg-left{background-repeat:no-repeat;background-position:0}.outline{outline:1px solid}.outline-transparent{outline:1px solid transparent}.outline-0{outline:0}.ba{border-style:solid;border-width:1px}.bt{border-top-style:solid;border-top-width:1px}.br{border-right-style:solid;border-right-width:1px}.bb{border-bottom-style:solid;border-bottom-width:1px}.bl{border-left-style:solid;border-left-width:1px}.bn{border-style:none;border-width:0}.b--black{border-color:#000}.b--near-black{border-color:#111}.b--dark-gray{border-color:#333}.b--mid-gray{border-color:#555}.b--gray{border-color:#777}.b--silver{border-color:#999}.b--light-silver{border-color:#aaa}.b--moon-gray{border-color:#ccc}.b--light-gray{border-color:#eee}.b--near-white{border-color:#f4f4f4}.b--white{border-color:#fff}.b--white-90{border-color:hsla(0,0%,100%,.9)}.b--white-80{border-color:hsla(0,0%,100%,.8)}.b--white-70{border-color:hsla(0,0%,100%,.7)}.b--white-60{border-color:hsla(0,0%,100%,.6)}.b--white-50{border-color:hsla(0,0%,100%,.5)}.b--white-40{border-color:hsla(0,0%,100%,.4)}.b--white-30{border-color:hsla(0,0%,100%,.3)}.b--white-20{border-color:hsla(0,0%,100%,.2)}.b--white-10{border-color:hsla(0,0%,100%,.1)}.b--white-05{border-color:hsla(0,0%,100%,.05)}.b--white-025{border-color:hsla(0,0%,100%,.025)}.b--white-0125{border-color:hsla(0,0%,100%,.0125)}.b--black-90{border-color:rgba(0,0,0,.9)}.b--black-80{border-color:rgba(0,0,0,.8)}.b--black-70{border-color:rgba(0,0,0,.7)}.b--black-60{border-color:rgba(0,0,0,.6)}.b--black-50{border-color:rgba(0,0,0,.5)}.b--black-40{border-color:rgba(0,0,0,.4)}.b--black-30{border-color:rgba(0,0,0,.3)}.b--black-20{border-color:rgba(0,0,0,.2)}.b--black-10{border-color:rgba(0,0,0,.1)}.b--black-05{border-color:rgba(0,0,0,.05)}.b--black-025{border-color:rgba(0,0,0,.025)}.b--black-0125{border-color:rgba(0,0,0,.0125)}.b--dark-red{border-color:#e7040f}.b--red{border-color:#ff4136}.b--light-red{border-color:#ff725c}.b--orange{border-color:#ff6300}.b--gold{border-color:#ffb700}.b--yellow{border-color:gold}.b--light-yellow{border-color:#fbf1a9}.b--purple{border-color:#5e2ca5}.b--light-purple{border-color:#a463f2}.b--dark-pink{border-color:#d5008f}.b--hot-pink{border-color:#ff41b4}.b--pink{border-color:#ff80cc}.b--light-pink{border-color:#ffa3d7}.b--dark-green{border-color:#137752}.b--green{border-color:#19a974}.b--light-green{border-color:#9eebcf}.b--navy{border-color:#001b44}.b--dark-blue{border-color:#00449e}.b--blue{border-color:#357edd}.b--light-blue{border-color:#96ccff}.b--lightest-blue{border-color:#cdecff}.b--washed-blue{border-color:#f6fffe}.b--washed-green{border-color:#e8fdf5}.b--washed-yellow{border-color:#fffceb}.b--washed-red{border-color:#ffdfdf}.b--transparent{border-color:transparent}.b--inherit{border-color:inherit}.br0{border-radius:0}.br1{border-radius:.125rem}.br2{border-radius:.25rem}.br3{border-radius:.5rem}.br4{border-radius:1rem}.br-100{border-radius:100%}.br-pill{border-radius:9999px}.br--bottom{border-top-left-radius:0;border-top-right-radius:0}.br--top{border-bottom-right-radius:0}.br--right,.br--top{border-bottom-left-radius:0}.br--right{border-top-left-radius:0}.br--left{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted{border-style:dotted}.b--dashed{border-style:dashed}.b--solid{border-style:solid}.b--none{border-style:none}.bw0{border-width:0}.bw1{border-width:.125rem}.bw2{border-width:.25rem}.bw3{border-width:.5rem}.bw4{border-width:1rem}.bw5{border-width:2rem}.bt-0{border-top-width:0}.br-0{border-right-width:0}.bb-0{border-bottom-width:0}.bl-0{border-left-width:0}.shadow-1{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-1{top:1rem}.right-1{right:1rem}.bottom-1{bottom:1rem}.left-1{left:1rem}.top-2{top:2rem}.right-2{right:2rem}.bottom-2{bottom:2rem}.left-2{left:2rem}.top--1{top:-1rem}.right--1{right:-1rem}.bottom--1{bottom:-1rem}.left--1{left:-1rem}.top--2{top:-2rem}.right--2{right:-2rem}.bottom--2{bottom:-2rem}.left--2{left:-2rem}.absolute--fill{top:0;right:0;bottom:0;left:0}.cf:after,.cf:before{content:" ";display:table}.cf:after{clear:both}.cf{*zoom:1}.cl{clear:left}.cr{clear:right}.cb{clear:both}.cn{clear:none}.dn{display:none}.di{display:inline}.db{display:block}.dib{display:inline-block}.dit{display:inline-table}.dt{display:table}.dtc{display:table-cell}.dt-row{display:table-row}.dt-row-group{display:table-row-group}.dt-column{display:table-column}.dt-column-group{display:table-column-group}.dt--fixed{table-layout:fixed;width:100%}.flex{display:flex}.inline-flex{display:inline-flex}.flex-auto{flex:1 1 auto;min-width:0;min-height:0}.flex-none{flex:none}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-row-reverse{flex-direction:row-reverse}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-baseline{align-self:baseline}.self-stretch{align-self:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-stretch{align-content:stretch}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-last{order:99999}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.fl{float:left}.fl,.fr{_display:inline}.fr{float:right}.fn{float:none}.sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.serif{font-family:georgia,times,serif}.system-sans-serif{font-family:sans-serif}.system-serif{font-family:serif}.code,code{font-family:Consolas,monaco,monospace}.courier{font-family:Courier Next,courier,monospace}.helvetica{font-family:helvetica neue,helvetica,sans-serif}.avenir{font-family:avenir next,avenir,sans-serif}.athelas{font-family:athelas,georgia,serif}.georgia{font-family:georgia,serif}.times{font-family:times,serif}.bodoni{font-family:Bodoni MT,serif}.calisto{font-family:Calisto MT,serif}.garamond{font-family:garamond,serif}.baskerville{font-family:baskerville,serif}.i{font-style:italic}.fs-normal{font-style:normal}.normal{font-weight:400}.b{font-weight:700}.fw1{font-weight:100}.fw2{font-weight:200}.fw3{font-weight:300}.fw4{font-weight:400}.fw5{font-weight:500}.fw6{font-weight:600}.fw7{font-weight:700}.fw8{font-weight:800}.fw9{font-weight:900}.input-reset{-webkit-appearance:none;-moz-appearance:none}.button-reset::-moz-focus-inner,.input-reset::-moz-focus-inner{border:0;padding:0}.h1{height:1rem}.h2{height:2rem}.h3{height:4rem}.h4{height:8rem}.h5{height:16rem}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.min-h-100{min-height:100%}.vh-25{height:25vh}.vh-50{height:50vh}.vh-75{height:75vh}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.h-auto{height:auto}.h-inherit{height:inherit}.tracked{letter-spacing:.1em}.tracked-tight{letter-spacing:-.05em}.tracked-mega{letter-spacing:.25em}.lh-solid{line-height:1}.lh-title{line-height:1.25}.lh-copy{line-height:1.5}.link{text-decoration:none}.link,.link:active,.link:focus,.link:hover,.link:link,.link:visited{transition:color .15s ease-in}.link:focus{outline:1px dotted currentColor}.list{list-style-type:none}.mw-100{max-width:100%}.mw1{max-width:1rem}.mw2{max-width:2rem}.mw3{max-width:4rem}.mw4{max-width:8rem}.mw5{max-width:16rem}.mw6{max-width:32rem}.mw7{max-width:48rem}.mw8{max-width:64rem}.mw9{max-width:96rem}.mw-none{max-width:none}.w1{width:1rem}.w2{width:2rem}.w3{width:4rem}.w4{width:8rem}.w5{width:16rem}.w-10{width:10%}.w-20{width:20%}.w-25{width:25%}.w-30{width:30%}.w-33{width:33%}.w-34{width:34%}.w-40{width:40%}.w-50{width:50%}.w-60{width:60%}.w-70{width:70%}.w-75{width:75%}.w-80{width:80%}.w-90{width:90%}.w-100{width:100%}.w-third{width:33.33333%}.w-two-thirds{width:66.66667%}.w-auto{width:auto}.overflow-visible{overflow:visible}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.overflow-x-visible{overflow-x:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-visible{overflow-y:visible}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-auto{overflow-y:auto}.static{position:static}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.o-100{opacity:1}.o-90{opacity:.9}.o-80{opacity:.8}.o-70{opacity:.7}.o-60{opacity:.6}.o-50{opacity:.5}.o-40{opacity:.4}.o-30{opacity:.3}.o-20{opacity:.2}.o-10{opacity:.1}.o-05{opacity:.05}.o-025{opacity:.025}.o-0{opacity:0}.rotate-45{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.black-90{color:rgba(0,0,0,.9)}.black-80{color:rgba(0,0,0,.8)}.black-70{color:rgba(0,0,0,.7)}.black-60{color:rgba(0,0,0,.6)}.black-50{color:rgba(0,0,0,.5)}.black-40{color:rgba(0,0,0,.4)}.black-30{color:rgba(0,0,0,.3)}.black-20{color:rgba(0,0,0,.2)}.black-10{color:rgba(0,0,0,.1)}.black-05{color:rgba(0,0,0,.05)}.white-90{color:hsla(0,0%,100%,.9)}.white-80{color:hsla(0,0%,100%,.8)}.white-70{color:hsla(0,0%,100%,.7)}.white-60{color:hsla(0,0%,100%,.6)}.white-50{color:hsla(0,0%,100%,.5)}.white-40{color:hsla(0,0%,100%,.4)}.white-30{color:hsla(0,0%,100%,.3)}.white-20{color:hsla(0,0%,100%,.2)}.white-10{color:hsla(0,0%,100%,.1)}.black{color:#000}.near-black{color:#111}.dark-gray{color:#333}.mid-gray{color:#555}.gray{color:#777}.silver{color:#999}.light-silver{color:#aaa}.moon-gray{color:#ccc}.light-gray{color:#eee}.near-white{color:#f4f4f4}.white{color:#fff}.dark-red{color:#e7040f}.red{color:#ff4136}.light-red{color:#ff725c}.orange{color:#ff6300}.gold{color:#ffb700}.yellow{color:gold}.light-yellow{color:#fbf1a9}.purple{color:#5e2ca5}.light-purple{color:#a463f2}.dark-pink{color:#d5008f}.hot-pink{color:#ff41b4}.pink{color:#ff80cc}.light-pink{color:#ffa3d7}.dark-green{color:#137752}.green{color:#19a974}.light-green{color:#9eebcf}.navy{color:#001b44}.dark-blue{color:#00449e}.blue{color:#357edd}.light-blue{color:#96ccff}.lightest-blue{color:#cdecff}.washed-blue{color:#f6fffe}.washed-green{color:#e8fdf5}.washed-yellow{color:#fffceb}.washed-red{color:#ffdfdf}.color-inherit{color:inherit}.bg-black-90{background-color:rgba(0,0,0,.9)}.bg-black-80{background-color:rgba(0,0,0,.8)}.bg-black-70{background-color:rgba(0,0,0,.7)}.bg-black-60{background-color:rgba(0,0,0,.6)}.bg-black-50{background-color:rgba(0,0,0,.5)}.bg-black-40{background-color:rgba(0,0,0,.4)}.bg-black-30{background-color:rgba(0,0,0,.3)}.bg-black-20{background-color:rgba(0,0,0,.2)}.bg-black-10{background-color:rgba(0,0,0,.1)}.bg-black-05{background-color:rgba(0,0,0,.05)}.bg-white-90{background-color:hsla(0,0%,100%,.9)}.bg-white-80{background-color:hsla(0,0%,100%,.8)}.bg-white-70{background-color:hsla(0,0%,100%,.7)}.bg-white-60{background-color:hsla(0,0%,100%,.6)}.bg-white-50{background-color:hsla(0,0%,100%,.5)}.bg-white-40{background-color:hsla(0,0%,100%,.4)}.bg-white-30{background-color:hsla(0,0%,100%,.3)}.bg-white-20{background-color:hsla(0,0%,100%,.2)}.bg-white-10{background-color:hsla(0,0%,100%,.1)}.bg-black{background-color:#000}.bg-near-black{background-color:#111}.bg-dark-gray{background-color:#333}.bg-mid-gray{background-color:#555}.bg-gray{background-color:#777}.bg-silver{background-color:#999}.bg-light-silver{background-color:#aaa}.bg-moon-gray{background-color:#ccc}.bg-light-gray{background-color:#eee}.bg-near-white{background-color:#f4f4f4}.bg-white{background-color:#fff}.bg-transparent{background-color:transparent}.bg-dark-red{background-color:#e7040f}.bg-red{background-color:#ff4136}.bg-light-red{background-color:#ff725c}.bg-orange{background-color:#ff6300}.bg-gold{background-color:#ffb700}.bg-yellow{background-color:gold}.bg-light-yellow{background-color:#fbf1a9}.bg-purple{background-color:#5e2ca5}.bg-light-purple{background-color:#a463f2}.bg-dark-pink{background-color:#d5008f}.bg-hot-pink{background-color:#ff41b4}.bg-pink{background-color:#ff80cc}.bg-light-pink{background-color:#ffa3d7}.bg-dark-green{background-color:#137752}.bg-green{background-color:#19a974}.bg-light-green{background-color:#9eebcf}.bg-navy{background-color:#001b44}.bg-dark-blue{background-color:#00449e}.bg-blue{background-color:#357edd}.bg-light-blue{background-color:#96ccff}.bg-lightest-blue{background-color:#cdecff}.bg-washed-blue{background-color:#f6fffe}.bg-washed-green{background-color:#e8fdf5}.bg-washed-yellow{background-color:#fffceb}.bg-washed-red{background-color:#ffdfdf}.bg-inherit{background-color:inherit}.hover-black:focus,.hover-black:hover{color:#000}.hover-near-black:focus,.hover-near-black:hover{color:#111}.hover-dark-gray:focus,.hover-dark-gray:hover{color:#333}.hover-mid-gray:focus,.hover-mid-gray:hover{color:#555}.hover-gray:focus,.hover-gray:hover{color:#777}.hover-silver:focus,.hover-silver:hover{color:#999}.hover-light-silver:focus,.hover-light-silver:hover{color:#aaa}.hover-moon-gray:focus,.hover-moon-gray:hover{color:#ccc}.hover-light-gray:focus,.hover-light-gray:hover{color:#eee}.hover-near-white:focus,.hover-near-white:hover{color:#f4f4f4}.hover-white:focus,.hover-white:hover{color:#fff}.hover-black-90:focus,.hover-black-90:hover{color:rgba(0,0,0,.9)}.hover-black-80:focus,.hover-black-80:hover{color:rgba(0,0,0,.8)}.hover-black-70:focus,.hover-black-70:hover{color:rgba(0,0,0,.7)}.hover-black-60:focus,.hover-black-60:hover{color:rgba(0,0,0,.6)}.hover-black-50:focus,.hover-black-50:hover{color:rgba(0,0,0,.5)}.hover-black-40:focus,.hover-black-40:hover{color:rgba(0,0,0,.4)}.hover-black-30:focus,.hover-black-30:hover{color:rgba(0,0,0,.3)}.hover-black-20:focus,.hover-black-20:hover{color:rgba(0,0,0,.2)}.hover-black-10:focus,.hover-black-10:hover{color:rgba(0,0,0,.1)}.hover-white-90:focus,.hover-white-90:hover{color:hsla(0,0%,100%,.9)}.hover-white-80:focus,.hover-white-80:hover{color:hsla(0,0%,100%,.8)}.hover-white-70:focus,.hover-white-70:hover{color:hsla(0,0%,100%,.7)}.hover-white-60:focus,.hover-white-60:hover{color:hsla(0,0%,100%,.6)}.hover-white-50:focus,.hover-white-50:hover{color:hsla(0,0%,100%,.5)}.hover-white-40:focus,.hover-white-40:hover{color:hsla(0,0%,100%,.4)}.hover-white-30:focus,.hover-white-30:hover{color:hsla(0,0%,100%,.3)}.hover-white-20:focus,.hover-white-20:hover{color:hsla(0,0%,100%,.2)}.hover-white-10:focus,.hover-white-10:hover{color:hsla(0,0%,100%,.1)}.hover-inherit:focus,.hover-inherit:hover{color:inherit}.hover-bg-black:focus,.hover-bg-black:hover{background-color:#000}.hover-bg-near-black:focus,.hover-bg-near-black:hover{background-color:#111}.hover-bg-dark-gray:focus,.hover-bg-dark-gray:hover{background-color:#333}.hover-bg-mid-gray:focus,.hover-bg-mid-gray:hover{background-color:#555}.hover-bg-gray:focus,.hover-bg-gray:hover{background-color:#777}.hover-bg-silver:focus,.hover-bg-silver:hover{background-color:#999}.hover-bg-light-silver:focus,.hover-bg-light-silver:hover{background-color:#aaa}.hover-bg-moon-gray:focus,.hover-bg-moon-gray:hover{background-color:#ccc}.hover-bg-light-gray:focus,.hover-bg-light-gray:hover{background-color:#eee}.hover-bg-near-white:focus,.hover-bg-near-white:hover{background-color:#f4f4f4}.hover-bg-white:focus,.hover-bg-white:hover{background-color:#fff}.hover-bg-transparent:focus,.hover-bg-transparent:hover{background-color:transparent}.hover-bg-black-90:focus,.hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.hover-bg-black-80:focus,.hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.hover-bg-black-70:focus,.hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.hover-bg-black-60:focus,.hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.hover-bg-black-50:focus,.hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.hover-bg-black-40:focus,.hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.hover-bg-black-30:focus,.hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.hover-bg-black-20:focus,.hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.hover-bg-black-10:focus,.hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.hover-bg-white-90:focus,.hover-bg-white-90:hover{background-color:hsla(0,0%,100%,.9)}.hover-bg-white-80:focus,.hover-bg-white-80:hover{background-color:hsla(0,0%,100%,.8)}.hover-bg-white-70:focus,.hover-bg-white-70:hover{background-color:hsla(0,0%,100%,.7)}.hover-bg-white-60:focus,.hover-bg-white-60:hover{background-color:hsla(0,0%,100%,.6)}.hover-bg-white-50:focus,.hover-bg-white-50:hover{background-color:hsla(0,0%,100%,.5)}.hover-bg-white-40:focus,.hover-bg-white-40:hover{background-color:hsla(0,0%,100%,.4)}.hover-bg-white-30:focus,.hover-bg-white-30:hover{background-color:hsla(0,0%,100%,.3)}.hover-bg-white-20:focus,.hover-bg-white-20:hover{background-color:hsla(0,0%,100%,.2)}.hover-bg-white-10:focus,.hover-bg-white-10:hover{background-color:hsla(0,0%,100%,.1)}.hover-dark-red:focus,.hover-dark-red:hover{color:#e7040f}.hover-red:focus,.hover-red:hover{color:#ff4136}.hover-light-red:focus,.hover-light-red:hover{color:#ff725c}.hover-orange:focus,.hover-orange:hover{color:#ff6300}.hover-gold:focus,.hover-gold:hover{color:#ffb700}.hover-yellow:focus,.hover-yellow:hover{color:gold}.hover-light-yellow:focus,.hover-light-yellow:hover{color:#fbf1a9}.hover-purple:focus,.hover-purple:hover{color:#5e2ca5}.hover-light-purple:focus,.hover-light-purple:hover{color:#a463f2}.hover-dark-pink:focus,.hover-dark-pink:hover{color:#d5008f}.hover-hot-pink:focus,.hover-hot-pink:hover{color:#ff41b4}.hover-pink:focus,.hover-pink:hover{color:#ff80cc}.hover-light-pink:focus,.hover-light-pink:hover{color:#ffa3d7}.hover-dark-green:focus,.hover-dark-green:hover{color:#137752}.hover-green:focus,.hover-green:hover{color:#19a974}.hover-light-green:focus,.hover-light-green:hover{color:#9eebcf}.hover-navy:focus,.hover-navy:hover{color:#001b44}.hover-dark-blue:focus,.hover-dark-blue:hover{color:#00449e}.hover-blue:focus,.hover-blue:hover{color:#357edd}.hover-light-blue:focus,.hover-light-blue:hover{color:#96ccff}.hover-lightest-blue:focus,.hover-lightest-blue:hover{color:#cdecff}.hover-washed-blue:focus,.hover-washed-blue:hover{color:#f6fffe}.hover-washed-green:focus,.hover-washed-green:hover{color:#e8fdf5}.hover-washed-yellow:focus,.hover-washed-yellow:hover{color:#fffceb}.hover-washed-red:focus,.hover-washed-red:hover{color:#ffdfdf}.hover-bg-dark-red:focus,.hover-bg-dark-red:hover{background-color:#e7040f}.hover-bg-red:focus,.hover-bg-red:hover{background-color:#ff4136}.hover-bg-light-red:focus,.hover-bg-light-red:hover{background-color:#ff725c}.hover-bg-orange:focus,.hover-bg-orange:hover{background-color:#ff6300}.hover-bg-gold:focus,.hover-bg-gold:hover{background-color:#ffb700}.hover-bg-yellow:focus,.hover-bg-yellow:hover{background-color:gold}.hover-bg-light-yellow:focus,.hover-bg-light-yellow:hover{background-color:#fbf1a9}.hover-bg-purple:focus,.hover-bg-purple:hover{background-color:#5e2ca5}.hover-bg-light-purple:focus,.hover-bg-light-purple:hover{background-color:#a463f2}.hover-bg-dark-pink:focus,.hover-bg-dark-pink:hover{background-color:#d5008f}.hover-bg-hot-pink:focus,.hover-bg-hot-pink:hover{background-color:#ff41b4}.hover-bg-pink:focus,.hover-bg-pink:hover{background-color:#ff80cc}.hover-bg-light-pink:focus,.hover-bg-light-pink:hover{background-color:#ffa3d7}.hover-bg-dark-green:focus,.hover-bg-dark-green:hover{background-color:#137752}.hover-bg-green:focus,.hover-bg-green:hover{background-color:#19a974}.hover-bg-light-green:focus,.hover-bg-light-green:hover{background-color:#9eebcf}.hover-bg-navy:focus,.hover-bg-navy:hover{background-color:#001b44}.hover-bg-dark-blue:focus,.hover-bg-dark-blue:hover{background-color:#00449e}.hover-bg-blue:focus,.hover-bg-blue:hover{background-color:#357edd}.hover-bg-light-blue:focus,.hover-bg-light-blue:hover{background-color:#96ccff}.hover-bg-lightest-blue:focus,.hover-bg-lightest-blue:hover{background-color:#cdecff}.hover-bg-washed-blue:focus,.hover-bg-washed-blue:hover{background-color:#f6fffe}.hover-bg-washed-green:focus,.hover-bg-washed-green:hover{background-color:#e8fdf5}.hover-bg-washed-yellow:focus,.hover-bg-washed-yellow:hover{background-color:#fffceb}.hover-bg-washed-red:focus,.hover-bg-washed-red:hover{background-color:#ffdfdf}.hover-bg-inherit:focus,.hover-bg-inherit:hover{background-color:inherit}.pa0{padding:0}.pa1{padding:.25rem}.pa2{padding:.5rem}.pa3{padding:1rem}.pa4{padding:2rem}.pa5{padding:4rem}.pa6{padding:8rem}.pa7{padding:16rem}.pl0{padding-left:0}.pl1{padding-left:.25rem}.pl2{padding-left:.5rem}.pl3{padding-left:1rem}.pl4{padding-left:2rem}.pl5{padding-left:4rem}.pl6{padding-left:8rem}.pl7{padding-left:16rem}.pr0{padding-right:0}.pr1{padding-right:.25rem}.pr2{padding-right:.5rem}.pr3{padding-right:1rem}.pr4{padding-right:2rem}.pr5{padding-right:4rem}.pr6{padding-right:8rem}.pr7{padding-right:16rem}.pb0{padding-bottom:0}.pb1{padding-bottom:.25rem}.pb2{padding-bottom:.5rem}.pb3{padding-bottom:1rem}.pb4{padding-bottom:2rem}.pb5{padding-bottom:4rem}.pb6{padding-bottom:8rem}.pb7{padding-bottom:16rem}.pt0{padding-top:0}.pt1{padding-top:.25rem}.pt2{padding-top:.5rem}.pt3{padding-top:1rem}.pt4{padding-top:2rem}.pt5{padding-top:4rem}.pt6{padding-top:8rem}.pt7{padding-top:16rem}.pv0{padding-top:0;padding-bottom:0}.pv1{padding-top:.25rem;padding-bottom:.25rem}.pv2{padding-top:.5rem;padding-bottom:.5rem}.pv3{padding-top:1rem;padding-bottom:1rem}.pv4{padding-top:2rem;padding-bottom:2rem}.pv5{padding-top:4rem;padding-bottom:4rem}.pv6{padding-top:8rem;padding-bottom:8rem}.pv7{padding-top:16rem;padding-bottom:16rem}.ph0{padding-left:0;padding-right:0}.ph1{padding-left:.25rem;padding-right:.25rem}.ph2{padding-left:.5rem;padding-right:.5rem}.ph3{padding-left:1rem;padding-right:1rem}.ph4{padding-left:2rem;padding-right:2rem}.ph5{padding-left:4rem;padding-right:4rem}.ph6{padding-left:8rem;padding-right:8rem}.ph7{padding-left:16rem;padding-right:16rem}.ma0{margin:0}.ma1{margin:.25rem}.ma2{margin:.5rem}.ma3{margin:1rem}.ma4{margin:2rem}.ma5{margin:4rem}.ma6{margin:8rem}.ma7{margin:16rem}.ml0{margin-left:0}.ml1{margin-left:.25rem}.ml2{margin-left:.5rem}.ml3{margin-left:1rem}.ml4{margin-left:2rem}.ml5{margin-left:4rem}.ml6{margin-left:8rem}.ml7{margin-left:16rem}.mr0{margin-right:0}.mr1{margin-right:.25rem}.mr2{margin-right:.5rem}.mr3{margin-right:1rem}.mr4{margin-right:2rem}.mr5{margin-right:4rem}.mr6{margin-right:8rem}.mr7{margin-right:16rem}.mb0{margin-bottom:0}.mb1{margin-bottom:.25rem}.mb2{margin-bottom:.5rem}.mb3{margin-bottom:1rem}.mb4{margin-bottom:2rem}.mb5{margin-bottom:4rem}.mb6{margin-bottom:8rem}.mb7{margin-bottom:16rem}.mt0{margin-top:0}.mt1{margin-top:.25rem}.mt2{margin-top:.5rem}.mt3{margin-top:1rem}.mt4{margin-top:2rem}.mt5{margin-top:4rem}.mt6{margin-top:8rem}.mt7{margin-top:16rem}.mv0{margin-top:0;margin-bottom:0}.mv1{margin-top:.25rem;margin-bottom:.25rem}.mv2{margin-top:.5rem;margin-bottom:.5rem}.mv3{margin-top:1rem;margin-bottom:1rem}.mv4{margin-top:2rem;margin-bottom:2rem}.mv5{margin-top:4rem;margin-bottom:4rem}.mv6{margin-top:8rem;margin-bottom:8rem}.mv7{margin-top:16rem;margin-bottom:16rem}.mh0{margin-left:0;margin-right:0}.mh1{margin-left:.25rem;margin-right:.25rem}.mh2{margin-left:.5rem;margin-right:.5rem}.mh3{margin-left:1rem;margin-right:1rem}.mh4{margin-left:2rem;margin-right:2rem}.mh5{margin-left:4rem;margin-right:4rem}.mh6{margin-left:8rem;margin-right:8rem}.mh7{margin-left:16rem;margin-right:16rem}.na1{margin:-.25rem}.na2{margin:-.5rem}.na3{margin:-1rem}.na4{margin:-2rem}.na5{margin:-4rem}.na6{margin:-8rem}.na7{margin:-16rem}.nl1{margin-left:-.25rem}.nl2{margin-left:-.5rem}.nl3{margin-left:-1rem}.nl4{margin-left:-2rem}.nl5{margin-left:-4rem}.nl6{margin-left:-8rem}.nl7{margin-left:-16rem}.nr1{margin-right:-.25rem}.nr2{margin-right:-.5rem}.nr3{margin-right:-1rem}.nr4{margin-right:-2rem}.nr5{margin-right:-4rem}.nr6{margin-right:-8rem}.nr7{margin-right:-16rem}.nb1{margin-bottom:-.25rem}.nb2{margin-bottom:-.5rem}.nb3{margin-bottom:-1rem}.nb4{margin-bottom:-2rem}.nb5{margin-bottom:-4rem}.nb6{margin-bottom:-8rem}.nb7{margin-bottom:-16rem}.nt1{margin-top:-.25rem}.nt2{margin-top:-.5rem}.nt3{margin-top:-1rem}.nt4{margin-top:-2rem}.nt5{margin-top:-4rem}.nt6{margin-top:-8rem}.nt7{margin-top:-16rem}.collapse{border-collapse:collapse;border-spacing:0}.striped--light-silver:nth-child(odd){background-color:#aaa}.striped--moon-gray:nth-child(odd){background-color:#ccc}.striped--light-gray:nth-child(odd){background-color:#eee}.striped--near-white:nth-child(odd){background-color:#f4f4f4}.stripe-light:nth-child(odd){background-color:hsla(0,0%,100%,.1)}.stripe-dark:nth-child(odd){background-color:rgba(0,0,0,.1)}.strike{text-decoration:line-through}.underline{text-decoration:underline}.no-underline{text-decoration:none}.tl{text-align:left}.tr{text-align:right}.tc{text-align:center}.tj{text-align:justify}.ttc{text-transform:capitalize}.ttl{text-transform:lowercase}.ttu{text-transform:uppercase}.ttn{text-transform:none}.f-6,.f-headline{font-size:6rem}.f-5,.f-subheadline{font-size:5rem}.f1{font-size:3rem}.f2{font-size:2.25rem}.f3{font-size:1.5rem}.f4{font-size:1.25rem}.f5{font-size:1rem}.f6{font-size:.875rem}.f7{font-size:.75rem}.measure{max-width:30em}.measure-wide{max-width:34em}.measure-narrow{max-width:20em}.indent{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps{font-variant:small-caps}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overflow-container{overflow-y:scroll}.center{margin-left:auto}.center,.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}.clip{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal{white-space:normal}.nowrap{white-space:nowrap}.pre{white-space:pre}.v-base{vertical-align:baseline}.v-mid{vertical-align:middle}.v-top{vertical-align:top}.v-btm{vertical-align:bottom}.dim{opacity:1}.dim,.dim:focus,.dim:hover{transition:opacity .15s ease-in}.dim:focus,.dim:hover{opacity:.5}.dim:active{opacity:.8;transition:opacity .15s ease-out}.glow,.glow:focus,.glow:hover{transition:opacity .15s ease-in}.glow:focus,.glow:hover{opacity:1}.hide-child .child{opacity:0;transition:opacity .15s ease-in}.hide-child:active .child,.hide-child:focus .child,.hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.underline-hover:focus,.underline-hover:hover{text-decoration:underline}.grow{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.grow:focus,.grow:hover{-webkit-transform:scale(1.05);transform:scale(1.05)}.grow:active{-webkit-transform:scale(.9);transform:scale(.9)}.grow-large{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform .25s ease-in-out;transition:transform .25s ease-in-out;transition:transform .25s ease-in-out,-webkit-transform .25s ease-in-out}.grow-large:focus,.grow-large:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.grow-large:active{-webkit-transform:scale(.95);transform:scale(.95)}.pointer:hover,.shadow-hover{cursor:pointer}.shadow-hover{position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:after{content:"";box-shadow:0 0 16px 2px rgba(0,0,0,.2);border-radius:inherit;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;transition:opacity .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:focus:after,.shadow-hover:hover:after{opacity:1}.bg-animate,.bg-animate:focus,.bg-animate:hover{transition:background-color .15s ease-in-out}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}.z-4{z-index:4}.z-5{z-index:5}.z-999{z-index:999}.z-9999{z-index:9999}.z-max{z-index:2147483647}.z-inherit{z-index:inherit}.z-initial{z-index:auto}.z-unset{z-index:unset}.nested-copy-line-height ol,.nested-copy-line-height p,.nested-copy-line-height ul{line-height:1.5}.nested-headline-line-height h1,.nested-headline-line-height h2,.nested-headline-line-height h3,.nested-headline-line-height h4,.nested-headline-line-height h5,.nested-headline-line-height h6{line-height:1.25}.nested-list-reset ol,.nested-list-reset ul{padding-left:0;margin-left:0;list-style-type:none}.nested-copy-indent p+p{text-indent:1em;margin-top:0;margin-bottom:0}.nested-copy-separator p+p{margin-top:1.5em}.nested-img img{width:100%;max-width:100%;display:block}.nested-links a{color:#357edd;transition:color .15s ease-in}.nested-links a:focus,.nested-links a:hover{color:#96ccff;transition:color .15s ease-in}.debug *{outline:1px solid gold}.debug-white *{outline:1px solid #fff}.debug-black *{outline:1px solid #000}.debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAFElEQVR4AWPAC97/9x0eCsAEPgwAVLshdpENIxcAAAAASUVORK5CYII=) repeat 0 0}.debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMklEQVR4AWOgCLz/b0epAa6UGuBOqQHOQHLUgFEDnAbcBZ4UGwDOkiCnkIhdgNgNxAYAiYlD+8sEuo8AAAAASUVORK5CYII=) repeat 0 0}.debug-grid-8-solid{background:#fff url(data:image/gif;base64,R0lGODdhCAAIAPEAAADw/wDx/////wAAACwAAAAACAAIAAACDZQvgaeb/lxbAIKA8y0AOw==) repeat 0 0}.debug-grid-16-solid{background:#fff url(data:image/gif;base64,R0lGODdhEAAQAPEAAADw/wDx/xXy/////ywAAAAAEAAQAAACIZyPKckYDQFsb6ZqD85jZ2+BkwiRFKehhqQCQgDHcgwEBQA7) repeat 0 0}@media screen and (min-width:30em){.aspect-ratio-ns{height:0;position:relative}.aspect-ratio--16x9-ns{padding-bottom:56.25%}.aspect-ratio--9x16-ns{padding-bottom:177.77%}.aspect-ratio--4x3-ns{padding-bottom:75%}.aspect-ratio--3x4-ns{padding-bottom:133.33%}.aspect-ratio--6x4-ns{padding-bottom:66.6%}.aspect-ratio--4x6-ns{padding-bottom:150%}.aspect-ratio--8x5-ns{padding-bottom:62.5%}.aspect-ratio--5x8-ns{padding-bottom:160%}.aspect-ratio--7x5-ns{padding-bottom:71.42%}.aspect-ratio--5x7-ns{padding-bottom:140%}.aspect-ratio--1x1-ns{padding-bottom:100%}.aspect-ratio--object-ns{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-ns{background-size:cover!important}.contain-ns{background-size:contain!important}.bg-center-ns{background-position:50%}.bg-center-ns,.bg-top-ns{background-repeat:no-repeat}.bg-top-ns{background-position:top}.bg-right-ns{background-position:100%}.bg-bottom-ns,.bg-right-ns{background-repeat:no-repeat}.bg-bottom-ns{background-position:bottom}.bg-left-ns{background-repeat:no-repeat;background-position:0}.outline-ns{outline:1px solid}.outline-transparent-ns{outline:1px solid transparent}.outline-0-ns{outline:0}.ba-ns{border-style:solid;border-width:1px}.bt-ns{border-top-style:solid;border-top-width:1px}.br-ns{border-right-style:solid;border-right-width:1px}.bb-ns{border-bottom-style:solid;border-bottom-width:1px}.bl-ns{border-left-style:solid;border-left-width:1px}.bn-ns{border-style:none;border-width:0}.br0-ns{border-radius:0}.br1-ns{border-radius:.125rem}.br2-ns{border-radius:.25rem}.br3-ns{border-radius:.5rem}.br4-ns{border-radius:1rem}.br-100-ns{border-radius:100%}.br-pill-ns{border-radius:9999px}.br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.br--top-ns{border-bottom-right-radius:0}.br--right-ns,.br--top-ns{border-bottom-left-radius:0}.br--right-ns{border-top-left-radius:0}.br--left-ns{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-ns{border-style:dotted}.b--dashed-ns{border-style:dashed}.b--solid-ns{border-style:solid}.b--none-ns{border-style:none}.bw0-ns{border-width:0}.bw1-ns{border-width:.125rem}.bw2-ns{border-width:.25rem}.bw3-ns{border-width:.5rem}.bw4-ns{border-width:1rem}.bw5-ns{border-width:2rem}.bt-0-ns{border-top-width:0}.br-0-ns{border-right-width:0}.bb-0-ns{border-bottom-width:0}.bl-0-ns{border-left-width:0}.shadow-1-ns{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-ns{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-ns{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-ns{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-ns{top:0}.left-0-ns{left:0}.right-0-ns{right:0}.bottom-0-ns{bottom:0}.top-1-ns{top:1rem}.left-1-ns{left:1rem}.right-1-ns{right:1rem}.bottom-1-ns{bottom:1rem}.top-2-ns{top:2rem}.left-2-ns{left:2rem}.right-2-ns{right:2rem}.bottom-2-ns{bottom:2rem}.top--1-ns{top:-1rem}.right--1-ns{right:-1rem}.bottom--1-ns{bottom:-1rem}.left--1-ns{left:-1rem}.top--2-ns{top:-2rem}.right--2-ns{right:-2rem}.bottom--2-ns{bottom:-2rem}.left--2-ns{left:-2rem}.absolute--fill-ns{top:0;right:0;bottom:0;left:0}.cl-ns{clear:left}.cr-ns{clear:right}.cb-ns{clear:both}.cn-ns{clear:none}.dn-ns{display:none}.di-ns{display:inline}.db-ns{display:block}.dib-ns{display:inline-block}.dit-ns{display:inline-table}.dt-ns{display:table}.dtc-ns{display:table-cell}.dt-row-ns{display:table-row}.dt-row-group-ns{display:table-row-group}.dt-column-ns{display:table-column}.dt-column-group-ns{display:table-column-group}.dt--fixed-ns{table-layout:fixed;width:100%}.flex-ns{display:flex}.inline-flex-ns{display:inline-flex}.flex-auto-ns{flex:1 1 auto;min-width:0;min-height:0}.flex-none-ns{flex:none}.flex-column-ns{flex-direction:column}.flex-row-ns{flex-direction:row}.flex-wrap-ns{flex-wrap:wrap}.flex-nowrap-ns{flex-wrap:nowrap}.flex-wrap-reverse-ns{flex-wrap:wrap-reverse}.flex-column-reverse-ns{flex-direction:column-reverse}.flex-row-reverse-ns{flex-direction:row-reverse}.items-start-ns{align-items:flex-start}.items-end-ns{align-items:flex-end}.items-center-ns{align-items:center}.items-baseline-ns{align-items:baseline}.items-stretch-ns{align-items:stretch}.self-start-ns{align-self:flex-start}.self-end-ns{align-self:flex-end}.self-center-ns{align-self:center}.self-baseline-ns{align-self:baseline}.self-stretch-ns{align-self:stretch}.justify-start-ns{justify-content:flex-start}.justify-end-ns{justify-content:flex-end}.justify-center-ns{justify-content:center}.justify-between-ns{justify-content:space-between}.justify-around-ns{justify-content:space-around}.content-start-ns{align-content:flex-start}.content-end-ns{align-content:flex-end}.content-center-ns{align-content:center}.content-between-ns{align-content:space-between}.content-around-ns{align-content:space-around}.content-stretch-ns{align-content:stretch}.order-0-ns{order:0}.order-1-ns{order:1}.order-2-ns{order:2}.order-3-ns{order:3}.order-4-ns{order:4}.order-5-ns{order:5}.order-6-ns{order:6}.order-7-ns{order:7}.order-8-ns{order:8}.order-last-ns{order:99999}.flex-grow-0-ns{flex-grow:0}.flex-grow-1-ns{flex-grow:1}.flex-shrink-0-ns{flex-shrink:0}.flex-shrink-1-ns{flex-shrink:1}.fl-ns{float:left}.fl-ns,.fr-ns{_display:inline}.fr-ns{float:right}.fn-ns{float:none}.i-ns{font-style:italic}.fs-normal-ns{font-style:normal}.normal-ns{font-weight:400}.b-ns{font-weight:700}.fw1-ns{font-weight:100}.fw2-ns{font-weight:200}.fw3-ns{font-weight:300}.fw4-ns{font-weight:400}.fw5-ns{font-weight:500}.fw6-ns{font-weight:600}.fw7-ns{font-weight:700}.fw8-ns{font-weight:800}.fw9-ns{font-weight:900}.h1-ns{height:1rem}.h2-ns{height:2rem}.h3-ns{height:4rem}.h4-ns{height:8rem}.h5-ns{height:16rem}.h-25-ns{height:25%}.h-50-ns{height:50%}.h-75-ns{height:75%}.h-100-ns{height:100%}.min-h-100-ns{min-height:100%}.vh-25-ns{height:25vh}.vh-50-ns{height:50vh}.vh-75-ns{height:75vh}.vh-100-ns{height:100vh}.min-vh-100-ns{min-height:100vh}.h-auto-ns{height:auto}.h-inherit-ns{height:inherit}.tracked-ns{letter-spacing:.1em}.tracked-tight-ns{letter-spacing:-.05em}.tracked-mega-ns{letter-spacing:.25em}.lh-solid-ns{line-height:1}.lh-title-ns{line-height:1.25}.lh-copy-ns{line-height:1.5}.mw-100-ns{max-width:100%}.mw1-ns{max-width:1rem}.mw2-ns{max-width:2rem}.mw3-ns{max-width:4rem}.mw4-ns{max-width:8rem}.mw5-ns{max-width:16rem}.mw6-ns{max-width:32rem}.mw7-ns{max-width:48rem}.mw8-ns{max-width:64rem}.mw9-ns{max-width:96rem}.mw-none-ns{max-width:none}.w1-ns{width:1rem}.w2-ns{width:2rem}.w3-ns{width:4rem}.w4-ns{width:8rem}.w5-ns{width:16rem}.w-10-ns{width:10%}.w-20-ns{width:20%}.w-25-ns{width:25%}.w-30-ns{width:30%}.w-33-ns{width:33%}.w-34-ns{width:34%}.w-40-ns{width:40%}.w-50-ns{width:50%}.w-60-ns{width:60%}.w-70-ns{width:70%}.w-75-ns{width:75%}.w-80-ns{width:80%}.w-90-ns{width:90%}.w-100-ns{width:100%}.w-third-ns{width:33.33333%}.w-two-thirds-ns{width:66.66667%}.w-auto-ns{width:auto}.overflow-visible-ns{overflow:visible}.overflow-hidden-ns{overflow:hidden}.overflow-scroll-ns{overflow:scroll}.overflow-auto-ns{overflow:auto}.overflow-x-visible-ns{overflow-x:visible}.overflow-x-hidden-ns{overflow-x:hidden}.overflow-x-scroll-ns{overflow-x:scroll}.overflow-x-auto-ns{overflow-x:auto}.overflow-y-visible-ns{overflow-y:visible}.overflow-y-hidden-ns{overflow-y:hidden}.overflow-y-scroll-ns{overflow-y:scroll}.overflow-y-auto-ns{overflow-y:auto}.static-ns{position:static}.relative-ns{position:relative}.absolute-ns{position:absolute}.fixed-ns{position:fixed}.rotate-45-ns{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-ns{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-ns{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-ns{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-ns{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-ns{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-ns{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-ns{padding:0}.pa1-ns{padding:.25rem}.pa2-ns{padding:.5rem}.pa3-ns{padding:1rem}.pa4-ns{padding:2rem}.pa5-ns{padding:4rem}.pa6-ns{padding:8rem}.pa7-ns{padding:16rem}.pl0-ns{padding-left:0}.pl1-ns{padding-left:.25rem}.pl2-ns{padding-left:.5rem}.pl3-ns{padding-left:1rem}.pl4-ns{padding-left:2rem}.pl5-ns{padding-left:4rem}.pl6-ns{padding-left:8rem}.pl7-ns{padding-left:16rem}.pr0-ns{padding-right:0}.pr1-ns{padding-right:.25rem}.pr2-ns{padding-right:.5rem}.pr3-ns{padding-right:1rem}.pr4-ns{padding-right:2rem}.pr5-ns{padding-right:4rem}.pr6-ns{padding-right:8rem}.pr7-ns{padding-right:16rem}.pb0-ns{padding-bottom:0}.pb1-ns{padding-bottom:.25rem}.pb2-ns{padding-bottom:.5rem}.pb3-ns{padding-bottom:1rem}.pb4-ns{padding-bottom:2rem}.pb5-ns{padding-bottom:4rem}.pb6-ns{padding-bottom:8rem}.pb7-ns{padding-bottom:16rem}.pt0-ns{padding-top:0}.pt1-ns{padding-top:.25rem}.pt2-ns{padding-top:.5rem}.pt3-ns{padding-top:1rem}.pt4-ns{padding-top:2rem}.pt5-ns{padding-top:4rem}.pt6-ns{padding-top:8rem}.pt7-ns{padding-top:16rem}.pv0-ns{padding-top:0;padding-bottom:0}.pv1-ns{padding-top:.25rem;padding-bottom:.25rem}.pv2-ns{padding-top:.5rem;padding-bottom:.5rem}.pv3-ns{padding-top:1rem;padding-bottom:1rem}.pv4-ns{padding-top:2rem;padding-bottom:2rem}.pv5-ns{padding-top:4rem;padding-bottom:4rem}.pv6-ns{padding-top:8rem;padding-bottom:8rem}.pv7-ns{padding-top:16rem;padding-bottom:16rem}.ph0-ns{padding-left:0;padding-right:0}.ph1-ns{padding-left:.25rem;padding-right:.25rem}.ph2-ns{padding-left:.5rem;padding-right:.5rem}.ph3-ns{padding-left:1rem;padding-right:1rem}.ph4-ns{padding-left:2rem;padding-right:2rem}.ph5-ns{padding-left:4rem;padding-right:4rem}.ph6-ns{padding-left:8rem;padding-right:8rem}.ph7-ns{padding-left:16rem;padding-right:16rem}.ma0-ns{margin:0}.ma1-ns{margin:.25rem}.ma2-ns{margin:.5rem}.ma3-ns{margin:1rem}.ma4-ns{margin:2rem}.ma5-ns{margin:4rem}.ma6-ns{margin:8rem}.ma7-ns{margin:16rem}.ml0-ns{margin-left:0}.ml1-ns{margin-left:.25rem}.ml2-ns{margin-left:.5rem}.ml3-ns{margin-left:1rem}.ml4-ns{margin-left:2rem}.ml5-ns{margin-left:4rem}.ml6-ns{margin-left:8rem}.ml7-ns{margin-left:16rem}.mr0-ns{margin-right:0}.mr1-ns{margin-right:.25rem}.mr2-ns{margin-right:.5rem}.mr3-ns{margin-right:1rem}.mr4-ns{margin-right:2rem}.mr5-ns{margin-right:4rem}.mr6-ns{margin-right:8rem}.mr7-ns{margin-right:16rem}.mb0-ns{margin-bottom:0}.mb1-ns{margin-bottom:.25rem}.mb2-ns{margin-bottom:.5rem}.mb3-ns{margin-bottom:1rem}.mb4-ns{margin-bottom:2rem}.mb5-ns{margin-bottom:4rem}.mb6-ns{margin-bottom:8rem}.mb7-ns{margin-bottom:16rem}.mt0-ns{margin-top:0}.mt1-ns{margin-top:.25rem}.mt2-ns{margin-top:.5rem}.mt3-ns{margin-top:1rem}.mt4-ns{margin-top:2rem}.mt5-ns{margin-top:4rem}.mt6-ns{margin-top:8rem}.mt7-ns{margin-top:16rem}.mv0-ns{margin-top:0;margin-bottom:0}.mv1-ns{margin-top:.25rem;margin-bottom:.25rem}.mv2-ns{margin-top:.5rem;margin-bottom:.5rem}.mv3-ns{margin-top:1rem;margin-bottom:1rem}.mv4-ns{margin-top:2rem;margin-bottom:2rem}.mv5-ns{margin-top:4rem;margin-bottom:4rem}.mv6-ns{margin-top:8rem;margin-bottom:8rem}.mv7-ns{margin-top:16rem;margin-bottom:16rem}.mh0-ns{margin-left:0;margin-right:0}.mh1-ns{margin-left:.25rem;margin-right:.25rem}.mh2-ns{margin-left:.5rem;margin-right:.5rem}.mh3-ns{margin-left:1rem;margin-right:1rem}.mh4-ns{margin-left:2rem;margin-right:2rem}.mh5-ns{margin-left:4rem;margin-right:4rem}.mh6-ns{margin-left:8rem;margin-right:8rem}.mh7-ns{margin-left:16rem;margin-right:16rem}.na1-ns{margin:-.25rem}.na2-ns{margin:-.5rem}.na3-ns{margin:-1rem}.na4-ns{margin:-2rem}.na5-ns{margin:-4rem}.na6-ns{margin:-8rem}.na7-ns{margin:-16rem}.nl1-ns{margin-left:-.25rem}.nl2-ns{margin-left:-.5rem}.nl3-ns{margin-left:-1rem}.nl4-ns{margin-left:-2rem}.nl5-ns{margin-left:-4rem}.nl6-ns{margin-left:-8rem}.nl7-ns{margin-left:-16rem}.nr1-ns{margin-right:-.25rem}.nr2-ns{margin-right:-.5rem}.nr3-ns{margin-right:-1rem}.nr4-ns{margin-right:-2rem}.nr5-ns{margin-right:-4rem}.nr6-ns{margin-right:-8rem}.nr7-ns{margin-right:-16rem}.nb1-ns{margin-bottom:-.25rem}.nb2-ns{margin-bottom:-.5rem}.nb3-ns{margin-bottom:-1rem}.nb4-ns{margin-bottom:-2rem}.nb5-ns{margin-bottom:-4rem}.nb6-ns{margin-bottom:-8rem}.nb7-ns{margin-bottom:-16rem}.nt1-ns{margin-top:-.25rem}.nt2-ns{margin-top:-.5rem}.nt3-ns{margin-top:-1rem}.nt4-ns{margin-top:-2rem}.nt5-ns{margin-top:-4rem}.nt6-ns{margin-top:-8rem}.nt7-ns{margin-top:-16rem}.strike-ns{text-decoration:line-through}.underline-ns{text-decoration:underline}.no-underline-ns{text-decoration:none}.tl-ns{text-align:left}.tr-ns{text-align:right}.tc-ns{text-align:center}.tj-ns{text-align:justify}.ttc-ns{text-transform:capitalize}.ttl-ns{text-transform:lowercase}.ttu-ns{text-transform:uppercase}.ttn-ns{text-transform:none}.f-6-ns,.f-headline-ns{font-size:6rem}.f-5-ns,.f-subheadline-ns{font-size:5rem}.f1-ns{font-size:3rem}.f2-ns{font-size:2.25rem}.f3-ns{font-size:1.5rem}.f4-ns{font-size:1.25rem}.f5-ns{font-size:1rem}.f6-ns{font-size:.875rem}.f7-ns{font-size:.75rem}.measure-ns{max-width:30em}.measure-wide-ns{max-width:34em}.measure-narrow-ns{max-width:20em}.indent-ns{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-ns{font-variant:small-caps}.truncate-ns{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-ns{margin-left:auto}.center-ns,.mr-auto-ns{margin-right:auto}.ml-auto-ns{margin-left:auto}.clip-ns{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-ns{white-space:normal}.nowrap-ns{white-space:nowrap}.pre-ns{white-space:pre}.v-base-ns{vertical-align:baseline}.v-mid-ns{vertical-align:middle}.v-top-ns{vertical-align:top}.v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.aspect-ratio-m{height:0;position:relative}.aspect-ratio--16x9-m{padding-bottom:56.25%}.aspect-ratio--9x16-m{padding-bottom:177.77%}.aspect-ratio--4x3-m{padding-bottom:75%}.aspect-ratio--3x4-m{padding-bottom:133.33%}.aspect-ratio--6x4-m{padding-bottom:66.6%}.aspect-ratio--4x6-m{padding-bottom:150%}.aspect-ratio--8x5-m{padding-bottom:62.5%}.aspect-ratio--5x8-m{padding-bottom:160%}.aspect-ratio--7x5-m{padding-bottom:71.42%}.aspect-ratio--5x7-m{padding-bottom:140%}.aspect-ratio--1x1-m{padding-bottom:100%}.aspect-ratio--object-m{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-m{background-size:cover!important}.contain-m{background-size:contain!important}.bg-center-m{background-position:50%}.bg-center-m,.bg-top-m{background-repeat:no-repeat}.bg-top-m{background-position:top}.bg-right-m{background-position:100%}.bg-bottom-m,.bg-right-m{background-repeat:no-repeat}.bg-bottom-m{background-position:bottom}.bg-left-m{background-repeat:no-repeat;background-position:0}.outline-m{outline:1px solid}.outline-transparent-m{outline:1px solid transparent}.outline-0-m{outline:0}.ba-m{border-style:solid;border-width:1px}.bt-m{border-top-style:solid;border-top-width:1px}.br-m{border-right-style:solid;border-right-width:1px}.bb-m{border-bottom-style:solid;border-bottom-width:1px}.bl-m{border-left-style:solid;border-left-width:1px}.bn-m{border-style:none;border-width:0}.br0-m{border-radius:0}.br1-m{border-radius:.125rem}.br2-m{border-radius:.25rem}.br3-m{border-radius:.5rem}.br4-m{border-radius:1rem}.br-100-m{border-radius:100%}.br-pill-m{border-radius:9999px}.br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.br--top-m{border-bottom-right-radius:0}.br--right-m,.br--top-m{border-bottom-left-radius:0}.br--right-m{border-top-left-radius:0}.br--left-m{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-m{border-style:dotted}.b--dashed-m{border-style:dashed}.b--solid-m{border-style:solid}.b--none-m{border-style:none}.bw0-m{border-width:0}.bw1-m{border-width:.125rem}.bw2-m{border-width:.25rem}.bw3-m{border-width:.5rem}.bw4-m{border-width:1rem}.bw5-m{border-width:2rem}.bt-0-m{border-top-width:0}.br-0-m{border-right-width:0}.bb-0-m{border-bottom-width:0}.bl-0-m{border-left-width:0}.shadow-1-m{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-m{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-m{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-m{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-m{top:0}.left-0-m{left:0}.right-0-m{right:0}.bottom-0-m{bottom:0}.top-1-m{top:1rem}.left-1-m{left:1rem}.right-1-m{right:1rem}.bottom-1-m{bottom:1rem}.top-2-m{top:2rem}.left-2-m{left:2rem}.right-2-m{right:2rem}.bottom-2-m{bottom:2rem}.top--1-m{top:-1rem}.right--1-m{right:-1rem}.bottom--1-m{bottom:-1rem}.left--1-m{left:-1rem}.top--2-m{top:-2rem}.right--2-m{right:-2rem}.bottom--2-m{bottom:-2rem}.left--2-m{left:-2rem}.absolute--fill-m{top:0;right:0;bottom:0;left:0}.cl-m{clear:left}.cr-m{clear:right}.cb-m{clear:both}.cn-m{clear:none}.dn-m{display:none}.di-m{display:inline}.db-m{display:block}.dib-m{display:inline-block}.dit-m{display:inline-table}.dt-m{display:table}.dtc-m{display:table-cell}.dt-row-m{display:table-row}.dt-row-group-m{display:table-row-group}.dt-column-m{display:table-column}.dt-column-group-m{display:table-column-group}.dt--fixed-m{table-layout:fixed;width:100%}.flex-m{display:flex}.inline-flex-m{display:inline-flex}.flex-auto-m{flex:1 1 auto;min-width:0;min-height:0}.flex-none-m{flex:none}.flex-column-m{flex-direction:column}.flex-row-m{flex-direction:row}.flex-wrap-m{flex-wrap:wrap}.flex-nowrap-m{flex-wrap:nowrap}.flex-wrap-reverse-m{flex-wrap:wrap-reverse}.flex-column-reverse-m{flex-direction:column-reverse}.flex-row-reverse-m{flex-direction:row-reverse}.items-start-m{align-items:flex-start}.items-end-m{align-items:flex-end}.items-center-m{align-items:center}.items-baseline-m{align-items:baseline}.items-stretch-m{align-items:stretch}.self-start-m{align-self:flex-start}.self-end-m{align-self:flex-end}.self-center-m{align-self:center}.self-baseline-m{align-self:baseline}.self-stretch-m{align-self:stretch}.justify-start-m{justify-content:flex-start}.justify-end-m{justify-content:flex-end}.justify-center-m{justify-content:center}.justify-between-m{justify-content:space-between}.justify-around-m{justify-content:space-around}.content-start-m{align-content:flex-start}.content-end-m{align-content:flex-end}.content-center-m{align-content:center}.content-between-m{align-content:space-between}.content-around-m{align-content:space-around}.content-stretch-m{align-content:stretch}.order-0-m{order:0}.order-1-m{order:1}.order-2-m{order:2}.order-3-m{order:3}.order-4-m{order:4}.order-5-m{order:5}.order-6-m{order:6}.order-7-m{order:7}.order-8-m{order:8}.order-last-m{order:99999}.flex-grow-0-m{flex-grow:0}.flex-grow-1-m{flex-grow:1}.flex-shrink-0-m{flex-shrink:0}.flex-shrink-1-m{flex-shrink:1}.fl-m{float:left}.fl-m,.fr-m{_display:inline}.fr-m{float:right}.fn-m{float:none}.i-m{font-style:italic}.fs-normal-m{font-style:normal}.normal-m{font-weight:400}.b-m{font-weight:700}.fw1-m{font-weight:100}.fw2-m{font-weight:200}.fw3-m{font-weight:300}.fw4-m{font-weight:400}.fw5-m{font-weight:500}.fw6-m{font-weight:600}.fw7-m{font-weight:700}.fw8-m{font-weight:800}.fw9-m{font-weight:900}.h1-m{height:1rem}.h2-m{height:2rem}.h3-m{height:4rem}.h4-m{height:8rem}.h5-m{height:16rem}.h-25-m{height:25%}.h-50-m{height:50%}.h-75-m{height:75%}.h-100-m{height:100%}.min-h-100-m{min-height:100%}.vh-25-m{height:25vh}.vh-50-m{height:50vh}.vh-75-m{height:75vh}.vh-100-m{height:100vh}.min-vh-100-m{min-height:100vh}.h-auto-m{height:auto}.h-inherit-m{height:inherit}.tracked-m{letter-spacing:.1em}.tracked-tight-m{letter-spacing:-.05em}.tracked-mega-m{letter-spacing:.25em}.lh-solid-m{line-height:1}.lh-title-m{line-height:1.25}.lh-copy-m{line-height:1.5}.mw-100-m{max-width:100%}.mw1-m{max-width:1rem}.mw2-m{max-width:2rem}.mw3-m{max-width:4rem}.mw4-m{max-width:8rem}.mw5-m{max-width:16rem}.mw6-m{max-width:32rem}.mw7-m{max-width:48rem}.mw8-m{max-width:64rem}.mw9-m{max-width:96rem}.mw-none-m{max-width:none}.w1-m{width:1rem}.w2-m{width:2rem}.w3-m{width:4rem}.w4-m{width:8rem}.w5-m{width:16rem}.w-10-m{width:10%}.w-20-m{width:20%}.w-25-m{width:25%}.w-30-m{width:30%}.w-33-m{width:33%}.w-34-m{width:34%}.w-40-m{width:40%}.w-50-m{width:50%}.w-60-m{width:60%}.w-70-m{width:70%}.w-75-m{width:75%}.w-80-m{width:80%}.w-90-m{width:90%}.w-100-m{width:100%}.w-third-m{width:33.33333%}.w-two-thirds-m{width:66.66667%}.w-auto-m{width:auto}.overflow-visible-m{overflow:visible}.overflow-hidden-m{overflow:hidden}.overflow-scroll-m{overflow:scroll}.overflow-auto-m{overflow:auto}.overflow-x-visible-m{overflow-x:visible}.overflow-x-hidden-m{overflow-x:hidden}.overflow-x-scroll-m{overflow-x:scroll}.overflow-x-auto-m{overflow-x:auto}.overflow-y-visible-m{overflow-y:visible}.overflow-y-hidden-m{overflow-y:hidden}.overflow-y-scroll-m{overflow-y:scroll}.overflow-y-auto-m{overflow-y:auto}.static-m{position:static}.relative-m{position:relative}.absolute-m{position:absolute}.fixed-m{position:fixed}.rotate-45-m{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-m{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-m{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-m{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-m{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-m{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-m{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-m{padding:0}.pa1-m{padding:.25rem}.pa2-m{padding:.5rem}.pa3-m{padding:1rem}.pa4-m{padding:2rem}.pa5-m{padding:4rem}.pa6-m{padding:8rem}.pa7-m{padding:16rem}.pl0-m{padding-left:0}.pl1-m{padding-left:.25rem}.pl2-m{padding-left:.5rem}.pl3-m{padding-left:1rem}.pl4-m{padding-left:2rem}.pl5-m{padding-left:4rem}.pl6-m{padding-left:8rem}.pl7-m{padding-left:16rem}.pr0-m{padding-right:0}.pr1-m{padding-right:.25rem}.pr2-m{padding-right:.5rem}.pr3-m{padding-right:1rem}.pr4-m{padding-right:2rem}.pr5-m{padding-right:4rem}.pr6-m{padding-right:8rem}.pr7-m{padding-right:16rem}.pb0-m{padding-bottom:0}.pb1-m{padding-bottom:.25rem}.pb2-m{padding-bottom:.5rem}.pb3-m{padding-bottom:1rem}.pb4-m{padding-bottom:2rem}.pb5-m{padding-bottom:4rem}.pb6-m{padding-bottom:8rem}.pb7-m{padding-bottom:16rem}.pt0-m{padding-top:0}.pt1-m{padding-top:.25rem}.pt2-m{padding-top:.5rem}.pt3-m{padding-top:1rem}.pt4-m{padding-top:2rem}.pt5-m{padding-top:4rem}.pt6-m{padding-top:8rem}.pt7-m{padding-top:16rem}.pv0-m{padding-top:0;padding-bottom:0}.pv1-m{padding-top:.25rem;padding-bottom:.25rem}.pv2-m{padding-top:.5rem;padding-bottom:.5rem}.pv3-m{padding-top:1rem;padding-bottom:1rem}.pv4-m{padding-top:2rem;padding-bottom:2rem}.pv5-m{padding-top:4rem;padding-bottom:4rem}.pv6-m{padding-top:8rem;padding-bottom:8rem}.pv7-m{padding-top:16rem;padding-bottom:16rem}.ph0-m{padding-left:0;padding-right:0}.ph1-m{padding-left:.25rem;padding-right:.25rem}.ph2-m{padding-left:.5rem;padding-right:.5rem}.ph3-m{padding-left:1rem;padding-right:1rem}.ph4-m{padding-left:2rem;padding-right:2rem}.ph5-m{padding-left:4rem;padding-right:4rem}.ph6-m{padding-left:8rem;padding-right:8rem}.ph7-m{padding-left:16rem;padding-right:16rem}.ma0-m{margin:0}.ma1-m{margin:.25rem}.ma2-m{margin:.5rem}.ma3-m{margin:1rem}.ma4-m{margin:2rem}.ma5-m{margin:4rem}.ma6-m{margin:8rem}.ma7-m{margin:16rem}.ml0-m{margin-left:0}.ml1-m{margin-left:.25rem}.ml2-m{margin-left:.5rem}.ml3-m{margin-left:1rem}.ml4-m{margin-left:2rem}.ml5-m{margin-left:4rem}.ml6-m{margin-left:8rem}.ml7-m{margin-left:16rem}.mr0-m{margin-right:0}.mr1-m{margin-right:.25rem}.mr2-m{margin-right:.5rem}.mr3-m{margin-right:1rem}.mr4-m{margin-right:2rem}.mr5-m{margin-right:4rem}.mr6-m{margin-right:8rem}.mr7-m{margin-right:16rem}.mb0-m{margin-bottom:0}.mb1-m{margin-bottom:.25rem}.mb2-m{margin-bottom:.5rem}.mb3-m{margin-bottom:1rem}.mb4-m{margin-bottom:2rem}.mb5-m{margin-bottom:4rem}.mb6-m{margin-bottom:8rem}.mb7-m{margin-bottom:16rem}.mt0-m{margin-top:0}.mt1-m{margin-top:.25rem}.mt2-m{margin-top:.5rem}.mt3-m{margin-top:1rem}.mt4-m{margin-top:2rem}.mt5-m{margin-top:4rem}.mt6-m{margin-top:8rem}.mt7-m{margin-top:16rem}.mv0-m{margin-top:0;margin-bottom:0}.mv1-m{margin-top:.25rem;margin-bottom:.25rem}.mv2-m{margin-top:.5rem;margin-bottom:.5rem}.mv3-m{margin-top:1rem;margin-bottom:1rem}.mv4-m{margin-top:2rem;margin-bottom:2rem}.mv5-m{margin-top:4rem;margin-bottom:4rem}.mv6-m{margin-top:8rem;margin-bottom:8rem}.mv7-m{margin-top:16rem;margin-bottom:16rem}.mh0-m{margin-left:0;margin-right:0}.mh1-m{margin-left:.25rem;margin-right:.25rem}.mh2-m{margin-left:.5rem;margin-right:.5rem}.mh3-m{margin-left:1rem;margin-right:1rem}.mh4-m{margin-left:2rem;margin-right:2rem}.mh5-m{margin-left:4rem;margin-right:4rem}.mh6-m{margin-left:8rem;margin-right:8rem}.mh7-m{margin-left:16rem;margin-right:16rem}.na1-m{margin:-.25rem}.na2-m{margin:-.5rem}.na3-m{margin:-1rem}.na4-m{margin:-2rem}.na5-m{margin:-4rem}.na6-m{margin:-8rem}.na7-m{margin:-16rem}.nl1-m{margin-left:-.25rem}.nl2-m{margin-left:-.5rem}.nl3-m{margin-left:-1rem}.nl4-m{margin-left:-2rem}.nl5-m{margin-left:-4rem}.nl6-m{margin-left:-8rem}.nl7-m{margin-left:-16rem}.nr1-m{margin-right:-.25rem}.nr2-m{margin-right:-.5rem}.nr3-m{margin-right:-1rem}.nr4-m{margin-right:-2rem}.nr5-m{margin-right:-4rem}.nr6-m{margin-right:-8rem}.nr7-m{margin-right:-16rem}.nb1-m{margin-bottom:-.25rem}.nb2-m{margin-bottom:-.5rem}.nb3-m{margin-bottom:-1rem}.nb4-m{margin-bottom:-2rem}.nb5-m{margin-bottom:-4rem}.nb6-m{margin-bottom:-8rem}.nb7-m{margin-bottom:-16rem}.nt1-m{margin-top:-.25rem}.nt2-m{margin-top:-.5rem}.nt3-m{margin-top:-1rem}.nt4-m{margin-top:-2rem}.nt5-m{margin-top:-4rem}.nt6-m{margin-top:-8rem}.nt7-m{margin-top:-16rem}.strike-m{text-decoration:line-through}.underline-m{text-decoration:underline}.no-underline-m{text-decoration:none}.tl-m{text-align:left}.tr-m{text-align:right}.tc-m{text-align:center}.tj-m{text-align:justify}.ttc-m{text-transform:capitalize}.ttl-m{text-transform:lowercase}.ttu-m{text-transform:uppercase}.ttn-m{text-transform:none}.f-6-m,.f-headline-m{font-size:6rem}.f-5-m,.f-subheadline-m{font-size:5rem}.f1-m{font-size:3rem}.f2-m{font-size:2.25rem}.f3-m{font-size:1.5rem}.f4-m{font-size:1.25rem}.f5-m{font-size:1rem}.f6-m{font-size:.875rem}.f7-m{font-size:.75rem}.measure-m{max-width:30em}.measure-wide-m{max-width:34em}.measure-narrow-m{max-width:20em}.indent-m{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-m{font-variant:small-caps}.truncate-m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-m{margin-left:auto}.center-m,.mr-auto-m{margin-right:auto}.ml-auto-m{margin-left:auto}.clip-m{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-m{white-space:normal}.nowrap-m{white-space:nowrap}.pre-m{white-space:pre}.v-base-m{vertical-align:baseline}.v-mid-m{vertical-align:middle}.v-top-m{vertical-align:top}.v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.aspect-ratio-l{height:0;position:relative}.aspect-ratio--16x9-l{padding-bottom:56.25%}.aspect-ratio--9x16-l{padding-bottom:177.77%}.aspect-ratio--4x3-l{padding-bottom:75%}.aspect-ratio--3x4-l{padding-bottom:133.33%}.aspect-ratio--6x4-l{padding-bottom:66.6%}.aspect-ratio--4x6-l{padding-bottom:150%}.aspect-ratio--8x5-l{padding-bottom:62.5%}.aspect-ratio--5x8-l{padding-bottom:160%}.aspect-ratio--7x5-l{padding-bottom:71.42%}.aspect-ratio--5x7-l{padding-bottom:140%}.aspect-ratio--1x1-l{padding-bottom:100%}.aspect-ratio--object-l{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}.cover-l{background-size:cover!important}.contain-l{background-size:contain!important}.bg-center-l{background-position:50%}.bg-center-l,.bg-top-l{background-repeat:no-repeat}.bg-top-l{background-position:top}.bg-right-l{background-position:100%}.bg-bottom-l,.bg-right-l{background-repeat:no-repeat}.bg-bottom-l{background-position:bottom}.bg-left-l{background-repeat:no-repeat;background-position:0}.outline-l{outline:1px solid}.outline-transparent-l{outline:1px solid transparent}.outline-0-l{outline:0}.ba-l{border-style:solid;border-width:1px}.bt-l{border-top-style:solid;border-top-width:1px}.br-l{border-right-style:solid;border-right-width:1px}.bb-l{border-bottom-style:solid;border-bottom-width:1px}.bl-l{border-left-style:solid;border-left-width:1px}.bn-l{border-style:none;border-width:0}.br0-l{border-radius:0}.br1-l{border-radius:.125rem}.br2-l{border-radius:.25rem}.br3-l{border-radius:.5rem}.br4-l{border-radius:1rem}.br-100-l{border-radius:100%}.br-pill-l{border-radius:9999px}.br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.br--top-l{border-bottom-right-radius:0}.br--right-l,.br--top-l{border-bottom-left-radius:0}.br--right-l{border-top-left-radius:0}.br--left-l{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-l{border-style:dotted}.b--dashed-l{border-style:dashed}.b--solid-l{border-style:solid}.b--none-l{border-style:none}.bw0-l{border-width:0}.bw1-l{border-width:.125rem}.bw2-l{border-width:.25rem}.bw3-l{border-width:.5rem}.bw4-l{border-width:1rem}.bw5-l{border-width:2rem}.bt-0-l{border-top-width:0}.br-0-l{border-right-width:0}.bb-0-l{border-bottom-width:0}.bl-0-l{border-left-width:0}.shadow-1-l{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-l{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-l{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-l{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-l{top:0}.left-0-l{left:0}.right-0-l{right:0}.bottom-0-l{bottom:0}.top-1-l{top:1rem}.left-1-l{left:1rem}.right-1-l{right:1rem}.bottom-1-l{bottom:1rem}.top-2-l{top:2rem}.left-2-l{left:2rem}.right-2-l{right:2rem}.bottom-2-l{bottom:2rem}.top--1-l{top:-1rem}.right--1-l{right:-1rem}.bottom--1-l{bottom:-1rem}.left--1-l{left:-1rem}.top--2-l{top:-2rem}.right--2-l{right:-2rem}.bottom--2-l{bottom:-2rem}.left--2-l{left:-2rem}.absolute--fill-l{top:0;right:0;bottom:0;left:0}.cl-l{clear:left}.cr-l{clear:right}.cb-l{clear:both}.cn-l{clear:none}.dn-l{display:none}.di-l{display:inline}.db-l{display:block}.dib-l{display:inline-block}.dit-l{display:inline-table}.dt-l{display:table}.dtc-l{display:table-cell}.dt-row-l{display:table-row}.dt-row-group-l{display:table-row-group}.dt-column-l{display:table-column}.dt-column-group-l{display:table-column-group}.dt--fixed-l{table-layout:fixed;width:100%}.flex-l{display:flex}.inline-flex-l{display:inline-flex}.flex-auto-l{flex:1 1 auto;min-width:0;min-height:0}.flex-none-l{flex:none}.flex-column-l{flex-direction:column}.flex-row-l{flex-direction:row}.flex-wrap-l{flex-wrap:wrap}.flex-nowrap-l{flex-wrap:nowrap}.flex-wrap-reverse-l{flex-wrap:wrap-reverse}.flex-column-reverse-l{flex-direction:column-reverse}.flex-row-reverse-l{flex-direction:row-reverse}.items-start-l{align-items:flex-start}.items-end-l{align-items:flex-end}.items-center-l{align-items:center}.items-baseline-l{align-items:baseline}.items-stretch-l{align-items:stretch}.self-start-l{align-self:flex-start}.self-end-l{align-self:flex-end}.self-center-l{align-self:center}.self-baseline-l{align-self:baseline}.self-stretch-l{align-self:stretch}.justify-start-l{justify-content:flex-start}.justify-end-l{justify-content:flex-end}.justify-center-l{justify-content:center}.justify-between-l{justify-content:space-between}.justify-around-l{justify-content:space-around}.content-start-l{align-content:flex-start}.content-end-l{align-content:flex-end}.content-center-l{align-content:center}.content-between-l{align-content:space-between}.content-around-l{align-content:space-around}.content-stretch-l{align-content:stretch}.order-0-l{order:0}.order-1-l{order:1}.order-2-l{order:2}.order-3-l{order:3}.order-4-l{order:4}.order-5-l{order:5}.order-6-l{order:6}.order-7-l{order:7}.order-8-l{order:8}.order-last-l{order:99999}.flex-grow-0-l{flex-grow:0}.flex-grow-1-l{flex-grow:1}.flex-shrink-0-l{flex-shrink:0}.flex-shrink-1-l{flex-shrink:1}.fl-l{float:left}.fl-l,.fr-l{_display:inline}.fr-l{float:right}.fn-l{float:none}.i-l{font-style:italic}.fs-normal-l{font-style:normal}.normal-l{font-weight:400}.b-l{font-weight:700}.fw1-l{font-weight:100}.fw2-l{font-weight:200}.fw3-l{font-weight:300}.fw4-l{font-weight:400}.fw5-l{font-weight:500}.fw6-l{font-weight:600}.fw7-l{font-weight:700}.fw8-l{font-weight:800}.fw9-l{font-weight:900}.h1-l{height:1rem}.h2-l{height:2rem}.h3-l{height:4rem}.h4-l{height:8rem}.h5-l{height:16rem}.h-25-l{height:25%}.h-50-l{height:50%}.h-75-l{height:75%}.h-100-l{height:100%}.min-h-100-l{min-height:100%}.vh-25-l{height:25vh}.vh-50-l{height:50vh}.vh-75-l{height:75vh}.vh-100-l{height:100vh}.min-vh-100-l{min-height:100vh}.h-auto-l{height:auto}.h-inherit-l{height:inherit}.tracked-l{letter-spacing:.1em}.tracked-tight-l{letter-spacing:-.05em}.tracked-mega-l{letter-spacing:.25em}.lh-solid-l{line-height:1}.lh-title-l{line-height:1.25}.lh-copy-l{line-height:1.5}.mw-100-l{max-width:100%}.mw1-l{max-width:1rem}.mw2-l{max-width:2rem}.mw3-l{max-width:4rem}.mw4-l{max-width:8rem}.mw5-l{max-width:16rem}.mw6-l{max-width:32rem}.mw7-l{max-width:48rem}.mw8-l{max-width:64rem}.mw9-l{max-width:96rem}.mw-none-l{max-width:none}.w1-l{width:1rem}.w2-l{width:2rem}.w3-l{width:4rem}.w4-l{width:8rem}.w5-l{width:16rem}.w-10-l{width:10%}.w-20-l{width:20%}.w-25-l{width:25%}.w-30-l{width:30%}.w-33-l{width:33%}.w-34-l{width:34%}.w-40-l{width:40%}.w-50-l{width:50%}.w-60-l{width:60%}.w-70-l{width:70%}.w-75-l{width:75%}.w-80-l{width:80%}.w-90-l{width:90%}.w-100-l{width:100%}.w-third-l{width:33.33333%}.w-two-thirds-l{width:66.66667%}.w-auto-l{width:auto}.overflow-visible-l{overflow:visible}.overflow-hidden-l{overflow:hidden}.overflow-scroll-l{overflow:scroll}.overflow-auto-l{overflow:auto}.overflow-x-visible-l{overflow-x:visible}.overflow-x-hidden-l{overflow-x:hidden}.overflow-x-scroll-l{overflow-x:scroll}.overflow-x-auto-l{overflow-x:auto}.overflow-y-visible-l{overflow-y:visible}.overflow-y-hidden-l{overflow-y:hidden}.overflow-y-scroll-l{overflow-y:scroll}.overflow-y-auto-l{overflow-y:auto}.static-l{position:static}.relative-l{position:relative}.absolute-l{position:absolute}.fixed-l{position:fixed}.rotate-45-l{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.rotate-90-l{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rotate-135-l{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.rotate-180-l{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rotate-225-l{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.rotate-270-l{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.rotate-315-l{-webkit-transform:rotate(315deg);transform:rotate(315deg)}.pa0-l{padding:0}.pa1-l{padding:.25rem}.pa2-l{padding:.5rem}.pa3-l{padding:1rem}.pa4-l{padding:2rem}.pa5-l{padding:4rem}.pa6-l{padding:8rem}.pa7-l{padding:16rem}.pl0-l{padding-left:0}.pl1-l{padding-left:.25rem}.pl2-l{padding-left:.5rem}.pl3-l{padding-left:1rem}.pl4-l{padding-left:2rem}.pl5-l{padding-left:4rem}.pl6-l{padding-left:8rem}.pl7-l{padding-left:16rem}.pr0-l{padding-right:0}.pr1-l{padding-right:.25rem}.pr2-l{padding-right:.5rem}.pr3-l{padding-right:1rem}.pr4-l{padding-right:2rem}.pr5-l{padding-right:4rem}.pr6-l{padding-right:8rem}.pr7-l{padding-right:16rem}.pb0-l{padding-bottom:0}.pb1-l{padding-bottom:.25rem}.pb2-l{padding-bottom:.5rem}.pb3-l{padding-bottom:1rem}.pb4-l{padding-bottom:2rem}.pb5-l{padding-bottom:4rem}.pb6-l{padding-bottom:8rem}.pb7-l{padding-bottom:16rem}.pt0-l{padding-top:0}.pt1-l{padding-top:.25rem}.pt2-l{padding-top:.5rem}.pt3-l{padding-top:1rem}.pt4-l{padding-top:2rem}.pt5-l{padding-top:4rem}.pt6-l{padding-top:8rem}.pt7-l{padding-top:16rem}.pv0-l{padding-top:0;padding-bottom:0}.pv1-l{padding-top:.25rem;padding-bottom:.25rem}.pv2-l{padding-top:.5rem;padding-bottom:.5rem}.pv3-l{padding-top:1rem;padding-bottom:1rem}.pv4-l{padding-top:2rem;padding-bottom:2rem}.pv5-l{padding-top:4rem;padding-bottom:4rem}.pv6-l{padding-top:8rem;padding-bottom:8rem}.pv7-l{padding-top:16rem;padding-bottom:16rem}.ph0-l{padding-left:0;padding-right:0}.ph1-l{padding-left:.25rem;padding-right:.25rem}.ph2-l{padding-left:.5rem;padding-right:.5rem}.ph3-l{padding-left:1rem;padding-right:1rem}.ph4-l{padding-left:2rem;padding-right:2rem}.ph5-l{padding-left:4rem;padding-right:4rem}.ph6-l{padding-left:8rem;padding-right:8rem}.ph7-l{padding-left:16rem;padding-right:16rem}.ma0-l{margin:0}.ma1-l{margin:.25rem}.ma2-l{margin:.5rem}.ma3-l{margin:1rem}.ma4-l{margin:2rem}.ma5-l{margin:4rem}.ma6-l{margin:8rem}.ma7-l{margin:16rem}.ml0-l{margin-left:0}.ml1-l{margin-left:.25rem}.ml2-l{margin-left:.5rem}.ml3-l{margin-left:1rem}.ml4-l{margin-left:2rem}.ml5-l{margin-left:4rem}.ml6-l{margin-left:8rem}.ml7-l{margin-left:16rem}.mr0-l{margin-right:0}.mr1-l{margin-right:.25rem}.mr2-l{margin-right:.5rem}.mr3-l{margin-right:1rem}.mr4-l{margin-right:2rem}.mr5-l{margin-right:4rem}.mr6-l{margin-right:8rem}.mr7-l{margin-right:16rem}.mb0-l{margin-bottom:0}.mb1-l{margin-bottom:.25rem}.mb2-l{margin-bottom:.5rem}.mb3-l{margin-bottom:1rem}.mb4-l{margin-bottom:2rem}.mb5-l{margin-bottom:4rem}.mb6-l{margin-bottom:8rem}.mb7-l{margin-bottom:16rem}.mt0-l{margin-top:0}.mt1-l{margin-top:.25rem}.mt2-l{margin-top:.5rem}.mt3-l{margin-top:1rem}.mt4-l{margin-top:2rem}.mt5-l{margin-top:4rem}.mt6-l{margin-top:8rem}.mt7-l{margin-top:16rem}.mv0-l{margin-top:0;margin-bottom:0}.mv1-l{margin-top:.25rem;margin-bottom:.25rem}.mv2-l{margin-top:.5rem;margin-bottom:.5rem}.mv3-l{margin-top:1rem;margin-bottom:1rem}.mv4-l{margin-top:2rem;margin-bottom:2rem}.mv5-l{margin-top:4rem;margin-bottom:4rem}.mv6-l{margin-top:8rem;margin-bottom:8rem}.mv7-l{margin-top:16rem;margin-bottom:16rem}.mh0-l{margin-left:0;margin-right:0}.mh1-l{margin-left:.25rem;margin-right:.25rem}.mh2-l{margin-left:.5rem;margin-right:.5rem}.mh3-l{margin-left:1rem;margin-right:1rem}.mh4-l{margin-left:2rem;margin-right:2rem}.mh5-l{margin-left:4rem;margin-right:4rem}.mh6-l{margin-left:8rem;margin-right:8rem}.mh7-l{margin-left:16rem;margin-right:16rem}.na1-l{margin:-.25rem}.na2-l{margin:-.5rem}.na3-l{margin:-1rem}.na4-l{margin:-2rem}.na5-l{margin:-4rem}.na6-l{margin:-8rem}.na7-l{margin:-16rem}.nl1-l{margin-left:-.25rem}.nl2-l{margin-left:-.5rem}.nl3-l{margin-left:-1rem}.nl4-l{margin-left:-2rem}.nl5-l{margin-left:-4rem}.nl6-l{margin-left:-8rem}.nl7-l{margin-left:-16rem}.nr1-l{margin-right:-.25rem}.nr2-l{margin-right:-.5rem}.nr3-l{margin-right:-1rem}.nr4-l{margin-right:-2rem}.nr5-l{margin-right:-4rem}.nr6-l{margin-right:-8rem}.nr7-l{margin-right:-16rem}.nb1-l{margin-bottom:-.25rem}.nb2-l{margin-bottom:-.5rem}.nb3-l{margin-bottom:-1rem}.nb4-l{margin-bottom:-2rem}.nb5-l{margin-bottom:-4rem}.nb6-l{margin-bottom:-8rem}.nb7-l{margin-bottom:-16rem}.nt1-l{margin-top:-.25rem}.nt2-l{margin-top:-.5rem}.nt3-l{margin-top:-1rem}.nt4-l{margin-top:-2rem}.nt5-l{margin-top:-4rem}.nt6-l{margin-top:-8rem}.nt7-l{margin-top:-16rem}.strike-l{text-decoration:line-through}.underline-l{text-decoration:underline}.no-underline-l{text-decoration:none}.tl-l{text-align:left}.tr-l{text-align:right}.tc-l{text-align:center}.tj-l{text-align:justify}.ttc-l{text-transform:capitalize}.ttl-l{text-transform:lowercase}.ttu-l{text-transform:uppercase}.ttn-l{text-transform:none}.f-6-l,.f-headline-l{font-size:6rem}.f-5-l,.f-subheadline-l{font-size:5rem}.f1-l{font-size:3rem}.f2-l{font-size:2.25rem}.f3-l{font-size:1.5rem}.f4-l{font-size:1.25rem}.f5-l{font-size:1rem}.f6-l{font-size:.875rem}.f7-l{font-size:.75rem}.measure-l{max-width:30em}.measure-wide-l{max-width:34em}.measure-narrow-l{max-width:20em}.indent-l{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-l{font-variant:small-caps}.truncate-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.center-l{margin-left:auto}.center-l,.mr-auto-l{margin-right:auto}.ml-auto-l{margin-left:auto}.clip-l{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-l{white-space:normal}.nowrap-l{white-space:nowrap}.pre-l{white-space:pre}.v-base-l{vertical-align:baseline}.v-mid-l{vertical-align:middle}.v-top-l{vertical-align:top}.v-btm-l{vertical-align:bottom}}
</style>
<style>
button:focus { outline:0; }
rect:hover {opacity: 0.9}
</style>
</head>
<body class='m0 bg-white sans-serif overflow-hidden'>
<script>
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.hsl = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
// expected hue range: [0, 360)
// expected saturation range: [0, 1]
// expected lightness range: [0, 1]
var hslToRgb = function(hue, saturation, lightness){
// based on algorithm from http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB
if( hue == undefined ){
return [0, 0, 0];
}
var chroma = (1 - Math.abs((2 * lightness) - 1)) * saturation;
var huePrime = hue / 60;
var secondComponent = chroma * (1 - Math.abs((huePrime % 2) - 1));
huePrime = Math.floor(huePrime);
var red;
var green;
var blue;
if( huePrime === 0 ){
red = chroma;
green = secondComponent;
blue = 0;
}else if( huePrime === 1 ){
red = secondComponent;
green = chroma;
blue = 0;
}else if( huePrime === 2 ){
red = 0;
green = chroma;
blue = secondComponent;
}else if( huePrime === 3 ){
red = 0;
green = secondComponent;
blue = chroma;
}else if( huePrime === 4 ){
red = secondComponent;
green = 0;
blue = chroma;
}else if( huePrime === 5 ){
red = chroma;
green = 0;
blue = secondComponent;
}
var lightnessAdjustment = lightness - (chroma / 2);
red += lightnessAdjustment;
green += lightnessAdjustment;
blue += lightnessAdjustment;
return [Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255)];
};
module.exports = hslToRgb;
},{}]},{},[1])(1)
});
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.fg = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
// https://d3js.org/d3-array/ Version 1.2.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var ascending = function(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
};
var bisector = function(compare) {
if (compare.length === 1) compare = ascendingComparator(compare);
return {
left: function(a, x, lo, hi) {
if (lo == null) lo = 0;
if (hi == null) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (compare(a[mid], x) < 0) lo = mid + 1;
else hi = mid;
}
return lo;
},
right: function(a, x, lo, hi) {
if (lo == null) lo = 0;
if (hi == null) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (compare(a[mid], x) > 0) hi = mid;
else lo = mid + 1;
}
return lo;
}
};
};
function ascendingComparator(f) {
return function(d, x) {
return ascending(f(d), x);
};
}
var ascendingBisect = bisector(ascending);
var bisectRight = ascendingBisect.right;
var bisectLeft = ascendingBisect.left;
var pairs = function(array, f) {
if (f == null) f = pair;
var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);
while (i < n) pairs[i] = f(p, p = array[++i]);
return pairs;
};
function pair(a, b) {
return [a, b];
}
var cross = function(values0, values1, reduce) {
var n0 = values0.length,
n1 = values1.length,
values = new Array(n0 * n1),
i0,
i1,
i,
value0;
if (reduce == null) reduce = pair;
for (i0 = i = 0; i0 < n0; ++i0) {
for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {
values[i] = reduce(value0, values1[i1]);
}
}
return values;
};
var descending = function(a, b) {
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
};
var number = function(x) {
return x === null ? NaN : +x;
};
var variance = function(values, valueof) {
var n = values.length,
m = 0,
i = -1,
mean = 0,
value,
delta,
sum = 0;
if (valueof == null) {
while (++i < n) {
if (!isNaN(value = number(values[i]))) {
delta = value - mean;
mean += delta / ++m;
sum += delta * (value - mean);
}
}
}
else {
while (++i < n) {
if (!isNaN(value = number(valueof(values[i], i, values)))) {
delta = value - mean;
mean += delta / ++m;
sum += delta * (value - mean);
}
}
}
if (m > 1) return sum / (m - 1);
};
var deviation = function(array, f) {
var v = variance(array, f);
return v ? Math.sqrt(v) : v;
};
var extent = function(values, valueof) {
var n = values.length,
i = -1,
value,
min,
max;
if (valueof == null) {
while (++i < n) { // Find the first comparable value.
if ((value = values[i]) != null && value >= value) {
min = max = value;
while (++i < n) { // Compare the remaining values.
if ((value = values[i]) != null) {
if (min > value) min = value;
if (max < value) max = value;
}
}
}
}
}
else {
while (++i < n) { // Find the first comparable value.
if ((value = valueof(values[i], i, values)) != null && value >= value) {
min = max = value;
while (++i < n) { // Compare the remaining values.
if ((value = valueof(values[i], i, values)) != null) {
if (min > value) min = value;
if (max < value) max = value;
}
}
}
}
}
return [min, max];
};
var array = Array.prototype;
var slice = array.slice;
var map = array.map;
var constant = function(x) {
return function() {
return x;
};
};
var identity = function(x) {
return x;
};
var range = function(start, stop, step) {
start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;
var i = -1,
n = Math.max(0, Math.ceil((stop - start) / step)) | 0,
range = new Array(n);
while (++i < n) {
range[i] = start + i * step;
}
return range;
};
var e10 = Math.sqrt(50);
var e5 = Math.sqrt(10);
var e2 = Math.sqrt(2);
var ticks = function(start, stop, count) {
var reverse,
i = -1,
n,
ticks,
step;
stop = +stop, start = +start, count = +count;
if (start === stop && count > 0) return [start];
if (reverse = stop < start) n = start, start = stop, stop = n;
if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];
if (step > 0) {
start = Math.ceil(start / step);
stop = Math.floor(stop / step);
ticks = new Array(n = Math.ceil(stop - start + 1));
while (++i < n) ticks[i] = (start + i) * step;
} else {
start = Math.floor(start * step);
stop = Math.ceil(stop * step);
ticks = new Array(n = Math.ceil(start - stop + 1));
while (++i < n) ticks[i] = (start - i) / step;
}
if (reverse) ticks.reverse();
return ticks;
};
function tickIncrement(start, stop, count) {
var step = (stop - start) / Math.max(0, count),
power = Math.floor(Math.log(step) / Math.LN10),
error = step / Math.pow(10, power);
return power >= 0
? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)
: -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);
}
function tickStep(start, stop, count) {
var step0 = Math.abs(stop - start) / Math.max(0, count),
step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),
error = step0 / step1;
if (error >= e10) step1 *= 10;
else if (error >= e5) step1 *= 5;
else if (error >= e2) step1 *= 2;
return stop < start ? -step1 : step1;
}
var sturges = function(values) {
return Math.ceil(Math.log(values.length) / Math.LN2) + 1;
};
var histogram = function() {
var value = identity,
domain = extent,
threshold = sturges;
function histogram(data) {
var i,
n = data.length,
x,
values = new Array(n);
for (i = 0; i < n; ++i) {
values[i] = value(data[i], i, data);
}
var xz = domain(values),
x0 = xz[0],
x1 = xz[1],
tz = threshold(values, x0, x1);
// Convert number of thresholds into uniform thresholds.
if (!Array.isArray(tz)) {
tz = tickStep(x0, x1, tz);
tz = range(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive
}
// Remove any thresholds outside the domain.
var m = tz.length;
while (tz[0] <= x0) tz.shift(), --m;
while (tz[m - 1] > x1) tz.pop(), --m;
var bins = new Array(m + 1),
bin;
// Initialize bins.
for (i = 0; i <= m; ++i) {
bin = bins[i] = [];
bin.x0 = i > 0 ? tz[i - 1] : x0;
bin.x1 = i < m ? tz[i] : x1;
}
// Assign data to bins by value, ignoring any outside the domain.
for (i = 0; i < n; ++i) {
x = values[i];
if (x0 <= x && x <= x1) {
bins[bisectRight(tz, x, 0, m)].push(data[i]);
}
}
return bins;
}
histogram.value = function(_) {
return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value;
};
histogram.domain = function(_) {
return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain;
};
histogram.thresholds = function(_) {
return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;
};
return histogram;
};
var quantile = function(values, p, valueof) {
if (valueof == null) valueof = number;
if (!(n = values.length)) return;
if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);
if (p >= 1) return +valueof(values[n - 1], n - 1, values);
var n,
i = (n - 1) * p,
i0 = Math.floor(i),
value0 = +valueof(values[i0], i0, values),
value1 = +valueof(values[i0 + 1], i0 + 1, values);
return value0 + (value1 - value0) * (i - i0);
};
var freedmanDiaconis = function(values, min, max) {
values = map.call(values, number).sort(ascending);
return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));
};
var scott = function(values, min, max) {
return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));
};
var max = function(values, valueof) {
var n = values.length,
i = -1,
value,
max;
if (valueof == null) {
while (++i < n) { // Find the first comparable value.
if ((value = values[i]) != null && value >= value) {
max = value;
while (++i < n) { // Compare the remaining values.
if ((value = values[i]) != null && value > max) {
max = value;
}
}
}
}
}
else {
while (++i < n) { // Find the first comparable value.
if ((value = valueof(values[i], i, values)) != null && value >= value) {
max = value;
while (++i < n) { // Compare the remaining values.
if ((value = valueof(values[i], i, values)) != null && value > max) {
max = value;
}
}
}
}
}
return max;
};
var mean = function(values, valueof) {
var n = values.length,
m = n,
i = -1,
value,
sum = 0;
if (valueof == null) {
while (++i < n) {
if (!isNaN(value = number(values[i]))) sum += value;
else --m;
}
}
else {
while (++i < n) {
if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;
else --m;
}
}
if (m) return sum / m;
};
var median = function(values, valueof) {
var n = values.length,
i = -1,
value,
numbers = [];
if (valueof == null) {
while (++i < n) {
if (!isNaN(value = number(values[i]))) {
numbers.push(value);
}
}
}
else {
while (++i < n) {
if (!isNaN(value = number(valueof(values[i], i, values)))) {
numbers.push(value);
}
}
}
return quantile(numbers.sort(ascending), 0.5);
};
var merge = function(arrays) {
var n = arrays.length,
m,
i = -1,
j = 0,
merged,
array;
while (++i < n) j += arrays[i].length;
merged = new Array(j);
while (--n >= 0) {
array = arrays[n];
m = array.length;
while (--m >= 0) {
merged[--j] = array[m];
}
}
return merged;
};
var min = function(values, valueof) {
var n = values.length,
i = -1,
value,
min;
if (valueof == null) {
while (++i < n) { // Find the first comparable value.
if ((value = values[i]) != null && value >= value) {
min = value;
while (++i < n) { // Compare the remaining values.
if ((value = values[i]) != null && min > value) {
min = value;
}
}
}
}
}
else {
while (++i < n) { // Find the first comparable value.
if ((value = valueof(values[i], i, values)) != null && value >= value) {
min = value;
while (++i < n) { // Compare the remaining values.
if ((value = valueof(values[i], i, values)) != null && min > value) {
min = value;
}
}
}
}
}
return min;
};
var permute = function(array, indexes) {
var i = indexes.length, permutes = new Array(i);
while (i--) permutes[i] = array[indexes[i]];
return permutes;
};
var scan = function(values, compare) {
if (!(n = values.length)) return;
var n,
i = 0,
j = 0,
xi,
xj = values[j];
if (compare == null) compare = ascending;
while (++i < n) {
if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {
xj = xi, j = i;
}
}
if (compare(xj, xj) === 0) return j;
};
var shuffle = function(array, i0, i1) {
var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),
t,
i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m + i0];
array[m + i0] = array[i + i0];
array[i + i0] = t;
}
return array;
};
var sum = function(values, valueof) {
var n = values.length,
i = -1,
value,
sum = 0;
if (valueof == null) {
while (++i < n) {
if (value = +values[i]) sum += value; // Note: zero and null are equivalent.
}
}
else {
while (++i < n) {
if (value = +valueof(values[i], i, values)) sum += value;
}
}
return sum;
};
var transpose = function(matrix) {
if (!(n = matrix.length)) return [];
for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {
for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {
row[j] = matrix[j][i];
}
}
return transpose;
};
function length(d) {
return d.length;
}
var zip = function() {
return transpose(arguments);
};
exports.bisect = bisectRight;
exports.bisectRight = bisectRight;
exports.bisectLeft = bisectLeft;
exports.ascending = ascending;
exports.bisector = bisector;
exports.cross = cross;
exports.descending = descending;
exports.deviation = deviation;
exports.extent = extent;
exports.histogram = histogram;
exports.thresholdFreedmanDiaconis = freedmanDiaconis;
exports.thresholdScott = scott;
exports.thresholdSturges = sturges;
exports.max = max;
exports.mean = mean;
exports.median = median;
exports.merge = merge;
exports.min = min;
exports.pairs = pairs;
exports.permute = permute;
exports.quantile = quantile;
exports.range = range;
exports.scan = scan;
exports.shuffle = shuffle;
exports.sum = sum;
exports.ticks = ticks;
exports.tickIncrement = tickIncrement;
exports.tickStep = tickStep;
exports.transpose = transpose;
exports.variance = variance;
exports.zip = zip;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],2:[function(require,module,exports){
// https://d3js.org/d3-collection/ Version 1.0.4. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var prefix = "$";
function Map() {}
Map.prototype = map.prototype = {
constructor: Map,
has: function(key) {
return (prefix + key) in this;
},
get: function(key) {
return this[prefix + key];
},
set: function(key, value) {
this[prefix + key] = value;
return this;
},
remove: function(key) {
var property = prefix + key;
return property in this && delete this[property];
},
clear: function() {
for (var property in this) if (property[0] === prefix) delete this[property];
},
keys: function() {
var keys = [];
for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));
return keys;
},
values: function() {
var values = [];
for (var property in this) if (property[0] === prefix) values.push(this[property]);
return values;
},
entries: function() {
var entries = [];
for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});
return entries;
},
size: function() {
var size = 0;
for (var property in this) if (property[0] === prefix) ++size;
return size;
},
empty: function() {
for (var property in this) if (property[0] === prefix) return false;
return true;
},
each: function(f) {
for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);
}
};
function map(object, f) {
var map = new Map;
// Copy constructor.
if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });
// Index array by numeric index or specified key function.
else if (Array.isArray(object)) {
var i = -1,
n = object.length,
o;
if (f == null) while (++i < n) map.set(i, object[i]);
else while (++i < n) map.set(f(o = object[i], i, object), o);
}
// Convert object to map.
else if (object) for (var key in object) map.set(key, object[key]);
return map;
}
var nest = function() {
var keys = [],
sortKeys = [],
sortValues,
rollup,
nest;
function apply(array, depth, createResult, setResult) {
if (depth >= keys.length) {
if (sortValues != null) array.sort(sortValues);
return rollup != null ? rollup(array) : array;
}
var i = -1,
n = array.length,
key = keys[depth++],
keyValue,
value,
valuesByKey = map(),
values,
result = createResult();
while (++i < n) {
if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) {
values.push(value);
} else {
valuesByKey.set(keyValue, [value]);
}
}
valuesByKey.each(function(values, key) {
setResult(result, key, apply(values, depth, createResult, setResult));
});
return result;
}
function entries(map$$1, depth) {
if (++depth > keys.length) return map$$1;
var array, sortKey = sortKeys[depth - 1];
if (rollup != null && depth >= keys.length) array = map$$1.entries();
else array = [], map$$1.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });
return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;
}
return nest = {
object: function(array) { return apply(array, 0, createObject, setObject); },
map: function(array) { return apply(array, 0, createMap, setMap); },
entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },
key: function(d) { keys.push(d); return nest; },
sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },
sortValues: function(order) { sortValues = order; return nest; },
rollup: function(f) { rollup = f; return nest; }
};
};
function createObject() {
return {};
}
function setObject(object, key, value) {
object[key] = value;
}
function createMap() {
return map();
}
function setMap(map$$1, key, value) {
map$$1.set(key, value);
}
function Set() {}
var proto = map.prototype;
Set.prototype = set.prototype = {
constructor: Set,
has: proto.has,
add: function(value) {
value += "";
this[prefix + value] = value;
return this;
},
remove: proto.remove,
clear: proto.clear,
values: proto.keys,
size: proto.size,
empty: proto.empty,
each: proto.each
};
function set(object, f) {
var set = new Set;
// Copy constructor.
if (object instanceof Set) object.each(function(value) { set.add(value); });
// Otherwise, assume it’s an array.
else if (object) {
var i = -1, n = object.length;
if (f == null) while (++i < n) set.add(object[i]);
else while (++i < n) set.add(f(object[i], i, object));
}
return set;
}
var keys = function(map) {
var keys = [];
for (var key in map) keys.push(key);
return keys;
};
var values = function(map) {
var values = [];
for (var key in map) values.push(map[key]);
return values;
};
var entries = function(map) {
var entries = [];
for (var key in map) entries.push({key: key, value: map[key]});
return entries;
};
exports.nest = nest;
exports.set = set;
exports.map = map;
exports.keys = keys;
exports.values = values;
exports.entries = entries;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],3:[function(require,module,exports){
// https://d3js.org/d3-color/ Version 1.2.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var define = function(constructor, factory, prototype) {
constructor.prototype = factory.prototype = prototype;
prototype.constructor = constructor;
};
function extend(parent, definition) {
var prototype = Object.create(parent.prototype);
for (var key in definition) prototype[key] = definition[key];
return prototype;
}
function Color() {}
var darker = 0.7;
var brighter = 1 / darker;
var reI = "\\s*([+-]?\\d+)\\s*";
var reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*";
var reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*";
var reHex3 = /^#([0-9a-f]{3})$/;
var reHex6 = /^#([0-9a-f]{6})$/;
var reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$");
var reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$");
var reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$");
var reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$");
var reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$");
var reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$");
var named = {
aliceblue: 0xf0f8ff,
antiquewhite: 0xfaebd7,
aqua: 0x00ffff,
aquamarine: 0x7fffd4,
azure: 0xf0ffff,
beige: 0xf5f5dc,
bisque: 0xffe4c4,
black: 0x000000,
blanchedalmond: 0xffebcd,
blue: 0x0000ff,
blueviolet: 0x8a2be2,
brown: 0xa52a2a,
burlywood: 0xdeb887,
cadetblue: 0x5f9ea0,
chartreuse: 0x7fff00,
chocolate: 0xd2691e,
coral: 0xff7f50,
cornflowerblue: 0x6495ed,
cornsilk: 0xfff8dc,
crimson: 0xdc143c,
cyan: 0x00ffff,
darkblue: 0x00008b,
darkcyan: 0x008b8b,
darkgoldenrod: 0xb8860b,
darkgray: 0xa9a9a9,
darkgreen: 0x006400,
darkgrey: 0xa9a9a9,
darkkhaki: 0xbdb76b,
darkmagenta: 0x8b008b,
darkolivegreen: 0x556b2f,
darkorange: 0xff8c00,
darkorchid: 0x9932cc,
darkred: 0x8b0000,
darksalmon: 0xe9967a,
darkseagreen: 0x8fbc8f,
darkslateblue: 0x483d8b,
darkslategray: 0x2f4f4f,
darkslategrey: 0x2f4f4f,
darkturquoise: 0x00ced1,
darkviolet: 0x9400d3,
deeppink: 0xff1493,
deepskyblue: 0x00bfff,
dimgray: 0x696969,
dimgrey: 0x696969,
dodgerblue: 0x1e90ff,
firebrick: 0xb22222,
floralwhite: 0xfffaf0,
forestgreen: 0x228b22,
fuchsia: 0xff00ff,
gainsboro: 0xdcdcdc,
ghostwhite: 0xf8f8ff,
gold: 0xffd700,
goldenrod: 0xdaa520,
gray: 0x808080,
green: 0x008000,
greenyellow: 0xadff2f,
grey: 0x808080,
honeydew: 0xf0fff0,
hotpink: 0xff69b4,
indianred: 0xcd5c5c,
indigo: 0x4b0082,
ivory: 0xfffff0,
khaki: 0xf0e68c,
lavender: 0xe6e6fa,
lavenderblush: 0xfff0f5,
lawngreen: 0x7cfc00,
lemonchiffon: 0xfffacd,
lightblue: 0xadd8e6,
lightcoral: 0xf08080,
lightcyan: 0xe0ffff,
lightgoldenrodyellow: 0xfafad2,
lightgray: 0xd3d3d3,
lightgreen: 0x90ee90,
lightgrey: 0xd3d3d3,
lightpink: 0xffb6c1,
lightsalmon: 0xffa07a,
lightseagreen: 0x20b2aa,
lightskyblue: 0x87cefa,
lightslategray: 0x778899,
lightslategrey: 0x778899,
lightsteelblue: 0xb0c4de,
lightyellow: 0xffffe0,
lime: 0x00ff00,
limegreen: 0x32cd32,
linen: 0xfaf0e6,
magenta: 0xff00ff,
maroon: 0x800000,
mediumaquamarine: 0x66cdaa,
mediumblue: 0x0000cd,
mediumorchid: 0xba55d3,
mediumpurple: 0x9370db,
mediumseagreen: 0x3cb371,
mediumslateblue: 0x7b68ee,
mediumspringgreen: 0x00fa9a,
mediumturquoise: 0x48d1cc,
mediumvioletred: 0xc71585,
midnightblue: 0x191970,
mintcream: 0xf5fffa,
mistyrose: 0xffe4e1,
moccasin: 0xffe4b5,
navajowhite: 0xffdead,
navy: 0x000080,
oldlace: 0xfdf5e6,
olive: 0x808000,
olivedrab: 0x6b8e23,
orange: 0xffa500,
orangered: 0xff4500,
orchid: 0xda70d6,
palegoldenrod: 0xeee8aa,
palegreen: 0x98fb98,
paleturquoise: 0xafeeee,
palevioletred: 0xdb7093,
papayawhip: 0xffefd5,
peachpuff: 0xffdab9,
peru: 0xcd853f,
pink: 0xffc0cb,
plum: 0xdda0dd,
powderblue: 0xb0e0e6,
purple: 0x800080,
rebeccapurple: 0x663399,
red: 0xff0000,
rosybrown: 0xbc8f8f,
royalblue: 0x4169e1,
saddlebrown: 0x8b4513,
salmon: 0xfa8072,
sandybrown: 0xf4a460,
seagreen: 0x2e8b57,
seashell: 0xfff5ee,
sienna: 0xa0522d,
silver: 0xc0c0c0,
skyblue: 0x87ceeb,
slateblue: 0x6a5acd,
slategray: 0x708090,
slategrey: 0x708090,
snow: 0xfffafa,
springgreen: 0x00ff7f,
steelblue: 0x4682b4,
tan: 0xd2b48c,
teal: 0x008080,
thistle: 0xd8bfd8,
tomato: 0xff6347,
turquoise: 0x40e0d0,
violet: 0xee82ee,
wheat: 0xf5deb3,
white: 0xffffff,
whitesmoke: 0xf5f5f5,
yellow: 0xffff00,
yellowgreen: 0x9acd32
};
define(Color, color, {
displayable: function() {
return this.rgb().displayable();
},
hex: function() {
return this.rgb().hex();
},
toString: function() {
return this.rgb() + "";
}
});
function color(format) {
var m;
format = (format + "").trim().toLowerCase();
return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00
: (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000
: (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)
: (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)
: (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)
: (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)
: (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)
: (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)
: named.hasOwnProperty(format) ? rgbn(named[format])
: format === "transparent" ? new Rgb(NaN, NaN, NaN, 0)
: null;
}
function rgbn(n) {
return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);
}
function rgba(r, g, b, a) {
if (a <= 0) r = g = b = NaN;
return new Rgb(r, g, b, a);
}
function rgbConvert(o) {
if (!(o instanceof Color)) o = color(o);
if (!o) return new Rgb;
o = o.rgb();
return new Rgb(o.r, o.g, o.b, o.opacity);
}
function rgb(r, g, b, opacity) {
return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);
}
function Rgb(r, g, b, opacity) {
this.r = +r;
this.g = +g;
this.b = +b;
this.opacity = +opacity;
}
define(Rgb, rgb, extend(Color, {
brighter: function(k) {
k = k == null ? brighter : Math.pow(brighter, k);
return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
},
darker: function(k) {
k = k == null ? darker : Math.pow(darker, k);
return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
},
rgb: function() {
return this;
},
displayable: function() {
return (0 <= this.r && this.r <= 255)
&& (0 <= this.g && this.g <= 255)
&& (0 <= this.b && this.b <= 255)
&& (0 <= this.opacity && this.opacity <= 1);
},
hex: function() {
return "#" + hex(this.r) + hex(this.g) + hex(this.b);
},
toString: function() {
var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
return (a === 1 ? "rgb(" : "rgba(")
+ Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", "
+ Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", "
+ Math.max(0, Math.min(255, Math.round(this.b) || 0))
+ (a === 1 ? ")" : ", " + a + ")");
}
}));
function hex(value) {
value = Math.max(0, Math.min(255, Math.round(value) || 0));
return (value < 16 ? "0" : "") + value.toString(16);
}
function hsla(h, s, l, a) {
if (a <= 0) h = s = l = NaN;
else if (l <= 0 || l >= 1) h = s = NaN;
else if (s <= 0) h = NaN;
return new Hsl(h, s, l, a);
}
function hslConvert(o) {
if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);
if (!(o instanceof Color)) o = color(o);
if (!o) return new Hsl;
if (o instanceof Hsl) return o;
o = o.rgb();
var r = o.r / 255,
g = o.g / 255,
b = o.b / 255,
min = Math.min(r, g, b),
max = Math.max(r, g, b),
h = NaN,
s = max - min,
l = (max + min) / 2;
if (s) {
if (r === max) h = (g - b) / s + (g < b) * 6;
else if (g === max) h = (b - r) / s + 2;
else h = (r - g) / s + 4;
s /= l < 0.5 ? max + min : 2 - max - min;
h *= 60;
} else {
s = l > 0 && l < 1 ? 0 : h;
}
return new Hsl(h, s, l, o.opacity);
}
function hsl(h, s, l, opacity) {
return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);
}
function Hsl(h, s, l, opacity) {
this.h = +h;
this.s = +s;
this.l = +l;
this.opacity = +opacity;
}
define(Hsl, hsl, extend(Color, {
brighter: function(k) {
k = k == null ? brighter : Math.pow(brighter, k);
return new Hsl(this.h, this.s, this.l * k, this.opacity);
},
darker: function(k) {
k = k == null ? darker : Math.pow(darker, k);
return new Hsl(this.h, this.s, this.l * k, this.opacity);
},
rgb: function() {
var h = this.h % 360 + (this.h < 0) * 360,
s = isNaN(h) || isNaN(this.s) ? 0 : this.s,
l = this.l,
m2 = l + (l < 0.5 ? l : 1 - l) * s,
m1 = 2 * l - m2;
return new Rgb(
hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),
hsl2rgb(h, m1, m2),
hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),
this.opacity
);
},
displayable: function() {
return (0 <= this.s && this.s <= 1 || isNaN(this.s))
&& (0 <= this.l && this.l <= 1)
&& (0 <= this.opacity && this.opacity <= 1);
}
}));
/* From FvD 13.37, CSS Color Module Level 3 */
function hsl2rgb(h, m1, m2) {
return (h < 60 ? m1 + (m2 - m1) * h / 60
: h < 180 ? m2
: h < 240 ? m1 + (m2 - m1) * (240 - h) / 60
: m1) * 255;
}
var deg2rad = Math.PI / 180;
var rad2deg = 180 / Math.PI;
// https://beta.observablehq.com/@mbostock/lab-and-rgb
var K = 18;
var Xn = 0.96422;
var Yn = 1;
var Zn = 0.82521;
var t0 = 4 / 29;
var t1 = 6 / 29;
var t2 = 3 * t1 * t1;
var t3 = t1 * t1 * t1;
function labConvert(o) {
if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);
if (o instanceof Hcl) {
if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);
var h = o.h * deg2rad;
return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);
}
if (!(o instanceof Rgb)) o = rgbConvert(o);
var r = rgb2lrgb(o.r),
g = rgb2lrgb(o.g),
b = rgb2lrgb(o.b),
y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;
if (r === g && g === b) x = z = y; else {
x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);
z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);
}
return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);
}
function gray(l, opacity) {
return new Lab(l, 0, 0, opacity == null ? 1 : opacity);
}
function lab(l, a, b, opacity) {
return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);
}
function Lab(l, a, b, opacity) {
this.l = +l;
this.a = +a;
this.b = +b;
this.opacity = +opacity;
}
define(Lab, lab, extend(Color, {
brighter: function(k) {
return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);
},
darker: function(k) {
return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);
},
rgb: function() {
var y = (this.l + 16) / 116,
x = isNaN(this.a) ? y : y + this.a / 500,
z = isNaN(this.b) ? y : y - this.b / 200;
x = Xn * lab2xyz(x);
y = Yn * lab2xyz(y);
z = Zn * lab2xyz(z);
return new Rgb(
lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),
lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),
lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),
this.opacity
);
}
}));
function xyz2lab(t) {
return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;
}
function lab2xyz(t) {
return t > t1 ? t * t * t : t2 * (t - t0);
}
function lrgb2rgb(x) {
return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
}
function rgb2lrgb(x) {
return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
}
function hclConvert(o) {
if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);
if (!(o instanceof Lab)) o = labConvert(o);
if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);
var h = Math.atan2(o.b, o.a) * rad2deg;
return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);
}
function lch(l, c, h, opacity) {
return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);
}
function hcl(h, c, l, opacity) {
return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);
}
function Hcl(h, c, l, opacity) {
this.h = +h;
this.c = +c;
this.l = +l;
this.opacity = +opacity;
}
define(Hcl, hcl, extend(Color, {
brighter: function(k) {
return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);
},
darker: function(k) {
return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);
},
rgb: function() {
return labConvert(this).rgb();
}
}));
var A = -0.14861;
var B = +1.78277;
var C = -0.29227;
var D = -0.90649;
var E = +1.97294;
var ED = E * D;
var EB = E * B;
var BC_DA = B * C - D * A;
function cubehelixConvert(o) {
if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);
if (!(o instanceof Rgb)) o = rgbConvert(o);
var r = o.r / 255,
g = o.g / 255,
b = o.b / 255,
l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),
bl = b - l,
k = (E * (g - l) - C * bl) / D,
s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1
h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;
return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);
}
function cubehelix(h, s, l, opacity) {
return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);
}
function Cubehelix(h, s, l, opacity) {
this.h = +h;
this.s = +s;
this.l = +l;
this.opacity = +opacity;
}
define(Cubehelix, cubehelix, extend(Color, {
brighter: function(k) {
k = k == null ? brighter : Math.pow(brighter, k);
return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
},
darker: function(k) {
k = k == null ? darker : Math.pow(darker, k);
return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
},
rgb: function() {
var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,
l = +this.l,
a = isNaN(this.s) ? 0 : this.s * l * (1 - l),
cosh = Math.cos(h),
sinh = Math.sin(h);
return new Rgb(
255 * (l + a * (A * cosh + B * sinh)),
255 * (l + a * (C * cosh + D * sinh)),
255 * (l + a * (E * cosh)),
this.opacity
);
}
}));
exports.color = color;
exports.rgb = rgb;
exports.hsl = hsl;
exports.lab = lab;
exports.hcl = hcl;
exports.lch = lch;
exports.gray = gray;
exports.cubehelix = cubehelix;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],4:[function(require,module,exports){
// https://d3js.org/d3-dispatch/ Version 1.0.3. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var noop = {value: function() {}};
function dispatch() {
for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t);
_[t] = [];
}
return new Dispatch(_);
}
function Dispatch(_) {
this._ = _;
}
function parseTypenames(typenames, types) {
return typenames.trim().split(/^|\s+/).map(function(t) {
var name = "", i = t.indexOf(".");
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
return {type: t, name: name};
});
}
Dispatch.prototype = dispatch.prototype = {
constructor: Dispatch,
on: function(typename, callback) {
var _ = this._,
T = parseTypenames(typename + "", _),
t,
i = -1,
n = T.length;
// If no callback was specified, return the callback of the given type and name.
if (arguments.length < 2) {
while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;
return;
}
// If a type was specified, set the callback for the given type and name.
// Otherwise, if a null callback was specified, remove callbacks of the given name.
if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback);
while (++i < n) {
if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);
else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);
}
return this;
},
copy: function() {
var copy = {}, _ = this._;
for (var t in _) copy[t] = _[t].slice();
return new Dispatch(copy);
},
call: function(type, that) {
if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];
if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
},
apply: function(type, that, args) {
if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
}
};
function get(type, name) {
for (var i = 0, n = type.length, c; i < n; ++i) {
if ((c = type[i]).name === name) {
return c.value;
}
}
}
function set(type, name, callback) {
for (var i = 0, n = type.length; i < n; ++i) {
if (type[i].name === name) {
type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));
break;
}
}
if (callback != null) type.push({name: name, value: callback});
return type;
}
exports.dispatch = dispatch;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],5:[function(require,module,exports){
// https://d3js.org/d3-drag/ Version 1.2.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-dispatch'), require('d3-selection')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-dispatch', 'd3-selection'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3));
}(this, (function (exports,d3Dispatch,d3Selection) { 'use strict';
function nopropagation() {
d3Selection.event.stopImmediatePropagation();
}
var noevent = function() {
d3Selection.event.preventDefault();
d3Selection.event.stopImmediatePropagation();
};
var nodrag = function(view) {
var root = view.document.documentElement,
selection = d3Selection.select(view).on("dragstart.drag", noevent, true);
if ("onselectstart" in root) {
selection.on("selectstart.drag", noevent, true);
} else {
root.__noselect = root.style.MozUserSelect;
root.style.MozUserSelect = "none";
}
};
function yesdrag(view, noclick) {
var root = view.document.documentElement,
selection = d3Selection.select(view).on("dragstart.drag", null);
if (noclick) {
selection.on("click.drag", noevent, true);
setTimeout(function() { selection.on("click.drag", null); }, 0);
}
if ("onselectstart" in root) {
selection.on("selectstart.drag", null);
} else {
root.style.MozUserSelect = root.__noselect;
delete root.__noselect;
}
}
var constant = function(x) {
return function() {
return x;
};
};
function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch$$1) {
this.target = target;
this.type = type;
this.subject = subject;
this.identifier = id;
this.active = active;
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
this._ = dispatch$$1;
}
DragEvent.prototype.on = function() {
var value = this._.on.apply(this._, arguments);
return value === this._ ? this : value;
};
// Ignore right-click, since that should open the context menu.
function defaultFilter() {
return !d3Selection.event.button;
}
function defaultContainer() {
return this.parentNode;
}
function defaultSubject(d) {
return d == null ? {x: d3Selection.event.x, y: d3Selection.event.y} : d;
}
function defaultTouchable() {
return "ontouchstart" in this;
}
var drag = function() {
var filter = defaultFilter,
container = defaultContainer,
subject = defaultSubject,
touchable = defaultTouchable,
gestures = {},
listeners = d3Dispatch.dispatch("start", "drag", "end"),
active = 0,
mousedownx,
mousedowny,
mousemoving,
touchending,
clickDistance2 = 0;
function drag(selection) {
selection
.on("mousedown.drag", mousedowned)
.filter(touchable)
.on("touchstart.drag", touchstarted)
.on("touchmove.drag", touchmoved)
.on("touchend.drag touchcancel.drag", touchended)
.style("touch-action", "none")
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
}
function mousedowned() {
if (touchending || !filter.apply(this, arguments)) return;
var gesture = beforestart("mouse", container.apply(this, arguments), d3Selection.mouse, this, arguments);
if (!gesture) return;
d3Selection.select(d3Selection.event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true);
nodrag(d3Selection.event.view);
nopropagation();
mousemoving = false;
mousedownx = d3Selection.event.clientX;
mousedowny = d3Selection.event.clientY;
gesture("start");
}
function mousemoved() {
noevent();
if (!mousemoving) {
var dx = d3Selection.event.clientX - mousedownx, dy = d3Selection.event.clientY - mousedowny;
mousemoving = dx * dx + dy * dy > clickDistance2;
}
gestures.mouse("drag");
}
function mouseupped() {
d3Selection.select(d3Selection.event.view).on("mousemove.drag mouseup.drag", null);
yesdrag(d3Selection.event.view, mousemoving);
noevent();
gestures.mouse("end");
}
function touchstarted() {
if (!filter.apply(this, arguments)) return;
var touches = d3Selection.event.changedTouches,
c = container.apply(this, arguments),
n = touches.length, i, gesture;
for (i = 0; i < n; ++i) {
if (gesture = beforestart(touches[i].identifier, c, d3Selection.touch, this, arguments)) {
nopropagation();
gesture("start");
}
}
}
function touchmoved() {
var touches = d3Selection.event.changedTouches,
n = touches.length, i, gesture;
for (i = 0; i < n; ++i) {
if (gesture = gestures[touches[i].identifier]) {
noevent();
gesture("drag");
}
}
}
function touchended() {
var touches = d3Selection.event.changedTouches,
n = touches.length, i, gesture;
if (touchending) clearTimeout(touchending);
touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
for (i = 0; i < n; ++i) {
if (gesture = gestures[touches[i].identifier]) {
nopropagation();
gesture("end");
}
}
}
function beforestart(id, container, point, that, args) {
var p = point(container, id), s, dx, dy,
sublisteners = listeners.copy();
if (!d3Selection.customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {
if ((d3Selection.event.subject = s = subject.apply(that, args)) == null) return false;
dx = s.x - p[0] || 0;
dy = s.y - p[1] || 0;
return true;
})) return;
return function gesture(type) {
var p0 = p, n;
switch (type) {
case "start": gestures[id] = gesture, n = active++; break;
case "end": delete gestures[id], --active; // nobreak
case "drag": p = point(container, id), n = active; break;
}
d3Selection.customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);
};
}
drag.filter = function(_) {
return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), drag) : filter;
};
drag.container = function(_) {
return arguments.length ? (container = typeof _ === "function" ? _ : constant(_), drag) : container;
};
drag.subject = function(_) {
return arguments.length ? (subject = typeof _ === "function" ? _ : constant(_), drag) : subject;
};
drag.touchable = function(_) {
return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), drag) : touchable;
};
drag.on = function() {
var value = listeners.on.apply(listeners, arguments);
return value === listeners ? drag : value;
};
drag.clickDistance = function(_) {
return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);
};
return drag;
};
exports.drag = drag;
exports.dragDisable = nodrag;
exports.dragEnable = yesdrag;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-dispatch":4,"d3-selection":12}],6:[function(require,module,exports){
// https://d3js.org/d3-ease/ Version 1.0.3. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
function linear(t) {
return +t;
}
function quadIn(t) {
return t * t;
}
function quadOut(t) {
return t * (2 - t);
}
function quadInOut(t) {
return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;
}
function cubicIn(t) {
return t * t * t;
}
function cubicOut(t) {
return --t * t * t + 1;
}
function cubicInOut(t) {
return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;
}
var exponent = 3;
var polyIn = (function custom(e) {
e = +e;
function polyIn(t) {
return Math.pow(t, e);
}
polyIn.exponent = custom;
return polyIn;
})(exponent);
var polyOut = (function custom(e) {
e = +e;
function polyOut(t) {
return 1 - Math.pow(1 - t, e);
}
polyOut.exponent = custom;
return polyOut;
})(exponent);
var polyInOut = (function custom(e) {
e = +e;
function polyInOut(t) {
return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;
}
polyInOut.exponent = custom;
return polyInOut;
})(exponent);
var pi = Math.PI;
var halfPi = pi / 2;
function sinIn(t) {
return 1 - Math.cos(t * halfPi);
}
function sinOut(t) {
return Math.sin(t * halfPi);
}
function sinInOut(t) {
return (1 - Math.cos(pi * t)) / 2;
}
function expIn(t) {
return Math.pow(2, 10 * t - 10);
}
function expOut(t) {
return 1 - Math.pow(2, -10 * t);
}
function expInOut(t) {
return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;
}
function circleIn(t) {
return 1 - Math.sqrt(1 - t * t);
}
function circleOut(t) {
return Math.sqrt(1 - --t * t);
}
function circleInOut(t) {
return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;
}
var b1 = 4 / 11;
var b2 = 6 / 11;
var b3 = 8 / 11;
var b4 = 3 / 4;
var b5 = 9 / 11;
var b6 = 10 / 11;
var b7 = 15 / 16;
var b8 = 21 / 22;
var b9 = 63 / 64;
var b0 = 1 / b1 / b1;
function bounceIn(t) {
return 1 - bounceOut(1 - t);
}
function bounceOut(t) {
return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;
}
function bounceInOut(t) {
return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;
}
var overshoot = 1.70158;
var backIn = (function custom(s) {
s = +s;
function backIn(t) {
return t * t * ((s + 1) * t - s);
}
backIn.overshoot = custom;
return backIn;
})(overshoot);
var backOut = (function custom(s) {
s = +s;
function backOut(t) {
return --t * t * ((s + 1) * t + s) + 1;
}
backOut.overshoot = custom;
return backOut;
})(overshoot);
var backInOut = (function custom(s) {
s = +s;
function backInOut(t) {
return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;
}
backInOut.overshoot = custom;
return backInOut;
})(overshoot);
var tau = 2 * Math.PI;
var amplitude = 1;
var period = 0.3;
var elasticIn = (function custom(a, p) {
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
function elasticIn(t) {
return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);
}
elasticIn.amplitude = function(a) { return custom(a, p * tau); };
elasticIn.period = function(p) { return custom(a, p); };
return elasticIn;
})(amplitude, period);
var elasticOut = (function custom(a, p) {
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
function elasticOut(t) {
return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);
}
elasticOut.amplitude = function(a) { return custom(a, p * tau); };
elasticOut.period = function(p) { return custom(a, p); };
return elasticOut;
})(amplitude, period);
var elasticInOut = (function custom(a, p) {
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
function elasticInOut(t) {
return ((t = t * 2 - 1) < 0
? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)
: 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;
}
elasticInOut.amplitude = function(a) { return custom(a, p * tau); };
elasticInOut.period = function(p) { return custom(a, p); };
return elasticInOut;
})(amplitude, period);
exports.easeLinear = linear;
exports.easeQuad = quadInOut;
exports.easeQuadIn = quadIn;
exports.easeQuadOut = quadOut;
exports.easeQuadInOut = quadInOut;
exports.easeCubic = cubicInOut;
exports.easeCubicIn = cubicIn;
exports.easeCubicOut = cubicOut;
exports.easeCubicInOut = cubicInOut;
exports.easePoly = polyInOut;
exports.easePolyIn = polyIn;
exports.easePolyOut = polyOut;
exports.easePolyInOut = polyInOut;
exports.easeSin = sinInOut;
exports.easeSinIn = sinIn;
exports.easeSinOut = sinOut;
exports.easeSinInOut = sinInOut;
exports.easeExp = expInOut;
exports.easeExpIn = expIn;
exports.easeExpOut = expOut;
exports.easeExpInOut = expInOut;
exports.easeCircle = circleInOut;
exports.easeCircleIn = circleIn;
exports.easeCircleOut = circleOut;
exports.easeCircleInOut = circleInOut;
exports.easeBounce = bounceOut;
exports.easeBounceIn = bounceIn;
exports.easeBounceOut = bounceOut;
exports.easeBounceInOut = bounceInOut;
exports.easeBack = backInOut;
exports.easeBackIn = backIn;
exports.easeBackOut = backOut;
exports.easeBackInOut = backInOut;
exports.easeElastic = elasticOut;
exports.easeElasticIn = elasticIn;
exports.easeElasticOut = elasticOut;
exports.easeElasticInOut = elasticInOut;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],7:[function(require,module,exports){
var hsl = require('hsl-to-rgb-for-reals')
var rxEsc = require('escape-string-regexp')
// small pseudo d3
var d3 = Object.assign(
{},
require('d3-array'),
require('d3-ease'),
require('d3-hierarchy'),
require('d3-scale'),
require('d3-selection'),
require('d3-zoom')
)
Object.defineProperty(d3, 'event', {
get: function () { return require('d3-selection').event }
})
var diffScale = d3.scaleLinear().range([0, 0.2])
var colors = {
v8: {h: 67, s: 81, l: 65},
inlinable: {h: 300, s: 100, l: 50},
regexp: {h: 27, s: 100, l: 50},
cpp: {h: 0, s: 50, l: 50},
native: {h: 122, s: 50, l: 45},
core: {h: 0, s: 0, l: 80},
deps: {h: 244, s: 50, l: 65},
app: {h: 200, s: 50, l: 45},
init: {h: 21, s: 81, l: 73}
}
colors.def = {h: 10, s: 66, l: 80}
colors.js = {h: 10, s: 66, l: 80}
colors.c = {h: 10, s: 66, l: 80}
var STATE_IDLE = 0
var STATE_HOVER = 1
var STATE_UNHOVER = 2
function flameGraph (opts) {
var tree = opts.tree
var timing = opts.timing || false
var element = opts.element
var c = 18 // cell height
var h = opts.height || (maxDepth(tree) + 2) * c // graph height
var minHeight = opts.minHeight || 950
h = h < minHeight ? minHeight : h
var w = opts.width || document.body.clientWidth * 0.89 // graph width
var scaleToWidth = null
var scaleToGraph = null
var panZoom = d3.zoom().on('zoom', function () {
update({ animate: false })
})
var selection = null // selection
var transitionDuration = 500
var transitionEase = d3.easeCubicInOut
var sort = true
var tiers = false
var filterNeeded = true
var filterTypes = []
var allSamples
var nodes = null
var focusedFrame = null
var hoverFrame = null
var isAnimating = false
onresize()
function onresize () {
panZoom.translateExtent([[0, 0], [w, h]])
scaleToWidth = d3.scaleLinear().range([0, w])
scaleToGraph = d3.scaleLinear().domain([0, w]).range([0, 1])
}
function time (name, fn) {
if (timing) {
console.time(name)
var result = fn()
console.timeEnd(name)
return result
} else return fn()
}
document.addEventListener('DOMContentLoaded', () => {
element.scrollTop = element.scrollHeight
})
var categorizer = opts.categorizer || categorize
var exclude = opts.exclude || []
function labelName (d) {
return d.data.name
}
function labelStack (d) {
if (!d.parent) return null
var onStack = d.data.name ? Math.round(100 * (d.data.value / allSamples) * 10) / 10 + '% on stack' : ''
var top = stackTop(d.data)
var topOfStack = d.data.name ? (top
? Math.round(100 * (top / allSamples) * 100) / 100 + '% stack top'
: '') : ''
if (onStack && topOfStack) { onStack += ', ' }
return onStack + topOfStack
}
function tooltipLabel (d) {
if (!d.parent) return ''
var top = stackTop(d.data)
return d.data.name + '<br />' + (top
? 'Top of Stack:' + Math.round(100 * (top / allSamples) * 10) / 10 + '% ' +
'(' + top + ' of ' + allSamples + ' samples)<br />'
: '') + 'On Stack:' + Math.round(100 * (d.data.value / allSamples) * 10) / 10 + '% ' +
'(' + d.data.value + ' of ' + allSamples + ' samples)'
}
function categorize (child) {
var name = child.name
// todo: C deps
if (!/.js/.test(name)) {
switch (true) {
case /^Builtin:|^Stub:|v8::|^(.+)IC:|^.*Handler:/
.test(name): return {type: 'v8'}
case /^RegExp:/
.test(name): return {type: 'regexp'}
case /apply$|call$|Arguments$/
.test(name): return {type: 'native'}
case /\.$/.test(name): return {type: 'core'}
default: return {type: 'cpp'}
}
}
if (/\[INIT\]/.test(name)) return {type: 'init'}
switch (true) {
case / native /.test(name): return {type: 'native'}
case (name.indexOf('/') === -1 || /internal\//.test(name) && !/ \//.test(name)): return {type: 'core'}
case !/node_modules/.test(name): return {type: 'app'}
default: return {type: 'deps'}
}
}
function frameDepth (node) {
var parent = node.parent
var depth = node.depth
if (parent && parent.data.hide) depth -= 1
while (parent && (parent = parent.parent)) {
if (parent.data.hide) depth -= 1
}
return depth
}
function frameWidth (d) {
var dx = d.x1 - d.x0
return dx * w
}
function filter (data) {
if (!filterNeeded) return
if (data.children && (data.children.length > 0)) {
data.children.forEach(filter)
data.children.forEach(function (child) {
if (~filterTypes.indexOf(child.data.type)) {
child.data.hide = true
} else {
child.data.hide = false
}
})
}
}
function categorizeTree (data) {
if (data.children && (data.children.length > 0)) {
data.children.forEach(categorizeTree)
data.children.forEach(function (child, ix, children) {
var lt = categorizer(child.data, ix, children)
child.data.type = lt.type
})
}
}
function hide (d) {
if (!d.data.original) {
d.data.original = d.data.value
}
d.data.value = 0
if (d.children) {
d.children.forEach(hide)
}
}
function show (d) {
d.data.fade = false
if (d.data.original) {
d.data.value = d.data.original
}
if (d.children) {
d.children.forEach(show)
}
}
function getSiblings (d) {
var siblings = []
if (d.parent) {
var me = d.parent.children.indexOf(d)
siblings = d.parent.children.slice(0)
siblings.splice(me, 1)
}
return siblings
}
function hideSiblings (d) {
var siblings = getSiblings(d)
siblings.forEach(function (s) {
hide(s)
})
if (d.parent) {
hideSiblings(d.parent)
}
}
function fadeAncestors (d) {
if (d.parent) {
d.parent.data.fade = true
fadeAncestors(d.parent)
}
}
function zoom (d) {
if (isAnimating) {
return // dont zoom during an animation for now
// Should be possible to do this by calling saveAnimationStartingPoints
// here, and doing Something Else (but not sure what the Something Else is)
}
time('zoom', function () {
focusedFrame = d.data
time('hideSiblings', function () {
hideSiblings(d)
})
time('show', function () {
show(d)
})
time('fadeAncestors', function () {
fadeAncestors(d)
})
time('update', function () {
update({ animate: true })
})
})
}
function searchTree (d, term, color) {
var re = term instanceof RegExp ? term : new RegExp(rxEsc(term), 'i')
var label = d.data.name
if (d.children) {
d.children.forEach(function (child) {
searchTree(child, term, color)
})
}
if (d.data.hide) { return }
var searchArea
if (d.data.type === 'cpp') { searchArea = label.split('[')[0] } else if (d.data.type === 'v8') { searchArea = label.split(' ')[0] } else if (d.data.type === 'regexp') { searchArea = label } else { searchArea = label.split(':')[0] }
if (re.test(searchArea)) {
d.data.highlight = color || true
} else {
d.data.highlight = false
}
}
function clear (d, color) {
if (!color || d.data.highlight === color) {
d.data.highlight = false
}
if (d.children) {
d.children.forEach(function (child) {
clear(child, color)
})
}
}
function doSort (a, b) {
if (typeof sort === 'function') {
return sort(a, b)
} else if (sort) {
return d3.ascending(a.data.name, b.data.name)
} else {
return 0
}
}
var partition = d3.partition()
function sumChildValues (a, b) {
// If a child is hidden or is (an ancestor of) the focusedFrame frame, don't count it
return a + (b.fade || b === focusedFrame ? 0 : b.value)
}
function update (opts) {
if (timing) console.group('update')
var mayAnimate = opts && opts.animate
selection
.each(function (data) {
time('filter', function () {
filter(data)
})
time('sum/sort', function () {
data
.sum(function (d) {
// If this is the ancestor of a focusedFrame frame, use the same value (width) as the focusedFrame frame.
if (d.fade) return d.children.reduce(sumChildValues, 0)
// d3 sums value + all child values to get the value for a node,
// we can set `value = specifiedValue - all child values` to counteract that.
// the `.value`s in our data already include the sum of all child values.
const childValues = d.children
? d.children.reduce(sumChildValues, 0)
: 0
return d.value - childValues
})
.sort(doSort)
// Make "all stacks" as wide as every visible stack.
data.value = data.children.reduce(sumChildValues, 0)
})
time('partition', function () {
return partition(data)
})
nodes = data.descendants()
var canvas = d3.select(this).select('canvas').node()
// Animate if data was known for this set of nodes in the past.
if (nodes[0].data.prev && mayAnimate) {
animate()
} else {
time('render', function () {
render(canvas, nodes)
saveAnimationStartingPoints()
})
}
function animate () {
isAnimating = true
var start = Date.now()
function nextFrame () {
var dt = (Date.now() - start) / transitionDuration
var ease = transitionEase(dt > 1 ? 1 : dt)
render(canvas, nodes, ease)
if (ease === 1) {
isAnimating = false
saveAnimationStartingPoints()
} else {
requestAnimationFrame(nextFrame)
}
}
requestAnimationFrame(nextFrame)
}
function render (canvas, nodes, ease) {
if (ease == null) ease = 1
var context = canvas.getContext('2d')
context.font = '12px Verdana, sans-serif'
context.textBaseline = 'bottom'
context.clearRect(0, 0, canvas.width, canvas.height)
withZoomTransform(context, function () {
nodes.forEach(function (node) {
renderNode(context, node, ease, STATE_IDLE)
})
})
}
})
if (timing) console.groupEnd('update')
}
function withZoomTransform (context, fn) {
var transform = d3.zoomTransform(context.canvas)
context.save()
context.translate(transform.x, transform.y)
context.scale(transform.k, transform.k)
fn()
context.restore()
}
function saveAnimationStartingPoints () {
nodes.forEach(function (node) {
node.data.prev = {
x0: node.x0,
x1: node.x1,
}
})
}
function renderNode (context, node, ease, state) {
if (node.data.hide) return
var depth = frameDepth(node)
var width = frameWidth(node)
if (width < 1) return
var x = scaleToWidth(node.x0)
if (ease !== 1 && node.data.prev) {
var pw = frameWidth(node.data.prev)
var px = scaleToWidth(node.data.prev.x0)
width = pw + ease * (width - pw)
x = px + ease * (x - px)
}
var strokeColor = node.parent ? colorHash(node.data, 1.1, allSamples, tiers) : 'rgba(0, 0, 0, 0.7)'
var fillColor = node.parent
? (node.data.highlight
? (typeof node.data.highlight === 'string' ? node.data.highlight : '#e600e6')
: colorHash(node.data, undefined, allSamples, tiers))
: '#fff'
if (state === STATE_HOVER || state === STATE_UNHOVER) {
context.clearRect(x, h - (depth * c) - c, width, c)
}
context.fillStyle = fillColor
context.strokeStyle = strokeColor
context.beginPath()
context.rect(x, h - (depth * c) - c, width, c)
context.stroke()
if (state === STATE_HOVER) {
context.save()
context.globalAlpha = 0.8
context.fill()
context.restore()
} else {
context.fill()
}
if (width >= 35) {
context.save()
context.clip()
context.font = '12px Verdana'
context.fillStyle = '#000'
// Center the "all stacks" text
if (!node.parent) {
context.textAlign = 'center'
x += width / 2
} else {
x += 4 // add padding to other nodes
}
var label = labelName(node)
context.fillText(label, x, h - (depth * c) - 1)
var stack = labelStack(node)
if (stack) {
var offs = context.measureText(label + ' ').width
context.font = '10px Verdana'
context.fillText(stack, x + offs, h - (depth * c) - 2)
}
context.restore()
}
}
function renderTooltip (pos, node) {
var label = tooltipLabel(node)
var x = pos[0] + 3
var tooltip = d3.select(element).select('.d3-flame-graph-tooltip')
.style('top', (pos[1] + 16) + 'px')
.style('display', 'block')
.html(label)
if (x + 300 > window.innerWidth) {
tooltip.style('left', 'auto').style('right', '10px')
} else {
tooltip.style('right', 'auto').style('left', x + 'px')
}
}
// Wait for 500 ms before showing the tooltip.
var tooltipFocusNode = null
var tooltipFocusTimeout = null
function showTooltip (pos, node) {
if (tooltipFocusNode === node) {
return renderTooltip(pos, node)
}
clearTimeout(tooltipFocusTimeout)
tooltipFocusTimeout = setTimeout(function () {
tooltipFocusNode = node
renderTooltip(pos, node)
}, 500)
}
function hideTooltip () {
clearTimeout(tooltipFocusTimeout)
d3.select(element).select('.d3-flame-graph-tooltip')
.style('display', 'none')
.empty()
}
function getNodeAt (canvas, offsetX, offsetY) {
var transform = d3.zoomTransform(canvas)
var x = scaleToGraph(transform.invertX(offsetX))
var y = h - transform.invertY(offsetY)
return nodes.find(function (node) {
if (node.data.hide) return false
if (node.x0 <= x && x <= node.x1) {
var nodeY = frameDepth(node) * c
return nodeY <= y && y <= nodeY + c
}
return false
})
}
function chart (firstRender) {
selection = d3.select(element)
selection.each(function (data) {
allSamples = data.data.value
if (!firstRender) {
node = d3.select(this).append('div')
.style('position', 'relative')
node.append('canvas')
.attr('width', w)
.attr('height', h)
.attr('class', 'partition d3-flame-graph')
.attr('transition', 'transform 200ms ease-in-out')
.call(panZoom)
.on('wheel.zoom', null)
.on('dblclick.zoom', null)
.on('click', function () {
var target = getNodeAt(this, d3.event.offsetX, d3.event.offsetY)
return zoom(target || nodes[0])
})
.on('mousemove', function () {
var target = getNodeAt(this, d3.event.offsetX, d3.event.offsetY)
var context = this.getContext('2d')
if (target === hoverFrame) return
if (hoverFrame) {
withZoomTransform(context, function () {
renderNode(context, hoverFrame, 1, STATE_UNHOVER)
})
}
hoverFrame = target
if (target) {
this.style.cursor = 'pointer'
withZoomTransform(context, function () {
renderNode(context, target, 1, STATE_HOVER)
})
if (target.parent) showTooltip(d3.mouse(document.body), target)
else hideTooltip()
} else {
this.style.cursor = 'default'
hideTooltip()
}
})
.on('mouseout', function () {
this.style.cursor = 'default'
hideTooltip()
})
node.append('div')
.style('background', '#222')
.style('color', '#fff')
.style('border-radius', '3px')
.style('padding', '3px')
.style('font-size', '10pt')
.style('position', 'fixed')
.style('display', 'none')
.style('z-index', 1000)
.style('pointer-events', 'none') // ?
.classed('d3-flame-graph-tooltip', true)
// Adjust canvas for high DPI screens
// - Size the image up N× using attributes
// - Squash it down N× using CSS
// - Scale the context so 1px in all subsequent draw operations means Npx
if (window.devicePixelRatio && window.devicePixelRatio !== 1) {
node.select('canvas')
.style('width', w)
.style('height', h)
.attr('width', w * window.devicePixelRatio)
.attr('height', h * window.devicePixelRatio)
var context = node.select('canvas').node().getContext('2d')
context.scale(window.devicePixelRatio, window.devicePixelRatio)
}
}
categorizeTree(data)
filter(data)
// first draw
update()
})
}
chart.height = function (_) {
if (!arguments.length) { return h }
h = _
onresize()
return chart
}
chart.width = function (_) {
if (!arguments.length) { return w }
w = _
onresize()
return chart
}
chart.cellHeight = function (_) {
if (!arguments.length) { return c }
c = _
return chart
}
chart.transitionDuration = function (_) {
if (!arguments.length) { return transitionDuration }
transitionDuration = _
return chart
}
chart.transitionEase = function (_) {
if (!arguments.length) { return transitionEase }
transitionEase = _
return chart
}
chart.sort = function (_) {
if (!arguments.length) { return sort }
sort = _
return chart
}
chart.tiers = function (_) {
tiers = _
if (selection) update()
return chart
}
chart.search = function (term, color) {
selection.each(function (data) {
searchTree(data, term, color)
update()
})
}
chart.clear = function (color) {
selection.each(function (data) {
clear(data, color)
update()
})
}
chart.typeHide = function (type) {
if (!~filterTypes.indexOf(type)) {
filterTypes.push(type)
filterNeeded = true
if (selection) update()
}
}
chart.typeShow = function (type) {
var ix = filterTypes.indexOf(type)
if (!~ix) return
filterTypes.splice(ix, 1)
filterNeeded = true
if (selection) update()
}
chart.setGraphZoom = function (n) {
panZoom.scaleTo(d3.select(element).select('canvas'), n)
}
chart.renderTree = function (data) {
d3.select(element).datum(d3.hierarchy(data, function (d) { return d.c || d.children }))
chart(true)
}
chart.colors = colors
chart.update = (hard) => {
if (hard) {
selection.each(function (data) {
allSamples = data.value
categorizeTree(data)
filter(data)
// first draw
update()
})
} else update()
}
exclude.forEach(chart.typeHide)
d3.select(element).datum(d3.hierarchy(tree, function (d) { return d.c || d.children }))
chart()
return chart
}
function colorHash (d, perc, allSamples, tiers) {
if (!d.name) {
return perc ? 'rgb(127, 127, 127)' : 'rgba(0, 0, 0, 0)'
}
perc = perc || 1
var type = d.type || 'def'
var key
if (!tiers) key = colors.def
if (tiers) key = colors[type]
var h = key.h
var s = key.s
var l = key.l
var top = stackTop(d)
var vector = ((top / allSamples) * 100) + 1
s *= vector
l += (vector * 2)
s /= 100
l /= 100
s *= perc
l *= perc
var a = 0.8
if (l > 0.8) {
a += diffScale(l - 0.8)
l = 0.8
}
var rgb = hsl(h, s, l)
var res = 'rgba(' + rgb + ', ' + a + ')'
return res
}
function stackTop (d) {
if (!d.children) return d.top
var top = d.top
d.children
.forEach(function (child) {
if (
!child.children ||
child.children.filter(function (c) { return c.hide }).length
) {
if (child.hide) {
top += stackTop(child)
}
}
})
return top
}
function maxDepth (tree) {
var deepest = 0
d3.tree(tree, (d) => {
if (d.depth > deepest) deepest = d.depth
})
return deepest + 1
}
module.exports = flameGraph
module.exports.colors = colors
module.exports.colorHash = colorHash
},{"d3-array":1,"d3-ease":6,"d3-hierarchy":9,"d3-scale":11,"d3-selection":12,"d3-zoom":17,"escape-string-regexp":18,"hsl-to-rgb-for-reals":19}],8:[function(require,module,exports){
// https://d3js.org/d3-format/ Version 1.3.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
// Computes the decimal coefficient and exponent of the specified number x with
// significant digits p, where x is positive and p is in [1, 21] or undefined.
// For example, formatDecimal(1.23) returns ["123", 0].
var formatDecimal = function(x, p) {
if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity
var i, coefficient = x.slice(0, i);
// The string returned by toExponential either has the form \d\.\d+e[-+]\d+
// (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3).
return [
coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
+x.slice(i + 1)
];
};
var exponent = function(x) {
return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;
};
var formatGroup = function(grouping, thousands) {
return function(value, width) {
var i = value.length,
t = [],
j = 0,
g = grouping[0],
length = 0;
while (i > 0 && g > 0) {
if (length + g + 1 > width) g = Math.max(1, width - length);
t.push(value.substring(i -= g, i + g));
if ((length += g + 1) > width) break;
g = grouping[j = (j + 1) % grouping.length];
}
return t.reverse().join(thousands);
};
};
var formatNumerals = function(numerals) {
return function(value) {
return value.replace(/[0-9]/g, function(i) {
return numerals[+i];
});
};
};
// [[fill]align][sign][symbol][0][width][,][.precision][~][type]
var re = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
function formatSpecifier(specifier) {
return new FormatSpecifier(specifier);
}
formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof
function FormatSpecifier(specifier) {
if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
var match;
this.fill = match[1] || " ";
this.align = match[2] || ">";
this.sign = match[3] || "-";
this.symbol = match[4] || "";
this.zero = !!match[5];
this.width = match[6] && +match[6];
this.comma = !!match[7];
this.precision = match[8] && +match[8].slice(1);
this.trim = !!match[9];
this.type = match[10] || "";
}
FormatSpecifier.prototype.toString = function() {
return this.fill
+ this.align
+ this.sign
+ this.symbol
+ (this.zero ? "0" : "")
+ (this.width == null ? "" : Math.max(1, this.width | 0))
+ (this.comma ? "," : "")
+ (this.precision == null ? "" : "." + Math.max(0, this.precision | 0))
+ (this.trim ? "~" : "")
+ this.type;
};
// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.
var formatTrim = function(s) {
out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {
switch (s[i]) {
case ".": i0 = i1 = i; break;
case "0": if (i0 === 0) i0 = i; i1 = i; break;
default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;
}
}
return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;
};
var prefixExponent;
var formatPrefixAuto = function(x, p) {
var d = formatDecimal(x, p);
if (!d) return x + "";
var coefficient = d[0],
exponent = d[1],
i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,
n = coefficient.length;
return i === n ? coefficient
: i > n ? coefficient + new Array(i - n + 1).join("0")
: i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i)
: "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!
};
var formatRounded = function(x, p) {
var d = formatDecimal(x, p);
if (!d) return x + "";
var coefficient = d[0],
exponent = d[1];
return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient
: coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1)
: coefficient + new Array(exponent - coefficient.length + 2).join("0");
};
var formatTypes = {
"%": function(x, p) { return (x * 100).toFixed(p); },
"b": function(x) { return Math.round(x).toString(2); },
"c": function(x) { return x + ""; },
"d": function(x) { return Math.round(x).toString(10); },
"e": function(x, p) { return x.toExponential(p); },
"f": function(x, p) { return x.toFixed(p); },
"g": function(x, p) { return x.toPrecision(p); },
"o": function(x) { return Math.round(x).toString(8); },
"p": function(x, p) { return formatRounded(x * 100, p); },
"r": formatRounded,
"s": formatPrefixAuto,
"X": function(x) { return Math.round(x).toString(16).toUpperCase(); },
"x": function(x) { return Math.round(x).toString(16); }
};
var identity = function(x) {
return x;
};
var prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];
var formatLocale = function(locale) {
var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,
currency = locale.currency,
decimal = locale.decimal,
numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,
percent = locale.percent || "%";
function newFormat(specifier) {
specifier = formatSpecifier(specifier);
var fill = specifier.fill,
align = specifier.align,
sign = specifier.sign,
symbol = specifier.symbol,
zero = specifier.zero,
width = specifier.width,
comma = specifier.comma,
precision = specifier.precision,
trim = specifier.trim,
type = specifier.type;
// The "n" type is an alias for ",g".
if (type === "n") comma = true, type = "g";
// The "" type, and any invalid type, is an alias for ".12~g".
else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = "g";
// If zero fill is specified, padding goes after sign and before digits.
if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "=";
// Compute the prefix and suffix.
// For SI-prefix, the suffix is lazily computed.
var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : "";
// What format function should we use?
// Is this an integer type?
// Can this type generate exponential notation?
var formatType = formatTypes[type],
maybeSuffix = /[defgprs%]/.test(type);
// Set the default precision if not specified,
// or clamp the specified precision to the supported range.
// For significant precision, it must be in [1, 21].
// For fixed precision, it must be in [0, 20].
precision = precision == null ? 6
: /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))
: Math.max(0, Math.min(20, precision));
function format(value) {
var valuePrefix = prefix,
valueSuffix = suffix,
i, n, c;
if (type === "c") {
valueSuffix = formatType(value) + valueSuffix;
value = "";
} else {
value = +value;
// Perform the initial formatting.
var valueNegative = value < 0;
value = formatType(Math.abs(value), precision);
// Trim insignificant zeros.
if (trim) value = formatTrim(value);
// If a negative value rounds to zero during formatting, treat as positive.
if (valueNegative && +value === 0) valueNegative = false;
// Compute the prefix and suffix.
valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
// Break the formatted value into the integer “value” part that can be
// grouped, and fractional or exponential “suffix” part that is not.
if (maybeSuffix) {
i = -1, n = value.length;
while (++i < n) {
if (c = value.charCodeAt(i), 48 > c || c > 57) {
valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;
value = value.slice(0, i);
break;
}
}
}
}
// If the fill character is not "0", grouping is applied before padding.
if (comma && !zero) value = group(value, Infinity);
// Compute the padding.
var length = valuePrefix.length + value.length + valueSuffix.length,
padding = length < width ? new Array(width - length + 1).join(fill) : "";
// If the fill character is "0", grouping is applied after padding.
if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = "";
// Reconstruct the final output based on the desired alignment.
switch (align) {
case "<": value = valuePrefix + value + valueSuffix + padding; break;
case "=": value = valuePrefix + padding + value + valueSuffix; break;
case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;
default: value = padding + valuePrefix + value + valueSuffix; break;
}
return numerals(value);
}
format.toString = function() {
return specifier + "";
};
return format;
}
function formatPrefix(specifier, value) {
var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)),
e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,
k = Math.pow(10, -e),
prefix = prefixes[8 + e / 3];
return function(value) {
return f(k * value) + prefix;
};
}
return {
format: newFormat,
formatPrefix: formatPrefix
};
};
var locale;
defaultLocale({
decimal: ".",
thousands: ",",
grouping: [3],
currency: ["$", ""]
});
function defaultLocale(definition) {
locale = formatLocale(definition);
exports.format = locale.format;
exports.formatPrefix = locale.formatPrefix;
return locale;
}
var precisionFixed = function(step) {
return Math.max(0, -exponent(Math.abs(step)));
};
var precisionPrefix = function(step, value) {
return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));
};
var precisionRound = function(step, max) {
step = Math.abs(step), max = Math.abs(max) - step;
return Math.max(0, exponent(max) - exponent(step)) + 1;
};
exports.formatDefaultLocale = defaultLocale;
exports.formatLocale = formatLocale;
exports.formatSpecifier = formatSpecifier;
exports.precisionFixed = precisionFixed;
exports.precisionPrefix = precisionPrefix;
exports.precisionRound = precisionRound;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],9:[function(require,module,exports){
// https://d3js.org/d3-hierarchy/ Version 1.1.6. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
function defaultSeparation(a, b) {
return a.parent === b.parent ? 1 : 2;
}
function meanX(children) {
return children.reduce(meanXReduce, 0) / children.length;
}
function meanXReduce(x, c) {
return x + c.x;
}
function maxY(children) {
return 1 + children.reduce(maxYReduce, 0);
}
function maxYReduce(y, c) {
return Math.max(y, c.y);
}
function leafLeft(node) {
var children;
while (children = node.children) node = children[0];
return node;
}
function leafRight(node) {
var children;
while (children = node.children) node = children[children.length - 1];
return node;
}
var cluster = function() {
var separation = defaultSeparation,
dx = 1,
dy = 1,
nodeSize = false;
function cluster(root) {
var previousNode,
x = 0;
// First walk, computing the initial x & y values.
root.eachAfter(function(node) {
var children = node.children;
if (children) {
node.x = meanX(children);
node.y = maxY(children);
} else {
node.x = previousNode ? x += separation(node, previousNode) : 0;
node.y = 0;
previousNode = node;
}
});
var left = leafLeft(root),
right = leafRight(root),
x0 = left.x - separation(left, right) / 2,
x1 = right.x + separation(right, left) / 2;
// Second walk, normalizing x & y to the desired size.
return root.eachAfter(nodeSize ? function(node) {
node.x = (node.x - root.x) * dx;
node.y = (root.y - node.y) * dy;
} : function(node) {
node.x = (node.x - x0) / (x1 - x0) * dx;
node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;
});
}
cluster.separation = function(x) {
return arguments.length ? (separation = x, cluster) : separation;
};
cluster.size = function(x) {
return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);
};
cluster.nodeSize = function(x) {
return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);
};
return cluster;
};
function count(node) {
var sum = 0,
children = node.children,
i = children && children.length;
if (!i) sum = 1;
else while (--i >= 0) sum += children[i].value;
node.value = sum;
}
var node_count = function() {
return this.eachAfter(count);
};
var node_each = function(callback) {
var node = this, current, next = [node], children, i, n;
do {
current = next.reverse(), next = [];
while (node = current.pop()) {
callback(node), children = node.children;
if (children) for (i = 0, n = children.length; i < n; ++i) {
next.push(children[i]);
}
}
} while (next.length);
return this;
};
var node_eachBefore = function(callback) {
var node = this, nodes = [node], children, i;
while (node = nodes.pop()) {
callback(node), children = node.children;
if (children) for (i = children.length - 1; i >= 0; --i) {
nodes.push(children[i]);
}
}
return this;
};
var node_eachAfter = function(callback) {
var node = this, nodes = [node], next = [], children, i, n;
while (node = nodes.pop()) {
next.push(node), children = node.children;
if (children) for (i = 0, n = children.length; i < n; ++i) {
nodes.push(children[i]);
}
}
while (node = next.pop()) {
callback(node);
}
return this;
};
var node_sum = function(value) {
return this.eachAfter(function(node) {
var sum = +value(node.data) || 0,
children = node.children,
i = children && children.length;
while (--i >= 0) sum += children[i].value;
node.value = sum;
});
};
var node_sort = function(compare) {
return this.eachBefore(function(node) {
if (node.children) {
node.children.sort(compare);
}
});
};
var node_path = function(end) {
var start = this,
ancestor = leastCommonAncestor(start, end),
nodes = [start];
while (start !== ancestor) {
start = start.parent;
nodes.push(start);
}
var k = nodes.length;
while (end !== ancestor) {
nodes.splice(k, 0, end);
end = end.parent;
}
return nodes;
};
function leastCommonAncestor(a, b) {
if (a === b) return a;
var aNodes = a.ancestors(),
bNodes = b.ancestors(),
c = null;
a = aNodes.pop();
b = bNodes.pop();
while (a === b) {
c = a;
a = aNodes.pop();
b = bNodes.pop();
}
return c;
}
var node_ancestors = function() {
var node = this, nodes = [node];
while (node = node.parent) {
nodes.push(node);
}
return nodes;
};
var node_descendants = function() {
var nodes = [];
this.each(function(node) {
nodes.push(node);
});
return nodes;
};
var node_leaves = function() {
var leaves = [];
this.eachBefore(function(node) {
if (!node.children) {
leaves.push(node);
}
});
return leaves;
};
var node_links = function() {
var root = this, links = [];
root.each(function(node) {
if (node !== root) { // Don’t include the root’s parent, if any.
links.push({source: node.parent, target: node});
}
});
return links;
};
function hierarchy(data, children) {
var root = new Node(data),
valued = +data.value && (root.value = data.value),
node,
nodes = [root],
child,
childs,
i,
n;
if (children == null) children = defaultChildren;
while (node = nodes.pop()) {
if (valued) node.value = +node.data.value;
if ((childs = children(node.data)) && (n = childs.length)) {
node.children = new Array(n);
for (i = n - 1; i >= 0; --i) {
nodes.push(child = node.children[i] = new Node(childs[i]));
child.parent = node;
child.depth = node.depth + 1;
}
}
}
return root.eachBefore(computeHeight);
}
function node_copy() {
return hierarchy(this).eachBefore(copyData);
}
function defaultChildren(d) {
return d.children;
}
function copyData(node) {
node.data = node.data.data;
}
function computeHeight(node) {
var height = 0;
do node.height = height;
while ((node = node.parent) && (node.height < ++height));
}
function Node(data) {
this.data = data;
this.depth =
this.height = 0;
this.parent = null;
}
Node.prototype = hierarchy.prototype = {
constructor: Node,
count: node_count,
each: node_each,
eachAfter: node_eachAfter,
eachBefore: node_eachBefore,
sum: node_sum,
sort: node_sort,
path: node_path,
ancestors: node_ancestors,
descendants: node_descendants,
leaves: node_leaves,
links: node_links,
copy: node_copy
};
var slice = Array.prototype.slice;
function shuffle(array) {
var m = array.length,
t,
i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
var enclose = function(circles) {
var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;
while (i < n) {
p = circles[i];
if (e && enclosesWeak(e, p)) ++i;
else e = encloseBasis(B = extendBasis(B, p)), i = 0;
}
return e;
};
function extendBasis(B, p) {
var i, j;
if (enclosesWeakAll(p, B)) return [p];
// If we get here then B must have at least one element.
for (i = 0; i < B.length; ++i) {
if (enclosesNot(p, B[i])
&& enclosesWeakAll(encloseBasis2(B[i], p), B)) {
return [B[i], p];
}
}
// If we get here then B must have at least two elements.
for (i = 0; i < B.length - 1; ++i) {
for (j = i + 1; j < B.length; ++j) {
if (enclosesNot(encloseBasis2(B[i], B[j]), p)
&& enclosesNot(encloseBasis2(B[i], p), B[j])
&& enclosesNot(encloseBasis2(B[j], p), B[i])
&& enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {
return [B[i], B[j], p];
}
}
}
// If we get here then something is very wrong.
throw new Error;
}
function enclosesNot(a, b) {
var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;
return dr < 0 || dr * dr < dx * dx + dy * dy;
}
function enclosesWeak(a, b) {
var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;
return dr > 0 && dr * dr > dx * dx + dy * dy;
}
function enclosesWeakAll(a, B) {
for (var i = 0; i < B.length; ++i) {
if (!enclosesWeak(a, B[i])) {
return false;
}
}
return true;
}
function encloseBasis(B) {
switch (B.length) {
case 1: return encloseBasis1(B[0]);
case 2: return encloseBasis2(B[0], B[1]);
case 3: return encloseBasis3(B[0], B[1], B[2]);
}
}
function encloseBasis1(a) {
return {
x: a.x,
y: a.y,
r: a.r
};
}
function encloseBasis2(a, b) {
var x1 = a.x, y1 = a.y, r1 = a.r,
x2 = b.x, y2 = b.y, r2 = b.r,
x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,
l = Math.sqrt(x21 * x21 + y21 * y21);
return {
x: (x1 + x2 + x21 / l * r21) / 2,
y: (y1 + y2 + y21 / l * r21) / 2,
r: (l + r1 + r2) / 2
};
}
function encloseBasis3(a, b, c) {
var x1 = a.x, y1 = a.y, r1 = a.r,
x2 = b.x, y2 = b.y, r2 = b.r,
x3 = c.x, y3 = c.y, r3 = c.r,
a2 = x1 - x2,
a3 = x1 - x3,
b2 = y1 - y2,
b3 = y1 - y3,
c2 = r2 - r1,
c3 = r3 - r1,
d1 = x1 * x1 + y1 * y1 - r1 * r1,
d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,
d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,
ab = a3 * b2 - a2 * b3,
xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,
xb = (b3 * c2 - b2 * c3) / ab,
ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,
yb = (a2 * c3 - a3 * c2) / ab,
A = xb * xb + yb * yb - 1,
B = 2 * (r1 + xa * xb + ya * yb),
C = xa * xa + ya * ya - r1 * r1,
r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);
return {
x: x1 + xa + xb * r,
y: y1 + ya + yb * r,
r: r
};
}
function place(b, a, c) {
var dx = b.x - a.x, x, a2,
dy = b.y - a.y, y, b2,
d2 = dx * dx + dy * dy;
if (d2) {
a2 = a.r + c.r, a2 *= a2;
b2 = b.r + c.r, b2 *= b2;
if (a2 > b2) {
x = (d2 + b2 - a2) / (2 * d2);
y = Math.sqrt(Math.max(0, b2 / d2 - x * x));
c.x = b.x - x * dx - y * dy;
c.y = b.y - x * dy + y * dx;
} else {
x = (d2 + a2 - b2) / (2 * d2);
y = Math.sqrt(Math.max(0, a2 / d2 - x * x));
c.x = a.x + x * dx - y * dy;
c.y = a.y + x * dy + y * dx;
}
} else {
c.x = a.x + c.r;
c.y = a.y;
}
}
function intersects(a, b) {
var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;
return dr > 0 && dr * dr > dx * dx + dy * dy;
}
function score(node) {
var a = node._,
b = node.next._,
ab = a.r + b.r,
dx = (a.x * b.r + b.x * a.r) / ab,
dy = (a.y * b.r + b.y * a.r) / ab;
return dx * dx + dy * dy;
}
function Node$1(circle) {
this._ = circle;
this.next = null;
this.previous = null;
}
function packEnclose(circles) {
if (!(n = circles.length)) return 0;
var a, b, c, n, aa, ca, i, j, k, sj, sk;
// Place the first circle.
a = circles[0], a.x = 0, a.y = 0;
if (!(n > 1)) return a.r;
// Place the second circle.
b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;
if (!(n > 2)) return a.r + b.r;
// Place the third circle.
place(b, a, c = circles[2]);
// Initialize the front-chain using the first three circles a, b and c.
a = new Node$1(a), b = new Node$1(b), c = new Node$1(c);
a.next = c.previous = b;
b.next = a.previous = c;
c.next = b.previous = a;
// Attempt to place each remaining circle…
pack: for (i = 3; i < n; ++i) {
place(a._, b._, c = circles[i]), c = new Node$1(c);
// Find the closest intersecting circle on the front-chain, if any.
// “Closeness” is determined by linear distance along the front-chain.
// “Ahead” or “behind” is likewise determined by linear distance.
j = b.next, k = a.previous, sj = b._.r, sk = a._.r;
do {
if (sj <= sk) {
if (intersects(j._, c._)) {
b = j, a.next = b, b.previous = a, --i;
continue pack;
}
sj += j._.r, j = j.next;
} else {
if (intersects(k._, c._)) {
a = k, a.next = b, b.previous = a, --i;
continue pack;
}
sk += k._.r, k = k.previous;
}
} while (j !== k.next);
// Success! Insert the new circle c between a and b.
c.previous = a, c.next = b, a.next = b.previous = b = c;
// Compute the new closest circle pair to the centroid.
aa = score(a);
while ((c = c.next) !== b) {
if ((ca = score(c)) < aa) {
a = c, aa = ca;
}
}
b = a.next;
}
// Compute the enclosing circle of the front chain.
a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);
// Translate the circles to put the enclosing circle around the origin.
for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;
return c.r;
}
var siblings = function(circles) {
packEnclose(circles);
return circles;
};
function optional(f) {
return f == null ? null : required(f);
}
function required(f) {
if (typeof f !== "function") throw new Error;
return f;
}
function constantZero() {
return 0;
}
var constant = function(x) {
return function() {
return x;
};
};
function defaultRadius(d) {
return Math.sqrt(d.value);
}
var index = function() {
var radius = null,
dx = 1,
dy = 1,
padding = constantZero;
function pack(root) {
root.x = dx / 2, root.y = dy / 2;
if (radius) {
root.eachBefore(radiusLeaf(radius))
.eachAfter(packChildren(padding, 0.5))
.eachBefore(translateChild(1));
} else {
root.eachBefore(radiusLeaf(defaultRadius))
.eachAfter(packChildren(constantZero, 1))
.eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))
.eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));
}
return root;
}
pack.radius = function(x) {
return arguments.length ? (radius = optional(x), pack) : radius;
};
pack.size = function(x) {
return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];
};
pack.padding = function(x) {
return arguments.length ? (padding = typeof x === "function" ? x : constant(+x), pack) : padding;
};
return pack;
};
function radiusLeaf(radius) {
return function(node) {
if (!node.children) {
node.r = Math.max(0, +radius(node) || 0);
}
};
}
function packChildren(padding, k) {
return function(node) {
if (children = node.children) {
var children,
i,
n = children.length,
r = padding(node) * k || 0,
e;
if (r) for (i = 0; i < n; ++i) children[i].r += r;
e = packEnclose(children);
if (r) for (i = 0; i < n; ++i) children[i].r -= r;
node.r = e + r;
}
};
}
function translateChild(k) {
return function(node) {
var parent = node.parent;
node.r *= k;
if (parent) {
node.x = parent.x + k * node.x;
node.y = parent.y + k * node.y;
}
};
}
var roundNode = function(node) {
node.x0 = Math.round(node.x0);
node.y0 = Math.round(node.y0);
node.x1 = Math.round(node.x1);
node.y1 = Math.round(node.y1);
};
var treemapDice = function(parent, x0, y0, x1, y1) {
var nodes = parent.children,
node,
i = -1,
n = nodes.length,
k = parent.value && (x1 - x0) / parent.value;
while (++i < n) {
node = nodes[i], node.y0 = y0, node.y1 = y1;
node.x0 = x0, node.x1 = x0 += node.value * k;
}
};
var partition = function() {
var dx = 1,
dy = 1,
padding = 0,
round = false;
function partition(root) {
var n = root.height + 1;
root.x0 =
root.y0 = padding;
root.x1 = dx;
root.y1 = dy / n;
root.eachBefore(positionNode(dy, n));
if (round) root.eachBefore(roundNode);
return root;
}
function positionNode(dy, n) {
return function(node) {
if (node.children) {
treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);
}
var x0 = node.x0,
y0 = node.y0,
x1 = node.x1 - padding,
y1 = node.y1 - padding;
if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
node.x0 = x0;
node.y0 = y0;
node.x1 = x1;
node.y1 = y1;
};
}
partition.round = function(x) {
return arguments.length ? (round = !!x, partition) : round;
};
partition.size = function(x) {
return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];
};
partition.padding = function(x) {
return arguments.length ? (padding = +x, partition) : padding;
};
return partition;
};
var keyPrefix = "$";
var preroot = {depth: -1};
var ambiguous = {};
function defaultId(d) {
return d.id;
}
function defaultParentId(d) {
return d.parentId;
}
var stratify = function() {
var id = defaultId,
parentId = defaultParentId;
function stratify(data) {
var d,
i,
n = data.length,
root,
parent,
node,
nodes = new Array(n),
nodeId,
nodeKey,
nodeByKey = {};
for (i = 0; i < n; ++i) {
d = data[i], node = nodes[i] = new Node(d);
if ((nodeId = id(d, i, data)) != null && (nodeId += "")) {
nodeKey = keyPrefix + (node.id = nodeId);
nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;
}
}
for (i = 0; i < n; ++i) {
node = nodes[i], nodeId = parentId(data[i], i, data);
if (nodeId == null || !(nodeId += "")) {
if (root) throw new Error("multiple roots");
root = node;
} else {
parent = nodeByKey[keyPrefix + nodeId];
if (!parent) throw new Error("missing: " + nodeId);
if (parent === ambiguous) throw new Error("ambiguous: " + nodeId);
if (parent.children) parent.children.push(node);
else parent.children = [node];
node.parent = parent;
}
}
if (!root) throw new Error("no root");
root.parent = preroot;
root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);
root.parent = null;
if (n > 0) throw new Error("cycle");
return root;
}
stratify.id = function(x) {
return arguments.length ? (id = required(x), stratify) : id;
};
stratify.parentId = function(x) {
return arguments.length ? (parentId = required(x), stratify) : parentId;
};
return stratify;
};
function defaultSeparation$1(a, b) {
return a.parent === b.parent ? 1 : 2;
}
// function radialSeparation(a, b) {
// return (a.parent === b.parent ? 1 : 2) / a.depth;
// }
// This function is used to traverse the left contour of a subtree (or
// subforest). It returns the successor of v on this contour. This successor is
// either given by the leftmost child of v or by the thread of v. The function
// returns null if and only if v is on the highest level of its subtree.
function nextLeft(v) {
var children = v.children;
return children ? children[0] : v.t;
}
// This function works analogously to nextLeft.
function nextRight(v) {
var children = v.children;
return children ? children[children.length - 1] : v.t;
}
// Shifts the current subtree rooted at w+. This is done by increasing
// prelim(w+) and mod(w+) by shift.
function moveSubtree(wm, wp, shift) {
var change = shift / (wp.i - wm.i);
wp.c -= change;
wp.s += shift;
wm.c += change;
wp.z += shift;
wp.m += shift;
}
// All other shifts, applied to the smaller subtrees between w- and w+, are
// performed by this function. To prepare the shifts, we have to adjust
// change(w+), shift(w+), and change(w-).
function executeShifts(v) {
var shift = 0,
change = 0,
children = v.children,
i = children.length,
w;
while (--i >= 0) {
w = children[i];
w.z += shift;
w.m += shift;
shift += w.s + (change += w.c);
}
}
// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,
// returns the specified (default) ancestor.
function nextAncestor(vim, v, ancestor) {
return vim.a.parent === v.parent ? vim.a : ancestor;
}
function TreeNode(node, i) {
this._ = node;
this.parent = null;
this.children = null;
this.A = null; // default ancestor
this.a = this; // ancestor
this.z = 0; // prelim
this.m = 0; // mod
this.c = 0; // change
this.s = 0; // shift
this.t = null; // thread
this.i = i; // number
}
TreeNode.prototype = Object.create(Node.prototype);
function treeRoot(root) {
var tree = new TreeNode(root, 0),
node,
nodes = [tree],
child,
children,
i,
n;
while (node = nodes.pop()) {
if (children = node._.children) {
node.children = new Array(n = children.length);
for (i = n - 1; i >= 0; --i) {
nodes.push(child = node.children[i] = new TreeNode(children[i], i));
child.parent = node;
}
}
}
(tree.parent = new TreeNode(null, 0)).children = [tree];
return tree;
}
// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm
var tree = function() {
var separation = defaultSeparation$1,
dx = 1,
dy = 1,
nodeSize = null;
function tree(root) {
var t = treeRoot(root);
// Compute the layout using Buchheim et al.’s algorithm.
t.eachAfter(firstWalk), t.parent.m = -t.z;
t.eachBefore(secondWalk);
// If a fixed node size is specified, scale x and y.
if (nodeSize) root.eachBefore(sizeNode);
// If a fixed tree size is specified, scale x and y based on the extent.
// Compute the left-most, right-most, and depth-most nodes for extents.
else {
var left = root,
right = root,
bottom = root;
root.eachBefore(function(node) {
if (node.x < left.x) left = node;
if (node.x > right.x) right = node;
if (node.depth > bottom.depth) bottom = node;
});
var s = left === right ? 1 : separation(left, right) / 2,
tx = s - left.x,
kx = dx / (right.x + s + tx),
ky = dy / (bottom.depth || 1);
root.eachBefore(function(node) {
node.x = (node.x + tx) * kx;
node.y = node.depth * ky;
});
}
return root;
}
// Computes a preliminary x-coordinate for v. Before that, FIRST WALK is
// applied recursively to the children of v, as well as the function
// APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the
// node v is placed to the midpoint of its outermost children.
function firstWalk(v) {
var children = v.children,
siblings = v.parent.children,
w = v.i ? siblings[v.i - 1] : null;
if (children) {
executeShifts(v);
var midpoint = (children[0].z + children[children.length - 1].z) / 2;
if (w) {
v.z = w.z + separation(v._, w._);
v.m = v.z - midpoint;
} else {
v.z = midpoint;
}
} else if (w) {
v.z = w.z + separation(v._, w._);
}
v.parent.A = apportion(v, w, v.parent.A || siblings[0]);
}
// Computes all real x-coordinates by summing up the modifiers recursively.
function secondWalk(v) {
v._.x = v.z + v.parent.m;
v.m += v.parent.m;
}
// The core of the algorithm. Here, a new subtree is combined with the
// previous subtrees. Threads are used to traverse the inside and outside
// contours of the left and right subtree up to the highest common level. The
// vertices used for the traversals are vi+, vi-, vo-, and vo+, where the
// superscript o means outside and i means inside, the subscript - means left
// subtree and + means right subtree. For summing up the modifiers along the
// contour, we use respective variables si+, si-, so-, and so+. Whenever two
// nodes of the inside contours conflict, we compute the left one of the
// greatest uncommon ancestors using the function ANCESTOR and call MOVE
// SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.
// Finally, we add a new thread (if necessary).
function apportion(v, w, ancestor) {
if (w) {
var vip = v,
vop = v,
vim = w,
vom = vip.parent.children[0],
sip = vip.m,
sop = vop.m,
sim = vim.m,
som = vom.m,
shift;
while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {
vom = nextLeft(vom);
vop = nextRight(vop);
vop.a = v;
shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);
if (shift > 0) {
moveSubtree(nextAncestor(vim, v, ancestor), v, shift);
sip += shift;
sop += shift;
}
sim += vim.m;
sip += vip.m;
som += vom.m;
sop += vop.m;
}
if (vim && !nextRight(vop)) {
vop.t = vim;
vop.m += sim - sop;
}
if (vip && !nextLeft(vom)) {
vom.t = vip;
vom.m += sip - som;
ancestor = v;
}
}
return ancestor;
}
function sizeNode(node) {
node.x *= dx;
node.y = node.depth * dy;
}
tree.separation = function(x) {
return arguments.length ? (separation = x, tree) : separation;
};
tree.size = function(x) {
return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);
};
tree.nodeSize = function(x) {
return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);
};
return tree;
};
var treemapSlice = function(parent, x0, y0, x1, y1) {
var nodes = parent.children,
node,
i = -1,
n = nodes.length,
k = parent.value && (y1 - y0) / parent.value;
while (++i < n) {
node = nodes[i], node.x0 = x0, node.x1 = x1;
node.y0 = y0, node.y1 = y0 += node.value * k;
}
};
var phi = (1 + Math.sqrt(5)) / 2;
function squarifyRatio(ratio, parent, x0, y0, x1, y1) {
var rows = [],
nodes = parent.children,
row,
nodeValue,
i0 = 0,
i1 = 0,
n = nodes.length,
dx, dy,
value = parent.value,
sumValue,
minValue,
maxValue,
newRatio,
minRatio,
alpha,
beta;
while (i0 < n) {
dx = x1 - x0, dy = y1 - y0;
// Find the next non-empty node.
do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);
minValue = maxValue = sumValue;
alpha = Math.max(dy / dx, dx / dy) / (value * ratio);
beta = sumValue * sumValue * alpha;
minRatio = Math.max(maxValue / beta, beta / minValue);
// Keep adding nodes while the aspect ratio maintains or improves.
for (; i1 < n; ++i1) {
sumValue += nodeValue = nodes[i1].value;
if (nodeValue < minValue) minValue = nodeValue;
if (nodeValue > maxValue) maxValue = nodeValue;
beta = sumValue * sumValue * alpha;
newRatio = Math.max(maxValue / beta, beta / minValue);
if (newRatio > minRatio) { sumValue -= nodeValue; break; }
minRatio = newRatio;
}
// Position and record the row orientation.
rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});
if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);
else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);
value -= sumValue, i0 = i1;
}
return rows;
}
var squarify = ((function custom(ratio) {
function squarify(parent, x0, y0, x1, y1) {
squarifyRatio(ratio, parent, x0, y0, x1, y1);
}
squarify.ratio = function(x) {
return custom((x = +x) > 1 ? x : 1);
};
return squarify;
}))(phi);
var index$1 = function() {
var tile = squarify,
round = false,
dx = 1,
dy = 1,
paddingStack = [0],
paddingInner = constantZero,
paddingTop = constantZero,
paddingRight = constantZero,
paddingBottom = constantZero,
paddingLeft = constantZero;
function treemap(root) {
root.x0 =
root.y0 = 0;
root.x1 = dx;
root.y1 = dy;
root.eachBefore(positionNode);
paddingStack = [0];
if (round) root.eachBefore(roundNode);
return root;
}
function positionNode(node) {
var p = paddingStack[node.depth],
x0 = node.x0 + p,
y0 = node.y0 + p,
x1 = node.x1 - p,
y1 = node.y1 - p;
if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
node.x0 = x0;
node.y0 = y0;
node.x1 = x1;
node.y1 = y1;
if (node.children) {
p = paddingStack[node.depth + 1] = paddingInner(node) / 2;
x0 += paddingLeft(node) - p;
y0 += paddingTop(node) - p;
x1 -= paddingRight(node) - p;
y1 -= paddingBottom(node) - p;
if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
tile(node, x0, y0, x1, y1);
}
}
treemap.round = function(x) {
return arguments.length ? (round = !!x, treemap) : round;
};
treemap.size = function(x) {
return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];
};
treemap.tile = function(x) {
return arguments.length ? (tile = required(x), treemap) : tile;
};
treemap.padding = function(x) {
return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();
};
treemap.paddingInner = function(x) {
return arguments.length ? (paddingInner = typeof x === "function" ? x : constant(+x), treemap) : paddingInner;
};
treemap.paddingOuter = function(x) {
return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();
};
treemap.paddingTop = function(x) {
return arguments.length ? (paddingTop = typeof x === "function" ? x : constant(+x), treemap) : paddingTop;
};
treemap.paddingRight = function(x) {
return arguments.length ? (paddingRight = typeof x === "function" ? x : constant(+x), treemap) : paddingRight;
};
treemap.paddingBottom = function(x) {
return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant(+x), treemap) : paddingBottom;
};
treemap.paddingLeft = function(x) {
return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant(+x), treemap) : paddingLeft;
};
return treemap;
};
var binary = function(parent, x0, y0, x1, y1) {
var nodes = parent.children,
i, n = nodes.length,
sum, sums = new Array(n + 1);
for (sums[0] = sum = i = 0; i < n; ++i) {
sums[i + 1] = sum += nodes[i].value;
}
partition(0, n, parent.value, x0, y0, x1, y1);
function partition(i, j, value, x0, y0, x1, y1) {
if (i >= j - 1) {
var node = nodes[i];
node.x0 = x0, node.y0 = y0;
node.x1 = x1, node.y1 = y1;
return;
}
var valueOffset = sums[i],
valueTarget = (value / 2) + valueOffset,
k = i + 1,
hi = j - 1;
while (k < hi) {
var mid = k + hi >>> 1;
if (sums[mid] < valueTarget) k = mid + 1;
else hi = mid;
}
if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;
var valueLeft = sums[k] - valueOffset,
valueRight = value - valueLeft;
if ((x1 - x0) > (y1 - y0)) {
var xk = (x0 * valueRight + x1 * valueLeft) / value;
partition(i, k, valueLeft, x0, y0, xk, y1);
partition(k, j, valueRight, xk, y0, x1, y1);
} else {
var yk = (y0 * valueRight + y1 * valueLeft) / value;
partition(i, k, valueLeft, x0, y0, x1, yk);
partition(k, j, valueRight, x0, yk, x1, y1);
}
}
};
var sliceDice = function(parent, x0, y0, x1, y1) {
(parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1);
};
var resquarify = ((function custom(ratio) {
function resquarify(parent, x0, y0, x1, y1) {
if ((rows = parent._squarify) && (rows.ratio === ratio)) {
var rows,
row,
nodes,
i,
j = -1,
n,
m = rows.length,
value = parent.value;
while (++j < m) {
row = rows[j], nodes = row.children;
for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;
if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);
else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);
value -= row.value;
}
} else {
parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);
rows.ratio = ratio;
}
}
resquarify.ratio = function(x) {
return custom((x = +x) > 1 ? x : 1);
};
return resquarify;
}))(phi);
exports.cluster = cluster;
exports.hierarchy = hierarchy;
exports.pack = index;
exports.packSiblings = siblings;
exports.packEnclose = enclose;
exports.partition = partition;
exports.stratify = stratify;
exports.tree = tree;
exports.treemap = index$1;
exports.treemapBinary = binary;
exports.treemapDice = treemapDice;
exports.treemapSlice = treemapSlice;
exports.treemapSliceDice = sliceDice;
exports.treemapSquarify = squarify;
exports.treemapResquarify = resquarify;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],10:[function(require,module,exports){
// https://d3js.org/d3-interpolate/ Version 1.2.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3));
}(this, (function (exports,d3Color) { 'use strict';
function basis(t1, v0, v1, v2, v3) {
var t2 = t1 * t1, t3 = t2 * t1;
return ((1 - 3 * t1 + 3 * t2 - t3) * v0
+ (4 - 6 * t2 + 3 * t3) * v1
+ (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2
+ t3 * v3) / 6;
}
var basis$1 = function(values) {
var n = values.length - 1;
return function(t) {
var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),
v1 = values[i],
v2 = values[i + 1],
v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,
v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;
return basis((t - i / n) * n, v0, v1, v2, v3);
};
};
var basisClosed = function(values) {
var n = values.length;
return function(t) {
var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),
v0 = values[(i + n - 1) % n],
v1 = values[i % n],
v2 = values[(i + 1) % n],
v3 = values[(i + 2) % n];
return basis((t - i / n) * n, v0, v1, v2, v3);
};
};
var constant = function(x) {
return function() {
return x;
};
};
function linear(a, d) {
return function(t) {
return a + t * d;
};
}
function exponential(a, b, y) {
return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {
return Math.pow(a + t * b, y);
};
}
function hue(a, b) {
var d = b - a;
return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);
}
function gamma(y) {
return (y = +y) === 1 ? nogamma : function(a, b) {
return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);
};
}
function nogamma(a, b) {
var d = b - a;
return d ? linear(a, d) : constant(isNaN(a) ? b : a);
}
var rgb$1 = ((function rgbGamma(y) {
var color$$1 = gamma(y);
function rgb$$1(start, end) {
var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),
g = color$$1(start.g, end.g),
b = color$$1(start.b, end.b),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.r = r(t);
start.g = g(t);
start.b = b(t);
start.opacity = opacity(t);
return start + "";
};
}
rgb$$1.gamma = rgbGamma;
return rgb$$1;
}))(1);
function rgbSpline(spline) {
return function(colors) {
var n = colors.length,
r = new Array(n),
g = new Array(n),
b = new Array(n),
i, color$$1;
for (i = 0; i < n; ++i) {
color$$1 = d3Color.rgb(colors[i]);
r[i] = color$$1.r || 0;
g[i] = color$$1.g || 0;
b[i] = color$$1.b || 0;
}
r = spline(r);
g = spline(g);
b = spline(b);
color$$1.opacity = 1;
return function(t) {
color$$1.r = r(t);
color$$1.g = g(t);
color$$1.b = b(t);
return color$$1 + "";
};
};
}
var rgbBasis = rgbSpline(basis$1);
var rgbBasisClosed = rgbSpline(basisClosed);
var array = function(a, b) {
var nb = b ? b.length : 0,
na = a ? Math.min(nb, a.length) : 0,
x = new Array(na),
c = new Array(nb),
i;
for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);
for (; i < nb; ++i) c[i] = b[i];
return function(t) {
for (i = 0; i < na; ++i) c[i] = x[i](t);
return c;
};
};
var date = function(a, b) {
var d = new Date;
return a = +a, b -= a, function(t) {
return d.setTime(a + b * t), d;
};
};
var number = function(a, b) {
return a = +a, b -= a, function(t) {
return a + b * t;
};
};
var object = function(a, b) {
var i = {},
c = {},
k;
if (a === null || typeof a !== "object") a = {};
if (b === null || typeof b !== "object") b = {};
for (k in b) {
if (k in a) {
i[k] = value(a[k], b[k]);
} else {
c[k] = b[k];
}
}
return function(t) {
for (k in i) c[k] = i[k](t);
return c;
};
};
var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
var reB = new RegExp(reA.source, "g");
function zero(b) {
return function() {
return b;
};
}
function one(b) {
return function(t) {
return b(t) + "";
};
}
var string = function(a, b) {
var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b
am, // current match in a
bm, // current match in b
bs, // string preceding current number in b, if any
i = -1, // index in s
s = [], // string constants and placeholders
q = []; // number interpolators
// Coerce inputs to strings.
a = a + "", b = b + "";
// Interpolate pairs of numbers in a & b.
while ((am = reA.exec(a))
&& (bm = reB.exec(b))) {
if ((bs = bm.index) > bi) { // a string precedes the next number in b
bs = b.slice(bi, bs);
if (s[i]) s[i] += bs; // coalesce with previous string
else s[++i] = bs;
}
if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
if (s[i]) s[i] += bm; // coalesce with previous string
else s[++i] = bm;
} else { // interpolate non-matching numbers
s[++i] = null;
q.push({i: i, x: number(am, bm)});
}
bi = reB.lastIndex;
}
// Add remains of b.
if (bi < b.length) {
bs = b.slice(bi);
if (s[i]) s[i] += bs; // coalesce with previous string
else s[++i] = bs;
}
// Special optimization for only a single match.
// Otherwise, interpolate each of the numbers and rejoin the string.
return s.length < 2 ? (q[0]
? one(q[0].x)
: zero(b))
: (b = q.length, function(t) {
for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
return s.join("");
});
};
var value = function(a, b) {
var t = typeof b, c;
return b == null || t === "boolean" ? constant(b)
: (t === "number" ? number
: t === "string" ? ((c = d3Color.color(b)) ? (b = c, rgb$1) : string)
: b instanceof d3Color.color ? rgb$1
: b instanceof Date ? date
: Array.isArray(b) ? array
: typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object
: number)(a, b);
};
var round = function(a, b) {
return a = +a, b -= a, function(t) {
return Math.round(a + b * t);
};
};
var degrees = 180 / Math.PI;
var identity = {
translateX: 0,
translateY: 0,
rotate: 0,
skewX: 0,
scaleX: 1,
scaleY: 1
};
var decompose = function(a, b, c, d, e, f) {
var scaleX, scaleY, skewX;
if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;
if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;
if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;
if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;
return {
translateX: e,
translateY: f,
rotate: Math.atan2(b, a) * degrees,
skewX: Math.atan(skewX) * degrees,
scaleX: scaleX,
scaleY: scaleY
};
};
var cssNode;
var cssRoot;
var cssView;
var svgNode;
function parseCss(value) {
if (value === "none") return identity;
if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView;
cssNode.style.transform = value;
value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform");
cssRoot.removeChild(cssNode);
value = value.slice(7, -1).split(",");
return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);
}
function parseSvg(value) {
if (value == null) return identity;
if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g");
svgNode.setAttribute("transform", value);
if (!(value = svgNode.transform.baseVal.consolidate())) return identity;
value = value.matrix;
return decompose(value.a, value.b, value.c, value.d, value.e, value.f);
}
function interpolateTransform(parse, pxComma, pxParen, degParen) {
function pop(s) {
return s.length ? s.pop() + " " : "";
}
function translate(xa, ya, xb, yb, s, q) {
if (xa !== xb || ya !== yb) {
var i = s.push("translate(", null, pxComma, null, pxParen);
q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});
} else if (xb || yb) {
s.push("translate(" + xb + pxComma + yb + pxParen);
}
}
function rotate(a, b, s, q) {
if (a !== b) {
if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path
q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: number(a, b)});
} else if (b) {
s.push(pop(s) + "rotate(" + b + degParen);
}
}
function skewX(a, b, s, q) {
if (a !== b) {
q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: number(a, b)});
} else if (b) {
s.push(pop(s) + "skewX(" + b + degParen);
}
}
function scale(xa, ya, xb, yb, s, q) {
if (xa !== xb || ya !== yb) {
var i = s.push(pop(s) + "scale(", null, ",", null, ")");
q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});
} else if (xb !== 1 || yb !== 1) {
s.push(pop(s) + "scale(" + xb + "," + yb + ")");
}
}
return function(a, b) {
var s = [], // string constants and placeholders
q = []; // number interpolators
a = parse(a), b = parse(b);
translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);
rotate(a.rotate, b.rotate, s, q);
skewX(a.skewX, b.skewX, s, q);
scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);
a = b = null; // gc
return function(t) {
var i = -1, n = q.length, o;
while (++i < n) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
};
}
var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)");
var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")");
var rho = Math.SQRT2;
var rho2 = 2;
var rho4 = 4;
var epsilon2 = 1e-12;
function cosh(x) {
return ((x = Math.exp(x)) + 1 / x) / 2;
}
function sinh(x) {
return ((x = Math.exp(x)) - 1 / x) / 2;
}
function tanh(x) {
return ((x = Math.exp(2 * x)) - 1) / (x + 1);
}
// p0 = [ux0, uy0, w0]
// p1 = [ux1, uy1, w1]
var zoom = function(p0, p1) {
var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
ux1 = p1[0], uy1 = p1[1], w1 = p1[2],
dx = ux1 - ux0,
dy = uy1 - uy0,
d2 = dx * dx + dy * dy,
i,
S;
// Special case for u0 ≅ u1.
if (d2 < epsilon2) {
S = Math.log(w1 / w0) / rho;
i = function(t) {
return [
ux0 + t * dx,
uy0 + t * dy,
w0 * Math.exp(rho * t * S)
];
};
}
// General case.
else {
var d1 = Math.sqrt(d2),
b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),
b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),
r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
S = (r1 - r0) / rho;
i = function(t) {
var s = t * S,
coshr0 = cosh(r0),
u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));
return [
ux0 + u * dx,
uy0 + u * dy,
w0 * coshr0 / cosh(rho * s + r0)
];
};
}
i.duration = S * 1000;
return i;
};
function hsl$1(hue$$1) {
return function(start, end) {
var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),
s = nogamma(start.s, end.s),
l = nogamma(start.l, end.l),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.h = h(t);
start.s = s(t);
start.l = l(t);
start.opacity = opacity(t);
return start + "";
};
}
}
var hsl$2 = hsl$1(hue);
var hslLong = hsl$1(nogamma);
function lab$1(start, end) {
var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),
a = nogamma(start.a, end.a),
b = nogamma(start.b, end.b),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.l = l(t);
start.a = a(t);
start.b = b(t);
start.opacity = opacity(t);
return start + "";
};
}
function hcl$1(hue$$1) {
return function(start, end) {
var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),
c = nogamma(start.c, end.c),
l = nogamma(start.l, end.l),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.h = h(t);
start.c = c(t);
start.l = l(t);
start.opacity = opacity(t);
return start + "";
};
}
}
var hcl$2 = hcl$1(hue);
var hclLong = hcl$1(nogamma);
function cubehelix$1(hue$$1) {
return (function cubehelixGamma(y) {
y = +y;
function cubehelix$$1(start, end) {
var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),
s = nogamma(start.s, end.s),
l = nogamma(start.l, end.l),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.h = h(t);
start.s = s(t);
start.l = l(Math.pow(t, y));
start.opacity = opacity(t);
return start + "";
};
}
cubehelix$$1.gamma = cubehelixGamma;
return cubehelix$$1;
})(1);
}
var cubehelix$2 = cubehelix$1(hue);
var cubehelixLong = cubehelix$1(nogamma);
function piecewise(interpolate, values) {
var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);
while (i < n) I[i] = interpolate(v, v = values[++i]);
return function(t) {
var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));
return I[i](t - i);
};
}
var quantize = function(interpolator, n) {
var samples = new Array(n);
for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));
return samples;
};
exports.interpolate = value;
exports.interpolateArray = array;
exports.interpolateBasis = basis$1;
exports.interpolateBasisClosed = basisClosed;
exports.interpolateDate = date;
exports.interpolateNumber = number;
exports.interpolateObject = object;
exports.interpolateRound = round;
exports.interpolateString = string;
exports.interpolateTransformCss = interpolateTransformCss;
exports.interpolateTransformSvg = interpolateTransformSvg;
exports.interpolateZoom = zoom;
exports.interpolateRgb = rgb$1;
exports.interpolateRgbBasis = rgbBasis;
exports.interpolateRgbBasisClosed = rgbBasisClosed;
exports.interpolateHsl = hsl$2;
exports.interpolateHslLong = hslLong;
exports.interpolateLab = lab$1;
exports.interpolateHcl = hcl$2;
exports.interpolateHclLong = hclLong;
exports.interpolateCubehelix = cubehelix$2;
exports.interpolateCubehelixLong = cubehelixLong;
exports.piecewise = piecewise;
exports.quantize = quantize;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-color":3}],11:[function(require,module,exports){
// https://d3js.org/d3-scale/ Version 2.1.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array'), require('d3-collection'), require('d3-interpolate'), require('d3-format'), require('d3-time'), require('d3-time-format')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-collection', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));
}(this, (function (exports,d3Array,d3Collection,d3Interpolate,d3Format,d3Time,d3TimeFormat) { 'use strict';
var array = Array.prototype;
var map$1 = array.map;
var slice = array.slice;
var implicit = {name: "implicit"};
function ordinal(range$$1) {
var index = d3Collection.map(),
domain = [],
unknown = implicit;
range$$1 = range$$1 == null ? [] : slice.call(range$$1);
function scale(d) {
var key = d + "", i = index.get(key);
if (!i) {
if (unknown !== implicit) return unknown;
index.set(key, i = domain.push(d));
}
return range$$1[(i - 1) % range$$1.length];
}
scale.domain = function(_) {
if (!arguments.length) return domain.slice();
domain = [], index = d3Collection.map();
var i = -1, n = _.length, d, key;
while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d));
return scale;
};
scale.range = function(_) {
return arguments.length ? (range$$1 = slice.call(_), scale) : range$$1.slice();
};
scale.unknown = function(_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
scale.copy = function() {
return ordinal()
.domain(domain)
.range(range$$1)
.unknown(unknown);
};
return scale;
}
function band() {
var scale = ordinal().unknown(undefined),
domain = scale.domain,
ordinalRange = scale.range,
range$$1 = [0, 1],
step,
bandwidth,
round = false,
paddingInner = 0,
paddingOuter = 0,
align = 0.5;
delete scale.unknown;
function rescale() {
var n = domain().length,
reverse = range$$1[1] < range$$1[0],
start = range$$1[reverse - 0],
stop = range$$1[1 - reverse];
step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
if (round) step = Math.floor(step);
start += (stop - start - step * (n - paddingInner)) * align;
bandwidth = step * (1 - paddingInner);
if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);
var values = d3Array.range(n).map(function(i) { return start + step * i; });
return ordinalRange(reverse ? values.reverse() : values);
}
scale.domain = function(_) {
return arguments.length ? (domain(_), rescale()) : domain();
};
scale.range = function(_) {
return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice();
};
scale.rangeRound = function(_) {
return range$$1 = [+_[0], +_[1]], round = true, rescale();
};
scale.bandwidth = function() {
return bandwidth;
};
scale.step = function() {
return step;
};
scale.round = function(_) {
return arguments.length ? (round = !!_, rescale()) : round;
};
scale.padding = function(_) {
return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;
};
scale.paddingInner = function(_) {
return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;
};
scale.paddingOuter = function(_) {
return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;
};
scale.align = function(_) {
return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;
};
scale.copy = function() {
return band()
.domain(domain())
.range(range$$1)
.round(round)
.paddingInner(paddingInner)
.paddingOuter(paddingOuter)
.align(align);
};
return rescale();
}
function pointish(scale) {
var copy = scale.copy;
scale.padding = scale.paddingOuter;
delete scale.paddingInner;
delete scale.paddingOuter;
scale.copy = function() {
return pointish(copy());
};
return scale;
}
function point() {
return pointish(band().paddingInner(1));
}
function constant(x) {
return function() {
return x;
};
}
function number(x) {
return +x;
}
var unit = [0, 1];
function deinterpolateLinear(a, b) {
return (b -= (a = +a))
? function(x) { return (x - a) / b; }
: constant(b);
}
function deinterpolateClamp(deinterpolate) {
return function(a, b) {
var d = deinterpolate(a = +a, b = +b);
return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };
};
}
function reinterpolateClamp(reinterpolate) {
return function(a, b) {
var r = reinterpolate(a = +a, b = +b);
return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };
};
}
function bimap(domain, range$$1, deinterpolate, reinterpolate) {
var d0 = domain[0], d1 = domain[1], r0 = range$$1[0], r1 = range$$1[1];
if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);
else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);
return function(x) { return r0(d0(x)); };
}
function polymap(domain, range$$1, deinterpolate, reinterpolate) {
var j = Math.min(domain.length, range$$1.length) - 1,
d = new Array(j),
r = new Array(j),
i = -1;
// Reverse descending domains.
if (domain[j] < domain[0]) {
domain = domain.slice().reverse();
range$$1 = range$$1.slice().reverse();
}
while (++i < j) {
d[i] = deinterpolate(domain[i], domain[i + 1]);
r[i] = reinterpolate(range$$1[i], range$$1[i + 1]);
}
return function(x) {
var i = d3Array.bisect(domain, x, 1, j) - 1;
return r[i](d[i](x));
};
}
function copy(source, target) {
return target
.domain(source.domain())
.range(source.range())
.interpolate(source.interpolate())
.clamp(source.clamp());
}
// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].
function continuous(deinterpolate, reinterpolate) {
var domain = unit,
range$$1 = unit,
interpolate$$1 = d3Interpolate.interpolate,
clamp = false,
piecewise,
output,
input;
function rescale() {
piecewise = Math.min(domain.length, range$$1.length) > 2 ? polymap : bimap;
output = input = null;
return scale;
}
function scale(x) {
return (output || (output = piecewise(domain, range$$1, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x);
}
scale.invert = function(y) {
return (input || (input = piecewise(range$$1, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);
};
scale.domain = function(_) {
return arguments.length ? (domain = map$1.call(_, number), rescale()) : domain.slice();
};
scale.range = function(_) {
return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();
};
scale.rangeRound = function(_) {
return range$$1 = slice.call(_), interpolate$$1 = d3Interpolate.interpolateRound, rescale();
};
scale.clamp = function(_) {
return arguments.length ? (clamp = !!_, rescale()) : clamp;
};
scale.interpolate = function(_) {
return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;
};
return rescale();
}
function tickFormat(domain, count, specifier) {
var start = domain[0],
stop = domain[domain.length - 1],
step = d3Array.tickStep(start, stop, count == null ? 10 : count),
precision;
specifier = d3Format.formatSpecifier(specifier == null ? ",f" : specifier);
switch (specifier.type) {
case "s": {
var value = Math.max(Math.abs(start), Math.abs(stop));
if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision;
return d3Format.formatPrefix(specifier, value);
}
case "":
case "e":
case "g":
case "p":
case "r": {
if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e");
break;
}
case "f":
case "%": {
if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2;
break;
}
}
return d3Format.format(specifier);
}
function linearish(scale) {
var domain = scale.domain;
scale.ticks = function(count) {
var d = domain();
return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count);
};
scale.tickFormat = function(count, specifier) {
return tickFormat(domain(), count, specifier);
};
scale.nice = function(count) {
if (count == null) count = 10;
var d = domain(),
i0 = 0,
i1 = d.length - 1,
start = d[i0],
stop = d[i1],
step;
if (stop < start) {
step = start, start = stop, stop = step;
step = i0, i0 = i1, i1 = step;
}
step = d3Array.tickIncrement(start, stop, count);
if (step > 0) {
start = Math.floor(start / step) * step;
stop = Math.ceil(stop / step) * step;
step = d3Array.tickIncrement(start, stop, count);
} else if (step < 0) {
start = Math.ceil(start * step) / step;
stop = Math.floor(stop * step) / step;
step = d3Array.tickIncrement(start, stop, count);
}
if (step > 0) {
d[i0] = Math.floor(start / step) * step;
d[i1] = Math.ceil(stop / step) * step;
domain(d);
} else if (step < 0) {
d[i0] = Math.ceil(start * step) / step;
d[i1] = Math.floor(stop * step) / step;
domain(d);
}
return scale;
};
return scale;
}
function linear() {
var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber);
scale.copy = function() {
return copy(scale, linear());
};
return linearish(scale);
}
function identity() {
var domain = [0, 1];
function scale(x) {
return +x;
}
scale.invert = scale;
scale.domain = scale.range = function(_) {
return arguments.length ? (domain = map$1.call(_, number), scale) : domain.slice();
};
scale.copy = function() {
return identity().domain(domain);
};
return linearish(scale);
}
function nice(domain, interval) {
domain = domain.slice();
var i0 = 0,
i1 = domain.length - 1,
x0 = domain[i0],
x1 = domain[i1],
t;
if (x1 < x0) {
t = i0, i0 = i1, i1 = t;
t = x0, x0 = x1, x1 = t;
}
domain[i0] = interval.floor(x0);
domain[i1] = interval.ceil(x1);
return domain;
}
function deinterpolate(a, b) {
return (b = Math.log(b / a))
? function(x) { return Math.log(x / a) / b; }
: constant(b);
}
function reinterpolate(a, b) {
return a < 0
? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }
: function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };
}
function pow10(x) {
return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x;
}
function powp(base) {
return base === 10 ? pow10
: base === Math.E ? Math.exp
: function(x) { return Math.pow(base, x); };
}
function logp(base) {
return base === Math.E ? Math.log
: base === 10 && Math.log10
|| base === 2 && Math.log2
|| (base = Math.log(base), function(x) { return Math.log(x) / base; });
}
function reflect(f) {
return function(x) {
return -f(-x);
};
}
function log() {
var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),
domain = scale.domain,
base = 10,
logs = logp(10),
pows = powp(10);
function rescale() {
logs = logp(base), pows = powp(base);
if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);
return scale;
}
scale.base = function(_) {
return arguments.length ? (base = +_, rescale()) : base;
};
scale.domain = function(_) {
return arguments.length ? (domain(_), rescale()) : domain();
};
scale.ticks = function(count) {
var d = domain(),
u = d[0],
v = d[d.length - 1],
r;
if (r = v < u) i = u, u = v, v = i;
var i = logs(u),
j = logs(v),
p,
k,
t,
n = count == null ? 10 : +count,
z = [];
if (!(base % 1) && j - i < n) {
i = Math.round(i) - 1, j = Math.round(j) + 1;
if (u > 0) for (; i < j; ++i) {
for (k = 1, p = pows(i); k < base; ++k) {
t = p * k;
if (t < u) continue;
if (t > v) break;
z.push(t);
}
} else for (; i < j; ++i) {
for (k = base - 1, p = pows(i); k >= 1; --k) {
t = p * k;
if (t < u) continue;
if (t > v) break;
z.push(t);
}
}
} else {
z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows);
}
return r ? z.reverse() : z;
};
scale.tickFormat = function(count, specifier) {
if (specifier == null) specifier = base === 10 ? ".0e" : ",";
if (typeof specifier !== "function") specifier = d3Format.format(specifier);
if (count === Infinity) return specifier;
if (count == null) count = 10;
var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?
return function(d) {
var i = d / pows(Math.round(logs(d)));
if (i * base < base - 0.5) i *= base;
return i <= k ? specifier(d) : "";
};
};
scale.nice = function() {
return domain(nice(domain(), {
floor: function(x) { return pows(Math.floor(logs(x))); },
ceil: function(x) { return pows(Math.ceil(logs(x))); }
}));
};
scale.copy = function() {
return copy(scale, log().base(base));
};
return scale;
}
function raise(x, exponent) {
return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);
}
function pow() {
var exponent = 1,
scale = continuous(deinterpolate, reinterpolate),
domain = scale.domain;
function deinterpolate(a, b) {
return (b = raise(b, exponent) - (a = raise(a, exponent)))
? function(x) { return (raise(x, exponent) - a) / b; }
: constant(b);
}
function reinterpolate(a, b) {
b = raise(b, exponent) - (a = raise(a, exponent));
return function(t) { return raise(a + b * t, 1 / exponent); };
}
scale.exponent = function(_) {
return arguments.length ? (exponent = +_, domain(domain())) : exponent;
};
scale.copy = function() {
return copy(scale, pow().exponent(exponent));
};
return linearish(scale);
}
function sqrt() {
return pow().exponent(0.5);
}
function quantile$1() {
var domain = [],
range$$1 = [],
thresholds = [];
function rescale() {
var i = 0, n = Math.max(1, range$$1.length);
thresholds = new Array(n - 1);
while (++i < n) thresholds[i - 1] = d3Array.quantile(domain, i / n);
return scale;
}
function scale(x) {
if (!isNaN(x = +x)) return range$$1[d3Array.bisect(thresholds, x)];
}
scale.invertExtent = function(y) {
var i = range$$1.indexOf(y);
return i < 0 ? [NaN, NaN] : [
i > 0 ? thresholds[i - 1] : domain[0],
i < thresholds.length ? thresholds[i] : domain[domain.length - 1]
];
};
scale.domain = function(_) {
if (!arguments.length) return domain.slice();
domain = [];
for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);
domain.sort(d3Array.ascending);
return rescale();
};
scale.range = function(_) {
return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();
};
scale.quantiles = function() {
return thresholds.slice();
};
scale.copy = function() {
return quantile$1()
.domain(domain)
.range(range$$1);
};
return scale;
}
function quantize() {
var x0 = 0,
x1 = 1,
n = 1,
domain = [0.5],
range$$1 = [0, 1];
function scale(x) {
if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];
}
function rescale() {
var i = -1;
domain = new Array(n);
while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);
return scale;
}
scale.domain = function(_) {
return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];
};
scale.range = function(_) {
return arguments.length ? (n = (range$$1 = slice.call(_)).length - 1, rescale()) : range$$1.slice();
};
scale.invertExtent = function(y) {
var i = range$$1.indexOf(y);
return i < 0 ? [NaN, NaN]
: i < 1 ? [x0, domain[0]]
: i >= n ? [domain[n - 1], x1]
: [domain[i - 1], domain[i]];
};
scale.copy = function() {
return quantize()
.domain([x0, x1])
.range(range$$1);
};
return linearish(scale);
}
function threshold() {
var domain = [0.5],
range$$1 = [0, 1],
n = 1;
function scale(x) {
if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];
}
scale.domain = function(_) {
return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : domain.slice();
};
scale.range = function(_) {
return arguments.length ? (range$$1 = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : range$$1.slice();
};
scale.invertExtent = function(y) {
var i = range$$1.indexOf(y);
return [domain[i - 1], domain[i]];
};
scale.copy = function() {
return threshold()
.domain(domain)
.range(range$$1);
};
return scale;
}
var durationSecond = 1000;
var durationMinute = durationSecond * 60;
var durationHour = durationMinute * 60;
var durationDay = durationHour * 24;
var durationWeek = durationDay * 7;
var durationMonth = durationDay * 30;
var durationYear = durationDay * 365;
function date(t) {
return new Date(t);
}
function number$1(t) {
return t instanceof Date ? +t : +new Date(+t);
}
function calendar(year, month, week, day, hour, minute, second, millisecond, format$$1) {
var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber),
invert = scale.invert,
domain = scale.domain;
var formatMillisecond = format$$1(".%L"),
formatSecond = format$$1(":%S"),
formatMinute = format$$1("%I:%M"),
formatHour = format$$1("%I %p"),
formatDay = format$$1("%a %d"),
formatWeek = format$$1("%b %d"),
formatMonth = format$$1("%B"),
formatYear = format$$1("%Y");
var tickIntervals = [
[second, 1, durationSecond],
[second, 5, 5 * durationSecond],
[second, 15, 15 * durationSecond],
[second, 30, 30 * durationSecond],
[minute, 1, durationMinute],
[minute, 5, 5 * durationMinute],
[minute, 15, 15 * durationMinute],
[minute, 30, 30 * durationMinute],
[ hour, 1, durationHour ],
[ hour, 3, 3 * durationHour ],
[ hour, 6, 6 * durationHour ],
[ hour, 12, 12 * durationHour ],
[ day, 1, durationDay ],
[ day, 2, 2 * durationDay ],
[ week, 1, durationWeek ],
[ month, 1, durationMonth ],
[ month, 3, 3 * durationMonth ],
[ year, 1, durationYear ]
];
function tickFormat(date) {
return (second(date) < date ? formatMillisecond
: minute(date) < date ? formatSecond
: hour(date) < date ? formatMinute
: day(date) < date ? formatHour
: month(date) < date ? (week(date) < date ? formatDay : formatWeek)
: year(date) < date ? formatMonth
: formatYear)(date);
}
function tickInterval(interval, start, stop, step) {
if (interval == null) interval = 10;
// If a desired tick count is specified, pick a reasonable tick interval
// based on the extent of the domain and a rough estimate of tick size.
// Otherwise, assume interval is already a time interval and use it.
if (typeof interval === "number") {
var target = Math.abs(stop - start) / interval,
i = d3Array.bisector(function(i) { return i[2]; }).right(tickIntervals, target);
if (i === tickIntervals.length) {
step = d3Array.tickStep(start / durationYear, stop / durationYear, interval);
interval = year;
} else if (i) {
i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
step = i[1];
interval = i[0];
} else {
step = Math.max(d3Array.tickStep(start, stop, interval), 1);
interval = millisecond;
}
}
return step == null ? interval : interval.every(step);
}
scale.invert = function(y) {
return new Date(invert(y));
};
scale.domain = function(_) {
return arguments.length ? domain(map$1.call(_, number$1)) : domain().map(date);
};
scale.ticks = function(interval, step) {
var d = domain(),
t0 = d[0],
t1 = d[d.length - 1],
r = t1 < t0,
t;
if (r) t = t0, t0 = t1, t1 = t;
t = tickInterval(interval, t0, t1, step);
t = t ? t.range(t0, t1 + 1) : []; // inclusive stop
return r ? t.reverse() : t;
};
scale.tickFormat = function(count, specifier) {
return specifier == null ? tickFormat : format$$1(specifier);
};
scale.nice = function(interval, step) {
var d = domain();
return (interval = tickInterval(interval, d[0], d[d.length - 1], step))
? domain(nice(d, interval))
: scale;
};
scale.copy = function() {
return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format$$1));
};
return scale;
}
function time() {
return calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);
}
function utcTime() {
return calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);
}
function sequential(interpolator) {
var x0 = 0,
x1 = 1,
k10 = 1,
clamp = false;
function scale(x) {
var t = (x - x0) * k10;
return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);
}
scale.domain = function(_) {
return arguments.length ? (x0 = +_[0], x1 = +_[1], k10 = x0 === x1 ? 0 : 1 / (x1 - x0), scale) : [x0, x1];
};
scale.clamp = function(_) {
return arguments.length ? (clamp = !!_, scale) : clamp;
};
scale.interpolator = function(_) {
return arguments.length ? (interpolator = _, scale) : interpolator;
};
scale.copy = function() {
return sequential(interpolator).domain([x0, x1]).clamp(clamp);
};
return linearish(scale);
}
function diverging(interpolator) {
var x0 = 0,
x1 = 0.5,
x2 = 1,
k10 = 1,
k21 = 1,
clamp = false;
function scale(x) {
var t = 0.5 + ((x = +x) - x1) * (x < x1 ? k10 : k21);
return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);
}
scale.domain = function(_) {
return arguments.length ? (x0 = +_[0], x1 = +_[1], x2 = +_[2], k10 = x0 === x1 ? 0 : 0.5 / (x1 - x0), k21 = x1 === x2 ? 0 : 0.5 / (x2 - x1), scale) : [x0, x1, x2];
};
scale.clamp = function(_) {
return arguments.length ? (clamp = !!_, scale) : clamp;
};
scale.interpolator = function(_) {
return arguments.length ? (interpolator = _, scale) : interpolator;
};
scale.copy = function() {
return diverging(interpolator).domain([x0, x1, x2]).clamp(clamp);
};
return linearish(scale);
}
exports.scaleBand = band;
exports.scalePoint = point;
exports.scaleIdentity = identity;
exports.scaleLinear = linear;
exports.scaleLog = log;
exports.scaleOrdinal = ordinal;
exports.scaleImplicit = implicit;
exports.scalePow = pow;
exports.scaleSqrt = sqrt;
exports.scaleQuantile = quantile$1;
exports.scaleQuantize = quantize;
exports.scaleThreshold = threshold;
exports.scaleTime = time;
exports.scaleUtc = utcTime;
exports.scaleSequential = sequential;
exports.scaleDiverging = diverging;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-array":1,"d3-collection":2,"d3-format":8,"d3-interpolate":10,"d3-time":14,"d3-time-format":13}],12:[function(require,module,exports){
// https://d3js.org/d3-selection/ Version 1.3.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var xhtml = "http://www.w3.org/1999/xhtml";
var namespaces = {
svg: "http://www.w3.org/2000/svg",
xhtml: xhtml,
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/"
};
function namespace(name) {
var prefix = name += "", i = prefix.indexOf(":");
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;
}
function creatorInherit(name) {
return function() {
var document = this.ownerDocument,
uri = this.namespaceURI;
return uri === xhtml && document.documentElement.namespaceURI === xhtml
? document.createElement(name)
: document.createElementNS(uri, name);
};
}
function creatorFixed(fullname) {
return function() {
return this.ownerDocument.createElementNS(fullname.space, fullname.local);
};
}
function creator(name) {
var fullname = namespace(name);
return (fullname.local
? creatorFixed
: creatorInherit)(fullname);
}
function none() {}
function selector(selector) {
return selector == null ? none : function() {
return this.querySelector(selector);
};
}
function selection_select(select) {
if (typeof select !== "function") select = selector(select);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
subgroup[i] = subnode;
}
}
}
return new Selection(subgroups, this._parents);
}
function empty() {
return [];
}
function selectorAll(selector) {
return selector == null ? empty : function() {
return this.querySelectorAll(selector);
};
}
function selection_selectAll(select) {
if (typeof select !== "function") select = selectorAll(select);
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
subgroups.push(select.call(node, node.__data__, i, group));
parents.push(node);
}
}
}
return new Selection(subgroups, parents);
}
var matcher = function(selector) {
return function() {
return this.matches(selector);
};
};
if (typeof document !== "undefined") {
var element = document.documentElement;
if (!element.matches) {
var vendorMatches = element.webkitMatchesSelector
|| element.msMatchesSelector
|| element.mozMatchesSelector
|| element.oMatchesSelector;
matcher = function(selector) {
return function() {
return vendorMatches.call(this, selector);
};
};
}
}
var matcher$1 = matcher;
function selection_filter(match) {
if (typeof match !== "function") match = matcher$1(match);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
subgroup.push(node);
}
}
}
return new Selection(subgroups, this._parents);
}
function sparse(update) {
return new Array(update.length);
}
function selection_enter() {
return new Selection(this._enter || this._groups.map(sparse), this._parents);
}
function EnterNode(parent, datum) {
this.ownerDocument = parent.ownerDocument;
this.namespaceURI = parent.namespaceURI;
this._next = null;
this._parent = parent;
this.__data__ = datum;
}
EnterNode.prototype = {
constructor: EnterNode,
appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
querySelector: function(selector) { return this._parent.querySelector(selector); },
querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }
};
function constant(x) {
return function() {
return x;
};
}
var keyPrefix = "$"; // Protect against keys like “__proto__”.
function bindIndex(parent, group, enter, update, exit, data) {
var i = 0,
node,
groupLength = group.length,
dataLength = data.length;
// Put any non-null nodes that fit into update.
// Put any null nodes into enter.
// Put any remaining data into enter.
for (; i < dataLength; ++i) {
if (node = group[i]) {
node.__data__ = data[i];
update[i] = node;
} else {
enter[i] = new EnterNode(parent, data[i]);
}
}
// Put any non-null nodes that don’t fit into exit.
for (; i < groupLength; ++i) {
if (node = group[i]) {
exit[i] = node;
}
}
}
function bindKey(parent, group, enter, update, exit, data, key) {
var i,
node,
nodeByKeyValue = {},
groupLength = group.length,
dataLength = data.length,
keyValues = new Array(groupLength),
keyValue;
// Compute the key for each node.
// If multiple nodes have the same key, the duplicates are added to exit.
for (i = 0; i < groupLength; ++i) {
if (node = group[i]) {
keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);
if (keyValue in nodeByKeyValue) {
exit[i] = node;
} else {
nodeByKeyValue[keyValue] = node;
}
}
}
// Compute the key for each datum.
// If there a node associated with this key, join and add it to update.
// If there is not (or the key is a duplicate), add it to enter.
for (i = 0; i < dataLength; ++i) {
keyValue = keyPrefix + key.call(parent, data[i], i, data);
if (node = nodeByKeyValue[keyValue]) {
update[i] = node;
node.__data__ = data[i];
nodeByKeyValue[keyValue] = null;
} else {
enter[i] = new EnterNode(parent, data[i]);
}
}
// Add any remaining nodes that were not bound to data to exit.
for (i = 0; i < groupLength; ++i) {
if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {
exit[i] = node;
}
}
}
function selection_data(value, key) {
if (!value) {
data = new Array(this.size()), j = -1;
this.each(function(d) { data[++j] = d; });
return data;
}
var bind = key ? bindKey : bindIndex,
parents = this._parents,
groups = this._groups;
if (typeof value !== "function") value = constant(value);
for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
var parent = parents[j],
group = groups[j],
groupLength = group.length,
data = value.call(parent, parent && parent.__data__, j, parents),
dataLength = data.length,
enterGroup = enter[j] = new Array(dataLength),
updateGroup = update[j] = new Array(dataLength),
exitGroup = exit[j] = new Array(groupLength);
bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
// Now connect the enter nodes to their following update node, such that
// appendChild can insert the materialized enter node before this node,
// rather than at the end of the parent node.
for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
if (previous = enterGroup[i0]) {
if (i0 >= i1) i1 = i0 + 1;
while (!(next = updateGroup[i1]) && ++i1 < dataLength);
previous._next = next || null;
}
}
}
update = new Selection(update, parents);
update._enter = enter;
update._exit = exit;
return update;
}
function selection_exit() {
return new Selection(this._exit || this._groups.map(sparse), this._parents);
}
function selection_merge(selection$$1) {
for (var groups0 = this._groups, groups1 = selection$$1._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
if (node = group0[i] || group1[i]) {
merge[i] = node;
}
}
}
for (; j < m0; ++j) {
merges[j] = groups0[j];
}
return new Selection(merges, this._parents);
}
function selection_order() {
for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
if (node = group[i]) {
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
next = node;
}
}
}
return this;
}
function selection_sort(compare) {
if (!compare) compare = ascending;
function compareNode(a, b) {
return a && b ? compare(a.__data__, b.__data__) : !a - !b;
}
for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
if (node = group[i]) {
sortgroup[i] = node;
}
}
sortgroup.sort(compareNode);
}
return new Selection(sortgroups, this._parents).order();
}
function ascending(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
}
function selection_call() {
var callback = arguments[0];
arguments[0] = this;
callback.apply(null, arguments);
return this;
}
function selection_nodes() {
var nodes = new Array(this.size()), i = -1;
this.each(function() { nodes[++i] = this; });
return nodes;
}
function selection_node() {
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
var node = group[i];
if (node) return node;
}
}
return null;
}
function selection_size() {
var size = 0;
this.each(function() { ++size; });
return size;
}
function selection_empty() {
return !this.node();
}
function selection_each(callback) {
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
if (node = group[i]) callback.call(node, node.__data__, i, group);
}
}
return this;
}
function attrRemove(name) {
return function() {
this.removeAttribute(name);
};
}
function attrRemoveNS(fullname) {
return function() {
this.removeAttributeNS(fullname.space, fullname.local);
};
}
function attrConstant(name, value) {
return function() {
this.setAttribute(name, value);
};
}
function attrConstantNS(fullname, value) {
return function() {
this.setAttributeNS(fullname.space, fullname.local, value);
};
}
function attrFunction(name, value) {
return function() {
var v = value.apply(this, arguments);
if (v == null) this.removeAttribute(name);
else this.setAttribute(name, v);
};
}
function attrFunctionNS(fullname, value) {
return function() {
var v = value.apply(this, arguments);
if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
else this.setAttributeNS(fullname.space, fullname.local, v);
};
}
function selection_attr(name, value) {
var fullname = namespace(name);
if (arguments.length < 2) {
var node = this.node();
return fullname.local
? node.getAttributeNS(fullname.space, fullname.local)
: node.getAttribute(fullname);
}
return this.each((value == null
? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
? (fullname.local ? attrFunctionNS : attrFunction)
: (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
}
function defaultView(node) {
return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
|| (node.document && node) // node is a Window
|| node.defaultView; // node is a Document
}
function styleRemove(name) {
return function() {
this.style.removeProperty(name);
};
}
function styleConstant(name, value, priority) {
return function() {
this.style.setProperty(name, value, priority);
};
}
function styleFunction(name, value, priority) {
return function() {
var v = value.apply(this, arguments);
if (v == null) this.style.removeProperty(name);
else this.style.setProperty(name, v, priority);
};
}
function selection_style(name, value, priority) {
return arguments.length > 1
? this.each((value == null
? styleRemove : typeof value === "function"
? styleFunction
: styleConstant)(name, value, priority == null ? "" : priority))
: styleValue(this.node(), name);
}
function styleValue(node, name) {
return node.style.getPropertyValue(name)
|| defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
}
function propertyRemove(name) {
return function() {
delete this[name];
};
}
function propertyConstant(name, value) {
return function() {
this[name] = value;
};
}
function propertyFunction(name, value) {
return function() {
var v = value.apply(this, arguments);
if (v == null) delete this[name];
else this[name] = v;
};
}
function selection_property(name, value) {
return arguments.length > 1
? this.each((value == null
? propertyRemove : typeof value === "function"
? propertyFunction
: propertyConstant)(name, value))
: this.node()[name];
}
function classArray(string) {
return string.trim().split(/^|\s+/);
}
function classList(node) {
return node.classList || new ClassList(node);
}
function ClassList(node) {
this._node = node;
this._names = classArray(node.getAttribute("class") || "");
}
ClassList.prototype = {
add: function(name) {
var i = this._names.indexOf(name);
if (i < 0) {
this._names.push(name);
this._node.setAttribute("class", this._names.join(" "));
}
},
remove: function(name) {
var i = this._names.indexOf(name);
if (i >= 0) {
this._names.splice(i, 1);
this._node.setAttribute("class", this._names.join(" "));
}
},
contains: function(name) {
return this._names.indexOf(name) >= 0;
}
};
function classedAdd(node, names) {
var list = classList(node), i = -1, n = names.length;
while (++i < n) list.add(names[i]);
}
function classedRemove(node, names) {
var list = classList(node), i = -1, n = names.length;
while (++i < n) list.remove(names[i]);
}
function classedTrue(names) {
return function() {
classedAdd(this, names);
};
}
function classedFalse(names) {
return function() {
classedRemove(this, names);
};
}
function classedFunction(names, value) {
return function() {
(value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
};
}
function selection_classed(name, value) {
var names = classArray(name + "");
if (arguments.length < 2) {
var list = classList(this.node()), i = -1, n = names.length;
while (++i < n) if (!list.contains(names[i])) return false;
return true;
}
return this.each((typeof value === "function"
? classedFunction : value
? classedTrue
: classedFalse)(names, value));
}
function textRemove() {
this.textContent = "";
}
function textConstant(value) {
return function() {
this.textContent = value;
};
}
function textFunction(value) {
return function() {
var v = value.apply(this, arguments);
this.textContent = v == null ? "" : v;
};
}
function selection_text(value) {
return arguments.length
? this.each(value == null
? textRemove : (typeof value === "function"
? textFunction
: textConstant)(value))
: this.node().textContent;
}
function htmlRemove() {
this.innerHTML = "";
}
function htmlConstant(value) {
return function() {
this.innerHTML = value;
};
}
function htmlFunction(value) {
return function() {
var v = value.apply(this, arguments);
this.innerHTML = v == null ? "" : v;
};
}
function selection_html(value) {
return arguments.length
? this.each(value == null
? htmlRemove : (typeof value === "function"
? htmlFunction
: htmlConstant)(value))
: this.node().innerHTML;
}
function raise() {
if (this.nextSibling) this.parentNode.appendChild(this);
}
function selection_raise() {
return this.each(raise);
}
function lower() {
if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
}
function selection_lower() {
return this.each(lower);
}
function selection_append(name) {
var create = typeof name === "function" ? name : creator(name);
return this.select(function() {
return this.appendChild(create.apply(this, arguments));
});
}
function constantNull() {
return null;
}
function selection_insert(name, before) {
var create = typeof name === "function" ? name : creator(name),
select = before == null ? constantNull : typeof before === "function" ? before : selector(before);
return this.select(function() {
return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
});
}
function remove() {
var parent = this.parentNode;
if (parent) parent.removeChild(this);
}
function selection_remove() {
return this.each(remove);
}
function selection_cloneShallow() {
return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);
}
function selection_cloneDeep() {
return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);
}
function selection_clone(deep) {
return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
}
function selection_datum(value) {
return arguments.length
? this.property("__data__", value)
: this.node().__data__;
}
var filterEvents = {};
exports.event = null;
if (typeof document !== "undefined") {
var element$1 = document.documentElement;
if (!("onmouseenter" in element$1)) {
filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"};
}
}
function filterContextListener(listener, index, group) {
listener = contextListener(listener, index, group);
return function(event) {
var related = event.relatedTarget;
if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {
listener.call(this, event);
}
};
}
function contextListener(listener, index, group) {
return function(event1) {
var event0 = exports.event; // Events can be reentrant (e.g., focus).
exports.event = event1;
try {
listener.call(this, this.__data__, index, group);
} finally {
exports.event = event0;
}
};
}
function parseTypenames(typenames) {
return typenames.trim().split(/^|\s+/).map(function(t) {
var name = "", i = t.indexOf(".");
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
return {type: t, name: name};
});
}
function onRemove(typename) {
return function() {
var on = this.__on;
if (!on) return;
for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
this.removeEventListener(o.type, o.listener, o.capture);
} else {
on[++i] = o;
}
}
if (++i) on.length = i;
else delete this.__on;
};
}
function onAdd(typename, value, capture) {
var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;
return function(d, i, group) {
var on = this.__on, o, listener = wrap(value, i, group);
if (on) for (var j = 0, m = on.length; j < m; ++j) {
if ((o = on[j]).type === typename.type && o.name === typename.name) {
this.removeEventListener(o.type, o.listener, o.capture);
this.addEventListener(o.type, o.listener = listener, o.capture = capture);
o.value = value;
return;
}
}
this.addEventListener(typename.type, listener, capture);
o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};
if (!on) this.__on = [o];
else on.push(o);
};
}
function selection_on(typename, value, capture) {
var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;
if (arguments.length < 2) {
var on = this.node().__on;
if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
for (i = 0, o = on[j]; i < n; ++i) {
if ((t = typenames[i]).type === o.type && t.name === o.name) {
return o.value;
}
}
}
return;
}
on = value ? onAdd : onRemove;
if (capture == null) capture = false;
for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));
return this;
}
function customEvent(event1, listener, that, args) {
var event0 = exports.event;
event1.sourceEvent = exports.event;
exports.event = event1;
try {
return listener.apply(that, args);
} finally {
exports.event = event0;
}
}
function dispatchEvent(node, type, params) {
var window = defaultView(node),
event = window.CustomEvent;
if (typeof event === "function") {
event = new event(type, params);
} else {
event = window.document.createEvent("Event");
if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
else event.initEvent(type, false, false);
}
node.dispatchEvent(event);
}
function dispatchConstant(type, params) {
return function() {
return dispatchEvent(this, type, params);
};
}
function dispatchFunction(type, params) {
return function() {
return dispatchEvent(this, type, params.apply(this, arguments));
};
}
function selection_dispatch(type, params) {
return this.each((typeof params === "function"
? dispatchFunction
: dispatchConstant)(type, params));
}
var root = [null];
function Selection(groups, parents) {
this._groups = groups;
this._parents = parents;
}
function selection() {
return new Selection([[document.documentElement]], root);
}
Selection.prototype = selection.prototype = {
constructor: Selection,
select: selection_select,
selectAll: selection_selectAll,
filter: selection_filter,
data: selection_data,
enter: selection_enter,
exit: selection_exit,
merge: selection_merge,
order: selection_order,
sort: selection_sort,
call: selection_call,
nodes: selection_nodes,
node: selection_node,
size: selection_size,
empty: selection_empty,
each: selection_each,
attr: selection_attr,
style: selection_style,
property: selection_property,
classed: selection_classed,
text: selection_text,
html: selection_html,
raise: selection_raise,
lower: selection_lower,
append: selection_append,
insert: selection_insert,
remove: selection_remove,
clone: selection_clone,
datum: selection_datum,
on: selection_on,
dispatch: selection_dispatch
};
function select(selector) {
return typeof selector === "string"
? new Selection([[document.querySelector(selector)]], [document.documentElement])
: new Selection([[selector]], root);
}
function create(name) {
return select(creator(name).call(document.documentElement));
}
var nextId = 0;
function local() {
return new Local;
}
function Local() {
this._ = "@" + (++nextId).toString(36);
}
Local.prototype = local.prototype = {
constructor: Local,
get: function(node) {
var id = this._;
while (!(id in node)) if (!(node = node.parentNode)) return;
return node[id];
},
set: function(node, value) {
return node[this._] = value;
},
remove: function(node) {
return this._ in node && delete node[this._];
},
toString: function() {
return this._;
}
};
function sourceEvent() {
var current = exports.event, source;
while (source = current.sourceEvent) current = source;
return current;
}
function point(node, event) {
var svg = node.ownerSVGElement || node;
if (svg.createSVGPoint) {
var point = svg.createSVGPoint();
point.x = event.clientX, point.y = event.clientY;
point = point.matrixTransform(node.getScreenCTM().inverse());
return [point.x, point.y];
}
var rect = node.getBoundingClientRect();
return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];
}
function mouse(node) {
var event = sourceEvent();
if (event.changedTouches) event = event.changedTouches[0];
return point(node, event);
}
function selectAll(selector) {
return typeof selector === "string"
? new Selection([document.querySelectorAll(selector)], [document.documentElement])
: new Selection([selector == null ? [] : selector], root);
}
function touch(node, touches, identifier) {
if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;
for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {
if ((touch = touches[i]).identifier === identifier) {
return point(node, touch);
}
}
return null;
}
function touches(node, touches) {
if (touches == null) touches = sourceEvent().touches;
for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {
points[i] = point(node, touches[i]);
}
return points;
}
exports.create = create;
exports.creator = creator;
exports.local = local;
exports.matcher = matcher$1;
exports.mouse = mouse;
exports.namespace = namespace;
exports.namespaces = namespaces;
exports.clientPoint = point;
exports.select = select;
exports.selectAll = selectAll;
exports.selection = selection;
exports.selector = selector;
exports.selectorAll = selectorAll;
exports.style = styleValue;
exports.touch = touch;
exports.touches = touches;
exports.window = defaultView;
exports.customEvent = customEvent;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],13:[function(require,module,exports){
// https://d3js.org/d3-time-format/ Version 2.1.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3));
}(this, (function (exports,d3Time) { 'use strict';
function localDate(d) {
if (0 <= d.y && d.y < 100) {
var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);
date.setFullYear(d.y);
return date;
}
return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);
}
function utcDate(d) {
if (0 <= d.y && d.y < 100) {
var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));
date.setUTCFullYear(d.y);
return date;
}
return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));
}
function newYear(y) {
return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};
}
function formatLocale(locale) {
var locale_dateTime = locale.dateTime,
locale_date = locale.date,
locale_time = locale.time,
locale_periods = locale.periods,
locale_weekdays = locale.days,
locale_shortWeekdays = locale.shortDays,
locale_months = locale.months,
locale_shortMonths = locale.shortMonths;
var periodRe = formatRe(locale_periods),
periodLookup = formatLookup(locale_periods),
weekdayRe = formatRe(locale_weekdays),
weekdayLookup = formatLookup(locale_weekdays),
shortWeekdayRe = formatRe(locale_shortWeekdays),
shortWeekdayLookup = formatLookup(locale_shortWeekdays),
monthRe = formatRe(locale_months),
monthLookup = formatLookup(locale_months),
shortMonthRe = formatRe(locale_shortMonths),
shortMonthLookup = formatLookup(locale_shortMonths);
var formats = {
"a": formatShortWeekday,
"A": formatWeekday,
"b": formatShortMonth,
"B": formatMonth,
"c": null,
"d": formatDayOfMonth,
"e": formatDayOfMonth,
"f": formatMicroseconds,
"H": formatHour24,
"I": formatHour12,
"j": formatDayOfYear,
"L": formatMilliseconds,
"m": formatMonthNumber,
"M": formatMinutes,
"p": formatPeriod,
"Q": formatUnixTimestamp,
"s": formatUnixTimestampSeconds,
"S": formatSeconds,
"u": formatWeekdayNumberMonday,
"U": formatWeekNumberSunday,
"V": formatWeekNumberISO,
"w": formatWeekdayNumberSunday,
"W": formatWeekNumberMonday,
"x": null,
"X": null,
"y": formatYear,
"Y": formatFullYear,
"Z": formatZone,
"%": formatLiteralPercent
};
var utcFormats = {
"a": formatUTCShortWeekday,
"A": formatUTCWeekday,
"b": formatUTCShortMonth,
"B": formatUTCMonth,
"c": null,
"d": formatUTCDayOfMonth,
"e": formatUTCDayOfMonth,
"f": formatUTCMicroseconds,
"H": formatUTCHour24,
"I": formatUTCHour12,
"j": formatUTCDayOfYear,
"L": formatUTCMilliseconds,
"m": formatUTCMonthNumber,
"M": formatUTCMinutes,
"p": formatUTCPeriod,
"Q": formatUnixTimestamp,
"s": formatUnixTimestampSeconds,
"S": formatUTCSeconds,
"u": formatUTCWeekdayNumberMonday,
"U": formatUTCWeekNumberSunday,
"V": formatUTCWeekNumberISO,
"w": formatUTCWeekdayNumberSunday,
"W": formatUTCWeekNumberMonday,
"x": null,
"X": null,
"y": formatUTCYear,
"Y": formatUTCFullYear,
"Z": formatUTCZone,
"%": formatLiteralPercent
};
var parses = {
"a": parseShortWeekday,
"A": parseWeekday,
"b": parseShortMonth,
"B": parseMonth,
"c": parseLocaleDateTime,
"d": parseDayOfMonth,
"e": parseDayOfMonth,
"f": parseMicroseconds,
"H": parseHour24,
"I": parseHour24,
"j": parseDayOfYear,
"L": parseMilliseconds,
"m": parseMonthNumber,
"M": parseMinutes,
"p": parsePeriod,
"Q": parseUnixTimestamp,
"s": parseUnixTimestampSeconds,
"S": parseSeconds,
"u": parseWeekdayNumberMonday,
"U": parseWeekNumberSunday,
"V": parseWeekNumberISO,
"w": parseWeekdayNumberSunday,
"W": parseWeekNumberMonday,
"x": parseLocaleDate,
"X": parseLocaleTime,
"y": parseYear,
"Y": parseFullYear,
"Z": parseZone,
"%": parseLiteralPercent
};
// These recursive directive definitions must be deferred.
formats.x = newFormat(locale_date, formats);
formats.X = newFormat(locale_time, formats);
formats.c = newFormat(locale_dateTime, formats);
utcFormats.x = newFormat(locale_date, utcFormats);
utcFormats.X = newFormat(locale_time, utcFormats);
utcFormats.c = newFormat(locale_dateTime, utcFormats);
function newFormat(specifier, formats) {
return function(date) {
var string = [],
i = -1,
j = 0,
n = specifier.length,
c,
pad,
format;
if (!(date instanceof Date)) date = new Date(+date);
while (++i < n) {
if (specifier.charCodeAt(i) === 37) {
string.push(specifier.slice(j, i));
if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);
else pad = c === "e" ? " " : "0";
if (format = formats[c]) c = format(date, pad);
string.push(c);
j = i + 1;
}
}
string.push(specifier.slice(j, i));
return string.join("");
};
}
function newParse(specifier, newDate) {
return function(string) {
var d = newYear(1900),
i = parseSpecifier(d, specifier, string += "", 0),
week, day;
if (i != string.length) return null;
// If a UNIX timestamp is specified, return it.
if ("Q" in d) return new Date(d.Q);
// The am-pm flag is 0 for AM, and 1 for PM.
if ("p" in d) d.H = d.H % 12 + d.p * 12;
// Convert day-of-week and week-of-year to day-of-year.
if ("V" in d) {
if (d.V < 1 || d.V > 53) return null;
if (!("w" in d)) d.w = 1;
if ("Z" in d) {
week = utcDate(newYear(d.y)), day = week.getUTCDay();
week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week);
week = d3Time.utcDay.offset(week, (d.V - 1) * 7);
d.y = week.getUTCFullYear();
d.m = week.getUTCMonth();
d.d = week.getUTCDate() + (d.w + 6) % 7;
} else {
week = newDate(newYear(d.y)), day = week.getDay();
week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week);
week = d3Time.timeDay.offset(week, (d.V - 1) * 7);
d.y = week.getFullYear();
d.m = week.getMonth();
d.d = week.getDate() + (d.w + 6) % 7;
}
} else if ("W" in d || "U" in d) {
if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0;
day = "Z" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();
d.m = 0;
d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;
}
// If a time zone is specified, all fields are interpreted as UTC and then
// offset according to the specified time zone.
if ("Z" in d) {
d.H += d.Z / 100 | 0;
d.M += d.Z % 100;
return utcDate(d);
}
// Otherwise, all fields are in local time.
return newDate(d);
};
}
function parseSpecifier(d, specifier, string, j) {
var i = 0,
n = specifier.length,
m = string.length,
c,
parse;
while (i < n) {
if (j >= m) return -1;
c = specifier.charCodeAt(i++);
if (c === 37) {
c = specifier.charAt(i++);
parse = parses[c in pads ? specifier.charAt(i++) : c];
if (!parse || ((j = parse(d, string, j)) < 0)) return -1;
} else if (c != string.charCodeAt(j++)) {
return -1;
}
}
return j;
}
function parsePeriod(d, string, i) {
var n = periodRe.exec(string.slice(i));
return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseShortWeekday(d, string, i) {
var n = shortWeekdayRe.exec(string.slice(i));
return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseWeekday(d, string, i) {
var n = weekdayRe.exec(string.slice(i));
return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseShortMonth(d, string, i) {
var n = shortMonthRe.exec(string.slice(i));
return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseMonth(d, string, i) {
var n = monthRe.exec(string.slice(i));
return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseLocaleDateTime(d, string, i) {
return parseSpecifier(d, locale_dateTime, string, i);
}
function parseLocaleDate(d, string, i) {
return parseSpecifier(d, locale_date, string, i);
}
function parseLocaleTime(d, string, i) {
return parseSpecifier(d, locale_time, string, i);
}
function formatShortWeekday(d) {
return locale_shortWeekdays[d.getDay()];
}
function formatWeekday(d) {
return locale_weekdays[d.getDay()];
}
function formatShortMonth(d) {
return locale_shortMonths[d.getMonth()];
}
function formatMonth(d) {
return locale_months[d.getMonth()];
}
function formatPeriod(d) {
return locale_periods[+(d.getHours() >= 12)];
}
function formatUTCShortWeekday(d) {
return locale_shortWeekdays[d.getUTCDay()];
}
function formatUTCWeekday(d) {
return locale_weekdays[d.getUTCDay()];
}
function formatUTCShortMonth(d) {
return locale_shortMonths[d.getUTCMonth()];
}
function formatUTCMonth(d) {
return locale_months[d.getUTCMonth()];
}
function formatUTCPeriod(d) {
return locale_periods[+(d.getUTCHours() >= 12)];
}
return {
format: function(specifier) {
var f = newFormat(specifier += "", formats);
f.toString = function() { return specifier; };
return f;
},
parse: function(specifier) {
var p = newParse(specifier += "", localDate);
p.toString = function() { return specifier; };
return p;
},
utcFormat: function(specifier) {
var f = newFormat(specifier += "", utcFormats);
f.toString = function() { return specifier; };
return f;
},
utcParse: function(specifier) {
var p = newParse(specifier, utcDate);
p.toString = function() { return specifier; };
return p;
}
};
}
var pads = {"-": "", "_": " ", "0": "0"};
var numberRe = /^\s*\d+/;
var percentRe = /^%/;
var requoteRe = /[\\^$*+?|[\]().{}]/g;
function pad(value, fill, width) {
var sign = value < 0 ? "-" : "",
string = (sign ? -value : value) + "",
length = string.length;
return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
}
function requote(s) {
return s.replace(requoteRe, "\\$&");
}
function formatRe(names) {
return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i");
}
function formatLookup(names) {
var map = {}, i = -1, n = names.length;
while (++i < n) map[names[i].toLowerCase()] = i;
return map;
}
function parseWeekdayNumberSunday(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 1));
return n ? (d.w = +n[0], i + n[0].length) : -1;
}
function parseWeekdayNumberMonday(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 1));
return n ? (d.u = +n[0], i + n[0].length) : -1;
}
function parseWeekNumberSunday(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.U = +n[0], i + n[0].length) : -1;
}
function parseWeekNumberISO(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.V = +n[0], i + n[0].length) : -1;
}
function parseWeekNumberMonday(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.W = +n[0], i + n[0].length) : -1;
}
function parseFullYear(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 4));
return n ? (d.y = +n[0], i + n[0].length) : -1;
}
function parseYear(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;
}
function parseZone(d, string, i) {
var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6));
return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1;
}
function parseMonthNumber(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.m = n[0] - 1, i + n[0].length) : -1;
}
function parseDayOfMonth(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.d = +n[0], i + n[0].length) : -1;
}
function parseDayOfYear(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 3));
return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;
}
function parseHour24(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.H = +n[0], i + n[0].length) : -1;
}
function parseMinutes(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.M = +n[0], i + n[0].length) : -1;
}
function parseSeconds(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.S = +n[0], i + n[0].length) : -1;
}
function parseMilliseconds(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 3));
return n ? (d.L = +n[0], i + n[0].length) : -1;
}
function parseMicroseconds(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 6));
return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;
}
function parseLiteralPercent(d, string, i) {
var n = percentRe.exec(string.slice(i, i + 1));
return n ? i + n[0].length : -1;
}
function parseUnixTimestamp(d, string, i) {
var n = numberRe.exec(string.slice(i));
return n ? (d.Q = +n[0], i + n[0].length) : -1;
}
function parseUnixTimestampSeconds(d, string, i) {
var n = numberRe.exec(string.slice(i));
return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;
}
function formatDayOfMonth(d, p) {
return pad(d.getDate(), p, 2);
}
function formatHour24(d, p) {
return pad(d.getHours(), p, 2);
}
function formatHour12(d, p) {
return pad(d.getHours() % 12 || 12, p, 2);
}
function formatDayOfYear(d, p) {
return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);
}
function formatMilliseconds(d, p) {
return pad(d.getMilliseconds(), p, 3);
}
function formatMicroseconds(d, p) {
return formatMilliseconds(d, p) + "000";
}
function formatMonthNumber(d, p) {
return pad(d.getMonth() + 1, p, 2);
}
function formatMinutes(d, p) {
return pad(d.getMinutes(), p, 2);
}
function formatSeconds(d, p) {
return pad(d.getSeconds(), p, 2);
}
function formatWeekdayNumberMonday(d) {
var day = d.getDay();
return day === 0 ? 7 : day;
}
function formatWeekNumberSunday(d, p) {
return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);
}
function formatWeekNumberISO(d, p) {
var day = d.getDay();
d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);
return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2);
}
function formatWeekdayNumberSunday(d) {
return d.getDay();
}
function formatWeekNumberMonday(d, p) {
return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);
}
function formatYear(d, p) {
return pad(d.getFullYear() % 100, p, 2);
}
function formatFullYear(d, p) {
return pad(d.getFullYear() % 10000, p, 4);
}
function formatZone(d) {
var z = d.getTimezoneOffset();
return (z > 0 ? "-" : (z *= -1, "+"))
+ pad(z / 60 | 0, "0", 2)
+ pad(z % 60, "0", 2);
}
function formatUTCDayOfMonth(d, p) {
return pad(d.getUTCDate(), p, 2);
}
function formatUTCHour24(d, p) {
return pad(d.getUTCHours(), p, 2);
}
function formatUTCHour12(d, p) {
return pad(d.getUTCHours() % 12 || 12, p, 2);
}
function formatUTCDayOfYear(d, p) {
return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);
}
function formatUTCMilliseconds(d, p) {
return pad(d.getUTCMilliseconds(), p, 3);
}
function formatUTCMicroseconds(d, p) {
return formatUTCMilliseconds(d, p) + "000";
}
function formatUTCMonthNumber(d, p) {
return pad(d.getUTCMonth() + 1, p, 2);
}
function formatUTCMinutes(d, p) {
return pad(d.getUTCMinutes(), p, 2);
}
function formatUTCSeconds(d, p) {
return pad(d.getUTCSeconds(), p, 2);
}
function formatUTCWeekdayNumberMonday(d) {
var dow = d.getUTCDay();
return dow === 0 ? 7 : dow;
}
function formatUTCWeekNumberSunday(d, p) {
return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);
}
function formatUTCWeekNumberISO(d, p) {
var day = d.getUTCDay();
d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);
return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2);
}
function formatUTCWeekdayNumberSunday(d) {
return d.getUTCDay();
}
function formatUTCWeekNumberMonday(d, p) {
return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);
}
function formatUTCYear(d, p) {
return pad(d.getUTCFullYear() % 100, p, 2);
}
function formatUTCFullYear(d, p) {
return pad(d.getUTCFullYear() % 10000, p, 4);
}
function formatUTCZone() {
return "+0000";
}
function formatLiteralPercent() {
return "%";
}
function formatUnixTimestamp(d) {
return +d;
}
function formatUnixTimestampSeconds(d) {
return Math.floor(+d / 1000);
}
var locale;
defaultLocale({
dateTime: "%x, %X",
date: "%-m/%-d/%Y",
time: "%-I:%M:%S %p",
periods: ["AM", "PM"],
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
});
function defaultLocale(definition) {
locale = formatLocale(definition);
exports.timeFormat = locale.format;
exports.timeParse = locale.parse;
exports.utcFormat = locale.utcFormat;
exports.utcParse = locale.utcParse;
return locale;
}
var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ";
function formatIsoNative(date) {
return date.toISOString();
}
var formatIso = Date.prototype.toISOString
? formatIsoNative
: exports.utcFormat(isoSpecifier);
function parseIsoNative(string) {
var date = new Date(string);
return isNaN(date) ? null : date;
}
var parseIso = +new Date("2000-01-01T00:00:00.000Z")
? parseIsoNative
: exports.utcParse(isoSpecifier);
exports.timeFormatDefaultLocale = defaultLocale;
exports.timeFormatLocale = formatLocale;
exports.isoFormat = formatIso;
exports.isoParse = parseIso;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-time":14}],14:[function(require,module,exports){
// https://d3js.org/d3-time/ Version 1.0.8. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var t0 = new Date;
var t1 = new Date;
function newInterval(floori, offseti, count, field) {
function interval(date) {
return floori(date = new Date(+date)), date;
}
interval.floor = interval;
interval.ceil = function(date) {
return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;
};
interval.round = function(date) {
var d0 = interval(date),
d1 = interval.ceil(date);
return date - d0 < d1 - date ? d0 : d1;
};
interval.offset = function(date, step) {
return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;
};
interval.range = function(start, stop, step) {
var range = [], previous;
start = interval.ceil(start);
step = step == null ? 1 : Math.floor(step);
if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date
do range.push(previous = new Date(+start)), offseti(start, step), floori(start);
while (previous < start && start < stop);
return range;
};
interval.filter = function(test) {
return newInterval(function(date) {
if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);
}, function(date, step) {
if (date >= date) {
if (step < 0) while (++step <= 0) {
while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty
} else while (--step >= 0) {
while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty
}
}
});
};
if (count) {
interval.count = function(start, end) {
t0.setTime(+start), t1.setTime(+end);
floori(t0), floori(t1);
return Math.floor(count(t0, t1));
};
interval.every = function(step) {
step = Math.floor(step);
return !isFinite(step) || !(step > 0) ? null
: !(step > 1) ? interval
: interval.filter(field
? function(d) { return field(d) % step === 0; }
: function(d) { return interval.count(0, d) % step === 0; });
};
}
return interval;
}
var millisecond = newInterval(function() {
// noop
}, function(date, step) {
date.setTime(+date + step);
}, function(start, end) {
return end - start;
});
// An optimized implementation for this simple case.
millisecond.every = function(k) {
k = Math.floor(k);
if (!isFinite(k) || !(k > 0)) return null;
if (!(k > 1)) return millisecond;
return newInterval(function(date) {
date.setTime(Math.floor(date / k) * k);
}, function(date, step) {
date.setTime(+date + step * k);
}, function(start, end) {
return (end - start) / k;
});
};
var milliseconds = millisecond.range;
var durationSecond = 1e3;
var durationMinute = 6e4;
var durationHour = 36e5;
var durationDay = 864e5;
var durationWeek = 6048e5;
var second = newInterval(function(date) {
date.setTime(Math.floor(date / durationSecond) * durationSecond);
}, function(date, step) {
date.setTime(+date + step * durationSecond);
}, function(start, end) {
return (end - start) / durationSecond;
}, function(date) {
return date.getUTCSeconds();
});
var seconds = second.range;
var minute = newInterval(function(date) {
date.setTime(Math.floor(date / durationMinute) * durationMinute);
}, function(date, step) {
date.setTime(+date + step * durationMinute);
}, function(start, end) {
return (end - start) / durationMinute;
}, function(date) {
return date.getMinutes();
});
var minutes = minute.range;
var hour = newInterval(function(date) {
var offset = date.getTimezoneOffset() * durationMinute % durationHour;
if (offset < 0) offset += durationHour;
date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);
}, function(date, step) {
date.setTime(+date + step * durationHour);
}, function(start, end) {
return (end - start) / durationHour;
}, function(date) {
return date.getHours();
});
var hours = hour.range;
var day = newInterval(function(date) {
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setDate(date.getDate() + step);
}, function(start, end) {
return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;
}, function(date) {
return date.getDate() - 1;
});
var days = day.range;
function weekday(i) {
return newInterval(function(date) {
date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setDate(date.getDate() + step * 7);
}, function(start, end) {
return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;
});
}
var sunday = weekday(0);
var monday = weekday(1);
var tuesday = weekday(2);
var wednesday = weekday(3);
var thursday = weekday(4);
var friday = weekday(5);
var saturday = weekday(6);
var sundays = sunday.range;
var mondays = monday.range;
var tuesdays = tuesday.range;
var wednesdays = wednesday.range;
var thursdays = thursday.range;
var fridays = friday.range;
var saturdays = saturday.range;
var month = newInterval(function(date) {
date.setDate(1);
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setMonth(date.getMonth() + step);
}, function(start, end) {
return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;
}, function(date) {
return date.getMonth();
});
var months = month.range;
var year = newInterval(function(date) {
date.setMonth(0, 1);
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setFullYear(date.getFullYear() + step);
}, function(start, end) {
return end.getFullYear() - start.getFullYear();
}, function(date) {
return date.getFullYear();
});
// An optimized implementation for this simple case.
year.every = function(k) {
return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {
date.setFullYear(Math.floor(date.getFullYear() / k) * k);
date.setMonth(0, 1);
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setFullYear(date.getFullYear() + step * k);
});
};
var years = year.range;
var utcMinute = newInterval(function(date) {
date.setUTCSeconds(0, 0);
}, function(date, step) {
date.setTime(+date + step * durationMinute);
}, function(start, end) {
return (end - start) / durationMinute;
}, function(date) {
return date.getUTCMinutes();
});
var utcMinutes = utcMinute.range;
var utcHour = newInterval(function(date) {
date.setUTCMinutes(0, 0, 0);
}, function(date, step) {
date.setTime(+date + step * durationHour);
}, function(start, end) {
return (end - start) / durationHour;
}, function(date) {
return date.getUTCHours();
});
var utcHours = utcHour.range;
var utcDay = newInterval(function(date) {
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCDate(date.getUTCDate() + step);
}, function(start, end) {
return (end - start) / durationDay;
}, function(date) {
return date.getUTCDate() - 1;
});
var utcDays = utcDay.range;
function utcWeekday(i) {
return newInterval(function(date) {
date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCDate(date.getUTCDate() + step * 7);
}, function(start, end) {
return (end - start) / durationWeek;
});
}
var utcSunday = utcWeekday(0);
var utcMonday = utcWeekday(1);
var utcTuesday = utcWeekday(2);
var utcWednesday = utcWeekday(3);
var utcThursday = utcWeekday(4);
var utcFriday = utcWeekday(5);
var utcSaturday = utcWeekday(6);
var utcSundays = utcSunday.range;
var utcMondays = utcMonday.range;
var utcTuesdays = utcTuesday.range;
var utcWednesdays = utcWednesday.range;
var utcThursdays = utcThursday.range;
var utcFridays = utcFriday.range;
var utcSaturdays = utcSaturday.range;
var utcMonth = newInterval(function(date) {
date.setUTCDate(1);
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCMonth(date.getUTCMonth() + step);
}, function(start, end) {
return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;
}, function(date) {
return date.getUTCMonth();
});
var utcMonths = utcMonth.range;
var utcYear = newInterval(function(date) {
date.setUTCMonth(0, 1);
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCFullYear(date.getUTCFullYear() + step);
}, function(start, end) {
return end.getUTCFullYear() - start.getUTCFullYear();
}, function(date) {
return date.getUTCFullYear();
});
// An optimized implementation for this simple case.
utcYear.every = function(k) {
return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {
date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);
date.setUTCMonth(0, 1);
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCFullYear(date.getUTCFullYear() + step * k);
});
};
var utcYears = utcYear.range;
exports.timeInterval = newInterval;
exports.timeMillisecond = millisecond;
exports.timeMilliseconds = milliseconds;
exports.utcMillisecond = millisecond;
exports.utcMilliseconds = milliseconds;
exports.timeSecond = second;
exports.timeSeconds = seconds;
exports.utcSecond = second;
exports.utcSeconds = seconds;
exports.timeMinute = minute;
exports.timeMinutes = minutes;
exports.timeHour = hour;
exports.timeHours = hours;
exports.timeDay = day;
exports.timeDays = days;
exports.timeWeek = sunday;
exports.timeWeeks = sundays;
exports.timeSunday = sunday;
exports.timeSundays = sundays;
exports.timeMonday = monday;
exports.timeMondays = mondays;
exports.timeTuesday = tuesday;
exports.timeTuesdays = tuesdays;
exports.timeWednesday = wednesday;
exports.timeWednesdays = wednesdays;
exports.timeThursday = thursday;
exports.timeThursdays = thursdays;
exports.timeFriday = friday;
exports.timeFridays = fridays;
exports.timeSaturday = saturday;
exports.timeSaturdays = saturdays;
exports.timeMonth = month;
exports.timeMonths = months;
exports.timeYear = year;
exports.timeYears = years;
exports.utcMinute = utcMinute;
exports.utcMinutes = utcMinutes;
exports.utcHour = utcHour;
exports.utcHours = utcHours;
exports.utcDay = utcDay;
exports.utcDays = utcDays;
exports.utcWeek = utcSunday;
exports.utcWeeks = utcSundays;
exports.utcSunday = utcSunday;
exports.utcSundays = utcSundays;
exports.utcMonday = utcMonday;
exports.utcMondays = utcMondays;
exports.utcTuesday = utcTuesday;
exports.utcTuesdays = utcTuesdays;
exports.utcWednesday = utcWednesday;
exports.utcWednesdays = utcWednesdays;
exports.utcThursday = utcThursday;
exports.utcThursdays = utcThursdays;
exports.utcFriday = utcFriday;
exports.utcFridays = utcFridays;
exports.utcSaturday = utcSaturday;
exports.utcSaturdays = utcSaturdays;
exports.utcMonth = utcMonth;
exports.utcMonths = utcMonths;
exports.utcYear = utcYear;
exports.utcYears = utcYears;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],15:[function(require,module,exports){
// https://d3js.org/d3-timer/ Version 1.0.7. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var frame = 0;
var timeout = 0;
var interval = 0;
var pokeDelay = 1000;
var taskHead;
var taskTail;
var clockLast = 0;
var clockNow = 0;
var clockSkew = 0;
var clock = typeof performance === "object" && performance.now ? performance : Date;
var setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };
function now() {
return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);
}
function clearNow() {
clockNow = 0;
}
function Timer() {
this._call =
this._time =
this._next = null;
}
Timer.prototype = timer.prototype = {
constructor: Timer,
restart: function(callback, delay, time) {
if (typeof callback !== "function") throw new TypeError("callback is not a function");
time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);
if (!this._next && taskTail !== this) {
if (taskTail) taskTail._next = this;
else taskHead = this;
taskTail = this;
}
this._call = callback;
this._time = time;
sleep();
},
stop: function() {
if (this._call) {
this._call = null;
this._time = Infinity;
sleep();
}
}
};
function timer(callback, delay, time) {
var t = new Timer;
t.restart(callback, delay, time);
return t;
}
function timerFlush() {
now(); // Get the current time, if not already set.
++frame; // Pretend we’ve set an alarm, if we haven’t already.
var t = taskHead, e;
while (t) {
if ((e = clockNow - t._time) >= 0) t._call.call(null, e);
t = t._next;
}
--frame;
}
function wake() {
clockNow = (clockLast = clock.now()) + clockSkew;
frame = timeout = 0;
try {
timerFlush();
} finally {
frame = 0;
nap();
clockNow = 0;
}
}
function poke() {
var now = clock.now(), delay = now - clockLast;
if (delay > pokeDelay) clockSkew -= delay, clockLast = now;
}
function nap() {
var t0, t1 = taskHead, t2, time = Infinity;
while (t1) {
if (t1._call) {
if (time > t1._time) time = t1._time;
t0 = t1, t1 = t1._next;
} else {
t2 = t1._next, t1._next = null;
t1 = t0 ? t0._next = t2 : taskHead = t2;
}
}
taskTail = t0;
sleep(time);
}
function sleep(time) {
if (frame) return; // Soonest alarm already set, or will be.
if (timeout) timeout = clearTimeout(timeout);
var delay = time - clockNow; // Strictly less than if we recomputed clockNow.
if (delay > 24) {
if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);
if (interval) interval = clearInterval(interval);
} else {
if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);
frame = 1, setFrame(wake);
}
}
var timeout$1 = function(callback, delay, time) {
var t = new Timer;
delay = delay == null ? 0 : +delay;
t.restart(function(elapsed) {
t.stop();
callback(elapsed + delay);
}, delay, time);
return t;
};
var interval$1 = function(callback, delay, time) {
var t = new Timer, total = delay;
if (delay == null) return t.restart(callback, delay, time), t;
delay = +delay, time = time == null ? now() : +time;
t.restart(function tick(elapsed) {
elapsed += total;
t.restart(tick, total += delay, time);
callback(elapsed);
}, delay, time);
return t;
};
exports.now = now;
exports.timer = timer;
exports.timerFlush = timerFlush;
exports.timeout = timeout$1;
exports.interval = interval$1;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],16:[function(require,module,exports){
// https://d3js.org/d3-transition/ Version 1.1.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch'), require('d3-timer'), require('d3-interpolate'), require('d3-color'), require('d3-ease')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-timer', 'd3-interpolate', 'd3-color', 'd3-ease'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));
}(this, (function (exports,d3Selection,d3Dispatch,d3Timer,d3Interpolate,d3Color,d3Ease) { 'use strict';
var emptyOn = d3Dispatch.dispatch("start", "end", "interrupt");
var emptyTween = [];
var CREATED = 0;
var SCHEDULED = 1;
var STARTING = 2;
var STARTED = 3;
var RUNNING = 4;
var ENDING = 5;
var ENDED = 6;
var schedule = function(node, name, id, index, group, timing) {
var schedules = node.__transition;
if (!schedules) node.__transition = {};
else if (id in schedules) return;
create(node, id, {
name: name,
index: index, // For context during callback.
group: group, // For context during callback.
on: emptyOn,
tween: emptyTween,
time: timing.time,
delay: timing.delay,
duration: timing.duration,
ease: timing.ease,
timer: null,
state: CREATED
});
};
function init(node, id) {
var schedule = get(node, id);
if (schedule.state > CREATED) throw new Error("too late; already scheduled");
return schedule;
}
function set(node, id) {
var schedule = get(node, id);
if (schedule.state > STARTING) throw new Error("too late; already started");
return schedule;
}
function get(node, id) {
var schedule = node.__transition;
if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found");
return schedule;
}
function create(node, id, self) {
var schedules = node.__transition,
tween;
// Initialize the self timer when the transition is created.
// Note the actual delay is not known until the first callback!
schedules[id] = self;
self.timer = d3Timer.timer(schedule, 0, self.time);
function schedule(elapsed) {
self.state = SCHEDULED;
self.timer.restart(start, self.delay, self.time);
// If the elapsed delay is less than our first sleep, start immediately.
if (self.delay <= elapsed) start(elapsed - self.delay);
}
function start(elapsed) {
var i, j, n, o;
// If the state is not SCHEDULED, then we previously errored on start.
if (self.state !== SCHEDULED) return stop();
for (i in schedules) {
o = schedules[i];
if (o.name !== self.name) continue;
// While this element already has a starting transition during this frame,
// defer starting an interrupting transition until that transition has a
// chance to tick (and possibly end); see d3/d3-transition#54!
if (o.state === STARTED) return d3Timer.timeout(start);
// Interrupt the active transition, if any.
// Dispatch the interrupt event.
if (o.state === RUNNING) {
o.state = ENDED;
o.timer.stop();
o.on.call("interrupt", node, node.__data__, o.index, o.group);
delete schedules[i];
}
// Cancel any pre-empted transitions. No interrupt event is dispatched
// because the cancelled transitions never started. Note that this also
// removes this transition from the pending list!
else if (+i < id) {
o.state = ENDED;
o.timer.stop();
delete schedules[i];
}
}
// Defer the first tick to end of the current frame; see d3/d3#1576.
// Note the transition may be canceled after start and before the first tick!
// Note this must be scheduled before the start event; see d3/d3-transition#16!
// Assuming this is successful, subsequent callbacks go straight to tick.
d3Timer.timeout(function() {
if (self.state === STARTED) {
self.state = RUNNING;
self.timer.restart(tick, self.delay, self.time);
tick(elapsed);
}
});
// Dispatch the start event.
// Note this must be done before the tween are initialized.
self.state = STARTING;
self.on.call("start", node, node.__data__, self.index, self.group);
if (self.state !== STARTING) return; // interrupted
self.state = STARTED;
// Initialize the tween, deleting null tween.
tween = new Array(n = self.tween.length);
for (i = 0, j = -1; i < n; ++i) {
if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {
tween[++j] = o;
}
}
tween.length = j + 1;
}
function tick(elapsed) {
var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),
i = -1,
n = tween.length;
while (++i < n) {
tween[i].call(null, t);
}
// Dispatch the end event.
if (self.state === ENDING) {
self.on.call("end", node, node.__data__, self.index, self.group);
stop();
}
}
function stop() {
self.state = ENDED;
self.timer.stop();
delete schedules[id];
for (var i in schedules) return; // eslint-disable-line no-unused-vars
delete node.__transition;
}
}
var interrupt = function(node, name) {
var schedules = node.__transition,
schedule,
active,
empty = true,
i;
if (!schedules) return;
name = name == null ? null : name + "";
for (i in schedules) {
if ((schedule = schedules[i]).name !== name) { empty = false; continue; }
active = schedule.state > STARTING && schedule.state < ENDING;
schedule.state = ENDED;
schedule.timer.stop();
if (active) schedule.on.call("interrupt", node, node.__data__, schedule.index, schedule.group);
delete schedules[i];
}
if (empty) delete node.__transition;
};
var selection_interrupt = function(name) {
return this.each(function() {
interrupt(this, name);
});
};
function tweenRemove(id, name) {
var tween0, tween1;
return function() {
var schedule = set(this, id),
tween = schedule.tween;
// If this node shared tween with the previous node,
// just assign the updated shared tween and we’re done!
// Otherwise, copy-on-write.
if (tween !== tween0) {
tween1 = tween0 = tween;
for (var i = 0, n = tween1.length; i < n; ++i) {
if (tween1[i].name === name) {
tween1 = tween1.slice();
tween1.splice(i, 1);
break;
}
}
}
schedule.tween = tween1;
};
}
function tweenFunction(id, name, value) {
var tween0, tween1;
if (typeof value !== "function") throw new Error;
return function() {
var schedule = set(this, id),
tween = schedule.tween;
// If this node shared tween with the previous node,
// just assign the updated shared tween and we’re done!
// Otherwise, copy-on-write.
if (tween !== tween0) {
tween1 = (tween0 = tween).slice();
for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {
if (tween1[i].name === name) {
tween1[i] = t;
break;
}
}
if (i === n) tween1.push(t);
}
schedule.tween = tween1;
};
}
var transition_tween = function(name, value) {
var id = this._id;
name += "";
if (arguments.length < 2) {
var tween = get(this.node(), id).tween;
for (var i = 0, n = tween.length, t; i < n; ++i) {
if ((t = tween[i]).name === name) {
return t.value;
}
}
return null;
}
return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));
};
function tweenValue(transition, name, value) {
var id = transition._id;
transition.each(function() {
var schedule = set(this, id);
(schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);
});
return function(node) {
return get(node, id).value[name];
};
}
var interpolate = function(a, b) {
var c;
return (typeof b === "number" ? d3Interpolate.interpolateNumber
: b instanceof d3Color.color ? d3Interpolate.interpolateRgb
: (c = d3Color.color(b)) ? (b = c, d3Interpolate.interpolateRgb)
: d3Interpolate.interpolateString)(a, b);
};
function attrRemove(name) {
return function() {
this.removeAttribute(name);
};
}
function attrRemoveNS(fullname) {
return function() {
this.removeAttributeNS(fullname.space, fullname.local);
};
}
function attrConstant(name, interpolate$$1, value1) {
var value00,
interpolate0;
return function() {
var value0 = this.getAttribute(name);
return value0 === value1 ? null
: value0 === value00 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value1);
};
}
function attrConstantNS(fullname, interpolate$$1, value1) {
var value00,
interpolate0;
return function() {
var value0 = this.getAttributeNS(fullname.space, fullname.local);
return value0 === value1 ? null
: value0 === value00 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value1);
};
}
function attrFunction(name, interpolate$$1, value) {
var value00,
value10,
interpolate0;
return function() {
var value0, value1 = value(this);
if (value1 == null) return void this.removeAttribute(name);
value0 = this.getAttribute(name);
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
};
}
function attrFunctionNS(fullname, interpolate$$1, value) {
var value00,
value10,
interpolate0;
return function() {
var value0, value1 = value(this);
if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);
value0 = this.getAttributeNS(fullname.space, fullname.local);
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
};
}
var transition_attr = function(name, value) {
var fullname = d3Selection.namespace(name), i = fullname === "transform" ? d3Interpolate.interpolateTransformSvg : interpolate;
return this.attrTween(name, typeof value === "function"
? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, "attr." + name, value))
: value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)
: (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value + ""));
};
function attrTweenNS(fullname, value) {
function tween() {
var node = this, i = value.apply(node, arguments);
return i && function(t) {
node.setAttributeNS(fullname.space, fullname.local, i(t));
};
}
tween._value = value;
return tween;
}
function attrTween(name, value) {
function tween() {
var node = this, i = value.apply(node, arguments);
return i && function(t) {
node.setAttribute(name, i(t));
};
}
tween._value = value;
return tween;
}
var transition_attrTween = function(name, value) {
var key = "attr." + name;
if (arguments.length < 2) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
var fullname = d3Selection.namespace(name);
return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));
};
function delayFunction(id, value) {
return function() {
init(this, id).delay = +value.apply(this, arguments);
};
}
function delayConstant(id, value) {
return value = +value, function() {
init(this, id).delay = value;
};
}
var transition_delay = function(value) {
var id = this._id;
return arguments.length
? this.each((typeof value === "function"
? delayFunction
: delayConstant)(id, value))
: get(this.node(), id).delay;
};
function durationFunction(id, value) {
return function() {
set(this, id).duration = +value.apply(this, arguments);
};
}
function durationConstant(id, value) {
return value = +value, function() {
set(this, id).duration = value;
};
}
var transition_duration = function(value) {
var id = this._id;
return arguments.length
? this.each((typeof value === "function"
? durationFunction
: durationConstant)(id, value))
: get(this.node(), id).duration;
};
function easeConstant(id, value) {
if (typeof value !== "function") throw new Error;
return function() {
set(this, id).ease = value;
};
}
var transition_ease = function(value) {
var id = this._id;
return arguments.length
? this.each(easeConstant(id, value))
: get(this.node(), id).ease;
};
var transition_filter = function(match) {
if (typeof match !== "function") match = d3Selection.matcher(match);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
subgroup.push(node);
}
}
}
return new Transition(subgroups, this._parents, this._name, this._id);
};
var transition_merge = function(transition) {
if (transition._id !== this._id) throw new Error;
for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
if (node = group0[i] || group1[i]) {
merge[i] = node;
}
}
}
for (; j < m0; ++j) {
merges[j] = groups0[j];
}
return new Transition(merges, this._parents, this._name, this._id);
};
function start(name) {
return (name + "").trim().split(/^|\s+/).every(function(t) {
var i = t.indexOf(".");
if (i >= 0) t = t.slice(0, i);
return !t || t === "start";
});
}
function onFunction(id, name, listener) {
var on0, on1, sit = start(name) ? init : set;
return function() {
var schedule = sit(this, id),
on = schedule.on;
// If this node shared a dispatch with the previous node,
// just assign the updated shared dispatch and we’re done!
// Otherwise, copy-on-write.
if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);
schedule.on = on1;
};
}
var transition_on = function(name, listener) {
var id = this._id;
return arguments.length < 2
? get(this.node(), id).on.on(name)
: this.each(onFunction(id, name, listener));
};
function removeFunction(id) {
return function() {
var parent = this.parentNode;
for (var i in this.__transition) if (+i !== id) return;
if (parent) parent.removeChild(this);
};
}
var transition_remove = function() {
return this.on("end.remove", removeFunction(this._id));
};
var transition_select = function(select) {
var name = this._name,
id = this._id;
if (typeof select !== "function") select = d3Selection.selector(select);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
subgroup[i] = subnode;
schedule(subgroup[i], name, id, i, subgroup, get(node, id));
}
}
}
return new Transition(subgroups, this._parents, name, id);
};
var transition_selectAll = function(select) {
var name = this._name,
id = this._id;
if (typeof select !== "function") select = d3Selection.selectorAll(select);
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {
if (child = children[k]) {
schedule(child, name, id, k, children, inherit);
}
}
subgroups.push(children);
parents.push(node);
}
}
}
return new Transition(subgroups, parents, name, id);
};
var Selection = d3Selection.selection.prototype.constructor;
var transition_selection = function() {
return new Selection(this._groups, this._parents);
};
function styleRemove(name, interpolate$$1) {
var value00,
value10,
interpolate0;
return function() {
var value0 = d3Selection.style(this, name),
value1 = (this.style.removeProperty(name), d3Selection.style(this, name));
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
};
}
function styleRemoveEnd(name) {
return function() {
this.style.removeProperty(name);
};
}
function styleConstant(name, interpolate$$1, value1) {
var value00,
interpolate0;
return function() {
var value0 = d3Selection.style(this, name);
return value0 === value1 ? null
: value0 === value00 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value1);
};
}
function styleFunction(name, interpolate$$1, value) {
var value00,
value10,
interpolate0;
return function() {
var value0 = d3Selection.style(this, name),
value1 = value(this);
if (value1 == null) value1 = (this.style.removeProperty(name), d3Selection.style(this, name));
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
};
}
var transition_style = function(name, value, priority) {
var i = (name += "") === "transform" ? d3Interpolate.interpolateTransformCss : interpolate;
return value == null ? this
.styleTween(name, styleRemove(name, i))
.on("end.style." + name, styleRemoveEnd(name))
: this.styleTween(name, typeof value === "function"
? styleFunction(name, i, tweenValue(this, "style." + name, value))
: styleConstant(name, i, value + ""), priority);
};
function styleTween(name, value, priority) {
function tween() {
var node = this, i = value.apply(node, arguments);
return i && function(t) {
node.style.setProperty(name, i(t), priority);
};
}
tween._value = value;
return tween;
}
var transition_styleTween = function(name, value, priority) {
var key = "style." + (name += "");
if (arguments.length < 2) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
return this.tween(key, styleTween(name, value, priority == null ? "" : priority));
};
function textConstant(value) {
return function() {
this.textContent = value;
};
}
function textFunction(value) {
return function() {
var value1 = value(this);
this.textContent = value1 == null ? "" : value1;
};
}
var transition_text = function(value) {
return this.tween("text", typeof value === "function"
? textFunction(tweenValue(this, "text", value))
: textConstant(value == null ? "" : value + ""));
};
var transition_transition = function() {
var name = this._name,
id0 = this._id,
id1 = newId();
for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
var inherit = get(node, id0);
schedule(node, name, id1, i, group, {
time: inherit.time + inherit.delay + inherit.duration,
delay: 0,
duration: inherit.duration,
ease: inherit.ease
});
}
}
}
return new Transition(groups, this._parents, name, id1);
};
var id = 0;
function Transition(groups, parents, name, id) {
this._groups = groups;
this._parents = parents;
this._name = name;
this._id = id;
}
function transition(name) {
return d3Selection.selection().transition(name);
}
function newId() {
return ++id;
}
var selection_prototype = d3Selection.selection.prototype;
Transition.prototype = transition.prototype = {
constructor: Transition,
select: transition_select,
selectAll: transition_selectAll,
filter: transition_filter,
merge: transition_merge,
selection: transition_selection,
transition: transition_transition,
call: selection_prototype.call,
nodes: selection_prototype.nodes,
node: selection_prototype.node,
size: selection_prototype.size,
empty: selection_prototype.empty,
each: selection_prototype.each,
on: transition_on,
attr: transition_attr,
attrTween: transition_attrTween,
style: transition_style,
styleTween: transition_styleTween,
text: transition_text,
remove: transition_remove,
tween: transition_tween,
delay: transition_delay,
duration: transition_duration,
ease: transition_ease
};
var defaultTiming = {
time: null, // Set on use.
delay: 0,
duration: 250,
ease: d3Ease.easeCubicInOut
};
function inherit(node, id) {
var timing;
while (!(timing = node.__transition) || !(timing = timing[id])) {
if (!(node = node.parentNode)) {
return defaultTiming.time = d3Timer.now(), defaultTiming;
}
}
return timing;
}
var selection_transition = function(name) {
var id,
timing;
if (name instanceof Transition) {
id = name._id, name = name._name;
} else {
id = newId(), (timing = defaultTiming).time = d3Timer.now(), name = name == null ? null : name + "";
}
for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
schedule(node, name, id, i, group, timing || inherit(node, id));
}
}
}
return new Transition(groups, this._parents, name, id);
};
d3Selection.selection.prototype.interrupt = selection_interrupt;
d3Selection.selection.prototype.transition = selection_transition;
var root = [null];
var active = function(node, name) {
var schedules = node.__transition,
schedule,
i;
if (schedules) {
name = name == null ? null : name + "";
for (i in schedules) {
if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {
return new Transition([[node]], root, name, +i);
}
}
}
return null;
};
exports.transition = transition;
exports.active = active;
exports.interrupt = interrupt;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-color":3,"d3-dispatch":4,"d3-ease":6,"d3-interpolate":10,"d3-selection":12,"d3-timer":15}],17:[function(require,module,exports){
// https://d3js.org/d3-zoom/ Version 1.7.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-dispatch'), require('d3-drag'), require('d3-interpolate'), require('d3-selection'), require('d3-transition')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-dispatch', 'd3-drag', 'd3-interpolate', 'd3-selection', 'd3-transition'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3));
}(this, (function (exports,d3Dispatch,d3Drag,d3Interpolate,d3Selection,d3Transition) { 'use strict';
var constant = function(x) {
return function() {
return x;
};
};
function ZoomEvent(target, type, transform) {
this.target = target;
this.type = type;
this.transform = transform;
}
function Transform(k, x, y) {
this.k = k;
this.x = x;
this.y = y;
}
Transform.prototype = {
constructor: Transform,
scale: function(k) {
return k === 1 ? this : new Transform(this.k * k, this.x, this.y);
},
translate: function(x, y) {
return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);
},
apply: function(point) {
return [point[0] * this.k + this.x, point[1] * this.k + this.y];
},
applyX: function(x) {
return x * this.k + this.x;
},
applyY: function(y) {
return y * this.k + this.y;
},
invert: function(location) {
return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];
},
invertX: function(x) {
return (x - this.x) / this.k;
},
invertY: function(y) {
return (y - this.y) / this.k;
},
rescaleX: function(x) {
return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));
},
rescaleY: function(y) {
return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));
},
toString: function() {
return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
}
};
var identity = new Transform(1, 0, 0);
transform.prototype = Transform.prototype;
function transform(node) {
return node.__zoom || identity;
}
function nopropagation() {
d3Selection.event.stopImmediatePropagation();
}
var noevent = function() {
d3Selection.event.preventDefault();
d3Selection.event.stopImmediatePropagation();
};
// Ignore right-click, since that should open the context menu.
function defaultFilter() {
return !d3Selection.event.button;
}
function defaultExtent() {
var e = this, w, h;
if (e instanceof SVGElement) {
e = e.ownerSVGElement || e;
w = e.width.baseVal.value;
h = e.height.baseVal.value;
} else {
w = e.clientWidth;
h = e.clientHeight;
}
return [[0, 0], [w, h]];
}
function defaultTransform() {
return this.__zoom || identity;
}
function defaultWheelDelta() {
return -d3Selection.event.deltaY * (d3Selection.event.deltaMode ? 120 : 1) / 500;
}
function defaultTouchable() {
return "ontouchstart" in this;
}
function defaultConstrain(transform$$1, extent, translateExtent) {
var dx0 = transform$$1.invertX(extent[0][0]) - translateExtent[0][0],
dx1 = transform$$1.invertX(extent[1][0]) - translateExtent[1][0],
dy0 = transform$$1.invertY(extent[0][1]) - translateExtent[0][1],
dy1 = transform$$1.invertY(extent[1][1]) - translateExtent[1][1];
return transform$$1.translate(
dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),
dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)
);
}
var zoom = function() {
var filter = defaultFilter,
extent = defaultExtent,
constrain = defaultConstrain,
wheelDelta = defaultWheelDelta,
touchable = defaultTouchable,
scaleExtent = [0, Infinity],
translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],
duration = 250,
interpolate = d3Interpolate.interpolateZoom,
gestures = [],
listeners = d3Dispatch.dispatch("start", "zoom", "end"),
touchstarting,
touchending,
touchDelay = 500,
wheelDelay = 150,
clickDistance2 = 0;
function zoom(selection) {
selection
.property("__zoom", defaultTransform)
.on("wheel.zoom", wheeled)
.on("mousedown.zoom", mousedowned)
.on("dblclick.zoom", dblclicked)
.filter(touchable)
.on("touchstart.zoom", touchstarted)
.on("touchmove.zoom", touchmoved)
.on("touchend.zoom touchcancel.zoom", touchended)
.style("touch-action", "none")
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
}
zoom.transform = function(collection, transform$$1) {
var selection = collection.selection ? collection.selection() : collection;
selection.property("__zoom", defaultTransform);
if (collection !== selection) {
schedule(collection, transform$$1);
} else {
selection.interrupt().each(function() {
gesture(this, arguments)
.start()
.zoom(null, typeof transform$$1 === "function" ? transform$$1.apply(this, arguments) : transform$$1)
.end();
});
}
};
zoom.scaleBy = function(selection, k) {
zoom.scaleTo(selection, function() {
var k0 = this.__zoom.k,
k1 = typeof k === "function" ? k.apply(this, arguments) : k;
return k0 * k1;
});
};
zoom.scaleTo = function(selection, k) {
zoom.transform(selection, function() {
var e = extent.apply(this, arguments),
t0 = this.__zoom,
p0 = centroid(e),
p1 = t0.invert(p0),
k1 = typeof k === "function" ? k.apply(this, arguments) : k;
return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);
});
};
zoom.translateBy = function(selection, x, y) {
zoom.transform(selection, function() {
return constrain(this.__zoom.translate(
typeof x === "function" ? x.apply(this, arguments) : x,
typeof y === "function" ? y.apply(this, arguments) : y
), extent.apply(this, arguments), translateExtent);
});
};
zoom.translateTo = function(selection, x, y) {
zoom.transform(selection, function() {
var e = extent.apply(this, arguments),
t = this.__zoom,
p = centroid(e);
return constrain(identity.translate(p[0], p[1]).scale(t.k).translate(
typeof x === "function" ? -x.apply(this, arguments) : -x,
typeof y === "function" ? -y.apply(this, arguments) : -y
), e, translateExtent);
});
};
function scale(transform$$1, k) {
k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));
return k === transform$$1.k ? transform$$1 : new Transform(k, transform$$1.x, transform$$1.y);
}
function translate(transform$$1, p0, p1) {
var x = p0[0] - p1[0] * transform$$1.k, y = p0[1] - p1[1] * transform$$1.k;
return x === transform$$1.x && y === transform$$1.y ? transform$$1 : new Transform(transform$$1.k, x, y);
}
function centroid(extent) {
return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];
}
function schedule(transition, transform$$1, center) {
transition
.on("start.zoom", function() { gesture(this, arguments).start(); })
.on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); })
.tween("zoom", function() {
var that = this,
args = arguments,
g = gesture(that, args),
e = extent.apply(that, args),
p = center || centroid(e),
w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),
a = that.__zoom,
b = typeof transform$$1 === "function" ? transform$$1.apply(that, args) : transform$$1,
i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));
return function(t) {
if (t === 1) t = b; // Avoid rounding error on end.
else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }
g.zoom(null, t);
};
});
}
function gesture(that, args) {
for (var i = 0, n = gestures.length, g; i < n; ++i) {
if ((g = gestures[i]).that === that) {
return g;
}
}
return new Gesture(that, args);
}
function Gesture(that, args) {
this.that = that;
this.args = args;
this.index = -1;
this.active = 0;
this.extent = extent.apply(that, args);
}
Gesture.prototype = {
start: function() {
if (++this.active === 1) {
this.index = gestures.push(this) - 1;
this.emit("start");
}
return this;
},
zoom: function(key, transform$$1) {
if (this.mouse && key !== "mouse") this.mouse[1] = transform$$1.invert(this.mouse[0]);
if (this.touch0 && key !== "touch") this.touch0[1] = transform$$1.invert(this.touch0[0]);
if (this.touch1 && key !== "touch") this.touch1[1] = transform$$1.invert(this.touch1[0]);
this.that.__zoom = transform$$1;
this.emit("zoom");
return this;
},
end: function() {
if (--this.active === 0) {
gestures.splice(this.index, 1);
this.index = -1;
this.emit("end");
}
return this;
},
emit: function(type) {
d3Selection.customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);
}
};
function wheeled() {
if (!filter.apply(this, arguments)) return;
var g = gesture(this, arguments),
t = this.__zoom,
k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),
p = d3Selection.mouse(this);
// If the mouse is in the same location as before, reuse it.
// If there were recent wheel events, reset the wheel idle timeout.
if (g.wheel) {
if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {
g.mouse[1] = t.invert(g.mouse[0] = p);
}
clearTimeout(g.wheel);
}
// If this wheel event won’t trigger a transform change, ignore it.
else if (t.k === k) return;
// Otherwise, capture the mouse point and location at the start.
else {
g.mouse = [p, t.invert(p)];
d3Transition.interrupt(this);
g.start();
}
noevent();
g.wheel = setTimeout(wheelidled, wheelDelay);
g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));
function wheelidled() {
g.wheel = null;
g.end();
}
}
function mousedowned() {
if (touchending || !filter.apply(this, arguments)) return;
var g = gesture(this, arguments),
v = d3Selection.select(d3Selection.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true),
p = d3Selection.mouse(this),
x0 = d3Selection.event.clientX,
y0 = d3Selection.event.clientY;
d3Drag.dragDisable(d3Selection.event.view);
nopropagation();
g.mouse = [p, this.__zoom.invert(p)];
d3Transition.interrupt(this);
g.start();
function mousemoved() {
noevent();
if (!g.moved) {
var dx = d3Selection.event.clientX - x0, dy = d3Selection.event.clientY - y0;
g.moved = dx * dx + dy * dy > clickDistance2;
}
g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = d3Selection.mouse(g.that), g.mouse[1]), g.extent, translateExtent));
}
function mouseupped() {
v.on("mousemove.zoom mouseup.zoom", null);
d3Drag.dragEnable(d3Selection.event.view, g.moved);
noevent();
g.end();
}
}
function dblclicked() {
if (!filter.apply(this, arguments)) return;
var t0 = this.__zoom,
p0 = d3Selection.mouse(this),
p1 = t0.invert(p0),
k1 = t0.k * (d3Selection.event.shiftKey ? 0.5 : 2),
t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);
noevent();
if (duration > 0) d3Selection.select(this).transition().duration(duration).call(schedule, t1, p0);
else d3Selection.select(this).call(zoom.transform, t1);
}
function touchstarted() {
if (!filter.apply(this, arguments)) return;
var g = gesture(this, arguments),
touches = d3Selection.event.changedTouches,
started,
n = touches.length, i, t, p;
nopropagation();
for (i = 0; i < n; ++i) {
t = touches[i], p = d3Selection.touch(this, touches, t.identifier);
p = [p, this.__zoom.invert(p), t.identifier];
if (!g.touch0) g.touch0 = p, started = true;
else if (!g.touch1) g.touch1 = p;
}
// If this is a dbltap, reroute to the (optional) dblclick.zoom handler.
if (touchstarting) {
touchstarting = clearTimeout(touchstarting);
if (!g.touch1) {
g.end();
p = d3Selection.select(this).on("dblclick.zoom");
if (p) p.apply(this, arguments);
return;
}
}
if (started) {
touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);
d3Transition.interrupt(this);
g.start();
}
}
function touchmoved() {
var g = gesture(this, arguments),
touches = d3Selection.event.changedTouches,
n = touches.length, i, t, p, l;
noevent();
if (touchstarting) touchstarting = clearTimeout(touchstarting);
for (i = 0; i < n; ++i) {
t = touches[i], p = d3Selection.touch(this, touches, t.identifier);
if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;
else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;
}
t = g.that.__zoom;
if (g.touch1) {
var p0 = g.touch0[0], l0 = g.touch0[1],
p1 = g.touch1[0], l1 = g.touch1[1],
dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,
dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;
t = scale(t, Math.sqrt(dp / dl));
p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];
l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
}
else if (g.touch0) p = g.touch0[0], l = g.touch0[1];
else return;
g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent));
}
function touchended() {
var g = gesture(this, arguments),
touches = d3Selection.event.changedTouches,
n = touches.length, i, t;
nopropagation();
if (touchending) clearTimeout(touchending);
touchending = setTimeout(function() { touchending = null; }, touchDelay);
for (i = 0; i < n; ++i) {
t = touches[i];
if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;
else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;
}
if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;
if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);
else g.end();
}
zoom.wheelDelta = function(_) {
return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant(+_), zoom) : wheelDelta;
};
zoom.filter = function(_) {
return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), zoom) : filter;
};
zoom.touchable = function(_) {
return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), zoom) : touchable;
};
zoom.extent = function(_) {
return arguments.length ? (extent = typeof _ === "function" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;
};
zoom.scaleExtent = function(_) {
return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];
};
zoom.translateExtent = function(_) {
return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];
};
zoom.constrain = function(_) {
return arguments.length ? (constrain = _, zoom) : constrain;
};
zoom.duration = function(_) {
return arguments.length ? (duration = +_, zoom) : duration;
};
zoom.interpolate = function(_) {
return arguments.length ? (interpolate = _, zoom) : interpolate;
};
zoom.on = function() {
var value = listeners.on.apply(listeners, arguments);
return value === listeners ? zoom : value;
};
zoom.clickDistance = function(_) {
return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);
};
return zoom;
};
exports.zoom = zoom;
exports.zoomTransform = transform;
exports.zoomIdentity = identity;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-dispatch":4,"d3-drag":5,"d3-interpolate":10,"d3-selection":12,"d3-transition":16}],18:[function(require,module,exports){
'use strict';
var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
module.exports = function (str) {
if (typeof str !== 'string') {
throw new TypeError('Expected a string');
}
return str.replace(matchOperatorsRe, '\\$&');
};
},{}],19:[function(require,module,exports){
// expected hue range: [0, 360)
// expected saturation range: [0, 1]
// expected lightness range: [0, 1]
var hslToRgb = function(hue, saturation, lightness){
// based on algorithm from http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB
if( hue == undefined ){
return [0, 0, 0];
}
var chroma = (1 - Math.abs((2 * lightness) - 1)) * saturation;
var huePrime = hue / 60;
var secondComponent = chroma * (1 - Math.abs((huePrime % 2) - 1));
huePrime = Math.floor(huePrime);
var red;
var green;
var blue;
if( huePrime === 0 ){
red = chroma;
green = secondComponent;
blue = 0;
}else if( huePrime === 1 ){
red = secondComponent;
green = chroma;
blue = 0;
}else if( huePrime === 2 ){
red = 0;
green = chroma;
blue = secondComponent;
}else if( huePrime === 3 ){
red = 0;
green = secondComponent;
blue = chroma;
}else if( huePrime === 4 ){
red = secondComponent;
green = 0;
blue = chroma;
}else if( huePrime === 5 ){
red = chroma;
green = 0;
blue = secondComponent;
}
var lightnessAdjustment = lightness - (chroma / 2);
red += lightnessAdjustment;
green += lightnessAdjustment;
blue += lightnessAdjustment;
return [Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255)];
};
module.exports = hslToRgb;
},{}]},{},[7])(7)
});
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.visualizer = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
'use strict'
module.exports = createActions
function createActions ({flamegraph, state}, emit) {
state.typeFilters.bgs = state.typeFilters.unhighlighted
return {
search, control, zoom, typeFilters
}
function search () {
return ({type, value}) => {
if (type === 'key') {
if (!value) return flamegraph.clear()
flamegraph.search(value, 'cyan')
}
}
}
function highlightTypeFilters () {
return Object.assign(
{},
state.typeFilters.highlighted,
[...Array.from(state.typeFilters.exclude),
(state.typeFilters.enableInlinable ? '' : 'inlinable')
].reduce((o, k) => {
o[k] = state.typeFilters.unhighlighted[k]
return o
}, {}))
}
function control () {
return ({type}) => {
switch (type) {
case 'tiers':
state.control.tiers = !state.control.tiers
flamegraph.tiers(state.control.tiers)
state.typeFilters.bgs = state.control.tiers
? highlightTypeFilters()
: state.typeFilters.unhighlighted
emit(state)
return
case 'view':
state.control.merged = !state.control.merged
state.typeFilters.enableInlinable = !state.control.merged
state.key.enableOptUnopt = !state.control.merged
state.typeFilters.bgs = state.control.tiers
? highlightTypeFilters()
: state.typeFilters.unhighlighted
emit(state)
if (state.control.merged) flamegraph.renderTree(state.trees.merged)
else flamegraph.renderTree(state.trees.unmerged)
return
case 'optimized':
state.control.optimized = !state.control.optimized
// Deactivate the unoptimized button--d3-fg will auto clear its colours
state.control.unoptimized = false
emit(state)
if (!state.control.optimized) return flamegraph.clear('yellow')
flamegraph.search(RegExp('^\\*'), 'yellow')
return
case 'not-optimized':
state.control.unoptimized = !state.control.unoptimized
// Deactivate the optimized button--d3-fg will auto clear its colours
state.control.optimized = false
emit(state)
if (!state.control.unoptimized) return flamegraph.clear('lime')
flamegraph.search(/^~/, 'lime')
}
}
}
function zoom () {
var zoomLevel = 1
return ({type}) => {
switch (type) {
case 'in':
zoomLevel += 0.3
// Some ludicrous max just in case
if (zoomLevel > 10) zoomLevel = 10
flamegraph.setGraphZoom(zoomLevel)
return
case 'out':
zoomLevel -= 0.3
if (zoomLevel < 0.1) zoomLevel = 0.1
flamegraph.setGraphZoom(zoomLevel)
}
}
}
function typeFilters () {
return ({name}) => {
const checked = state.typeFilters.exclude.has(name)
if (checked) {
flamegraph.typeShow(name)
state.typeFilters.exclude.delete(name)
} else {
flamegraph.typeHide(name)
state.typeFilters.exclude.add(name)
}
if (state.control.tiers) state.typeFilters.bgs = highlightTypeFilters()
emit(state)
}
}
}
},{}],2:[function(require,module,exports){
'use strict'
const button = (render) => ({label, pressed, disabled, width}, action) => render`
<button
class="f6 pointer br2 ba ph3 pv1 dib black mb2 mt1 ml1 mr1 ${disabled ? 'o-50 bg-silver' : ''}"
${disabled ? 'disabled' : ''}
style="
${pressed ? 'box-shadow: 0 0 0 .125em black;' : ''}
${width ? 'width: ' + width + ';' : ''}
"
onclick=${action}
>
${label}
</button>
`
module.exports = (render) => (state, action) => {
const tiers = button(render)({label: 'Tiers', pressed: state.tiers}, () => action({type: 'tiers'}))
const view = state.renderMergedBtn ? button(render)({
label: state.merged ? 'Unmerge' : 'Merge',
width: '6.85em',
pressed: state.merged
}, () => action({type: 'view'})) : ''
const optimized = button(render)({
label: 'Optimized',
pressed: !state.merged && state.optimized,
disabled: state.merged
}, () => action({type: 'optimized'}))
const unoptimized = button(render)({
label: 'Unoptimized',
pressed: !state.merged && state.unoptimized,
disabled: state.merged
}, () => action({type: 'not-optimized'}))
return render`
<div style="">
${tiers}${view}${optimized}${unoptimized}
</div>
`
}
},{}],3:[function(require,module,exports){
'use strict'
module.exports = (render) => Object.assign(() => render`
<chart
class='db overflow-y-scroll overflow-x-hidden relative'
style='padding-left: 5%; padding-right: 5%; height: calc(100vh - 66px)'
>
</chart>
`, { v8cats })
function v8cats (child) {
var name = child.name
if (/\[INLINABLE\]/.test(name)) return {type: 'inlinable'}
if (!/\.js/.test(name)) {
switch (true) {
case /\[CODE:RegExp\]/.test(name): return {type: 'regexp'}
case /\[CODE:.*\]/.test(name): return {type: 'v8'}
case /\.$/.test(name): return {type: 'core'}
case /\[CPP\]/.test(name): return {type: 'cpp'}
case /\[SHARED_LIB\]/.test(name): return {type: 'cpp'}
case /\[eval\]/.test(name): return {type: 'native'} // unless we create an eval checkbox
// "native" is the next best label since
// you cannot tell where the eval comes
// from (app, deps, core)
default: return {type: 'v8'}
}
}
if (/\[INIT\]/.test(name)) return {type: 'init'}
switch (true) {
case / native /.test(name): return {type: 'native'}
case (name.indexOf('/') === -1 || (/internal\//.test(name) && !/ \//.test(name))): return {type: 'core'}
case /node_modules/.test(name): return {type: 'deps'}
default: return {type: 'app'}
}
}
},{}],4:[function(require,module,exports){
'use strict'
module.exports = (render) => ({colors, enableOptUnopt}) => render`
<div id=key class='fr dn db-l mr1'>
<div class='fl' style="margin-right: 5px;">cold</div>
<div class='fl' style="background: ${colors[0]}; height: 20px; width: 20px; margin-right: 5px;"></div>
<div class='fl' style="background: ${colors[1]}; height: 20px; width: 20px; margin-right: 5px;"></div>
<div class='fl' style="background: ${colors[2]}; height: 20px; width: 20px; margin-right: 5px;"></div>
<div class='fl' style="background: ${colors[3]}; height: 20px; width: 20px; margin-right: 5px;"></div>
<div class='fl' style="display: block; float: left; margin-right: 5px;">hot</div>
${enableOptUnopt
? render`<div class='cf f6 silver mt3 pt1' style='margin-left:-.35em'>
<span>* optimized</span> <span class="indent">~ unoptimized</span>
</div>
`
: ''
}
</div>
`
},{}],5:[function(require,module,exports){
'use strict'
const debounce = require('debounce')
module.exports = (render) => (action) => {
const search = render`
<input type="search" placeholder="search functions" class='fr f5 mr1'>
`
search.addEventListener('keydown', debounce(({ target }) => action({type: 'key', value: target.value}), 150))
return search
}
},{"debounce":29}],6:[function(require,module,exports){
'use strict'
module.exports = (render) => ({title}) => render`
<h1 id=title class='sans-serif black-70 bg-white b lh-title measure-narrow measure-l f4 ml2 mt0 dib'>
<style>@media (max-width: 584px) {#title {display: none}}</style>
${title}
</h1>
`
},{}],7:[function(require,module,exports){
'use strict'
const createHoc = (render) => ({bg, exclude, name, lbl, disabled = false}, action) => {
const pressed = !disabled && !exclude.has(name)
return render`
<button
class="f7 pointer br2 ba mb0 dib black-70 lh-title border-box ml1 ${pressed ? 'b--black' : ''} ${disabled ? 'o-50 gray' : ''}"
${disabled ? 'disabled' : ''}
style="
${pressed ? 'box-shadow: 0 0 0 1px black;' : ''}
background: ${bg};
"
onclick=${() => action({name})}
>${lbl || name}</button>
`
}
module.exports = (render) => ({bgs, exclude, enableInlinable, renderInlinable}, action) => {
const hoc = createHoc(render)
const app = hoc({bg: bgs.app, exclude, name: 'app'}, action)
const deps = hoc({bg: bgs.deps, exclude, name: 'deps'}, action)
const core = hoc({bg: bgs.core, exclude, name: 'core'}, action)
const inlinable = renderInlinable ? hoc({bg: bgs['inlinable'], exclude, name: 'inlinable', disabled: !enableInlinable}, action) : ''
const native = hoc({bg: bgs.native, exclude, name: 'native'}, action)
const regexp = hoc({bg: bgs.regexp, exclude, name: 'regexp', lbl: 'rx'}, action)
const v8 = hoc({bg: bgs.v8, exclude, name: 'v8'}, action)
const cpp = hoc({bg: bgs.cpp, exclude, name: 'cpp'}, action)
const init = hoc({bg: bgs.init, exclude, name: 'init'}, action)
return render`
<div style='margin-left:-.25rem'>
${app}${deps}${core}${inlinable}${native}${regexp}${v8}${cpp}${init}
</div>
`
}
},{}],8:[function(require,module,exports){
'use strict'
const typeFiltersCmp = require('./type-filters')
const keyCmp = require('./key')
const controlsCmp = require('./controls')
const zoomCmp = require('./zoom')
const searchCmp = require('./search')
const titleCmp = require('./title')
module.exports = (render) => ({state, actions}) => {
const typeFilters = typeFiltersCmp(render)
const key = keyCmp(render)
const controls = controlsCmp(render)
const zoom = zoomCmp(render)
const search = searchCmp(render)
const title = titleCmp(render)
return render`
<div>
<div class='fixed left-0 top-0 w-100 bg-white h2 pt1 pb2' style='box-sizing: content-box'>
${search(actions.search())}
${title(state.title)}
${zoom(actions.zoom())}
${key(state.key)}
</div>
<div class='absolute left-0 w-100 h8 tc pb2 nowrap' style='padding-top: 2px'>
${controls(state.control, actions.control())}
${typeFilters(state.typeFilters, actions.typeFilters())}
</div>
</div>
`
}
},{"./controls":2,"./key":4,"./search":5,"./title":6,"./type-filters":7,"./zoom":9}],9:[function(require,module,exports){
'use strict'
module.exports = (render) => (action) => render`
<div class='fr dn db-l h-100 mr1'>
<button class='h-100' onclick=${() => action({type: 'out'})}>−</button>
<button class='h-100' onclick=${() => action({type: 'in'})}>+</button>
</div>
`
},{}],10:[function(require,module,exports){
'use strict'
const hsl = require('hsl-to-rgb-for-reals')
const { colorHash } = require('d3-fg')
module.exports = ({colors, trees, exclude, merged = false, kernelTracing, title}) => ({
trees,
key: {
colors: [
colorHash({top: 0, name: 'cold'}, 1, 100),
colorHash({top: 1, name: 'luke-warm'}, 1, 100),
colorHash({top: 3, name: 'warm'}, 1, 100),
colorHash({top: 10, name: 'hot'}, 1, 100)
],
enableOptUnopt: !merged
},
title: { title },
control: {
tiers: false,
optimized: false,
unoptimized: false,
renderMergedBtn: !kernelTracing,
merged: merged
},
typeFilters: {
enableInlinable: !merged,
renderInlinable: !kernelTracing,
unhighlighted: {
inlinable: '#fff',
app: '#fff',
deps: '#fff',
core: '#fff',
native: '#fff',
cpp: '#fff',
regexp: '#fff',
v8: '#fff',
init: '#fff'
},
highlighted: {
inlinable: `rgb(${hsl(
colors['inlinable'].h,
colors['inlinable'].s / 100 * 1.2,
colors['inlinable'].l / 100 * 1.2
)})`,
app: `rgb(${hsl(
colors.app.h,
colors.app.s / 100 * 1.2,
colors.app.l / 100 * 1.2
)})`,
deps: `rgb(${hsl(
colors.deps.h,
colors.deps.s / 100 * 1.2,
colors.deps.l / 100 * 1.2
)})`,
core: `rgb(${hsl(
colors.core.h,
colors.core.s / 100 * 1.2,
colors.core.l / 100 * 1.2
)})`,
native: `rgb(${hsl(
colors.native.h,
colors.native.s / 100 * 1.2,
colors.native.l / 100 * 1.2
)})`,
cpp: `rgb(${hsl(
colors.cpp.h,
colors.cpp.s / 100 * 1.2,
colors.cpp.l / 100 * 1.2
)})`,
regexp: `rgb(${hsl(
colors.regexp.h,
colors.regexp.s / 100 * 1.2,
colors.regexp.l / 100 * 1.2
)})`,
v8: `rgb(${hsl(
colors.v8.h,
colors.v8.s / 100 * 1.2,
colors.v8.l / 100 * 1.2
)})`,
init: `rgb(${hsl(
colors.init.h,
colors.init.s / 100 * 1.2,
colors.init.l / 100 * 1.2
)})`
},
exclude
}
})
},{"d3-fg":18,"hsl-to-rgb-for-reals":31}],11:[function(require,module,exports){
'use strict'
const fg = require('d3-fg')
const render = require('nanohtml')
const morphdom = require('morphdom')
const debounce = require('debounce')
const createActions = require('./actions')
const createState = require('./state')
const graph = require('./cmp/graph')(render)
const ui = require('./cmp/ui')(render)
module.exports = function (trees, opts) {
opts = opts || {}
const { kernelTracing } = opts
const exclude = new Set(['cpp', 'regexp', 'v8', 'native', 'init'])
const chart = graph()
const tree = trees.unmerged // default view
const categorizer = !kernelTracing && graph.v8cats
const flamegraph = fg({
categorizer,
tree,
exclude: Array.from(exclude),
element: chart
})
const { colors } = flamegraph
window.addEventListener('resize', debounce(() => {
const width = document.body.clientWidth * 0.89
flamegraph.width(width).update()
chart.querySelector('svg').setAttribute('width', width)
}, 150))
const state = createState({colors, trees, exclude, kernelTracing, title: opts.title})
const actions = createActions({flamegraph, state}, (state) => {
morphdom(iface, ui({state, actions}))
})
const iface = ui({state, actions})
document.body.appendChild(chart)
document.body.appendChild(iface)
}
},{"./actions":1,"./cmp/graph":3,"./cmp/ui":8,"./state":10,"d3-fg":18,"debounce":29,"morphdom":34,"nanohtml":37}],12:[function(require,module,exports){
// https://d3js.org/d3-array/ Version 1.2.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var ascending = function(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
};
var bisector = function(compare) {
if (compare.length === 1) compare = ascendingComparator(compare);
return {
left: function(a, x, lo, hi) {
if (lo == null) lo = 0;
if (hi == null) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (compare(a[mid], x) < 0) lo = mid + 1;
else hi = mid;
}
return lo;
},
right: function(a, x, lo, hi) {
if (lo == null) lo = 0;
if (hi == null) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (compare(a[mid], x) > 0) hi = mid;
else lo = mid + 1;
}
return lo;
}
};
};
function ascendingComparator(f) {
return function(d, x) {
return ascending(f(d), x);
};
}
var ascendingBisect = bisector(ascending);
var bisectRight = ascendingBisect.right;
var bisectLeft = ascendingBisect.left;
var pairs = function(array, f) {
if (f == null) f = pair;
var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);
while (i < n) pairs[i] = f(p, p = array[++i]);
return pairs;
};
function pair(a, b) {
return [a, b];
}
var cross = function(values0, values1, reduce) {
var n0 = values0.length,
n1 = values1.length,
values = new Array(n0 * n1),
i0,
i1,
i,
value0;
if (reduce == null) reduce = pair;
for (i0 = i = 0; i0 < n0; ++i0) {
for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {
values[i] = reduce(value0, values1[i1]);
}
}
return values;
};
var descending = function(a, b) {
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
};
var number = function(x) {
return x === null ? NaN : +x;
};
var variance = function(values, valueof) {
var n = values.length,
m = 0,
i = -1,
mean = 0,
value,
delta,
sum = 0;
if (valueof == null) {
while (++i < n) {
if (!isNaN(value = number(values[i]))) {
delta = value - mean;
mean += delta / ++m;
sum += delta * (value - mean);
}
}
}
else {
while (++i < n) {
if (!isNaN(value = number(valueof(values[i], i, values)))) {
delta = value - mean;
mean += delta / ++m;
sum += delta * (value - mean);
}
}
}
if (m > 1) return sum / (m - 1);
};
var deviation = function(array, f) {
var v = variance(array, f);
return v ? Math.sqrt(v) : v;
};
var extent = function(values, valueof) {
var n = values.length,
i = -1,
value,
min,
max;
if (valueof == null) {
while (++i < n) { // Find the first comparable value.
if ((value = values[i]) != null && value >= value) {
min = max = value;
while (++i < n) { // Compare the remaining values.
if ((value = values[i]) != null) {
if (min > value) min = value;
if (max < value) max = value;
}
}
}
}
}
else {
while (++i < n) { // Find the first comparable value.
if ((value = valueof(values[i], i, values)) != null && value >= value) {
min = max = value;
while (++i < n) { // Compare the remaining values.
if ((value = valueof(values[i], i, values)) != null) {
if (min > value) min = value;
if (max < value) max = value;
}
}
}
}
}
return [min, max];
};
var array = Array.prototype;
var slice = array.slice;
var map = array.map;
var constant = function(x) {
return function() {
return x;
};
};
var identity = function(x) {
return x;
};
var range = function(start, stop, step) {
start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;
var i = -1,
n = Math.max(0, Math.ceil((stop - start) / step)) | 0,
range = new Array(n);
while (++i < n) {
range[i] = start + i * step;
}
return range;
};
var e10 = Math.sqrt(50);
var e5 = Math.sqrt(10);
var e2 = Math.sqrt(2);
var ticks = function(start, stop, count) {
var reverse,
i = -1,
n,
ticks,
step;
stop = +stop, start = +start, count = +count;
if (start === stop && count > 0) return [start];
if (reverse = stop < start) n = start, start = stop, stop = n;
if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];
if (step > 0) {
start = Math.ceil(start / step);
stop = Math.floor(stop / step);
ticks = new Array(n = Math.ceil(stop - start + 1));
while (++i < n) ticks[i] = (start + i) * step;
} else {
start = Math.floor(start * step);
stop = Math.ceil(stop * step);
ticks = new Array(n = Math.ceil(start - stop + 1));
while (++i < n) ticks[i] = (start - i) / step;
}
if (reverse) ticks.reverse();
return ticks;
};
function tickIncrement(start, stop, count) {
var step = (stop - start) / Math.max(0, count),
power = Math.floor(Math.log(step) / Math.LN10),
error = step / Math.pow(10, power);
return power >= 0
? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)
: -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);
}
function tickStep(start, stop, count) {
var step0 = Math.abs(stop - start) / Math.max(0, count),
step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),
error = step0 / step1;
if (error >= e10) step1 *= 10;
else if (error >= e5) step1 *= 5;
else if (error >= e2) step1 *= 2;
return stop < start ? -step1 : step1;
}
var sturges = function(values) {
return Math.ceil(Math.log(values.length) / Math.LN2) + 1;
};
var histogram = function() {
var value = identity,
domain = extent,
threshold = sturges;
function histogram(data) {
var i,
n = data.length,
x,
values = new Array(n);
for (i = 0; i < n; ++i) {
values[i] = value(data[i], i, data);
}
var xz = domain(values),
x0 = xz[0],
x1 = xz[1],
tz = threshold(values, x0, x1);
// Convert number of thresholds into uniform thresholds.
if (!Array.isArray(tz)) {
tz = tickStep(x0, x1, tz);
tz = range(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive
}
// Remove any thresholds outside the domain.
var m = tz.length;
while (tz[0] <= x0) tz.shift(), --m;
while (tz[m - 1] > x1) tz.pop(), --m;
var bins = new Array(m + 1),
bin;
// Initialize bins.
for (i = 0; i <= m; ++i) {
bin = bins[i] = [];
bin.x0 = i > 0 ? tz[i - 1] : x0;
bin.x1 = i < m ? tz[i] : x1;
}
// Assign data to bins by value, ignoring any outside the domain.
for (i = 0; i < n; ++i) {
x = values[i];
if (x0 <= x && x <= x1) {
bins[bisectRight(tz, x, 0, m)].push(data[i]);
}
}
return bins;
}
histogram.value = function(_) {
return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value;
};
histogram.domain = function(_) {
return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain;
};
histogram.thresholds = function(_) {
return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;
};
return histogram;
};
var quantile = function(values, p, valueof) {
if (valueof == null) valueof = number;
if (!(n = values.length)) return;
if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);
if (p >= 1) return +valueof(values[n - 1], n - 1, values);
var n,
i = (n - 1) * p,
i0 = Math.floor(i),
value0 = +valueof(values[i0], i0, values),
value1 = +valueof(values[i0 + 1], i0 + 1, values);
return value0 + (value1 - value0) * (i - i0);
};
var freedmanDiaconis = function(values, min, max) {
values = map.call(values, number).sort(ascending);
return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));
};
var scott = function(values, min, max) {
return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));
};
var max = function(values, valueof) {
var n = values.length,
i = -1,
value,
max;
if (valueof == null) {
while (++i < n) { // Find the first comparable value.
if ((value = values[i]) != null && value >= value) {
max = value;
while (++i < n) { // Compare the remaining values.
if ((value = values[i]) != null && value > max) {
max = value;
}
}
}
}
}
else {
while (++i < n) { // Find the first comparable value.
if ((value = valueof(values[i], i, values)) != null && value >= value) {
max = value;
while (++i < n) { // Compare the remaining values.
if ((value = valueof(values[i], i, values)) != null && value > max) {
max = value;
}
}
}
}
}
return max;
};
var mean = function(values, valueof) {
var n = values.length,
m = n,
i = -1,
value,
sum = 0;
if (valueof == null) {
while (++i < n) {
if (!isNaN(value = number(values[i]))) sum += value;
else --m;
}
}
else {
while (++i < n) {
if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;
else --m;
}
}
if (m) return sum / m;
};
var median = function(values, valueof) {
var n = values.length,
i = -1,
value,
numbers = [];
if (valueof == null) {
while (++i < n) {
if (!isNaN(value = number(values[i]))) {
numbers.push(value);
}
}
}
else {
while (++i < n) {
if (!isNaN(value = number(valueof(values[i], i, values)))) {
numbers.push(value);
}
}
}
return quantile(numbers.sort(ascending), 0.5);
};
var merge = function(arrays) {
var n = arrays.length,
m,
i = -1,
j = 0,
merged,
array;
while (++i < n) j += arrays[i].length;
merged = new Array(j);
while (--n >= 0) {
array = arrays[n];
m = array.length;
while (--m >= 0) {
merged[--j] = array[m];
}
}
return merged;
};
var min = function(values, valueof) {
var n = values.length,
i = -1,
value,
min;
if (valueof == null) {
while (++i < n) { // Find the first comparable value.
if ((value = values[i]) != null && value >= value) {
min = value;
while (++i < n) { // Compare the remaining values.
if ((value = values[i]) != null && min > value) {
min = value;
}
}
}
}
}
else {
while (++i < n) { // Find the first comparable value.
if ((value = valueof(values[i], i, values)) != null && value >= value) {
min = value;
while (++i < n) { // Compare the remaining values.
if ((value = valueof(values[i], i, values)) != null && min > value) {
min = value;
}
}
}
}
}
return min;
};
var permute = function(array, indexes) {
var i = indexes.length, permutes = new Array(i);
while (i--) permutes[i] = array[indexes[i]];
return permutes;
};
var scan = function(values, compare) {
if (!(n = values.length)) return;
var n,
i = 0,
j = 0,
xi,
xj = values[j];
if (compare == null) compare = ascending;
while (++i < n) {
if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {
xj = xi, j = i;
}
}
if (compare(xj, xj) === 0) return j;
};
var shuffle = function(array, i0, i1) {
var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),
t,
i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m + i0];
array[m + i0] = array[i + i0];
array[i + i0] = t;
}
return array;
};
var sum = function(values, valueof) {
var n = values.length,
i = -1,
value,
sum = 0;
if (valueof == null) {
while (++i < n) {
if (value = +values[i]) sum += value; // Note: zero and null are equivalent.
}
}
else {
while (++i < n) {
if (value = +valueof(values[i], i, values)) sum += value;
}
}
return sum;
};
var transpose = function(matrix) {
if (!(n = matrix.length)) return [];
for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {
for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {
row[j] = matrix[j][i];
}
}
return transpose;
};
function length(d) {
return d.length;
}
var zip = function() {
return transpose(arguments);
};
exports.bisect = bisectRight;
exports.bisectRight = bisectRight;
exports.bisectLeft = bisectLeft;
exports.ascending = ascending;
exports.bisector = bisector;
exports.cross = cross;
exports.descending = descending;
exports.deviation = deviation;
exports.extent = extent;
exports.histogram = histogram;
exports.thresholdFreedmanDiaconis = freedmanDiaconis;
exports.thresholdScott = scott;
exports.thresholdSturges = sturges;
exports.max = max;
exports.mean = mean;
exports.median = median;
exports.merge = merge;
exports.min = min;
exports.pairs = pairs;
exports.permute = permute;
exports.quantile = quantile;
exports.range = range;
exports.scan = scan;
exports.shuffle = shuffle;
exports.sum = sum;
exports.ticks = ticks;
exports.tickIncrement = tickIncrement;
exports.tickStep = tickStep;
exports.transpose = transpose;
exports.variance = variance;
exports.zip = zip;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],13:[function(require,module,exports){
// https://d3js.org/d3-collection/ Version 1.0.4. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var prefix = "$";
function Map() {}
Map.prototype = map.prototype = {
constructor: Map,
has: function(key) {
return (prefix + key) in this;
},
get: function(key) {
return this[prefix + key];
},
set: function(key, value) {
this[prefix + key] = value;
return this;
},
remove: function(key) {
var property = prefix + key;
return property in this && delete this[property];
},
clear: function() {
for (var property in this) if (property[0] === prefix) delete this[property];
},
keys: function() {
var keys = [];
for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));
return keys;
},
values: function() {
var values = [];
for (var property in this) if (property[0] === prefix) values.push(this[property]);
return values;
},
entries: function() {
var entries = [];
for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});
return entries;
},
size: function() {
var size = 0;
for (var property in this) if (property[0] === prefix) ++size;
return size;
},
empty: function() {
for (var property in this) if (property[0] === prefix) return false;
return true;
},
each: function(f) {
for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);
}
};
function map(object, f) {
var map = new Map;
// Copy constructor.
if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });
// Index array by numeric index or specified key function.
else if (Array.isArray(object)) {
var i = -1,
n = object.length,
o;
if (f == null) while (++i < n) map.set(i, object[i]);
else while (++i < n) map.set(f(o = object[i], i, object), o);
}
// Convert object to map.
else if (object) for (var key in object) map.set(key, object[key]);
return map;
}
var nest = function() {
var keys = [],
sortKeys = [],
sortValues,
rollup,
nest;
function apply(array, depth, createResult, setResult) {
if (depth >= keys.length) {
if (sortValues != null) array.sort(sortValues);
return rollup != null ? rollup(array) : array;
}
var i = -1,
n = array.length,
key = keys[depth++],
keyValue,
value,
valuesByKey = map(),
values,
result = createResult();
while (++i < n) {
if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) {
values.push(value);
} else {
valuesByKey.set(keyValue, [value]);
}
}
valuesByKey.each(function(values, key) {
setResult(result, key, apply(values, depth, createResult, setResult));
});
return result;
}
function entries(map$$1, depth) {
if (++depth > keys.length) return map$$1;
var array, sortKey = sortKeys[depth - 1];
if (rollup != null && depth >= keys.length) array = map$$1.entries();
else array = [], map$$1.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });
return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;
}
return nest = {
object: function(array) { return apply(array, 0, createObject, setObject); },
map: function(array) { return apply(array, 0, createMap, setMap); },
entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },
key: function(d) { keys.push(d); return nest; },
sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },
sortValues: function(order) { sortValues = order; return nest; },
rollup: function(f) { rollup = f; return nest; }
};
};
function createObject() {
return {};
}
function setObject(object, key, value) {
object[key] = value;
}
function createMap() {
return map();
}
function setMap(map$$1, key, value) {
map$$1.set(key, value);
}
function Set() {}
var proto = map.prototype;
Set.prototype = set.prototype = {
constructor: Set,
has: proto.has,
add: function(value) {
value += "";
this[prefix + value] = value;
return this;
},
remove: proto.remove,
clear: proto.clear,
values: proto.keys,
size: proto.size,
empty: proto.empty,
each: proto.each
};
function set(object, f) {
var set = new Set;
// Copy constructor.
if (object instanceof Set) object.each(function(value) { set.add(value); });
// Otherwise, assume it’s an array.
else if (object) {
var i = -1, n = object.length;
if (f == null) while (++i < n) set.add(object[i]);
else while (++i < n) set.add(f(object[i], i, object));
}
return set;
}
var keys = function(map) {
var keys = [];
for (var key in map) keys.push(key);
return keys;
};
var values = function(map) {
var values = [];
for (var key in map) values.push(map[key]);
return values;
};
var entries = function(map) {
var entries = [];
for (var key in map) entries.push({key: key, value: map[key]});
return entries;
};
exports.nest = nest;
exports.set = set;
exports.map = map;
exports.keys = keys;
exports.values = values;
exports.entries = entries;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],14:[function(require,module,exports){
// https://d3js.org/d3-color/ Version 1.2.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var define = function(constructor, factory, prototype) {
constructor.prototype = factory.prototype = prototype;
prototype.constructor = constructor;
};
function extend(parent, definition) {
var prototype = Object.create(parent.prototype);
for (var key in definition) prototype[key] = definition[key];
return prototype;
}
function Color() {}
var darker = 0.7;
var brighter = 1 / darker;
var reI = "\\s*([+-]?\\d+)\\s*";
var reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*";
var reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*";
var reHex3 = /^#([0-9a-f]{3})$/;
var reHex6 = /^#([0-9a-f]{6})$/;
var reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$");
var reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$");
var reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$");
var reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$");
var reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$");
var reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$");
var named = {
aliceblue: 0xf0f8ff,
antiquewhite: 0xfaebd7,
aqua: 0x00ffff,
aquamarine: 0x7fffd4,
azure: 0xf0ffff,
beige: 0xf5f5dc,
bisque: 0xffe4c4,
black: 0x000000,
blanchedalmond: 0xffebcd,
blue: 0x0000ff,
blueviolet: 0x8a2be2,
brown: 0xa52a2a,
burlywood: 0xdeb887,
cadetblue: 0x5f9ea0,
chartreuse: 0x7fff00,
chocolate: 0xd2691e,
coral: 0xff7f50,
cornflowerblue: 0x6495ed,
cornsilk: 0xfff8dc,
crimson: 0xdc143c,
cyan: 0x00ffff,
darkblue: 0x00008b,
darkcyan: 0x008b8b,
darkgoldenrod: 0xb8860b,
darkgray: 0xa9a9a9,
darkgreen: 0x006400,
darkgrey: 0xa9a9a9,
darkkhaki: 0xbdb76b,
darkmagenta: 0x8b008b,
darkolivegreen: 0x556b2f,
darkorange: 0xff8c00,
darkorchid: 0x9932cc,
darkred: 0x8b0000,
darksalmon: 0xe9967a,
darkseagreen: 0x8fbc8f,
darkslateblue: 0x483d8b,
darkslategray: 0x2f4f4f,
darkslategrey: 0x2f4f4f,
darkturquoise: 0x00ced1,
darkviolet: 0x9400d3,
deeppink: 0xff1493,
deepskyblue: 0x00bfff,
dimgray: 0x696969,
dimgrey: 0x696969,
dodgerblue: 0x1e90ff,
firebrick: 0xb22222,
floralwhite: 0xfffaf0,
forestgreen: 0x228b22,
fuchsia: 0xff00ff,
gainsboro: 0xdcdcdc,
ghostwhite: 0xf8f8ff,
gold: 0xffd700,
goldenrod: 0xdaa520,
gray: 0x808080,
green: 0x008000,
greenyellow: 0xadff2f,
grey: 0x808080,
honeydew: 0xf0fff0,
hotpink: 0xff69b4,
indianred: 0xcd5c5c,
indigo: 0x4b0082,
ivory: 0xfffff0,
khaki: 0xf0e68c,
lavender: 0xe6e6fa,
lavenderblush: 0xfff0f5,
lawngreen: 0x7cfc00,
lemonchiffon: 0xfffacd,
lightblue: 0xadd8e6,
lightcoral: 0xf08080,
lightcyan: 0xe0ffff,
lightgoldenrodyellow: 0xfafad2,
lightgray: 0xd3d3d3,
lightgreen: 0x90ee90,
lightgrey: 0xd3d3d3,
lightpink: 0xffb6c1,
lightsalmon: 0xffa07a,
lightseagreen: 0x20b2aa,
lightskyblue: 0x87cefa,
lightslategray: 0x778899,
lightslategrey: 0x778899,
lightsteelblue: 0xb0c4de,
lightyellow: 0xffffe0,
lime: 0x00ff00,
limegreen: 0x32cd32,
linen: 0xfaf0e6,
magenta: 0xff00ff,
maroon: 0x800000,
mediumaquamarine: 0x66cdaa,
mediumblue: 0x0000cd,
mediumorchid: 0xba55d3,
mediumpurple: 0x9370db,
mediumseagreen: 0x3cb371,
mediumslateblue: 0x7b68ee,
mediumspringgreen: 0x00fa9a,
mediumturquoise: 0x48d1cc,
mediumvioletred: 0xc71585,
midnightblue: 0x191970,
mintcream: 0xf5fffa,
mistyrose: 0xffe4e1,
moccasin: 0xffe4b5,
navajowhite: 0xffdead,
navy: 0x000080,
oldlace: 0xfdf5e6,
olive: 0x808000,
olivedrab: 0x6b8e23,
orange: 0xffa500,
orangered: 0xff4500,
orchid: 0xda70d6,
palegoldenrod: 0xeee8aa,
palegreen: 0x98fb98,
paleturquoise: 0xafeeee,
palevioletred: 0xdb7093,
papayawhip: 0xffefd5,
peachpuff: 0xffdab9,
peru: 0xcd853f,
pink: 0xffc0cb,
plum: 0xdda0dd,
powderblue: 0xb0e0e6,
purple: 0x800080,
rebeccapurple: 0x663399,
red: 0xff0000,
rosybrown: 0xbc8f8f,
royalblue: 0x4169e1,
saddlebrown: 0x8b4513,
salmon: 0xfa8072,
sandybrown: 0xf4a460,
seagreen: 0x2e8b57,
seashell: 0xfff5ee,
sienna: 0xa0522d,
silver: 0xc0c0c0,
skyblue: 0x87ceeb,
slateblue: 0x6a5acd,
slategray: 0x708090,
slategrey: 0x708090,
snow: 0xfffafa,
springgreen: 0x00ff7f,
steelblue: 0x4682b4,
tan: 0xd2b48c,
teal: 0x008080,
thistle: 0xd8bfd8,
tomato: 0xff6347,
turquoise: 0x40e0d0,
violet: 0xee82ee,
wheat: 0xf5deb3,
white: 0xffffff,
whitesmoke: 0xf5f5f5,
yellow: 0xffff00,
yellowgreen: 0x9acd32
};
define(Color, color, {
displayable: function() {
return this.rgb().displayable();
},
hex: function() {
return this.rgb().hex();
},
toString: function() {
return this.rgb() + "";
}
});
function color(format) {
var m;
format = (format + "").trim().toLowerCase();
return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00
: (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000
: (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)
: (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)
: (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)
: (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)
: (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)
: (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)
: named.hasOwnProperty(format) ? rgbn(named[format])
: format === "transparent" ? new Rgb(NaN, NaN, NaN, 0)
: null;
}
function rgbn(n) {
return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);
}
function rgba(r, g, b, a) {
if (a <= 0) r = g = b = NaN;
return new Rgb(r, g, b, a);
}
function rgbConvert(o) {
if (!(o instanceof Color)) o = color(o);
if (!o) return new Rgb;
o = o.rgb();
return new Rgb(o.r, o.g, o.b, o.opacity);
}
function rgb(r, g, b, opacity) {
return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);
}
function Rgb(r, g, b, opacity) {
this.r = +r;
this.g = +g;
this.b = +b;
this.opacity = +opacity;
}
define(Rgb, rgb, extend(Color, {
brighter: function(k) {
k = k == null ? brighter : Math.pow(brighter, k);
return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
},
darker: function(k) {
k = k == null ? darker : Math.pow(darker, k);
return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
},
rgb: function() {
return this;
},
displayable: function() {
return (0 <= this.r && this.r <= 255)
&& (0 <= this.g && this.g <= 255)
&& (0 <= this.b && this.b <= 255)
&& (0 <= this.opacity && this.opacity <= 1);
},
hex: function() {
return "#" + hex(this.r) + hex(this.g) + hex(this.b);
},
toString: function() {
var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
return (a === 1 ? "rgb(" : "rgba(")
+ Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", "
+ Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", "
+ Math.max(0, Math.min(255, Math.round(this.b) || 0))
+ (a === 1 ? ")" : ", " + a + ")");
}
}));
function hex(value) {
value = Math.max(0, Math.min(255, Math.round(value) || 0));
return (value < 16 ? "0" : "") + value.toString(16);
}
function hsla(h, s, l, a) {
if (a <= 0) h = s = l = NaN;
else if (l <= 0 || l >= 1) h = s = NaN;
else if (s <= 0) h = NaN;
return new Hsl(h, s, l, a);
}
function hslConvert(o) {
if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);
if (!(o instanceof Color)) o = color(o);
if (!o) return new Hsl;
if (o instanceof Hsl) return o;
o = o.rgb();
var r = o.r / 255,
g = o.g / 255,
b = o.b / 255,
min = Math.min(r, g, b),
max = Math.max(r, g, b),
h = NaN,
s = max - min,
l = (max + min) / 2;
if (s) {
if (r === max) h = (g - b) / s + (g < b) * 6;
else if (g === max) h = (b - r) / s + 2;
else h = (r - g) / s + 4;
s /= l < 0.5 ? max + min : 2 - max - min;
h *= 60;
} else {
s = l > 0 && l < 1 ? 0 : h;
}
return new Hsl(h, s, l, o.opacity);
}
function hsl(h, s, l, opacity) {
return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);
}
function Hsl(h, s, l, opacity) {
this.h = +h;
this.s = +s;
this.l = +l;
this.opacity = +opacity;
}
define(Hsl, hsl, extend(Color, {
brighter: function(k) {
k = k == null ? brighter : Math.pow(brighter, k);
return new Hsl(this.h, this.s, this.l * k, this.opacity);
},
darker: function(k) {
k = k == null ? darker : Math.pow(darker, k);
return new Hsl(this.h, this.s, this.l * k, this.opacity);
},
rgb: function() {
var h = this.h % 360 + (this.h < 0) * 360,
s = isNaN(h) || isNaN(this.s) ? 0 : this.s,
l = this.l,
m2 = l + (l < 0.5 ? l : 1 - l) * s,
m1 = 2 * l - m2;
return new Rgb(
hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),
hsl2rgb(h, m1, m2),
hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),
this.opacity
);
},
displayable: function() {
return (0 <= this.s && this.s <= 1 || isNaN(this.s))
&& (0 <= this.l && this.l <= 1)
&& (0 <= this.opacity && this.opacity <= 1);
}
}));
/* From FvD 13.37, CSS Color Module Level 3 */
function hsl2rgb(h, m1, m2) {
return (h < 60 ? m1 + (m2 - m1) * h / 60
: h < 180 ? m2
: h < 240 ? m1 + (m2 - m1) * (240 - h) / 60
: m1) * 255;
}
var deg2rad = Math.PI / 180;
var rad2deg = 180 / Math.PI;
// https://beta.observablehq.com/@mbostock/lab-and-rgb
var K = 18;
var Xn = 0.96422;
var Yn = 1;
var Zn = 0.82521;
var t0 = 4 / 29;
var t1 = 6 / 29;
var t2 = 3 * t1 * t1;
var t3 = t1 * t1 * t1;
function labConvert(o) {
if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);
if (o instanceof Hcl) {
if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);
var h = o.h * deg2rad;
return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);
}
if (!(o instanceof Rgb)) o = rgbConvert(o);
var r = rgb2lrgb(o.r),
g = rgb2lrgb(o.g),
b = rgb2lrgb(o.b),
y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;
if (r === g && g === b) x = z = y; else {
x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);
z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);
}
return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);
}
function gray(l, opacity) {
return new Lab(l, 0, 0, opacity == null ? 1 : opacity);
}
function lab(l, a, b, opacity) {
return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);
}
function Lab(l, a, b, opacity) {
this.l = +l;
this.a = +a;
this.b = +b;
this.opacity = +opacity;
}
define(Lab, lab, extend(Color, {
brighter: function(k) {
return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);
},
darker: function(k) {
return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);
},
rgb: function() {
var y = (this.l + 16) / 116,
x = isNaN(this.a) ? y : y + this.a / 500,
z = isNaN(this.b) ? y : y - this.b / 200;
x = Xn * lab2xyz(x);
y = Yn * lab2xyz(y);
z = Zn * lab2xyz(z);
return new Rgb(
lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),
lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),
lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),
this.opacity
);
}
}));
function xyz2lab(t) {
return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;
}
function lab2xyz(t) {
return t > t1 ? t * t * t : t2 * (t - t0);
}
function lrgb2rgb(x) {
return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
}
function rgb2lrgb(x) {
return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
}
function hclConvert(o) {
if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);
if (!(o instanceof Lab)) o = labConvert(o);
if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);
var h = Math.atan2(o.b, o.a) * rad2deg;
return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);
}
function lch(l, c, h, opacity) {
return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);
}
function hcl(h, c, l, opacity) {
return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);
}
function Hcl(h, c, l, opacity) {
this.h = +h;
this.c = +c;
this.l = +l;
this.opacity = +opacity;
}
define(Hcl, hcl, extend(Color, {
brighter: function(k) {
return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);
},
darker: function(k) {
return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);
},
rgb: function() {
return labConvert(this).rgb();
}
}));
var A = -0.14861;
var B = +1.78277;
var C = -0.29227;
var D = -0.90649;
var E = +1.97294;
var ED = E * D;
var EB = E * B;
var BC_DA = B * C - D * A;
function cubehelixConvert(o) {
if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);
if (!(o instanceof Rgb)) o = rgbConvert(o);
var r = o.r / 255,
g = o.g / 255,
b = o.b / 255,
l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),
bl = b - l,
k = (E * (g - l) - C * bl) / D,
s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1
h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;
return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);
}
function cubehelix(h, s, l, opacity) {
return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);
}
function Cubehelix(h, s, l, opacity) {
this.h = +h;
this.s = +s;
this.l = +l;
this.opacity = +opacity;
}
define(Cubehelix, cubehelix, extend(Color, {
brighter: function(k) {
k = k == null ? brighter : Math.pow(brighter, k);
return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
},
darker: function(k) {
k = k == null ? darker : Math.pow(darker, k);
return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
},
rgb: function() {
var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,
l = +this.l,
a = isNaN(this.s) ? 0 : this.s * l * (1 - l),
cosh = Math.cos(h),
sinh = Math.sin(h);
return new Rgb(
255 * (l + a * (A * cosh + B * sinh)),
255 * (l + a * (C * cosh + D * sinh)),
255 * (l + a * (E * cosh)),
this.opacity
);
}
}));
exports.color = color;
exports.rgb = rgb;
exports.hsl = hsl;
exports.lab = lab;
exports.hcl = hcl;
exports.lch = lch;
exports.gray = gray;
exports.cubehelix = cubehelix;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],15:[function(require,module,exports){
// https://d3js.org/d3-dispatch/ Version 1.0.3. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var noop = {value: function() {}};
function dispatch() {
for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t);
_[t] = [];
}
return new Dispatch(_);
}
function Dispatch(_) {
this._ = _;
}
function parseTypenames(typenames, types) {
return typenames.trim().split(/^|\s+/).map(function(t) {
var name = "", i = t.indexOf(".");
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
return {type: t, name: name};
});
}
Dispatch.prototype = dispatch.prototype = {
constructor: Dispatch,
on: function(typename, callback) {
var _ = this._,
T = parseTypenames(typename + "", _),
t,
i = -1,
n = T.length;
// If no callback was specified, return the callback of the given type and name.
if (arguments.length < 2) {
while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;
return;
}
// If a type was specified, set the callback for the given type and name.
// Otherwise, if a null callback was specified, remove callbacks of the given name.
if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback);
while (++i < n) {
if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);
else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);
}
return this;
},
copy: function() {
var copy = {}, _ = this._;
for (var t in _) copy[t] = _[t].slice();
return new Dispatch(copy);
},
call: function(type, that) {
if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];
if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
},
apply: function(type, that, args) {
if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
}
};
function get(type, name) {
for (var i = 0, n = type.length, c; i < n; ++i) {
if ((c = type[i]).name === name) {
return c.value;
}
}
}
function set(type, name, callback) {
for (var i = 0, n = type.length; i < n; ++i) {
if (type[i].name === name) {
type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));
break;
}
}
if (callback != null) type.push({name: name, value: callback});
return type;
}
exports.dispatch = dispatch;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],16:[function(require,module,exports){
// https://d3js.org/d3-drag/ Version 1.2.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-dispatch'), require('d3-selection')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-dispatch', 'd3-selection'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3));
}(this, (function (exports,d3Dispatch,d3Selection) { 'use strict';
function nopropagation() {
d3Selection.event.stopImmediatePropagation();
}
var noevent = function() {
d3Selection.event.preventDefault();
d3Selection.event.stopImmediatePropagation();
};
var nodrag = function(view) {
var root = view.document.documentElement,
selection = d3Selection.select(view).on("dragstart.drag", noevent, true);
if ("onselectstart" in root) {
selection.on("selectstart.drag", noevent, true);
} else {
root.__noselect = root.style.MozUserSelect;
root.style.MozUserSelect = "none";
}
};
function yesdrag(view, noclick) {
var root = view.document.documentElement,
selection = d3Selection.select(view).on("dragstart.drag", null);
if (noclick) {
selection.on("click.drag", noevent, true);
setTimeout(function() { selection.on("click.drag", null); }, 0);
}
if ("onselectstart" in root) {
selection.on("selectstart.drag", null);
} else {
root.style.MozUserSelect = root.__noselect;
delete root.__noselect;
}
}
var constant = function(x) {
return function() {
return x;
};
};
function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch$$1) {
this.target = target;
this.type = type;
this.subject = subject;
this.identifier = id;
this.active = active;
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
this._ = dispatch$$1;
}
DragEvent.prototype.on = function() {
var value = this._.on.apply(this._, arguments);
return value === this._ ? this : value;
};
// Ignore right-click, since that should open the context menu.
function defaultFilter() {
return !d3Selection.event.button;
}
function defaultContainer() {
return this.parentNode;
}
function defaultSubject(d) {
return d == null ? {x: d3Selection.event.x, y: d3Selection.event.y} : d;
}
function defaultTouchable() {
return "ontouchstart" in this;
}
var drag = function() {
var filter = defaultFilter,
container = defaultContainer,
subject = defaultSubject,
touchable = defaultTouchable,
gestures = {},
listeners = d3Dispatch.dispatch("start", "drag", "end"),
active = 0,
mousedownx,
mousedowny,
mousemoving,
touchending,
clickDistance2 = 0;
function drag(selection) {
selection
.on("mousedown.drag", mousedowned)
.filter(touchable)
.on("touchstart.drag", touchstarted)
.on("touchmove.drag", touchmoved)
.on("touchend.drag touchcancel.drag", touchended)
.style("touch-action", "none")
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
}
function mousedowned() {
if (touchending || !filter.apply(this, arguments)) return;
var gesture = beforestart("mouse", container.apply(this, arguments), d3Selection.mouse, this, arguments);
if (!gesture) return;
d3Selection.select(d3Selection.event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true);
nodrag(d3Selection.event.view);
nopropagation();
mousemoving = false;
mousedownx = d3Selection.event.clientX;
mousedowny = d3Selection.event.clientY;
gesture("start");
}
function mousemoved() {
noevent();
if (!mousemoving) {
var dx = d3Selection.event.clientX - mousedownx, dy = d3Selection.event.clientY - mousedowny;
mousemoving = dx * dx + dy * dy > clickDistance2;
}
gestures.mouse("drag");
}
function mouseupped() {
d3Selection.select(d3Selection.event.view).on("mousemove.drag mouseup.drag", null);
yesdrag(d3Selection.event.view, mousemoving);
noevent();
gestures.mouse("end");
}
function touchstarted() {
if (!filter.apply(this, arguments)) return;
var touches = d3Selection.event.changedTouches,
c = container.apply(this, arguments),
n = touches.length, i, gesture;
for (i = 0; i < n; ++i) {
if (gesture = beforestart(touches[i].identifier, c, d3Selection.touch, this, arguments)) {
nopropagation();
gesture("start");
}
}
}
function touchmoved() {
var touches = d3Selection.event.changedTouches,
n = touches.length, i, gesture;
for (i = 0; i < n; ++i) {
if (gesture = gestures[touches[i].identifier]) {
noevent();
gesture("drag");
}
}
}
function touchended() {
var touches = d3Selection.event.changedTouches,
n = touches.length, i, gesture;
if (touchending) clearTimeout(touchending);
touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
for (i = 0; i < n; ++i) {
if (gesture = gestures[touches[i].identifier]) {
nopropagation();
gesture("end");
}
}
}
function beforestart(id, container, point, that, args) {
var p = point(container, id), s, dx, dy,
sublisteners = listeners.copy();
if (!d3Selection.customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {
if ((d3Selection.event.subject = s = subject.apply(that, args)) == null) return false;
dx = s.x - p[0] || 0;
dy = s.y - p[1] || 0;
return true;
})) return;
return function gesture(type) {
var p0 = p, n;
switch (type) {
case "start": gestures[id] = gesture, n = active++; break;
case "end": delete gestures[id], --active; // nobreak
case "drag": p = point(container, id), n = active; break;
}
d3Selection.customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);
};
}
drag.filter = function(_) {
return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), drag) : filter;
};
drag.container = function(_) {
return arguments.length ? (container = typeof _ === "function" ? _ : constant(_), drag) : container;
};
drag.subject = function(_) {
return arguments.length ? (subject = typeof _ === "function" ? _ : constant(_), drag) : subject;
};
drag.touchable = function(_) {
return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), drag) : touchable;
};
drag.on = function() {
var value = listeners.on.apply(listeners, arguments);
return value === listeners ? drag : value;
};
drag.clickDistance = function(_) {
return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);
};
return drag;
};
exports.drag = drag;
exports.dragDisable = nodrag;
exports.dragEnable = yesdrag;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-dispatch":15,"d3-selection":23}],17:[function(require,module,exports){
// https://d3js.org/d3-ease/ Version 1.0.3. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
function linear(t) {
return +t;
}
function quadIn(t) {
return t * t;
}
function quadOut(t) {
return t * (2 - t);
}
function quadInOut(t) {
return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;
}
function cubicIn(t) {
return t * t * t;
}
function cubicOut(t) {
return --t * t * t + 1;
}
function cubicInOut(t) {
return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;
}
var exponent = 3;
var polyIn = (function custom(e) {
e = +e;
function polyIn(t) {
return Math.pow(t, e);
}
polyIn.exponent = custom;
return polyIn;
})(exponent);
var polyOut = (function custom(e) {
e = +e;
function polyOut(t) {
return 1 - Math.pow(1 - t, e);
}
polyOut.exponent = custom;
return polyOut;
})(exponent);
var polyInOut = (function custom(e) {
e = +e;
function polyInOut(t) {
return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;
}
polyInOut.exponent = custom;
return polyInOut;
})(exponent);
var pi = Math.PI;
var halfPi = pi / 2;
function sinIn(t) {
return 1 - Math.cos(t * halfPi);
}
function sinOut(t) {
return Math.sin(t * halfPi);
}
function sinInOut(t) {
return (1 - Math.cos(pi * t)) / 2;
}
function expIn(t) {
return Math.pow(2, 10 * t - 10);
}
function expOut(t) {
return 1 - Math.pow(2, -10 * t);
}
function expInOut(t) {
return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;
}
function circleIn(t) {
return 1 - Math.sqrt(1 - t * t);
}
function circleOut(t) {
return Math.sqrt(1 - --t * t);
}
function circleInOut(t) {
return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;
}
var b1 = 4 / 11;
var b2 = 6 / 11;
var b3 = 8 / 11;
var b4 = 3 / 4;
var b5 = 9 / 11;
var b6 = 10 / 11;
var b7 = 15 / 16;
var b8 = 21 / 22;
var b9 = 63 / 64;
var b0 = 1 / b1 / b1;
function bounceIn(t) {
return 1 - bounceOut(1 - t);
}
function bounceOut(t) {
return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;
}
function bounceInOut(t) {
return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;
}
var overshoot = 1.70158;
var backIn = (function custom(s) {
s = +s;
function backIn(t) {
return t * t * ((s + 1) * t - s);
}
backIn.overshoot = custom;
return backIn;
})(overshoot);
var backOut = (function custom(s) {
s = +s;
function backOut(t) {
return --t * t * ((s + 1) * t + s) + 1;
}
backOut.overshoot = custom;
return backOut;
})(overshoot);
var backInOut = (function custom(s) {
s = +s;
function backInOut(t) {
return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;
}
backInOut.overshoot = custom;
return backInOut;
})(overshoot);
var tau = 2 * Math.PI;
var amplitude = 1;
var period = 0.3;
var elasticIn = (function custom(a, p) {
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
function elasticIn(t) {
return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);
}
elasticIn.amplitude = function(a) { return custom(a, p * tau); };
elasticIn.period = function(p) { return custom(a, p); };
return elasticIn;
})(amplitude, period);
var elasticOut = (function custom(a, p) {
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
function elasticOut(t) {
return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);
}
elasticOut.amplitude = function(a) { return custom(a, p * tau); };
elasticOut.period = function(p) { return custom(a, p); };
return elasticOut;
})(amplitude, period);
var elasticInOut = (function custom(a, p) {
var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
function elasticInOut(t) {
return ((t = t * 2 - 1) < 0
? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)
: 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;
}
elasticInOut.amplitude = function(a) { return custom(a, p * tau); };
elasticInOut.period = function(p) { return custom(a, p); };
return elasticInOut;
})(amplitude, period);
exports.easeLinear = linear;
exports.easeQuad = quadInOut;
exports.easeQuadIn = quadIn;
exports.easeQuadOut = quadOut;
exports.easeQuadInOut = quadInOut;
exports.easeCubic = cubicInOut;
exports.easeCubicIn = cubicIn;
exports.easeCubicOut = cubicOut;
exports.easeCubicInOut = cubicInOut;
exports.easePoly = polyInOut;
exports.easePolyIn = polyIn;
exports.easePolyOut = polyOut;
exports.easePolyInOut = polyInOut;
exports.easeSin = sinInOut;
exports.easeSinIn = sinIn;
exports.easeSinOut = sinOut;
exports.easeSinInOut = sinInOut;
exports.easeExp = expInOut;
exports.easeExpIn = expIn;
exports.easeExpOut = expOut;
exports.easeExpInOut = expInOut;
exports.easeCircle = circleInOut;
exports.easeCircleIn = circleIn;
exports.easeCircleOut = circleOut;
exports.easeCircleInOut = circleInOut;
exports.easeBounce = bounceOut;
exports.easeBounceIn = bounceIn;
exports.easeBounceOut = bounceOut;
exports.easeBounceInOut = bounceInOut;
exports.easeBack = backInOut;
exports.easeBackIn = backIn;
exports.easeBackOut = backOut;
exports.easeBackInOut = backInOut;
exports.easeElastic = elasticOut;
exports.easeElasticIn = elasticIn;
exports.easeElasticOut = elasticOut;
exports.easeElasticInOut = elasticInOut;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],18:[function(require,module,exports){
var hsl = require('hsl-to-rgb-for-reals')
var rxEsc = require('escape-string-regexp')
// small pseudo d3
var d3 = Object.assign(
{},
require('d3-array'),
require('d3-ease'),
require('d3-hierarchy'),
require('d3-scale'),
require('d3-selection'),
require('d3-zoom')
)
Object.defineProperty(d3, 'event', {
get: function () { return require('d3-selection').event }
})
var diffScale = d3.scaleLinear().range([0, 0.2])
var colors = {
v8: {h: 67, s: 81, l: 65},
inlinable: {h: 300, s: 100, l: 50},
regexp: {h: 27, s: 100, l: 50},
cpp: {h: 0, s: 50, l: 50},
native: {h: 122, s: 50, l: 45},
core: {h: 0, s: 0, l: 80},
deps: {h: 244, s: 50, l: 65},
app: {h: 200, s: 50, l: 45},
init: {h: 21, s: 81, l: 73}
}
colors.def = {h: 10, s: 66, l: 80}
colors.js = {h: 10, s: 66, l: 80}
colors.c = {h: 10, s: 66, l: 80}
var STATE_IDLE = 0
var STATE_HOVER = 1
var STATE_UNHOVER = 2
function flameGraph (opts) {
var tree = opts.tree
var timing = opts.timing || false
var element = opts.element
var c = 18 // cell height
var h = opts.height || (maxDepth(tree) + 2) * c // graph height
var minHeight = opts.minHeight || 950
h = h < minHeight ? minHeight : h
var w = opts.width || document.body.clientWidth * 0.89 // graph width
var scaleToWidth = null
var scaleToGraph = null
var panZoom = d3.zoom().on('zoom', function () {
update({ animate: false })
})
var selection = null // selection
var transitionDuration = 500
var transitionEase = d3.easeCubicInOut
var sort = true
var tiers = false
var filterNeeded = true
var filterTypes = []
var allSamples
var nodes = null
var focusedFrame = null
var hoverFrame = null
var isAnimating = false
onresize()
function onresize () {
panZoom.translateExtent([[0, 0], [w, h]])
scaleToWidth = d3.scaleLinear().range([0, w])
scaleToGraph = d3.scaleLinear().domain([0, w]).range([0, 1])
}
function time (name, fn) {
if (timing) {
console.time(name)
var result = fn()
console.timeEnd(name)
return result
} else return fn()
}
document.addEventListener('DOMContentLoaded', () => {
element.scrollTop = element.scrollHeight
})
var categorizer = opts.categorizer || categorize
var exclude = opts.exclude || []
function labelName (d) {
return d.data.name
}
function labelStack (d) {
if (!d.parent) return null
var onStack = d.data.name ? Math.round(100 * (d.data.value / allSamples) * 10) / 10 + '% on stack' : ''
var top = stackTop(d.data)
var topOfStack = d.data.name ? (top
? Math.round(100 * (top / allSamples) * 100) / 100 + '% stack top'
: '') : ''
if (onStack && topOfStack) { onStack += ', ' }
return onStack + topOfStack
}
function tooltipLabel (d) {
if (!d.parent) return ''
var top = stackTop(d.data)
return d.data.name + '<br />' + (top
? 'Top of Stack:' + Math.round(100 * (top / allSamples) * 10) / 10 + '% ' +
'(' + top + ' of ' + allSamples + ' samples)<br />'
: '') + 'On Stack:' + Math.round(100 * (d.data.value / allSamples) * 10) / 10 + '% ' +
'(' + d.data.value + ' of ' + allSamples + ' samples)'
}
function categorize (child) {
var name = child.name
// todo: C deps
if (!/.js/.test(name)) {
switch (true) {
case /^Builtin:|^Stub:|v8::|^(.+)IC:|^.*Handler:/
.test(name): return {type: 'v8'}
case /^RegExp:/
.test(name): return {type: 'regexp'}
case /apply$|call$|Arguments$/
.test(name): return {type: 'native'}
case /\.$/.test(name): return {type: 'core'}
default: return {type: 'cpp'}
}
}
if (/\[INIT\]/.test(name)) return {type: 'init'}
switch (true) {
case / native /.test(name): return {type: 'native'}
case (name.indexOf('/') === -1 || /internal\//.test(name) && !/ \//.test(name)): return {type: 'core'}
case !/node_modules/.test(name): return {type: 'app'}
default: return {type: 'deps'}
}
}
function frameDepth (node) {
var parent = node.parent
var depth = node.depth
if (parent && parent.data.hide) depth -= 1
while (parent && (parent = parent.parent)) {
if (parent.data.hide) depth -= 1
}
return depth
}
function frameWidth (d) {
var dx = d.x1 - d.x0
return dx * w
}
function filter (data) {
if (!filterNeeded) return
if (data.children && (data.children.length > 0)) {
data.children.forEach(filter)
data.children.forEach(function (child) {
if (~filterTypes.indexOf(child.data.type)) {
child.data.hide = true
} else {
child.data.hide = false
}
})
}
}
function categorizeTree (data) {
if (data.children && (data.children.length > 0)) {
data.children.forEach(categorizeTree)
data.children.forEach(function (child, ix, children) {
var lt = categorizer(child.data, ix, children)
child.data.type = lt.type
})
}
}
function hide (d) {
if (!d.data.original) {
d.data.original = d.data.value
}
d.data.value = 0
if (d.children) {
d.children.forEach(hide)
}
}
function show (d) {
d.data.fade = false
if (d.data.original) {
d.data.value = d.data.original
}
if (d.children) {
d.children.forEach(show)
}
}
function getSiblings (d) {
var siblings = []
if (d.parent) {
var me = d.parent.children.indexOf(d)
siblings = d.parent.children.slice(0)
siblings.splice(me, 1)
}
return siblings
}
function hideSiblings (d) {
var siblings = getSiblings(d)
siblings.forEach(function (s) {
hide(s)
})
if (d.parent) {
hideSiblings(d.parent)
}
}
function fadeAncestors (d) {
if (d.parent) {
d.parent.data.fade = true
fadeAncestors(d.parent)
}
}
function zoom (d) {
if (isAnimating) {
return // dont zoom during an animation for now
// Should be possible to do this by calling saveAnimationStartingPoints
// here, and doing Something Else (but not sure what the Something Else is)
}
time('zoom', function () {
focusedFrame = d.data
time('hideSiblings', function () {
hideSiblings(d)
})
time('show', function () {
show(d)
})
time('fadeAncestors', function () {
fadeAncestors(d)
})
time('update', function () {
update({ animate: true })
})
})
}
function searchTree (d, term, color) {
var re = term instanceof RegExp ? term : new RegExp(rxEsc(term), 'i')
var label = d.data.name
if (d.children) {
d.children.forEach(function (child) {
searchTree(child, term, color)
})
}
if (d.data.hide) { return }
var searchArea
if (d.data.type === 'cpp') { searchArea = label.split('[')[0] } else if (d.data.type === 'v8') { searchArea = label.split(' ')[0] } else if (d.data.type === 'regexp') { searchArea = label } else { searchArea = label.split(':')[0] }
if (re.test(searchArea)) {
d.data.highlight = color || true
} else {
d.data.highlight = false
}
}
function clear (d, color) {
if (!color || d.data.highlight === color) {
d.data.highlight = false
}
if (d.children) {
d.children.forEach(function (child) {
clear(child, color)
})
}
}
function doSort (a, b) {
if (typeof sort === 'function') {
return sort(a, b)
} else if (sort) {
return d3.ascending(a.data.name, b.data.name)
} else {
return 0
}
}
var partition = d3.partition()
function sumChildValues (a, b) {
// If a child is hidden or is (an ancestor of) the focusedFrame frame, don't count it
return a + (b.fade || b === focusedFrame ? 0 : b.value)
}
function update (opts) {
if (timing) console.group('update')
var mayAnimate = opts && opts.animate
selection
.each(function (data) {
time('filter', function () {
filter(data)
})
time('sum/sort', function () {
data
.sum(function (d) {
// If this is the ancestor of a focusedFrame frame, use the same value (width) as the focusedFrame frame.
if (d.fade) return d.children.reduce(sumChildValues, 0)
// d3 sums value + all child values to get the value for a node,
// we can set `value = specifiedValue - all child values` to counteract that.
// the `.value`s in our data already include the sum of all child values.
const childValues = d.children
? d.children.reduce(sumChildValues, 0)
: 0
return d.value - childValues
})
.sort(doSort)
// Make "all stacks" as wide as every visible stack.
data.value = data.children.reduce(sumChildValues, 0)
})
time('partition', function () {
return partition(data)
})
nodes = data.descendants()
var canvas = d3.select(this).select('canvas').node()
// Animate if data was known for this set of nodes in the past.
if (nodes[0].data.prev && mayAnimate) {
animate()
} else {
time('render', function () {
render(canvas, nodes)
saveAnimationStartingPoints()
})
}
function animate () {
isAnimating = true
var start = Date.now()
function nextFrame () {
var dt = (Date.now() - start) / transitionDuration
var ease = transitionEase(dt > 1 ? 1 : dt)
render(canvas, nodes, ease)
if (ease === 1) {
isAnimating = false
saveAnimationStartingPoints()
} else {
requestAnimationFrame(nextFrame)
}
}
requestAnimationFrame(nextFrame)
}
function render (canvas, nodes, ease) {
if (ease == null) ease = 1
var context = canvas.getContext('2d')
context.font = '12px Verdana, sans-serif'
context.textBaseline = 'bottom'
context.clearRect(0, 0, canvas.width, canvas.height)
withZoomTransform(context, function () {
nodes.forEach(function (node) {
renderNode(context, node, ease, STATE_IDLE)
})
})
}
})
if (timing) console.groupEnd('update')
}
function withZoomTransform (context, fn) {
var transform = d3.zoomTransform(context.canvas)
context.save()
context.translate(transform.x, transform.y)
context.scale(transform.k, transform.k)
fn()
context.restore()
}
function saveAnimationStartingPoints () {
nodes.forEach(function (node) {
node.data.prev = {
x0: node.x0,
x1: node.x1,
}
})
}
function renderNode (context, node, ease, state) {
if (node.data.hide) return
var depth = frameDepth(node)
var width = frameWidth(node)
if (width < 1) return
var x = scaleToWidth(node.x0)
if (ease !== 1 && node.data.prev) {
var pw = frameWidth(node.data.prev)
var px = scaleToWidth(node.data.prev.x0)
width = pw + ease * (width - pw)
x = px + ease * (x - px)
}
var strokeColor = node.parent ? colorHash(node.data, 1.1, allSamples, tiers) : 'rgba(0, 0, 0, 0.7)'
var fillColor = node.parent
? (node.data.highlight
? (typeof node.data.highlight === 'string' ? node.data.highlight : '#e600e6')
: colorHash(node.data, undefined, allSamples, tiers))
: '#fff'
if (state === STATE_HOVER || state === STATE_UNHOVER) {
context.clearRect(x, h - (depth * c) - c, width, c)
}
context.fillStyle = fillColor
context.strokeStyle = strokeColor
context.beginPath()
context.rect(x, h - (depth * c) - c, width, c)
context.stroke()
if (state === STATE_HOVER) {
context.save()
context.globalAlpha = 0.8
context.fill()
context.restore()
} else {
context.fill()
}
if (width >= 35) {
context.save()
context.clip()
context.font = '12px Verdana'
context.fillStyle = '#000'
// Center the "all stacks" text
if (!node.parent) {
context.textAlign = 'center'
x += width / 2
} else {
x += 4 // add padding to other nodes
}
var label = labelName(node)
context.fillText(label, x, h - (depth * c) - 1)
var stack = labelStack(node)
if (stack) {
var offs = context.measureText(label + ' ').width
context.font = '10px Verdana'
context.fillText(stack, x + offs, h - (depth * c) - 2)
}
context.restore()
}
}
function renderTooltip (pos, node) {
var label = tooltipLabel(node)
var x = pos[0] + 3
var tooltip = d3.select(element).select('.d3-flame-graph-tooltip')
.style('top', (pos[1] + 16) + 'px')
.style('display', 'block')
.html(label)
if (x + 300 > window.innerWidth) {
tooltip.style('left', 'auto').style('right', '10px')
} else {
tooltip.style('right', 'auto').style('left', x + 'px')
}
}
// Wait for 500 ms before showing the tooltip.
var tooltipFocusNode = null
var tooltipFocusTimeout = null
function showTooltip (pos, node) {
if (tooltipFocusNode === node) {
return renderTooltip(pos, node)
}
clearTimeout(tooltipFocusTimeout)
tooltipFocusTimeout = setTimeout(function () {
tooltipFocusNode = node
renderTooltip(pos, node)
}, 500)
}
function hideTooltip () {
clearTimeout(tooltipFocusTimeout)
d3.select(element).select('.d3-flame-graph-tooltip')
.style('display', 'none')
.empty()
}
function getNodeAt (canvas, offsetX, offsetY) {
var transform = d3.zoomTransform(canvas)
var x = scaleToGraph(transform.invertX(offsetX))
var y = h - transform.invertY(offsetY)
return nodes.find(function (node) {
if (node.data.hide) return false
if (node.x0 <= x && x <= node.x1) {
var nodeY = frameDepth(node) * c
return nodeY <= y && y <= nodeY + c
}
return false
})
}
function chart (firstRender) {
selection = d3.select(element)
selection.each(function (data) {
allSamples = data.data.value
if (!firstRender) {
node = d3.select(this).append('div')
.style('position', 'relative')
node.append('canvas')
.attr('width', w)
.attr('height', h)
.attr('class', 'partition d3-flame-graph')
.attr('transition', 'transform 200ms ease-in-out')
.call(panZoom)
.on('wheel.zoom', null)
.on('dblclick.zoom', null)
.on('click', function () {
var target = getNodeAt(this, d3.event.offsetX, d3.event.offsetY)
return zoom(target || nodes[0])
})
.on('mousemove', function () {
var target = getNodeAt(this, d3.event.offsetX, d3.event.offsetY)
var context = this.getContext('2d')
if (target === hoverFrame) return
if (hoverFrame) {
withZoomTransform(context, function () {
renderNode(context, hoverFrame, 1, STATE_UNHOVER)
})
}
hoverFrame = target
if (target) {
this.style.cursor = 'pointer'
withZoomTransform(context, function () {
renderNode(context, target, 1, STATE_HOVER)
})
if (target.parent) showTooltip(d3.mouse(document.body), target)
else hideTooltip()
} else {
this.style.cursor = 'default'
hideTooltip()
}
})
.on('mouseout', function () {
this.style.cursor = 'default'
hideTooltip()
})
node.append('div')
.style('background', '#222')
.style('color', '#fff')
.style('border-radius', '3px')
.style('padding', '3px')
.style('font-size', '10pt')
.style('position', 'fixed')
.style('display', 'none')
.style('z-index', 1000)
.style('pointer-events', 'none') // ?
.classed('d3-flame-graph-tooltip', true)
// Adjust canvas for high DPI screens
// - Size the image up N× using attributes
// - Squash it down N× using CSS
// - Scale the context so 1px in all subsequent draw operations means Npx
if (window.devicePixelRatio && window.devicePixelRatio !== 1) {
node.select('canvas')
.style('width', w)
.style('height', h)
.attr('width', w * window.devicePixelRatio)
.attr('height', h * window.devicePixelRatio)
var context = node.select('canvas').node().getContext('2d')
context.scale(window.devicePixelRatio, window.devicePixelRatio)
}
}
categorizeTree(data)
filter(data)
// first draw
update()
})
}
chart.height = function (_) {
if (!arguments.length) { return h }
h = _
onresize()
return chart
}
chart.width = function (_) {
if (!arguments.length) { return w }
w = _
onresize()
return chart
}
chart.cellHeight = function (_) {
if (!arguments.length) { return c }
c = _
return chart
}
chart.transitionDuration = function (_) {
if (!arguments.length) { return transitionDuration }
transitionDuration = _
return chart
}
chart.transitionEase = function (_) {
if (!arguments.length) { return transitionEase }
transitionEase = _
return chart
}
chart.sort = function (_) {
if (!arguments.length) { return sort }
sort = _
return chart
}
chart.tiers = function (_) {
tiers = _
if (selection) update()
return chart
}
chart.search = function (term, color) {
selection.each(function (data) {
searchTree(data, term, color)
update()
})
}
chart.clear = function (color) {
selection.each(function (data) {
clear(data, color)
update()
})
}
chart.typeHide = function (type) {
if (!~filterTypes.indexOf(type)) {
filterTypes.push(type)
filterNeeded = true
if (selection) update()
}
}
chart.typeShow = function (type) {
var ix = filterTypes.indexOf(type)
if (!~ix) return
filterTypes.splice(ix, 1)
filterNeeded = true
if (selection) update()
}
chart.setGraphZoom = function (n) {
panZoom.scaleTo(d3.select(element).select('canvas'), n)
}
chart.renderTree = function (data) {
d3.select(element).datum(d3.hierarchy(data, function (d) { return d.c || d.children }))
chart(true)
}
chart.colors = colors
chart.update = (hard) => {
if (hard) {
selection.each(function (data) {
allSamples = data.value
categorizeTree(data)
filter(data)
// first draw
update()
})
} else update()
}
exclude.forEach(chart.typeHide)
d3.select(element).datum(d3.hierarchy(tree, function (d) { return d.c || d.children }))
chart()
return chart
}
function colorHash (d, perc, allSamples, tiers) {
if (!d.name) {
return perc ? 'rgb(127, 127, 127)' : 'rgba(0, 0, 0, 0)'
}
perc = perc || 1
var type = d.type || 'def'
var key
if (!tiers) key = colors.def
if (tiers) key = colors[type]
var h = key.h
var s = key.s
var l = key.l
var top = stackTop(d)
var vector = ((top / allSamples) * 100) + 1
s *= vector
l += (vector * 2)
s /= 100
l /= 100
s *= perc
l *= perc
var a = 0.8
if (l > 0.8) {
a += diffScale(l - 0.8)
l = 0.8
}
var rgb = hsl(h, s, l)
var res = 'rgba(' + rgb + ', ' + a + ')'
return res
}
function stackTop (d) {
if (!d.children) return d.top
var top = d.top
d.children
.forEach(function (child) {
if (
!child.children ||
child.children.filter(function (c) { return c.hide }).length
) {
if (child.hide) {
top += stackTop(child)
}
}
})
return top
}
function maxDepth (tree) {
var deepest = 0
d3.tree(tree, (d) => {
if (d.depth > deepest) deepest = d.depth
})
return deepest + 1
}
module.exports = flameGraph
module.exports.colors = colors
module.exports.colorHash = colorHash
},{"d3-array":12,"d3-ease":17,"d3-hierarchy":20,"d3-scale":22,"d3-selection":23,"d3-zoom":28,"escape-string-regexp":30,"hsl-to-rgb-for-reals":31}],19:[function(require,module,exports){
// https://d3js.org/d3-format/ Version 1.3.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
// Computes the decimal coefficient and exponent of the specified number x with
// significant digits p, where x is positive and p is in [1, 21] or undefined.
// For example, formatDecimal(1.23) returns ["123", 0].
var formatDecimal = function(x, p) {
if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity
var i, coefficient = x.slice(0, i);
// The string returned by toExponential either has the form \d\.\d+e[-+]\d+
// (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3).
return [
coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
+x.slice(i + 1)
];
};
var exponent = function(x) {
return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;
};
var formatGroup = function(grouping, thousands) {
return function(value, width) {
var i = value.length,
t = [],
j = 0,
g = grouping[0],
length = 0;
while (i > 0 && g > 0) {
if (length + g + 1 > width) g = Math.max(1, width - length);
t.push(value.substring(i -= g, i + g));
if ((length += g + 1) > width) break;
g = grouping[j = (j + 1) % grouping.length];
}
return t.reverse().join(thousands);
};
};
var formatNumerals = function(numerals) {
return function(value) {
return value.replace(/[0-9]/g, function(i) {
return numerals[+i];
});
};
};
// [[fill]align][sign][symbol][0][width][,][.precision][~][type]
var re = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
function formatSpecifier(specifier) {
return new FormatSpecifier(specifier);
}
formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof
function FormatSpecifier(specifier) {
if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
var match;
this.fill = match[1] || " ";
this.align = match[2] || ">";
this.sign = match[3] || "-";
this.symbol = match[4] || "";
this.zero = !!match[5];
this.width = match[6] && +match[6];
this.comma = !!match[7];
this.precision = match[8] && +match[8].slice(1);
this.trim = !!match[9];
this.type = match[10] || "";
}
FormatSpecifier.prototype.toString = function() {
return this.fill
+ this.align
+ this.sign
+ this.symbol
+ (this.zero ? "0" : "")
+ (this.width == null ? "" : Math.max(1, this.width | 0))
+ (this.comma ? "," : "")
+ (this.precision == null ? "" : "." + Math.max(0, this.precision | 0))
+ (this.trim ? "~" : "")
+ this.type;
};
// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.
var formatTrim = function(s) {
out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {
switch (s[i]) {
case ".": i0 = i1 = i; break;
case "0": if (i0 === 0) i0 = i; i1 = i; break;
default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;
}
}
return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;
};
var prefixExponent;
var formatPrefixAuto = function(x, p) {
var d = formatDecimal(x, p);
if (!d) return x + "";
var coefficient = d[0],
exponent = d[1],
i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,
n = coefficient.length;
return i === n ? coefficient
: i > n ? coefficient + new Array(i - n + 1).join("0")
: i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i)
: "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!
};
var formatRounded = function(x, p) {
var d = formatDecimal(x, p);
if (!d) return x + "";
var coefficient = d[0],
exponent = d[1];
return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient
: coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1)
: coefficient + new Array(exponent - coefficient.length + 2).join("0");
};
var formatTypes = {
"%": function(x, p) { return (x * 100).toFixed(p); },
"b": function(x) { return Math.round(x).toString(2); },
"c": function(x) { return x + ""; },
"d": function(x) { return Math.round(x).toString(10); },
"e": function(x, p) { return x.toExponential(p); },
"f": function(x, p) { return x.toFixed(p); },
"g": function(x, p) { return x.toPrecision(p); },
"o": function(x) { return Math.round(x).toString(8); },
"p": function(x, p) { return formatRounded(x * 100, p); },
"r": formatRounded,
"s": formatPrefixAuto,
"X": function(x) { return Math.round(x).toString(16).toUpperCase(); },
"x": function(x) { return Math.round(x).toString(16); }
};
var identity = function(x) {
return x;
};
var prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];
var formatLocale = function(locale) {
var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,
currency = locale.currency,
decimal = locale.decimal,
numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,
percent = locale.percent || "%";
function newFormat(specifier) {
specifier = formatSpecifier(specifier);
var fill = specifier.fill,
align = specifier.align,
sign = specifier.sign,
symbol = specifier.symbol,
zero = specifier.zero,
width = specifier.width,
comma = specifier.comma,
precision = specifier.precision,
trim = specifier.trim,
type = specifier.type;
// The "n" type is an alias for ",g".
if (type === "n") comma = true, type = "g";
// The "" type, and any invalid type, is an alias for ".12~g".
else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = "g";
// If zero fill is specified, padding goes after sign and before digits.
if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "=";
// Compute the prefix and suffix.
// For SI-prefix, the suffix is lazily computed.
var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : "";
// What format function should we use?
// Is this an integer type?
// Can this type generate exponential notation?
var formatType = formatTypes[type],
maybeSuffix = /[defgprs%]/.test(type);
// Set the default precision if not specified,
// or clamp the specified precision to the supported range.
// For significant precision, it must be in [1, 21].
// For fixed precision, it must be in [0, 20].
precision = precision == null ? 6
: /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))
: Math.max(0, Math.min(20, precision));
function format(value) {
var valuePrefix = prefix,
valueSuffix = suffix,
i, n, c;
if (type === "c") {
valueSuffix = formatType(value) + valueSuffix;
value = "";
} else {
value = +value;
// Perform the initial formatting.
var valueNegative = value < 0;
value = formatType(Math.abs(value), precision);
// Trim insignificant zeros.
if (trim) value = formatTrim(value);
// If a negative value rounds to zero during formatting, treat as positive.
if (valueNegative && +value === 0) valueNegative = false;
// Compute the prefix and suffix.
valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
// Break the formatted value into the integer “value” part that can be
// grouped, and fractional or exponential “suffix” part that is not.
if (maybeSuffix) {
i = -1, n = value.length;
while (++i < n) {
if (c = value.charCodeAt(i), 48 > c || c > 57) {
valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;
value = value.slice(0, i);
break;
}
}
}
}
// If the fill character is not "0", grouping is applied before padding.
if (comma && !zero) value = group(value, Infinity);
// Compute the padding.
var length = valuePrefix.length + value.length + valueSuffix.length,
padding = length < width ? new Array(width - length + 1).join(fill) : "";
// If the fill character is "0", grouping is applied after padding.
if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = "";
// Reconstruct the final output based on the desired alignment.
switch (align) {
case "<": value = valuePrefix + value + valueSuffix + padding; break;
case "=": value = valuePrefix + padding + value + valueSuffix; break;
case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;
default: value = padding + valuePrefix + value + valueSuffix; break;
}
return numerals(value);
}
format.toString = function() {
return specifier + "";
};
return format;
}
function formatPrefix(specifier, value) {
var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)),
e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,
k = Math.pow(10, -e),
prefix = prefixes[8 + e / 3];
return function(value) {
return f(k * value) + prefix;
};
}
return {
format: newFormat,
formatPrefix: formatPrefix
};
};
var locale;
defaultLocale({
decimal: ".",
thousands: ",",
grouping: [3],
currency: ["$", ""]
});
function defaultLocale(definition) {
locale = formatLocale(definition);
exports.format = locale.format;
exports.formatPrefix = locale.formatPrefix;
return locale;
}
var precisionFixed = function(step) {
return Math.max(0, -exponent(Math.abs(step)));
};
var precisionPrefix = function(step, value) {
return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));
};
var precisionRound = function(step, max) {
step = Math.abs(step), max = Math.abs(max) - step;
return Math.max(0, exponent(max) - exponent(step)) + 1;
};
exports.formatDefaultLocale = defaultLocale;
exports.formatLocale = formatLocale;
exports.formatSpecifier = formatSpecifier;
exports.precisionFixed = precisionFixed;
exports.precisionPrefix = precisionPrefix;
exports.precisionRound = precisionRound;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],20:[function(require,module,exports){
// https://d3js.org/d3-hierarchy/ Version 1.1.6. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
function defaultSeparation(a, b) {
return a.parent === b.parent ? 1 : 2;
}
function meanX(children) {
return children.reduce(meanXReduce, 0) / children.length;
}
function meanXReduce(x, c) {
return x + c.x;
}
function maxY(children) {
return 1 + children.reduce(maxYReduce, 0);
}
function maxYReduce(y, c) {
return Math.max(y, c.y);
}
function leafLeft(node) {
var children;
while (children = node.children) node = children[0];
return node;
}
function leafRight(node) {
var children;
while (children = node.children) node = children[children.length - 1];
return node;
}
var cluster = function() {
var separation = defaultSeparation,
dx = 1,
dy = 1,
nodeSize = false;
function cluster(root) {
var previousNode,
x = 0;
// First walk, computing the initial x & y values.
root.eachAfter(function(node) {
var children = node.children;
if (children) {
node.x = meanX(children);
node.y = maxY(children);
} else {
node.x = previousNode ? x += separation(node, previousNode) : 0;
node.y = 0;
previousNode = node;
}
});
var left = leafLeft(root),
right = leafRight(root),
x0 = left.x - separation(left, right) / 2,
x1 = right.x + separation(right, left) / 2;
// Second walk, normalizing x & y to the desired size.
return root.eachAfter(nodeSize ? function(node) {
node.x = (node.x - root.x) * dx;
node.y = (root.y - node.y) * dy;
} : function(node) {
node.x = (node.x - x0) / (x1 - x0) * dx;
node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;
});
}
cluster.separation = function(x) {
return arguments.length ? (separation = x, cluster) : separation;
};
cluster.size = function(x) {
return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);
};
cluster.nodeSize = function(x) {
return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);
};
return cluster;
};
function count(node) {
var sum = 0,
children = node.children,
i = children && children.length;
if (!i) sum = 1;
else while (--i >= 0) sum += children[i].value;
node.value = sum;
}
var node_count = function() {
return this.eachAfter(count);
};
var node_each = function(callback) {
var node = this, current, next = [node], children, i, n;
do {
current = next.reverse(), next = [];
while (node = current.pop()) {
callback(node), children = node.children;
if (children) for (i = 0, n = children.length; i < n; ++i) {
next.push(children[i]);
}
}
} while (next.length);
return this;
};
var node_eachBefore = function(callback) {
var node = this, nodes = [node], children, i;
while (node = nodes.pop()) {
callback(node), children = node.children;
if (children) for (i = children.length - 1; i >= 0; --i) {
nodes.push(children[i]);
}
}
return this;
};
var node_eachAfter = function(callback) {
var node = this, nodes = [node], next = [], children, i, n;
while (node = nodes.pop()) {
next.push(node), children = node.children;
if (children) for (i = 0, n = children.length; i < n; ++i) {
nodes.push(children[i]);
}
}
while (node = next.pop()) {
callback(node);
}
return this;
};
var node_sum = function(value) {
return this.eachAfter(function(node) {
var sum = +value(node.data) || 0,
children = node.children,
i = children && children.length;
while (--i >= 0) sum += children[i].value;
node.value = sum;
});
};
var node_sort = function(compare) {
return this.eachBefore(function(node) {
if (node.children) {
node.children.sort(compare);
}
});
};
var node_path = function(end) {
var start = this,
ancestor = leastCommonAncestor(start, end),
nodes = [start];
while (start !== ancestor) {
start = start.parent;
nodes.push(start);
}
var k = nodes.length;
while (end !== ancestor) {
nodes.splice(k, 0, end);
end = end.parent;
}
return nodes;
};
function leastCommonAncestor(a, b) {
if (a === b) return a;
var aNodes = a.ancestors(),
bNodes = b.ancestors(),
c = null;
a = aNodes.pop();
b = bNodes.pop();
while (a === b) {
c = a;
a = aNodes.pop();
b = bNodes.pop();
}
return c;
}
var node_ancestors = function() {
var node = this, nodes = [node];
while (node = node.parent) {
nodes.push(node);
}
return nodes;
};
var node_descendants = function() {
var nodes = [];
this.each(function(node) {
nodes.push(node);
});
return nodes;
};
var node_leaves = function() {
var leaves = [];
this.eachBefore(function(node) {
if (!node.children) {
leaves.push(node);
}
});
return leaves;
};
var node_links = function() {
var root = this, links = [];
root.each(function(node) {
if (node !== root) { // Don’t include the root’s parent, if any.
links.push({source: node.parent, target: node});
}
});
return links;
};
function hierarchy(data, children) {
var root = new Node(data),
valued = +data.value && (root.value = data.value),
node,
nodes = [root],
child,
childs,
i,
n;
if (children == null) children = defaultChildren;
while (node = nodes.pop()) {
if (valued) node.value = +node.data.value;
if ((childs = children(node.data)) && (n = childs.length)) {
node.children = new Array(n);
for (i = n - 1; i >= 0; --i) {
nodes.push(child = node.children[i] = new Node(childs[i]));
child.parent = node;
child.depth = node.depth + 1;
}
}
}
return root.eachBefore(computeHeight);
}
function node_copy() {
return hierarchy(this).eachBefore(copyData);
}
function defaultChildren(d) {
return d.children;
}
function copyData(node) {
node.data = node.data.data;
}
function computeHeight(node) {
var height = 0;
do node.height = height;
while ((node = node.parent) && (node.height < ++height));
}
function Node(data) {
this.data = data;
this.depth =
this.height = 0;
this.parent = null;
}
Node.prototype = hierarchy.prototype = {
constructor: Node,
count: node_count,
each: node_each,
eachAfter: node_eachAfter,
eachBefore: node_eachBefore,
sum: node_sum,
sort: node_sort,
path: node_path,
ancestors: node_ancestors,
descendants: node_descendants,
leaves: node_leaves,
links: node_links,
copy: node_copy
};
var slice = Array.prototype.slice;
function shuffle(array) {
var m = array.length,
t,
i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
var enclose = function(circles) {
var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;
while (i < n) {
p = circles[i];
if (e && enclosesWeak(e, p)) ++i;
else e = encloseBasis(B = extendBasis(B, p)), i = 0;
}
return e;
};
function extendBasis(B, p) {
var i, j;
if (enclosesWeakAll(p, B)) return [p];
// If we get here then B must have at least one element.
for (i = 0; i < B.length; ++i) {
if (enclosesNot(p, B[i])
&& enclosesWeakAll(encloseBasis2(B[i], p), B)) {
return [B[i], p];
}
}
// If we get here then B must have at least two elements.
for (i = 0; i < B.length - 1; ++i) {
for (j = i + 1; j < B.length; ++j) {
if (enclosesNot(encloseBasis2(B[i], B[j]), p)
&& enclosesNot(encloseBasis2(B[i], p), B[j])
&& enclosesNot(encloseBasis2(B[j], p), B[i])
&& enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {
return [B[i], B[j], p];
}
}
}
// If we get here then something is very wrong.
throw new Error;
}
function enclosesNot(a, b) {
var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;
return dr < 0 || dr * dr < dx * dx + dy * dy;
}
function enclosesWeak(a, b) {
var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;
return dr > 0 && dr * dr > dx * dx + dy * dy;
}
function enclosesWeakAll(a, B) {
for (var i = 0; i < B.length; ++i) {
if (!enclosesWeak(a, B[i])) {
return false;
}
}
return true;
}
function encloseBasis(B) {
switch (B.length) {
case 1: return encloseBasis1(B[0]);
case 2: return encloseBasis2(B[0], B[1]);
case 3: return encloseBasis3(B[0], B[1], B[2]);
}
}
function encloseBasis1(a) {
return {
x: a.x,
y: a.y,
r: a.r
};
}
function encloseBasis2(a, b) {
var x1 = a.x, y1 = a.y, r1 = a.r,
x2 = b.x, y2 = b.y, r2 = b.r,
x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,
l = Math.sqrt(x21 * x21 + y21 * y21);
return {
x: (x1 + x2 + x21 / l * r21) / 2,
y: (y1 + y2 + y21 / l * r21) / 2,
r: (l + r1 + r2) / 2
};
}
function encloseBasis3(a, b, c) {
var x1 = a.x, y1 = a.y, r1 = a.r,
x2 = b.x, y2 = b.y, r2 = b.r,
x3 = c.x, y3 = c.y, r3 = c.r,
a2 = x1 - x2,
a3 = x1 - x3,
b2 = y1 - y2,
b3 = y1 - y3,
c2 = r2 - r1,
c3 = r3 - r1,
d1 = x1 * x1 + y1 * y1 - r1 * r1,
d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,
d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,
ab = a3 * b2 - a2 * b3,
xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,
xb = (b3 * c2 - b2 * c3) / ab,
ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,
yb = (a2 * c3 - a3 * c2) / ab,
A = xb * xb + yb * yb - 1,
B = 2 * (r1 + xa * xb + ya * yb),
C = xa * xa + ya * ya - r1 * r1,
r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);
return {
x: x1 + xa + xb * r,
y: y1 + ya + yb * r,
r: r
};
}
function place(b, a, c) {
var dx = b.x - a.x, x, a2,
dy = b.y - a.y, y, b2,
d2 = dx * dx + dy * dy;
if (d2) {
a2 = a.r + c.r, a2 *= a2;
b2 = b.r + c.r, b2 *= b2;
if (a2 > b2) {
x = (d2 + b2 - a2) / (2 * d2);
y = Math.sqrt(Math.max(0, b2 / d2 - x * x));
c.x = b.x - x * dx - y * dy;
c.y = b.y - x * dy + y * dx;
} else {
x = (d2 + a2 - b2) / (2 * d2);
y = Math.sqrt(Math.max(0, a2 / d2 - x * x));
c.x = a.x + x * dx - y * dy;
c.y = a.y + x * dy + y * dx;
}
} else {
c.x = a.x + c.r;
c.y = a.y;
}
}
function intersects(a, b) {
var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;
return dr > 0 && dr * dr > dx * dx + dy * dy;
}
function score(node) {
var a = node._,
b = node.next._,
ab = a.r + b.r,
dx = (a.x * b.r + b.x * a.r) / ab,
dy = (a.y * b.r + b.y * a.r) / ab;
return dx * dx + dy * dy;
}
function Node$1(circle) {
this._ = circle;
this.next = null;
this.previous = null;
}
function packEnclose(circles) {
if (!(n = circles.length)) return 0;
var a, b, c, n, aa, ca, i, j, k, sj, sk;
// Place the first circle.
a = circles[0], a.x = 0, a.y = 0;
if (!(n > 1)) return a.r;
// Place the second circle.
b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;
if (!(n > 2)) return a.r + b.r;
// Place the third circle.
place(b, a, c = circles[2]);
// Initialize the front-chain using the first three circles a, b and c.
a = new Node$1(a), b = new Node$1(b), c = new Node$1(c);
a.next = c.previous = b;
b.next = a.previous = c;
c.next = b.previous = a;
// Attempt to place each remaining circle…
pack: for (i = 3; i < n; ++i) {
place(a._, b._, c = circles[i]), c = new Node$1(c);
// Find the closest intersecting circle on the front-chain, if any.
// “Closeness” is determined by linear distance along the front-chain.
// “Ahead” or “behind” is likewise determined by linear distance.
j = b.next, k = a.previous, sj = b._.r, sk = a._.r;
do {
if (sj <= sk) {
if (intersects(j._, c._)) {
b = j, a.next = b, b.previous = a, --i;
continue pack;
}
sj += j._.r, j = j.next;
} else {
if (intersects(k._, c._)) {
a = k, a.next = b, b.previous = a, --i;
continue pack;
}
sk += k._.r, k = k.previous;
}
} while (j !== k.next);
// Success! Insert the new circle c between a and b.
c.previous = a, c.next = b, a.next = b.previous = b = c;
// Compute the new closest circle pair to the centroid.
aa = score(a);
while ((c = c.next) !== b) {
if ((ca = score(c)) < aa) {
a = c, aa = ca;
}
}
b = a.next;
}
// Compute the enclosing circle of the front chain.
a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);
// Translate the circles to put the enclosing circle around the origin.
for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;
return c.r;
}
var siblings = function(circles) {
packEnclose(circles);
return circles;
};
function optional(f) {
return f == null ? null : required(f);
}
function required(f) {
if (typeof f !== "function") throw new Error;
return f;
}
function constantZero() {
return 0;
}
var constant = function(x) {
return function() {
return x;
};
};
function defaultRadius(d) {
return Math.sqrt(d.value);
}
var index = function() {
var radius = null,
dx = 1,
dy = 1,
padding = constantZero;
function pack(root) {
root.x = dx / 2, root.y = dy / 2;
if (radius) {
root.eachBefore(radiusLeaf(radius))
.eachAfter(packChildren(padding, 0.5))
.eachBefore(translateChild(1));
} else {
root.eachBefore(radiusLeaf(defaultRadius))
.eachAfter(packChildren(constantZero, 1))
.eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))
.eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));
}
return root;
}
pack.radius = function(x) {
return arguments.length ? (radius = optional(x), pack) : radius;
};
pack.size = function(x) {
return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];
};
pack.padding = function(x) {
return arguments.length ? (padding = typeof x === "function" ? x : constant(+x), pack) : padding;
};
return pack;
};
function radiusLeaf(radius) {
return function(node) {
if (!node.children) {
node.r = Math.max(0, +radius(node) || 0);
}
};
}
function packChildren(padding, k) {
return function(node) {
if (children = node.children) {
var children,
i,
n = children.length,
r = padding(node) * k || 0,
e;
if (r) for (i = 0; i < n; ++i) children[i].r += r;
e = packEnclose(children);
if (r) for (i = 0; i < n; ++i) children[i].r -= r;
node.r = e + r;
}
};
}
function translateChild(k) {
return function(node) {
var parent = node.parent;
node.r *= k;
if (parent) {
node.x = parent.x + k * node.x;
node.y = parent.y + k * node.y;
}
};
}
var roundNode = function(node) {
node.x0 = Math.round(node.x0);
node.y0 = Math.round(node.y0);
node.x1 = Math.round(node.x1);
node.y1 = Math.round(node.y1);
};
var treemapDice = function(parent, x0, y0, x1, y1) {
var nodes = parent.children,
node,
i = -1,
n = nodes.length,
k = parent.value && (x1 - x0) / parent.value;
while (++i < n) {
node = nodes[i], node.y0 = y0, node.y1 = y1;
node.x0 = x0, node.x1 = x0 += node.value * k;
}
};
var partition = function() {
var dx = 1,
dy = 1,
padding = 0,
round = false;
function partition(root) {
var n = root.height + 1;
root.x0 =
root.y0 = padding;
root.x1 = dx;
root.y1 = dy / n;
root.eachBefore(positionNode(dy, n));
if (round) root.eachBefore(roundNode);
return root;
}
function positionNode(dy, n) {
return function(node) {
if (node.children) {
treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);
}
var x0 = node.x0,
y0 = node.y0,
x1 = node.x1 - padding,
y1 = node.y1 - padding;
if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
node.x0 = x0;
node.y0 = y0;
node.x1 = x1;
node.y1 = y1;
};
}
partition.round = function(x) {
return arguments.length ? (round = !!x, partition) : round;
};
partition.size = function(x) {
return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];
};
partition.padding = function(x) {
return arguments.length ? (padding = +x, partition) : padding;
};
return partition;
};
var keyPrefix = "$";
var preroot = {depth: -1};
var ambiguous = {};
function defaultId(d) {
return d.id;
}
function defaultParentId(d) {
return d.parentId;
}
var stratify = function() {
var id = defaultId,
parentId = defaultParentId;
function stratify(data) {
var d,
i,
n = data.length,
root,
parent,
node,
nodes = new Array(n),
nodeId,
nodeKey,
nodeByKey = {};
for (i = 0; i < n; ++i) {
d = data[i], node = nodes[i] = new Node(d);
if ((nodeId = id(d, i, data)) != null && (nodeId += "")) {
nodeKey = keyPrefix + (node.id = nodeId);
nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;
}
}
for (i = 0; i < n; ++i) {
node = nodes[i], nodeId = parentId(data[i], i, data);
if (nodeId == null || !(nodeId += "")) {
if (root) throw new Error("multiple roots");
root = node;
} else {
parent = nodeByKey[keyPrefix + nodeId];
if (!parent) throw new Error("missing: " + nodeId);
if (parent === ambiguous) throw new Error("ambiguous: " + nodeId);
if (parent.children) parent.children.push(node);
else parent.children = [node];
node.parent = parent;
}
}
if (!root) throw new Error("no root");
root.parent = preroot;
root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);
root.parent = null;
if (n > 0) throw new Error("cycle");
return root;
}
stratify.id = function(x) {
return arguments.length ? (id = required(x), stratify) : id;
};
stratify.parentId = function(x) {
return arguments.length ? (parentId = required(x), stratify) : parentId;
};
return stratify;
};
function defaultSeparation$1(a, b) {
return a.parent === b.parent ? 1 : 2;
}
// function radialSeparation(a, b) {
// return (a.parent === b.parent ? 1 : 2) / a.depth;
// }
// This function is used to traverse the left contour of a subtree (or
// subforest). It returns the successor of v on this contour. This successor is
// either given by the leftmost child of v or by the thread of v. The function
// returns null if and only if v is on the highest level of its subtree.
function nextLeft(v) {
var children = v.children;
return children ? children[0] : v.t;
}
// This function works analogously to nextLeft.
function nextRight(v) {
var children = v.children;
return children ? children[children.length - 1] : v.t;
}
// Shifts the current subtree rooted at w+. This is done by increasing
// prelim(w+) and mod(w+) by shift.
function moveSubtree(wm, wp, shift) {
var change = shift / (wp.i - wm.i);
wp.c -= change;
wp.s += shift;
wm.c += change;
wp.z += shift;
wp.m += shift;
}
// All other shifts, applied to the smaller subtrees between w- and w+, are
// performed by this function. To prepare the shifts, we have to adjust
// change(w+), shift(w+), and change(w-).
function executeShifts(v) {
var shift = 0,
change = 0,
children = v.children,
i = children.length,
w;
while (--i >= 0) {
w = children[i];
w.z += shift;
w.m += shift;
shift += w.s + (change += w.c);
}
}
// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,
// returns the specified (default) ancestor.
function nextAncestor(vim, v, ancestor) {
return vim.a.parent === v.parent ? vim.a : ancestor;
}
function TreeNode(node, i) {
this._ = node;
this.parent = null;
this.children = null;
this.A = null; // default ancestor
this.a = this; // ancestor
this.z = 0; // prelim
this.m = 0; // mod
this.c = 0; // change
this.s = 0; // shift
this.t = null; // thread
this.i = i; // number
}
TreeNode.prototype = Object.create(Node.prototype);
function treeRoot(root) {
var tree = new TreeNode(root, 0),
node,
nodes = [tree],
child,
children,
i,
n;
while (node = nodes.pop()) {
if (children = node._.children) {
node.children = new Array(n = children.length);
for (i = n - 1; i >= 0; --i) {
nodes.push(child = node.children[i] = new TreeNode(children[i], i));
child.parent = node;
}
}
}
(tree.parent = new TreeNode(null, 0)).children = [tree];
return tree;
}
// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm
var tree = function() {
var separation = defaultSeparation$1,
dx = 1,
dy = 1,
nodeSize = null;
function tree(root) {
var t = treeRoot(root);
// Compute the layout using Buchheim et al.’s algorithm.
t.eachAfter(firstWalk), t.parent.m = -t.z;
t.eachBefore(secondWalk);
// If a fixed node size is specified, scale x and y.
if (nodeSize) root.eachBefore(sizeNode);
// If a fixed tree size is specified, scale x and y based on the extent.
// Compute the left-most, right-most, and depth-most nodes for extents.
else {
var left = root,
right = root,
bottom = root;
root.eachBefore(function(node) {
if (node.x < left.x) left = node;
if (node.x > right.x) right = node;
if (node.depth > bottom.depth) bottom = node;
});
var s = left === right ? 1 : separation(left, right) / 2,
tx = s - left.x,
kx = dx / (right.x + s + tx),
ky = dy / (bottom.depth || 1);
root.eachBefore(function(node) {
node.x = (node.x + tx) * kx;
node.y = node.depth * ky;
});
}
return root;
}
// Computes a preliminary x-coordinate for v. Before that, FIRST WALK is
// applied recursively to the children of v, as well as the function
// APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the
// node v is placed to the midpoint of its outermost children.
function firstWalk(v) {
var children = v.children,
siblings = v.parent.children,
w = v.i ? siblings[v.i - 1] : null;
if (children) {
executeShifts(v);
var midpoint = (children[0].z + children[children.length - 1].z) / 2;
if (w) {
v.z = w.z + separation(v._, w._);
v.m = v.z - midpoint;
} else {
v.z = midpoint;
}
} else if (w) {
v.z = w.z + separation(v._, w._);
}
v.parent.A = apportion(v, w, v.parent.A || siblings[0]);
}
// Computes all real x-coordinates by summing up the modifiers recursively.
function secondWalk(v) {
v._.x = v.z + v.parent.m;
v.m += v.parent.m;
}
// The core of the algorithm. Here, a new subtree is combined with the
// previous subtrees. Threads are used to traverse the inside and outside
// contours of the left and right subtree up to the highest common level. The
// vertices used for the traversals are vi+, vi-, vo-, and vo+, where the
// superscript o means outside and i means inside, the subscript - means left
// subtree and + means right subtree. For summing up the modifiers along the
// contour, we use respective variables si+, si-, so-, and so+. Whenever two
// nodes of the inside contours conflict, we compute the left one of the
// greatest uncommon ancestors using the function ANCESTOR and call MOVE
// SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.
// Finally, we add a new thread (if necessary).
function apportion(v, w, ancestor) {
if (w) {
var vip = v,
vop = v,
vim = w,
vom = vip.parent.children[0],
sip = vip.m,
sop = vop.m,
sim = vim.m,
som = vom.m,
shift;
while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {
vom = nextLeft(vom);
vop = nextRight(vop);
vop.a = v;
shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);
if (shift > 0) {
moveSubtree(nextAncestor(vim, v, ancestor), v, shift);
sip += shift;
sop += shift;
}
sim += vim.m;
sip += vip.m;
som += vom.m;
sop += vop.m;
}
if (vim && !nextRight(vop)) {
vop.t = vim;
vop.m += sim - sop;
}
if (vip && !nextLeft(vom)) {
vom.t = vip;
vom.m += sip - som;
ancestor = v;
}
}
return ancestor;
}
function sizeNode(node) {
node.x *= dx;
node.y = node.depth * dy;
}
tree.separation = function(x) {
return arguments.length ? (separation = x, tree) : separation;
};
tree.size = function(x) {
return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);
};
tree.nodeSize = function(x) {
return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);
};
return tree;
};
var treemapSlice = function(parent, x0, y0, x1, y1) {
var nodes = parent.children,
node,
i = -1,
n = nodes.length,
k = parent.value && (y1 - y0) / parent.value;
while (++i < n) {
node = nodes[i], node.x0 = x0, node.x1 = x1;
node.y0 = y0, node.y1 = y0 += node.value * k;
}
};
var phi = (1 + Math.sqrt(5)) / 2;
function squarifyRatio(ratio, parent, x0, y0, x1, y1) {
var rows = [],
nodes = parent.children,
row,
nodeValue,
i0 = 0,
i1 = 0,
n = nodes.length,
dx, dy,
value = parent.value,
sumValue,
minValue,
maxValue,
newRatio,
minRatio,
alpha,
beta;
while (i0 < n) {
dx = x1 - x0, dy = y1 - y0;
// Find the next non-empty node.
do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);
minValue = maxValue = sumValue;
alpha = Math.max(dy / dx, dx / dy) / (value * ratio);
beta = sumValue * sumValue * alpha;
minRatio = Math.max(maxValue / beta, beta / minValue);
// Keep adding nodes while the aspect ratio maintains or improves.
for (; i1 < n; ++i1) {
sumValue += nodeValue = nodes[i1].value;
if (nodeValue < minValue) minValue = nodeValue;
if (nodeValue > maxValue) maxValue = nodeValue;
beta = sumValue * sumValue * alpha;
newRatio = Math.max(maxValue / beta, beta / minValue);
if (newRatio > minRatio) { sumValue -= nodeValue; break; }
minRatio = newRatio;
}
// Position and record the row orientation.
rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});
if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);
else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);
value -= sumValue, i0 = i1;
}
return rows;
}
var squarify = ((function custom(ratio) {
function squarify(parent, x0, y0, x1, y1) {
squarifyRatio(ratio, parent, x0, y0, x1, y1);
}
squarify.ratio = function(x) {
return custom((x = +x) > 1 ? x : 1);
};
return squarify;
}))(phi);
var index$1 = function() {
var tile = squarify,
round = false,
dx = 1,
dy = 1,
paddingStack = [0],
paddingInner = constantZero,
paddingTop = constantZero,
paddingRight = constantZero,
paddingBottom = constantZero,
paddingLeft = constantZero;
function treemap(root) {
root.x0 =
root.y0 = 0;
root.x1 = dx;
root.y1 = dy;
root.eachBefore(positionNode);
paddingStack = [0];
if (round) root.eachBefore(roundNode);
return root;
}
function positionNode(node) {
var p = paddingStack[node.depth],
x0 = node.x0 + p,
y0 = node.y0 + p,
x1 = node.x1 - p,
y1 = node.y1 - p;
if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
node.x0 = x0;
node.y0 = y0;
node.x1 = x1;
node.y1 = y1;
if (node.children) {
p = paddingStack[node.depth + 1] = paddingInner(node) / 2;
x0 += paddingLeft(node) - p;
y0 += paddingTop(node) - p;
x1 -= paddingRight(node) - p;
y1 -= paddingBottom(node) - p;
if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
tile(node, x0, y0, x1, y1);
}
}
treemap.round = function(x) {
return arguments.length ? (round = !!x, treemap) : round;
};
treemap.size = function(x) {
return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];
};
treemap.tile = function(x) {
return arguments.length ? (tile = required(x), treemap) : tile;
};
treemap.padding = function(x) {
return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();
};
treemap.paddingInner = function(x) {
return arguments.length ? (paddingInner = typeof x === "function" ? x : constant(+x), treemap) : paddingInner;
};
treemap.paddingOuter = function(x) {
return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();
};
treemap.paddingTop = function(x) {
return arguments.length ? (paddingTop = typeof x === "function" ? x : constant(+x), treemap) : paddingTop;
};
treemap.paddingRight = function(x) {
return arguments.length ? (paddingRight = typeof x === "function" ? x : constant(+x), treemap) : paddingRight;
};
treemap.paddingBottom = function(x) {
return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant(+x), treemap) : paddingBottom;
};
treemap.paddingLeft = function(x) {
return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant(+x), treemap) : paddingLeft;
};
return treemap;
};
var binary = function(parent, x0, y0, x1, y1) {
var nodes = parent.children,
i, n = nodes.length,
sum, sums = new Array(n + 1);
for (sums[0] = sum = i = 0; i < n; ++i) {
sums[i + 1] = sum += nodes[i].value;
}
partition(0, n, parent.value, x0, y0, x1, y1);
function partition(i, j, value, x0, y0, x1, y1) {
if (i >= j - 1) {
var node = nodes[i];
node.x0 = x0, node.y0 = y0;
node.x1 = x1, node.y1 = y1;
return;
}
var valueOffset = sums[i],
valueTarget = (value / 2) + valueOffset,
k = i + 1,
hi = j - 1;
while (k < hi) {
var mid = k + hi >>> 1;
if (sums[mid] < valueTarget) k = mid + 1;
else hi = mid;
}
if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;
var valueLeft = sums[k] - valueOffset,
valueRight = value - valueLeft;
if ((x1 - x0) > (y1 - y0)) {
var xk = (x0 * valueRight + x1 * valueLeft) / value;
partition(i, k, valueLeft, x0, y0, xk, y1);
partition(k, j, valueRight, xk, y0, x1, y1);
} else {
var yk = (y0 * valueRight + y1 * valueLeft) / value;
partition(i, k, valueLeft, x0, y0, x1, yk);
partition(k, j, valueRight, x0, yk, x1, y1);
}
}
};
var sliceDice = function(parent, x0, y0, x1, y1) {
(parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1);
};
var resquarify = ((function custom(ratio) {
function resquarify(parent, x0, y0, x1, y1) {
if ((rows = parent._squarify) && (rows.ratio === ratio)) {
var rows,
row,
nodes,
i,
j = -1,
n,
m = rows.length,
value = parent.value;
while (++j < m) {
row = rows[j], nodes = row.children;
for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;
if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);
else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);
value -= row.value;
}
} else {
parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);
rows.ratio = ratio;
}
}
resquarify.ratio = function(x) {
return custom((x = +x) > 1 ? x : 1);
};
return resquarify;
}))(phi);
exports.cluster = cluster;
exports.hierarchy = hierarchy;
exports.pack = index;
exports.packSiblings = siblings;
exports.packEnclose = enclose;
exports.partition = partition;
exports.stratify = stratify;
exports.tree = tree;
exports.treemap = index$1;
exports.treemapBinary = binary;
exports.treemapDice = treemapDice;
exports.treemapSlice = treemapSlice;
exports.treemapSliceDice = sliceDice;
exports.treemapSquarify = squarify;
exports.treemapResquarify = resquarify;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],21:[function(require,module,exports){
// https://d3js.org/d3-interpolate/ Version 1.2.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3));
}(this, (function (exports,d3Color) { 'use strict';
function basis(t1, v0, v1, v2, v3) {
var t2 = t1 * t1, t3 = t2 * t1;
return ((1 - 3 * t1 + 3 * t2 - t3) * v0
+ (4 - 6 * t2 + 3 * t3) * v1
+ (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2
+ t3 * v3) / 6;
}
var basis$1 = function(values) {
var n = values.length - 1;
return function(t) {
var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),
v1 = values[i],
v2 = values[i + 1],
v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,
v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;
return basis((t - i / n) * n, v0, v1, v2, v3);
};
};
var basisClosed = function(values) {
var n = values.length;
return function(t) {
var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),
v0 = values[(i + n - 1) % n],
v1 = values[i % n],
v2 = values[(i + 1) % n],
v3 = values[(i + 2) % n];
return basis((t - i / n) * n, v0, v1, v2, v3);
};
};
var constant = function(x) {
return function() {
return x;
};
};
function linear(a, d) {
return function(t) {
return a + t * d;
};
}
function exponential(a, b, y) {
return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {
return Math.pow(a + t * b, y);
};
}
function hue(a, b) {
var d = b - a;
return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);
}
function gamma(y) {
return (y = +y) === 1 ? nogamma : function(a, b) {
return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);
};
}
function nogamma(a, b) {
var d = b - a;
return d ? linear(a, d) : constant(isNaN(a) ? b : a);
}
var rgb$1 = ((function rgbGamma(y) {
var color$$1 = gamma(y);
function rgb$$1(start, end) {
var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),
g = color$$1(start.g, end.g),
b = color$$1(start.b, end.b),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.r = r(t);
start.g = g(t);
start.b = b(t);
start.opacity = opacity(t);
return start + "";
};
}
rgb$$1.gamma = rgbGamma;
return rgb$$1;
}))(1);
function rgbSpline(spline) {
return function(colors) {
var n = colors.length,
r = new Array(n),
g = new Array(n),
b = new Array(n),
i, color$$1;
for (i = 0; i < n; ++i) {
color$$1 = d3Color.rgb(colors[i]);
r[i] = color$$1.r || 0;
g[i] = color$$1.g || 0;
b[i] = color$$1.b || 0;
}
r = spline(r);
g = spline(g);
b = spline(b);
color$$1.opacity = 1;
return function(t) {
color$$1.r = r(t);
color$$1.g = g(t);
color$$1.b = b(t);
return color$$1 + "";
};
};
}
var rgbBasis = rgbSpline(basis$1);
var rgbBasisClosed = rgbSpline(basisClosed);
var array = function(a, b) {
var nb = b ? b.length : 0,
na = a ? Math.min(nb, a.length) : 0,
x = new Array(na),
c = new Array(nb),
i;
for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);
for (; i < nb; ++i) c[i] = b[i];
return function(t) {
for (i = 0; i < na; ++i) c[i] = x[i](t);
return c;
};
};
var date = function(a, b) {
var d = new Date;
return a = +a, b -= a, function(t) {
return d.setTime(a + b * t), d;
};
};
var number = function(a, b) {
return a = +a, b -= a, function(t) {
return a + b * t;
};
};
var object = function(a, b) {
var i = {},
c = {},
k;
if (a === null || typeof a !== "object") a = {};
if (b === null || typeof b !== "object") b = {};
for (k in b) {
if (k in a) {
i[k] = value(a[k], b[k]);
} else {
c[k] = b[k];
}
}
return function(t) {
for (k in i) c[k] = i[k](t);
return c;
};
};
var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
var reB = new RegExp(reA.source, "g");
function zero(b) {
return function() {
return b;
};
}
function one(b) {
return function(t) {
return b(t) + "";
};
}
var string = function(a, b) {
var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b
am, // current match in a
bm, // current match in b
bs, // string preceding current number in b, if any
i = -1, // index in s
s = [], // string constants and placeholders
q = []; // number interpolators
// Coerce inputs to strings.
a = a + "", b = b + "";
// Interpolate pairs of numbers in a & b.
while ((am = reA.exec(a))
&& (bm = reB.exec(b))) {
if ((bs = bm.index) > bi) { // a string precedes the next number in b
bs = b.slice(bi, bs);
if (s[i]) s[i] += bs; // coalesce with previous string
else s[++i] = bs;
}
if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
if (s[i]) s[i] += bm; // coalesce with previous string
else s[++i] = bm;
} else { // interpolate non-matching numbers
s[++i] = null;
q.push({i: i, x: number(am, bm)});
}
bi = reB.lastIndex;
}
// Add remains of b.
if (bi < b.length) {
bs = b.slice(bi);
if (s[i]) s[i] += bs; // coalesce with previous string
else s[++i] = bs;
}
// Special optimization for only a single match.
// Otherwise, interpolate each of the numbers and rejoin the string.
return s.length < 2 ? (q[0]
? one(q[0].x)
: zero(b))
: (b = q.length, function(t) {
for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
return s.join("");
});
};
var value = function(a, b) {
var t = typeof b, c;
return b == null || t === "boolean" ? constant(b)
: (t === "number" ? number
: t === "string" ? ((c = d3Color.color(b)) ? (b = c, rgb$1) : string)
: b instanceof d3Color.color ? rgb$1
: b instanceof Date ? date
: Array.isArray(b) ? array
: typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object
: number)(a, b);
};
var round = function(a, b) {
return a = +a, b -= a, function(t) {
return Math.round(a + b * t);
};
};
var degrees = 180 / Math.PI;
var identity = {
translateX: 0,
translateY: 0,
rotate: 0,
skewX: 0,
scaleX: 1,
scaleY: 1
};
var decompose = function(a, b, c, d, e, f) {
var scaleX, scaleY, skewX;
if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;
if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;
if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;
if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;
return {
translateX: e,
translateY: f,
rotate: Math.atan2(b, a) * degrees,
skewX: Math.atan(skewX) * degrees,
scaleX: scaleX,
scaleY: scaleY
};
};
var cssNode;
var cssRoot;
var cssView;
var svgNode;
function parseCss(value) {
if (value === "none") return identity;
if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView;
cssNode.style.transform = value;
value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform");
cssRoot.removeChild(cssNode);
value = value.slice(7, -1).split(",");
return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);
}
function parseSvg(value) {
if (value == null) return identity;
if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g");
svgNode.setAttribute("transform", value);
if (!(value = svgNode.transform.baseVal.consolidate())) return identity;
value = value.matrix;
return decompose(value.a, value.b, value.c, value.d, value.e, value.f);
}
function interpolateTransform(parse, pxComma, pxParen, degParen) {
function pop(s) {
return s.length ? s.pop() + " " : "";
}
function translate(xa, ya, xb, yb, s, q) {
if (xa !== xb || ya !== yb) {
var i = s.push("translate(", null, pxComma, null, pxParen);
q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});
} else if (xb || yb) {
s.push("translate(" + xb + pxComma + yb + pxParen);
}
}
function rotate(a, b, s, q) {
if (a !== b) {
if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path
q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: number(a, b)});
} else if (b) {
s.push(pop(s) + "rotate(" + b + degParen);
}
}
function skewX(a, b, s, q) {
if (a !== b) {
q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: number(a, b)});
} else if (b) {
s.push(pop(s) + "skewX(" + b + degParen);
}
}
function scale(xa, ya, xb, yb, s, q) {
if (xa !== xb || ya !== yb) {
var i = s.push(pop(s) + "scale(", null, ",", null, ")");
q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});
} else if (xb !== 1 || yb !== 1) {
s.push(pop(s) + "scale(" + xb + "," + yb + ")");
}
}
return function(a, b) {
var s = [], // string constants and placeholders
q = []; // number interpolators
a = parse(a), b = parse(b);
translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);
rotate(a.rotate, b.rotate, s, q);
skewX(a.skewX, b.skewX, s, q);
scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);
a = b = null; // gc
return function(t) {
var i = -1, n = q.length, o;
while (++i < n) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
};
}
var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)");
var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")");
var rho = Math.SQRT2;
var rho2 = 2;
var rho4 = 4;
var epsilon2 = 1e-12;
function cosh(x) {
return ((x = Math.exp(x)) + 1 / x) / 2;
}
function sinh(x) {
return ((x = Math.exp(x)) - 1 / x) / 2;
}
function tanh(x) {
return ((x = Math.exp(2 * x)) - 1) / (x + 1);
}
// p0 = [ux0, uy0, w0]
// p1 = [ux1, uy1, w1]
var zoom = function(p0, p1) {
var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
ux1 = p1[0], uy1 = p1[1], w1 = p1[2],
dx = ux1 - ux0,
dy = uy1 - uy0,
d2 = dx * dx + dy * dy,
i,
S;
// Special case for u0 ≅ u1.
if (d2 < epsilon2) {
S = Math.log(w1 / w0) / rho;
i = function(t) {
return [
ux0 + t * dx,
uy0 + t * dy,
w0 * Math.exp(rho * t * S)
];
};
}
// General case.
else {
var d1 = Math.sqrt(d2),
b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),
b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),
r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
S = (r1 - r0) / rho;
i = function(t) {
var s = t * S,
coshr0 = cosh(r0),
u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));
return [
ux0 + u * dx,
uy0 + u * dy,
w0 * coshr0 / cosh(rho * s + r0)
];
};
}
i.duration = S * 1000;
return i;
};
function hsl$1(hue$$1) {
return function(start, end) {
var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),
s = nogamma(start.s, end.s),
l = nogamma(start.l, end.l),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.h = h(t);
start.s = s(t);
start.l = l(t);
start.opacity = opacity(t);
return start + "";
};
}
}
var hsl$2 = hsl$1(hue);
var hslLong = hsl$1(nogamma);
function lab$1(start, end) {
var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),
a = nogamma(start.a, end.a),
b = nogamma(start.b, end.b),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.l = l(t);
start.a = a(t);
start.b = b(t);
start.opacity = opacity(t);
return start + "";
};
}
function hcl$1(hue$$1) {
return function(start, end) {
var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),
c = nogamma(start.c, end.c),
l = nogamma(start.l, end.l),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.h = h(t);
start.c = c(t);
start.l = l(t);
start.opacity = opacity(t);
return start + "";
};
}
}
var hcl$2 = hcl$1(hue);
var hclLong = hcl$1(nogamma);
function cubehelix$1(hue$$1) {
return (function cubehelixGamma(y) {
y = +y;
function cubehelix$$1(start, end) {
var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),
s = nogamma(start.s, end.s),
l = nogamma(start.l, end.l),
opacity = nogamma(start.opacity, end.opacity);
return function(t) {
start.h = h(t);
start.s = s(t);
start.l = l(Math.pow(t, y));
start.opacity = opacity(t);
return start + "";
};
}
cubehelix$$1.gamma = cubehelixGamma;
return cubehelix$$1;
})(1);
}
var cubehelix$2 = cubehelix$1(hue);
var cubehelixLong = cubehelix$1(nogamma);
function piecewise(interpolate, values) {
var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);
while (i < n) I[i] = interpolate(v, v = values[++i]);
return function(t) {
var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));
return I[i](t - i);
};
}
var quantize = function(interpolator, n) {
var samples = new Array(n);
for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));
return samples;
};
exports.interpolate = value;
exports.interpolateArray = array;
exports.interpolateBasis = basis$1;
exports.interpolateBasisClosed = basisClosed;
exports.interpolateDate = date;
exports.interpolateNumber = number;
exports.interpolateObject = object;
exports.interpolateRound = round;
exports.interpolateString = string;
exports.interpolateTransformCss = interpolateTransformCss;
exports.interpolateTransformSvg = interpolateTransformSvg;
exports.interpolateZoom = zoom;
exports.interpolateRgb = rgb$1;
exports.interpolateRgbBasis = rgbBasis;
exports.interpolateRgbBasisClosed = rgbBasisClosed;
exports.interpolateHsl = hsl$2;
exports.interpolateHslLong = hslLong;
exports.interpolateLab = lab$1;
exports.interpolateHcl = hcl$2;
exports.interpolateHclLong = hclLong;
exports.interpolateCubehelix = cubehelix$2;
exports.interpolateCubehelixLong = cubehelixLong;
exports.piecewise = piecewise;
exports.quantize = quantize;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-color":14}],22:[function(require,module,exports){
// https://d3js.org/d3-scale/ Version 2.1.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array'), require('d3-collection'), require('d3-interpolate'), require('d3-format'), require('d3-time'), require('d3-time-format')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-collection', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));
}(this, (function (exports,d3Array,d3Collection,d3Interpolate,d3Format,d3Time,d3TimeFormat) { 'use strict';
var array = Array.prototype;
var map$1 = array.map;
var slice = array.slice;
var implicit = {name: "implicit"};
function ordinal(range$$1) {
var index = d3Collection.map(),
domain = [],
unknown = implicit;
range$$1 = range$$1 == null ? [] : slice.call(range$$1);
function scale(d) {
var key = d + "", i = index.get(key);
if (!i) {
if (unknown !== implicit) return unknown;
index.set(key, i = domain.push(d));
}
return range$$1[(i - 1) % range$$1.length];
}
scale.domain = function(_) {
if (!arguments.length) return domain.slice();
domain = [], index = d3Collection.map();
var i = -1, n = _.length, d, key;
while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d));
return scale;
};
scale.range = function(_) {
return arguments.length ? (range$$1 = slice.call(_), scale) : range$$1.slice();
};
scale.unknown = function(_) {
return arguments.length ? (unknown = _, scale) : unknown;
};
scale.copy = function() {
return ordinal()
.domain(domain)
.range(range$$1)
.unknown(unknown);
};
return scale;
}
function band() {
var scale = ordinal().unknown(undefined),
domain = scale.domain,
ordinalRange = scale.range,
range$$1 = [0, 1],
step,
bandwidth,
round = false,
paddingInner = 0,
paddingOuter = 0,
align = 0.5;
delete scale.unknown;
function rescale() {
var n = domain().length,
reverse = range$$1[1] < range$$1[0],
start = range$$1[reverse - 0],
stop = range$$1[1 - reverse];
step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
if (round) step = Math.floor(step);
start += (stop - start - step * (n - paddingInner)) * align;
bandwidth = step * (1 - paddingInner);
if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);
var values = d3Array.range(n).map(function(i) { return start + step * i; });
return ordinalRange(reverse ? values.reverse() : values);
}
scale.domain = function(_) {
return arguments.length ? (domain(_), rescale()) : domain();
};
scale.range = function(_) {
return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice();
};
scale.rangeRound = function(_) {
return range$$1 = [+_[0], +_[1]], round = true, rescale();
};
scale.bandwidth = function() {
return bandwidth;
};
scale.step = function() {
return step;
};
scale.round = function(_) {
return arguments.length ? (round = !!_, rescale()) : round;
};
scale.padding = function(_) {
return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;
};
scale.paddingInner = function(_) {
return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;
};
scale.paddingOuter = function(_) {
return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;
};
scale.align = function(_) {
return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;
};
scale.copy = function() {
return band()
.domain(domain())
.range(range$$1)
.round(round)
.paddingInner(paddingInner)
.paddingOuter(paddingOuter)
.align(align);
};
return rescale();
}
function pointish(scale) {
var copy = scale.copy;
scale.padding = scale.paddingOuter;
delete scale.paddingInner;
delete scale.paddingOuter;
scale.copy = function() {
return pointish(copy());
};
return scale;
}
function point() {
return pointish(band().paddingInner(1));
}
function constant(x) {
return function() {
return x;
};
}
function number(x) {
return +x;
}
var unit = [0, 1];
function deinterpolateLinear(a, b) {
return (b -= (a = +a))
? function(x) { return (x - a) / b; }
: constant(b);
}
function deinterpolateClamp(deinterpolate) {
return function(a, b) {
var d = deinterpolate(a = +a, b = +b);
return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };
};
}
function reinterpolateClamp(reinterpolate) {
return function(a, b) {
var r = reinterpolate(a = +a, b = +b);
return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };
};
}
function bimap(domain, range$$1, deinterpolate, reinterpolate) {
var d0 = domain[0], d1 = domain[1], r0 = range$$1[0], r1 = range$$1[1];
if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);
else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);
return function(x) { return r0(d0(x)); };
}
function polymap(domain, range$$1, deinterpolate, reinterpolate) {
var j = Math.min(domain.length, range$$1.length) - 1,
d = new Array(j),
r = new Array(j),
i = -1;
// Reverse descending domains.
if (domain[j] < domain[0]) {
domain = domain.slice().reverse();
range$$1 = range$$1.slice().reverse();
}
while (++i < j) {
d[i] = deinterpolate(domain[i], domain[i + 1]);
r[i] = reinterpolate(range$$1[i], range$$1[i + 1]);
}
return function(x) {
var i = d3Array.bisect(domain, x, 1, j) - 1;
return r[i](d[i](x));
};
}
function copy(source, target) {
return target
.domain(source.domain())
.range(source.range())
.interpolate(source.interpolate())
.clamp(source.clamp());
}
// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].
function continuous(deinterpolate, reinterpolate) {
var domain = unit,
range$$1 = unit,
interpolate$$1 = d3Interpolate.interpolate,
clamp = false,
piecewise,
output,
input;
function rescale() {
piecewise = Math.min(domain.length, range$$1.length) > 2 ? polymap : bimap;
output = input = null;
return scale;
}
function scale(x) {
return (output || (output = piecewise(domain, range$$1, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x);
}
scale.invert = function(y) {
return (input || (input = piecewise(range$$1, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);
};
scale.domain = function(_) {
return arguments.length ? (domain = map$1.call(_, number), rescale()) : domain.slice();
};
scale.range = function(_) {
return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();
};
scale.rangeRound = function(_) {
return range$$1 = slice.call(_), interpolate$$1 = d3Interpolate.interpolateRound, rescale();
};
scale.clamp = function(_) {
return arguments.length ? (clamp = !!_, rescale()) : clamp;
};
scale.interpolate = function(_) {
return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;
};
return rescale();
}
function tickFormat(domain, count, specifier) {
var start = domain[0],
stop = domain[domain.length - 1],
step = d3Array.tickStep(start, stop, count == null ? 10 : count),
precision;
specifier = d3Format.formatSpecifier(specifier == null ? ",f" : specifier);
switch (specifier.type) {
case "s": {
var value = Math.max(Math.abs(start), Math.abs(stop));
if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision;
return d3Format.formatPrefix(specifier, value);
}
case "":
case "e":
case "g":
case "p":
case "r": {
if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e");
break;
}
case "f":
case "%": {
if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2;
break;
}
}
return d3Format.format(specifier);
}
function linearish(scale) {
var domain = scale.domain;
scale.ticks = function(count) {
var d = domain();
return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count);
};
scale.tickFormat = function(count, specifier) {
return tickFormat(domain(), count, specifier);
};
scale.nice = function(count) {
if (count == null) count = 10;
var d = domain(),
i0 = 0,
i1 = d.length - 1,
start = d[i0],
stop = d[i1],
step;
if (stop < start) {
step = start, start = stop, stop = step;
step = i0, i0 = i1, i1 = step;
}
step = d3Array.tickIncrement(start, stop, count);
if (step > 0) {
start = Math.floor(start / step) * step;
stop = Math.ceil(stop / step) * step;
step = d3Array.tickIncrement(start, stop, count);
} else if (step < 0) {
start = Math.ceil(start * step) / step;
stop = Math.floor(stop * step) / step;
step = d3Array.tickIncrement(start, stop, count);
}
if (step > 0) {
d[i0] = Math.floor(start / step) * step;
d[i1] = Math.ceil(stop / step) * step;
domain(d);
} else if (step < 0) {
d[i0] = Math.ceil(start * step) / step;
d[i1] = Math.floor(stop * step) / step;
domain(d);
}
return scale;
};
return scale;
}
function linear() {
var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber);
scale.copy = function() {
return copy(scale, linear());
};
return linearish(scale);
}
function identity() {
var domain = [0, 1];
function scale(x) {
return +x;
}
scale.invert = scale;
scale.domain = scale.range = function(_) {
return arguments.length ? (domain = map$1.call(_, number), scale) : domain.slice();
};
scale.copy = function() {
return identity().domain(domain);
};
return linearish(scale);
}
function nice(domain, interval) {
domain = domain.slice();
var i0 = 0,
i1 = domain.length - 1,
x0 = domain[i0],
x1 = domain[i1],
t;
if (x1 < x0) {
t = i0, i0 = i1, i1 = t;
t = x0, x0 = x1, x1 = t;
}
domain[i0] = interval.floor(x0);
domain[i1] = interval.ceil(x1);
return domain;
}
function deinterpolate(a, b) {
return (b = Math.log(b / a))
? function(x) { return Math.log(x / a) / b; }
: constant(b);
}
function reinterpolate(a, b) {
return a < 0
? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }
: function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };
}
function pow10(x) {
return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x;
}
function powp(base) {
return base === 10 ? pow10
: base === Math.E ? Math.exp
: function(x) { return Math.pow(base, x); };
}
function logp(base) {
return base === Math.E ? Math.log
: base === 10 && Math.log10
|| base === 2 && Math.log2
|| (base = Math.log(base), function(x) { return Math.log(x) / base; });
}
function reflect(f) {
return function(x) {
return -f(-x);
};
}
function log() {
var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),
domain = scale.domain,
base = 10,
logs = logp(10),
pows = powp(10);
function rescale() {
logs = logp(base), pows = powp(base);
if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);
return scale;
}
scale.base = function(_) {
return arguments.length ? (base = +_, rescale()) : base;
};
scale.domain = function(_) {
return arguments.length ? (domain(_), rescale()) : domain();
};
scale.ticks = function(count) {
var d = domain(),
u = d[0],
v = d[d.length - 1],
r;
if (r = v < u) i = u, u = v, v = i;
var i = logs(u),
j = logs(v),
p,
k,
t,
n = count == null ? 10 : +count,
z = [];
if (!(base % 1) && j - i < n) {
i = Math.round(i) - 1, j = Math.round(j) + 1;
if (u > 0) for (; i < j; ++i) {
for (k = 1, p = pows(i); k < base; ++k) {
t = p * k;
if (t < u) continue;
if (t > v) break;
z.push(t);
}
} else for (; i < j; ++i) {
for (k = base - 1, p = pows(i); k >= 1; --k) {
t = p * k;
if (t < u) continue;
if (t > v) break;
z.push(t);
}
}
} else {
z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows);
}
return r ? z.reverse() : z;
};
scale.tickFormat = function(count, specifier) {
if (specifier == null) specifier = base === 10 ? ".0e" : ",";
if (typeof specifier !== "function") specifier = d3Format.format(specifier);
if (count === Infinity) return specifier;
if (count == null) count = 10;
var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?
return function(d) {
var i = d / pows(Math.round(logs(d)));
if (i * base < base - 0.5) i *= base;
return i <= k ? specifier(d) : "";
};
};
scale.nice = function() {
return domain(nice(domain(), {
floor: function(x) { return pows(Math.floor(logs(x))); },
ceil: function(x) { return pows(Math.ceil(logs(x))); }
}));
};
scale.copy = function() {
return copy(scale, log().base(base));
};
return scale;
}
function raise(x, exponent) {
return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);
}
function pow() {
var exponent = 1,
scale = continuous(deinterpolate, reinterpolate),
domain = scale.domain;
function deinterpolate(a, b) {
return (b = raise(b, exponent) - (a = raise(a, exponent)))
? function(x) { return (raise(x, exponent) - a) / b; }
: constant(b);
}
function reinterpolate(a, b) {
b = raise(b, exponent) - (a = raise(a, exponent));
return function(t) { return raise(a + b * t, 1 / exponent); };
}
scale.exponent = function(_) {
return arguments.length ? (exponent = +_, domain(domain())) : exponent;
};
scale.copy = function() {
return copy(scale, pow().exponent(exponent));
};
return linearish(scale);
}
function sqrt() {
return pow().exponent(0.5);
}
function quantile$1() {
var domain = [],
range$$1 = [],
thresholds = [];
function rescale() {
var i = 0, n = Math.max(1, range$$1.length);
thresholds = new Array(n - 1);
while (++i < n) thresholds[i - 1] = d3Array.quantile(domain, i / n);
return scale;
}
function scale(x) {
if (!isNaN(x = +x)) return range$$1[d3Array.bisect(thresholds, x)];
}
scale.invertExtent = function(y) {
var i = range$$1.indexOf(y);
return i < 0 ? [NaN, NaN] : [
i > 0 ? thresholds[i - 1] : domain[0],
i < thresholds.length ? thresholds[i] : domain[domain.length - 1]
];
};
scale.domain = function(_) {
if (!arguments.length) return domain.slice();
domain = [];
for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);
domain.sort(d3Array.ascending);
return rescale();
};
scale.range = function(_) {
return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();
};
scale.quantiles = function() {
return thresholds.slice();
};
scale.copy = function() {
return quantile$1()
.domain(domain)
.range(range$$1);
};
return scale;
}
function quantize() {
var x0 = 0,
x1 = 1,
n = 1,
domain = [0.5],
range$$1 = [0, 1];
function scale(x) {
if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];
}
function rescale() {
var i = -1;
domain = new Array(n);
while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);
return scale;
}
scale.domain = function(_) {
return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];
};
scale.range = function(_) {
return arguments.length ? (n = (range$$1 = slice.call(_)).length - 1, rescale()) : range$$1.slice();
};
scale.invertExtent = function(y) {
var i = range$$1.indexOf(y);
return i < 0 ? [NaN, NaN]
: i < 1 ? [x0, domain[0]]
: i >= n ? [domain[n - 1], x1]
: [domain[i - 1], domain[i]];
};
scale.copy = function() {
return quantize()
.domain([x0, x1])
.range(range$$1);
};
return linearish(scale);
}
function threshold() {
var domain = [0.5],
range$$1 = [0, 1],
n = 1;
function scale(x) {
if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];
}
scale.domain = function(_) {
return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : domain.slice();
};
scale.range = function(_) {
return arguments.length ? (range$$1 = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : range$$1.slice();
};
scale.invertExtent = function(y) {
var i = range$$1.indexOf(y);
return [domain[i - 1], domain[i]];
};
scale.copy = function() {
return threshold()
.domain(domain)
.range(range$$1);
};
return scale;
}
var durationSecond = 1000;
var durationMinute = durationSecond * 60;
var durationHour = durationMinute * 60;
var durationDay = durationHour * 24;
var durationWeek = durationDay * 7;
var durationMonth = durationDay * 30;
var durationYear = durationDay * 365;
function date(t) {
return new Date(t);
}
function number$1(t) {
return t instanceof Date ? +t : +new Date(+t);
}
function calendar(year, month, week, day, hour, minute, second, millisecond, format$$1) {
var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber),
invert = scale.invert,
domain = scale.domain;
var formatMillisecond = format$$1(".%L"),
formatSecond = format$$1(":%S"),
formatMinute = format$$1("%I:%M"),
formatHour = format$$1("%I %p"),
formatDay = format$$1("%a %d"),
formatWeek = format$$1("%b %d"),
formatMonth = format$$1("%B"),
formatYear = format$$1("%Y");
var tickIntervals = [
[second, 1, durationSecond],
[second, 5, 5 * durationSecond],
[second, 15, 15 * durationSecond],
[second, 30, 30 * durationSecond],
[minute, 1, durationMinute],
[minute, 5, 5 * durationMinute],
[minute, 15, 15 * durationMinute],
[minute, 30, 30 * durationMinute],
[ hour, 1, durationHour ],
[ hour, 3, 3 * durationHour ],
[ hour, 6, 6 * durationHour ],
[ hour, 12, 12 * durationHour ],
[ day, 1, durationDay ],
[ day, 2, 2 * durationDay ],
[ week, 1, durationWeek ],
[ month, 1, durationMonth ],
[ month, 3, 3 * durationMonth ],
[ year, 1, durationYear ]
];
function tickFormat(date) {
return (second(date) < date ? formatMillisecond
: minute(date) < date ? formatSecond
: hour(date) < date ? formatMinute
: day(date) < date ? formatHour
: month(date) < date ? (week(date) < date ? formatDay : formatWeek)
: year(date) < date ? formatMonth
: formatYear)(date);
}
function tickInterval(interval, start, stop, step) {
if (interval == null) interval = 10;
// If a desired tick count is specified, pick a reasonable tick interval
// based on the extent of the domain and a rough estimate of tick size.
// Otherwise, assume interval is already a time interval and use it.
if (typeof interval === "number") {
var target = Math.abs(stop - start) / interval,
i = d3Array.bisector(function(i) { return i[2]; }).right(tickIntervals, target);
if (i === tickIntervals.length) {
step = d3Array.tickStep(start / durationYear, stop / durationYear, interval);
interval = year;
} else if (i) {
i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
step = i[1];
interval = i[0];
} else {
step = Math.max(d3Array.tickStep(start, stop, interval), 1);
interval = millisecond;
}
}
return step == null ? interval : interval.every(step);
}
scale.invert = function(y) {
return new Date(invert(y));
};
scale.domain = function(_) {
return arguments.length ? domain(map$1.call(_, number$1)) : domain().map(date);
};
scale.ticks = function(interval, step) {
var d = domain(),
t0 = d[0],
t1 = d[d.length - 1],
r = t1 < t0,
t;
if (r) t = t0, t0 = t1, t1 = t;
t = tickInterval(interval, t0, t1, step);
t = t ? t.range(t0, t1 + 1) : []; // inclusive stop
return r ? t.reverse() : t;
};
scale.tickFormat = function(count, specifier) {
return specifier == null ? tickFormat : format$$1(specifier);
};
scale.nice = function(interval, step) {
var d = domain();
return (interval = tickInterval(interval, d[0], d[d.length - 1], step))
? domain(nice(d, interval))
: scale;
};
scale.copy = function() {
return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format$$1));
};
return scale;
}
function time() {
return calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);
}
function utcTime() {
return calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);
}
function sequential(interpolator) {
var x0 = 0,
x1 = 1,
k10 = 1,
clamp = false;
function scale(x) {
var t = (x - x0) * k10;
return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);
}
scale.domain = function(_) {
return arguments.length ? (x0 = +_[0], x1 = +_[1], k10 = x0 === x1 ? 0 : 1 / (x1 - x0), scale) : [x0, x1];
};
scale.clamp = function(_) {
return arguments.length ? (clamp = !!_, scale) : clamp;
};
scale.interpolator = function(_) {
return arguments.length ? (interpolator = _, scale) : interpolator;
};
scale.copy = function() {
return sequential(interpolator).domain([x0, x1]).clamp(clamp);
};
return linearish(scale);
}
function diverging(interpolator) {
var x0 = 0,
x1 = 0.5,
x2 = 1,
k10 = 1,
k21 = 1,
clamp = false;
function scale(x) {
var t = 0.5 + ((x = +x) - x1) * (x < x1 ? k10 : k21);
return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);
}
scale.domain = function(_) {
return arguments.length ? (x0 = +_[0], x1 = +_[1], x2 = +_[2], k10 = x0 === x1 ? 0 : 0.5 / (x1 - x0), k21 = x1 === x2 ? 0 : 0.5 / (x2 - x1), scale) : [x0, x1, x2];
};
scale.clamp = function(_) {
return arguments.length ? (clamp = !!_, scale) : clamp;
};
scale.interpolator = function(_) {
return arguments.length ? (interpolator = _, scale) : interpolator;
};
scale.copy = function() {
return diverging(interpolator).domain([x0, x1, x2]).clamp(clamp);
};
return linearish(scale);
}
exports.scaleBand = band;
exports.scalePoint = point;
exports.scaleIdentity = identity;
exports.scaleLinear = linear;
exports.scaleLog = log;
exports.scaleOrdinal = ordinal;
exports.scaleImplicit = implicit;
exports.scalePow = pow;
exports.scaleSqrt = sqrt;
exports.scaleQuantile = quantile$1;
exports.scaleQuantize = quantize;
exports.scaleThreshold = threshold;
exports.scaleTime = time;
exports.scaleUtc = utcTime;
exports.scaleSequential = sequential;
exports.scaleDiverging = diverging;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-array":12,"d3-collection":13,"d3-format":19,"d3-interpolate":21,"d3-time":25,"d3-time-format":24}],23:[function(require,module,exports){
// https://d3js.org/d3-selection/ Version 1.3.0. Copyright 2018 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var xhtml = "http://www.w3.org/1999/xhtml";
var namespaces = {
svg: "http://www.w3.org/2000/svg",
xhtml: xhtml,
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/"
};
function namespace(name) {
var prefix = name += "", i = prefix.indexOf(":");
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;
}
function creatorInherit(name) {
return function() {
var document = this.ownerDocument,
uri = this.namespaceURI;
return uri === xhtml && document.documentElement.namespaceURI === xhtml
? document.createElement(name)
: document.createElementNS(uri, name);
};
}
function creatorFixed(fullname) {
return function() {
return this.ownerDocument.createElementNS(fullname.space, fullname.local);
};
}
function creator(name) {
var fullname = namespace(name);
return (fullname.local
? creatorFixed
: creatorInherit)(fullname);
}
function none() {}
function selector(selector) {
return selector == null ? none : function() {
return this.querySelector(selector);
};
}
function selection_select(select) {
if (typeof select !== "function") select = selector(select);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
subgroup[i] = subnode;
}
}
}
return new Selection(subgroups, this._parents);
}
function empty() {
return [];
}
function selectorAll(selector) {
return selector == null ? empty : function() {
return this.querySelectorAll(selector);
};
}
function selection_selectAll(select) {
if (typeof select !== "function") select = selectorAll(select);
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
subgroups.push(select.call(node, node.__data__, i, group));
parents.push(node);
}
}
}
return new Selection(subgroups, parents);
}
var matcher = function(selector) {
return function() {
return this.matches(selector);
};
};
if (typeof document !== "undefined") {
var element = document.documentElement;
if (!element.matches) {
var vendorMatches = element.webkitMatchesSelector
|| element.msMatchesSelector
|| element.mozMatchesSelector
|| element.oMatchesSelector;
matcher = function(selector) {
return function() {
return vendorMatches.call(this, selector);
};
};
}
}
var matcher$1 = matcher;
function selection_filter(match) {
if (typeof match !== "function") match = matcher$1(match);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
subgroup.push(node);
}
}
}
return new Selection(subgroups, this._parents);
}
function sparse(update) {
return new Array(update.length);
}
function selection_enter() {
return new Selection(this._enter || this._groups.map(sparse), this._parents);
}
function EnterNode(parent, datum) {
this.ownerDocument = parent.ownerDocument;
this.namespaceURI = parent.namespaceURI;
this._next = null;
this._parent = parent;
this.__data__ = datum;
}
EnterNode.prototype = {
constructor: EnterNode,
appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
querySelector: function(selector) { return this._parent.querySelector(selector); },
querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }
};
function constant(x) {
return function() {
return x;
};
}
var keyPrefix = "$"; // Protect against keys like “__proto__”.
function bindIndex(parent, group, enter, update, exit, data) {
var i = 0,
node,
groupLength = group.length,
dataLength = data.length;
// Put any non-null nodes that fit into update.
// Put any null nodes into enter.
// Put any remaining data into enter.
for (; i < dataLength; ++i) {
if (node = group[i]) {
node.__data__ = data[i];
update[i] = node;
} else {
enter[i] = new EnterNode(parent, data[i]);
}
}
// Put any non-null nodes that don’t fit into exit.
for (; i < groupLength; ++i) {
if (node = group[i]) {
exit[i] = node;
}
}
}
function bindKey(parent, group, enter, update, exit, data, key) {
var i,
node,
nodeByKeyValue = {},
groupLength = group.length,
dataLength = data.length,
keyValues = new Array(groupLength),
keyValue;
// Compute the key for each node.
// If multiple nodes have the same key, the duplicates are added to exit.
for (i = 0; i < groupLength; ++i) {
if (node = group[i]) {
keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);
if (keyValue in nodeByKeyValue) {
exit[i] = node;
} else {
nodeByKeyValue[keyValue] = node;
}
}
}
// Compute the key for each datum.
// If there a node associated with this key, join and add it to update.
// If there is not (or the key is a duplicate), add it to enter.
for (i = 0; i < dataLength; ++i) {
keyValue = keyPrefix + key.call(parent, data[i], i, data);
if (node = nodeByKeyValue[keyValue]) {
update[i] = node;
node.__data__ = data[i];
nodeByKeyValue[keyValue] = null;
} else {
enter[i] = new EnterNode(parent, data[i]);
}
}
// Add any remaining nodes that were not bound to data to exit.
for (i = 0; i < groupLength; ++i) {
if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {
exit[i] = node;
}
}
}
function selection_data(value, key) {
if (!value) {
data = new Array(this.size()), j = -1;
this.each(function(d) { data[++j] = d; });
return data;
}
var bind = key ? bindKey : bindIndex,
parents = this._parents,
groups = this._groups;
if (typeof value !== "function") value = constant(value);
for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
var parent = parents[j],
group = groups[j],
groupLength = group.length,
data = value.call(parent, parent && parent.__data__, j, parents),
dataLength = data.length,
enterGroup = enter[j] = new Array(dataLength),
updateGroup = update[j] = new Array(dataLength),
exitGroup = exit[j] = new Array(groupLength);
bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
// Now connect the enter nodes to their following update node, such that
// appendChild can insert the materialized enter node before this node,
// rather than at the end of the parent node.
for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
if (previous = enterGroup[i0]) {
if (i0 >= i1) i1 = i0 + 1;
while (!(next = updateGroup[i1]) && ++i1 < dataLength);
previous._next = next || null;
}
}
}
update = new Selection(update, parents);
update._enter = enter;
update._exit = exit;
return update;
}
function selection_exit() {
return new Selection(this._exit || this._groups.map(sparse), this._parents);
}
function selection_merge(selection$$1) {
for (var groups0 = this._groups, groups1 = selection$$1._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
if (node = group0[i] || group1[i]) {
merge[i] = node;
}
}
}
for (; j < m0; ++j) {
merges[j] = groups0[j];
}
return new Selection(merges, this._parents);
}
function selection_order() {
for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
if (node = group[i]) {
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
next = node;
}
}
}
return this;
}
function selection_sort(compare) {
if (!compare) compare = ascending;
function compareNode(a, b) {
return a && b ? compare(a.__data__, b.__data__) : !a - !b;
}
for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
if (node = group[i]) {
sortgroup[i] = node;
}
}
sortgroup.sort(compareNode);
}
return new Selection(sortgroups, this._parents).order();
}
function ascending(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
}
function selection_call() {
var callback = arguments[0];
arguments[0] = this;
callback.apply(null, arguments);
return this;
}
function selection_nodes() {
var nodes = new Array(this.size()), i = -1;
this.each(function() { nodes[++i] = this; });
return nodes;
}
function selection_node() {
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
var node = group[i];
if (node) return node;
}
}
return null;
}
function selection_size() {
var size = 0;
this.each(function() { ++size; });
return size;
}
function selection_empty() {
return !this.node();
}
function selection_each(callback) {
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
if (node = group[i]) callback.call(node, node.__data__, i, group);
}
}
return this;
}
function attrRemove(name) {
return function() {
this.removeAttribute(name);
};
}
function attrRemoveNS(fullname) {
return function() {
this.removeAttributeNS(fullname.space, fullname.local);
};
}
function attrConstant(name, value) {
return function() {
this.setAttribute(name, value);
};
}
function attrConstantNS(fullname, value) {
return function() {
this.setAttributeNS(fullname.space, fullname.local, value);
};
}
function attrFunction(name, value) {
return function() {
var v = value.apply(this, arguments);
if (v == null) this.removeAttribute(name);
else this.setAttribute(name, v);
};
}
function attrFunctionNS(fullname, value) {
return function() {
var v = value.apply(this, arguments);
if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
else this.setAttributeNS(fullname.space, fullname.local, v);
};
}
function selection_attr(name, value) {
var fullname = namespace(name);
if (arguments.length < 2) {
var node = this.node();
return fullname.local
? node.getAttributeNS(fullname.space, fullname.local)
: node.getAttribute(fullname);
}
return this.each((value == null
? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
? (fullname.local ? attrFunctionNS : attrFunction)
: (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
}
function defaultView(node) {
return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
|| (node.document && node) // node is a Window
|| node.defaultView; // node is a Document
}
function styleRemove(name) {
return function() {
this.style.removeProperty(name);
};
}
function styleConstant(name, value, priority) {
return function() {
this.style.setProperty(name, value, priority);
};
}
function styleFunction(name, value, priority) {
return function() {
var v = value.apply(this, arguments);
if (v == null) this.style.removeProperty(name);
else this.style.setProperty(name, v, priority);
};
}
function selection_style(name, value, priority) {
return arguments.length > 1
? this.each((value == null
? styleRemove : typeof value === "function"
? styleFunction
: styleConstant)(name, value, priority == null ? "" : priority))
: styleValue(this.node(), name);
}
function styleValue(node, name) {
return node.style.getPropertyValue(name)
|| defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
}
function propertyRemove(name) {
return function() {
delete this[name];
};
}
function propertyConstant(name, value) {
return function() {
this[name] = value;
};
}
function propertyFunction(name, value) {
return function() {
var v = value.apply(this, arguments);
if (v == null) delete this[name];
else this[name] = v;
};
}
function selection_property(name, value) {
return arguments.length > 1
? this.each((value == null
? propertyRemove : typeof value === "function"
? propertyFunction
: propertyConstant)(name, value))
: this.node()[name];
}
function classArray(string) {
return string.trim().split(/^|\s+/);
}
function classList(node) {
return node.classList || new ClassList(node);
}
function ClassList(node) {
this._node = node;
this._names = classArray(node.getAttribute("class") || "");
}
ClassList.prototype = {
add: function(name) {
var i = this._names.indexOf(name);
if (i < 0) {
this._names.push(name);
this._node.setAttribute("class", this._names.join(" "));
}
},
remove: function(name) {
var i = this._names.indexOf(name);
if (i >= 0) {
this._names.splice(i, 1);
this._node.setAttribute("class", this._names.join(" "));
}
},
contains: function(name) {
return this._names.indexOf(name) >= 0;
}
};
function classedAdd(node, names) {
var list = classList(node), i = -1, n = names.length;
while (++i < n) list.add(names[i]);
}
function classedRemove(node, names) {
var list = classList(node), i = -1, n = names.length;
while (++i < n) list.remove(names[i]);
}
function classedTrue(names) {
return function() {
classedAdd(this, names);
};
}
function classedFalse(names) {
return function() {
classedRemove(this, names);
};
}
function classedFunction(names, value) {
return function() {
(value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
};
}
function selection_classed(name, value) {
var names = classArray(name + "");
if (arguments.length < 2) {
var list = classList(this.node()), i = -1, n = names.length;
while (++i < n) if (!list.contains(names[i])) return false;
return true;
}
return this.each((typeof value === "function"
? classedFunction : value
? classedTrue
: classedFalse)(names, value));
}
function textRemove() {
this.textContent = "";
}
function textConstant(value) {
return function() {
this.textContent = value;
};
}
function textFunction(value) {
return function() {
var v = value.apply(this, arguments);
this.textContent = v == null ? "" : v;
};
}
function selection_text(value) {
return arguments.length
? this.each(value == null
? textRemove : (typeof value === "function"
? textFunction
: textConstant)(value))
: this.node().textContent;
}
function htmlRemove() {
this.innerHTML = "";
}
function htmlConstant(value) {
return function() {
this.innerHTML = value;
};
}
function htmlFunction(value) {
return function() {
var v = value.apply(this, arguments);
this.innerHTML = v == null ? "" : v;
};
}
function selection_html(value) {
return arguments.length
? this.each(value == null
? htmlRemove : (typeof value === "function"
? htmlFunction
: htmlConstant)(value))
: this.node().innerHTML;
}
function raise() {
if (this.nextSibling) this.parentNode.appendChild(this);
}
function selection_raise() {
return this.each(raise);
}
function lower() {
if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
}
function selection_lower() {
return this.each(lower);
}
function selection_append(name) {
var create = typeof name === "function" ? name : creator(name);
return this.select(function() {
return this.appendChild(create.apply(this, arguments));
});
}
function constantNull() {
return null;
}
function selection_insert(name, before) {
var create = typeof name === "function" ? name : creator(name),
select = before == null ? constantNull : typeof before === "function" ? before : selector(before);
return this.select(function() {
return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
});
}
function remove() {
var parent = this.parentNode;
if (parent) parent.removeChild(this);
}
function selection_remove() {
return this.each(remove);
}
function selection_cloneShallow() {
return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);
}
function selection_cloneDeep() {
return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);
}
function selection_clone(deep) {
return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
}
function selection_datum(value) {
return arguments.length
? this.property("__data__", value)
: this.node().__data__;
}
var filterEvents = {};
exports.event = null;
if (typeof document !== "undefined") {
var element$1 = document.documentElement;
if (!("onmouseenter" in element$1)) {
filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"};
}
}
function filterContextListener(listener, index, group) {
listener = contextListener(listener, index, group);
return function(event) {
var related = event.relatedTarget;
if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {
listener.call(this, event);
}
};
}
function contextListener(listener, index, group) {
return function(event1) {
var event0 = exports.event; // Events can be reentrant (e.g., focus).
exports.event = event1;
try {
listener.call(this, this.__data__, index, group);
} finally {
exports.event = event0;
}
};
}
function parseTypenames(typenames) {
return typenames.trim().split(/^|\s+/).map(function(t) {
var name = "", i = t.indexOf(".");
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
return {type: t, name: name};
});
}
function onRemove(typename) {
return function() {
var on = this.__on;
if (!on) return;
for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
this.removeEventListener(o.type, o.listener, o.capture);
} else {
on[++i] = o;
}
}
if (++i) on.length = i;
else delete this.__on;
};
}
function onAdd(typename, value, capture) {
var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;
return function(d, i, group) {
var on = this.__on, o, listener = wrap(value, i, group);
if (on) for (var j = 0, m = on.length; j < m; ++j) {
if ((o = on[j]).type === typename.type && o.name === typename.name) {
this.removeEventListener(o.type, o.listener, o.capture);
this.addEventListener(o.type, o.listener = listener, o.capture = capture);
o.value = value;
return;
}
}
this.addEventListener(typename.type, listener, capture);
o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};
if (!on) this.__on = [o];
else on.push(o);
};
}
function selection_on(typename, value, capture) {
var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;
if (arguments.length < 2) {
var on = this.node().__on;
if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
for (i = 0, o = on[j]; i < n; ++i) {
if ((t = typenames[i]).type === o.type && t.name === o.name) {
return o.value;
}
}
}
return;
}
on = value ? onAdd : onRemove;
if (capture == null) capture = false;
for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));
return this;
}
function customEvent(event1, listener, that, args) {
var event0 = exports.event;
event1.sourceEvent = exports.event;
exports.event = event1;
try {
return listener.apply(that, args);
} finally {
exports.event = event0;
}
}
function dispatchEvent(node, type, params) {
var window = defaultView(node),
event = window.CustomEvent;
if (typeof event === "function") {
event = new event(type, params);
} else {
event = window.document.createEvent("Event");
if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
else event.initEvent(type, false, false);
}
node.dispatchEvent(event);
}
function dispatchConstant(type, params) {
return function() {
return dispatchEvent(this, type, params);
};
}
function dispatchFunction(type, params) {
return function() {
return dispatchEvent(this, type, params.apply(this, arguments));
};
}
function selection_dispatch(type, params) {
return this.each((typeof params === "function"
? dispatchFunction
: dispatchConstant)(type, params));
}
var root = [null];
function Selection(groups, parents) {
this._groups = groups;
this._parents = parents;
}
function selection() {
return new Selection([[document.documentElement]], root);
}
Selection.prototype = selection.prototype = {
constructor: Selection,
select: selection_select,
selectAll: selection_selectAll,
filter: selection_filter,
data: selection_data,
enter: selection_enter,
exit: selection_exit,
merge: selection_merge,
order: selection_order,
sort: selection_sort,
call: selection_call,
nodes: selection_nodes,
node: selection_node,
size: selection_size,
empty: selection_empty,
each: selection_each,
attr: selection_attr,
style: selection_style,
property: selection_property,
classed: selection_classed,
text: selection_text,
html: selection_html,
raise: selection_raise,
lower: selection_lower,
append: selection_append,
insert: selection_insert,
remove: selection_remove,
clone: selection_clone,
datum: selection_datum,
on: selection_on,
dispatch: selection_dispatch
};
function select(selector) {
return typeof selector === "string"
? new Selection([[document.querySelector(selector)]], [document.documentElement])
: new Selection([[selector]], root);
}
function create(name) {
return select(creator(name).call(document.documentElement));
}
var nextId = 0;
function local() {
return new Local;
}
function Local() {
this._ = "@" + (++nextId).toString(36);
}
Local.prototype = local.prototype = {
constructor: Local,
get: function(node) {
var id = this._;
while (!(id in node)) if (!(node = node.parentNode)) return;
return node[id];
},
set: function(node, value) {
return node[this._] = value;
},
remove: function(node) {
return this._ in node && delete node[this._];
},
toString: function() {
return this._;
}
};
function sourceEvent() {
var current = exports.event, source;
while (source = current.sourceEvent) current = source;
return current;
}
function point(node, event) {
var svg = node.ownerSVGElement || node;
if (svg.createSVGPoint) {
var point = svg.createSVGPoint();
point.x = event.clientX, point.y = event.clientY;
point = point.matrixTransform(node.getScreenCTM().inverse());
return [point.x, point.y];
}
var rect = node.getBoundingClientRect();
return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];
}
function mouse(node) {
var event = sourceEvent();
if (event.changedTouches) event = event.changedTouches[0];
return point(node, event);
}
function selectAll(selector) {
return typeof selector === "string"
? new Selection([document.querySelectorAll(selector)], [document.documentElement])
: new Selection([selector == null ? [] : selector], root);
}
function touch(node, touches, identifier) {
if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;
for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {
if ((touch = touches[i]).identifier === identifier) {
return point(node, touch);
}
}
return null;
}
function touches(node, touches) {
if (touches == null) touches = sourceEvent().touches;
for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {
points[i] = point(node, touches[i]);
}
return points;
}
exports.create = create;
exports.creator = creator;
exports.local = local;
exports.matcher = matcher$1;
exports.mouse = mouse;
exports.namespace = namespace;
exports.namespaces = namespaces;
exports.clientPoint = point;
exports.select = select;
exports.selectAll = selectAll;
exports.selection = selection;
exports.selector = selector;
exports.selectorAll = selectorAll;
exports.style = styleValue;
exports.touch = touch;
exports.touches = touches;
exports.window = defaultView;
exports.customEvent = customEvent;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],24:[function(require,module,exports){
// https://d3js.org/d3-time-format/ Version 2.1.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3));
}(this, (function (exports,d3Time) { 'use strict';
function localDate(d) {
if (0 <= d.y && d.y < 100) {
var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);
date.setFullYear(d.y);
return date;
}
return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);
}
function utcDate(d) {
if (0 <= d.y && d.y < 100) {
var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));
date.setUTCFullYear(d.y);
return date;
}
return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));
}
function newYear(y) {
return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};
}
function formatLocale(locale) {
var locale_dateTime = locale.dateTime,
locale_date = locale.date,
locale_time = locale.time,
locale_periods = locale.periods,
locale_weekdays = locale.days,
locale_shortWeekdays = locale.shortDays,
locale_months = locale.months,
locale_shortMonths = locale.shortMonths;
var periodRe = formatRe(locale_periods),
periodLookup = formatLookup(locale_periods),
weekdayRe = formatRe(locale_weekdays),
weekdayLookup = formatLookup(locale_weekdays),
shortWeekdayRe = formatRe(locale_shortWeekdays),
shortWeekdayLookup = formatLookup(locale_shortWeekdays),
monthRe = formatRe(locale_months),
monthLookup = formatLookup(locale_months),
shortMonthRe = formatRe(locale_shortMonths),
shortMonthLookup = formatLookup(locale_shortMonths);
var formats = {
"a": formatShortWeekday,
"A": formatWeekday,
"b": formatShortMonth,
"B": formatMonth,
"c": null,
"d": formatDayOfMonth,
"e": formatDayOfMonth,
"f": formatMicroseconds,
"H": formatHour24,
"I": formatHour12,
"j": formatDayOfYear,
"L": formatMilliseconds,
"m": formatMonthNumber,
"M": formatMinutes,
"p": formatPeriod,
"Q": formatUnixTimestamp,
"s": formatUnixTimestampSeconds,
"S": formatSeconds,
"u": formatWeekdayNumberMonday,
"U": formatWeekNumberSunday,
"V": formatWeekNumberISO,
"w": formatWeekdayNumberSunday,
"W": formatWeekNumberMonday,
"x": null,
"X": null,
"y": formatYear,
"Y": formatFullYear,
"Z": formatZone,
"%": formatLiteralPercent
};
var utcFormats = {
"a": formatUTCShortWeekday,
"A": formatUTCWeekday,
"b": formatUTCShortMonth,
"B": formatUTCMonth,
"c": null,
"d": formatUTCDayOfMonth,
"e": formatUTCDayOfMonth,
"f": formatUTCMicroseconds,
"H": formatUTCHour24,
"I": formatUTCHour12,
"j": formatUTCDayOfYear,
"L": formatUTCMilliseconds,
"m": formatUTCMonthNumber,
"M": formatUTCMinutes,
"p": formatUTCPeriod,
"Q": formatUnixTimestamp,
"s": formatUnixTimestampSeconds,
"S": formatUTCSeconds,
"u": formatUTCWeekdayNumberMonday,
"U": formatUTCWeekNumberSunday,
"V": formatUTCWeekNumberISO,
"w": formatUTCWeekdayNumberSunday,
"W": formatUTCWeekNumberMonday,
"x": null,
"X": null,
"y": formatUTCYear,
"Y": formatUTCFullYear,
"Z": formatUTCZone,
"%": formatLiteralPercent
};
var parses = {
"a": parseShortWeekday,
"A": parseWeekday,
"b": parseShortMonth,
"B": parseMonth,
"c": parseLocaleDateTime,
"d": parseDayOfMonth,
"e": parseDayOfMonth,
"f": parseMicroseconds,
"H": parseHour24,
"I": parseHour24,
"j": parseDayOfYear,
"L": parseMilliseconds,
"m": parseMonthNumber,
"M": parseMinutes,
"p": parsePeriod,
"Q": parseUnixTimestamp,
"s": parseUnixTimestampSeconds,
"S": parseSeconds,
"u": parseWeekdayNumberMonday,
"U": parseWeekNumberSunday,
"V": parseWeekNumberISO,
"w": parseWeekdayNumberSunday,
"W": parseWeekNumberMonday,
"x": parseLocaleDate,
"X": parseLocaleTime,
"y": parseYear,
"Y": parseFullYear,
"Z": parseZone,
"%": parseLiteralPercent
};
// These recursive directive definitions must be deferred.
formats.x = newFormat(locale_date, formats);
formats.X = newFormat(locale_time, formats);
formats.c = newFormat(locale_dateTime, formats);
utcFormats.x = newFormat(locale_date, utcFormats);
utcFormats.X = newFormat(locale_time, utcFormats);
utcFormats.c = newFormat(locale_dateTime, utcFormats);
function newFormat(specifier, formats) {
return function(date) {
var string = [],
i = -1,
j = 0,
n = specifier.length,
c,
pad,
format;
if (!(date instanceof Date)) date = new Date(+date);
while (++i < n) {
if (specifier.charCodeAt(i) === 37) {
string.push(specifier.slice(j, i));
if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);
else pad = c === "e" ? " " : "0";
if (format = formats[c]) c = format(date, pad);
string.push(c);
j = i + 1;
}
}
string.push(specifier.slice(j, i));
return string.join("");
};
}
function newParse(specifier, newDate) {
return function(string) {
var d = newYear(1900),
i = parseSpecifier(d, specifier, string += "", 0),
week, day;
if (i != string.length) return null;
// If a UNIX timestamp is specified, return it.
if ("Q" in d) return new Date(d.Q);
// The am-pm flag is 0 for AM, and 1 for PM.
if ("p" in d) d.H = d.H % 12 + d.p * 12;
// Convert day-of-week and week-of-year to day-of-year.
if ("V" in d) {
if (d.V < 1 || d.V > 53) return null;
if (!("w" in d)) d.w = 1;
if ("Z" in d) {
week = utcDate(newYear(d.y)), day = week.getUTCDay();
week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week);
week = d3Time.utcDay.offset(week, (d.V - 1) * 7);
d.y = week.getUTCFullYear();
d.m = week.getUTCMonth();
d.d = week.getUTCDate() + (d.w + 6) % 7;
} else {
week = newDate(newYear(d.y)), day = week.getDay();
week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week);
week = d3Time.timeDay.offset(week, (d.V - 1) * 7);
d.y = week.getFullYear();
d.m = week.getMonth();
d.d = week.getDate() + (d.w + 6) % 7;
}
} else if ("W" in d || "U" in d) {
if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0;
day = "Z" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();
d.m = 0;
d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;
}
// If a time zone is specified, all fields are interpreted as UTC and then
// offset according to the specified time zone.
if ("Z" in d) {
d.H += d.Z / 100 | 0;
d.M += d.Z % 100;
return utcDate(d);
}
// Otherwise, all fields are in local time.
return newDate(d);
};
}
function parseSpecifier(d, specifier, string, j) {
var i = 0,
n = specifier.length,
m = string.length,
c,
parse;
while (i < n) {
if (j >= m) return -1;
c = specifier.charCodeAt(i++);
if (c === 37) {
c = specifier.charAt(i++);
parse = parses[c in pads ? specifier.charAt(i++) : c];
if (!parse || ((j = parse(d, string, j)) < 0)) return -1;
} else if (c != string.charCodeAt(j++)) {
return -1;
}
}
return j;
}
function parsePeriod(d, string, i) {
var n = periodRe.exec(string.slice(i));
return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseShortWeekday(d, string, i) {
var n = shortWeekdayRe.exec(string.slice(i));
return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseWeekday(d, string, i) {
var n = weekdayRe.exec(string.slice(i));
return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseShortMonth(d, string, i) {
var n = shortMonthRe.exec(string.slice(i));
return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseMonth(d, string, i) {
var n = monthRe.exec(string.slice(i));
return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}
function parseLocaleDateTime(d, string, i) {
return parseSpecifier(d, locale_dateTime, string, i);
}
function parseLocaleDate(d, string, i) {
return parseSpecifier(d, locale_date, string, i);
}
function parseLocaleTime(d, string, i) {
return parseSpecifier(d, locale_time, string, i);
}
function formatShortWeekday(d) {
return locale_shortWeekdays[d.getDay()];
}
function formatWeekday(d) {
return locale_weekdays[d.getDay()];
}
function formatShortMonth(d) {
return locale_shortMonths[d.getMonth()];
}
function formatMonth(d) {
return locale_months[d.getMonth()];
}
function formatPeriod(d) {
return locale_periods[+(d.getHours() >= 12)];
}
function formatUTCShortWeekday(d) {
return locale_shortWeekdays[d.getUTCDay()];
}
function formatUTCWeekday(d) {
return locale_weekdays[d.getUTCDay()];
}
function formatUTCShortMonth(d) {
return locale_shortMonths[d.getUTCMonth()];
}
function formatUTCMonth(d) {
return locale_months[d.getUTCMonth()];
}
function formatUTCPeriod(d) {
return locale_periods[+(d.getUTCHours() >= 12)];
}
return {
format: function(specifier) {
var f = newFormat(specifier += "", formats);
f.toString = function() { return specifier; };
return f;
},
parse: function(specifier) {
var p = newParse(specifier += "", localDate);
p.toString = function() { return specifier; };
return p;
},
utcFormat: function(specifier) {
var f = newFormat(specifier += "", utcFormats);
f.toString = function() { return specifier; };
return f;
},
utcParse: function(specifier) {
var p = newParse(specifier, utcDate);
p.toString = function() { return specifier; };
return p;
}
};
}
var pads = {"-": "", "_": " ", "0": "0"};
var numberRe = /^\s*\d+/;
var percentRe = /^%/;
var requoteRe = /[\\^$*+?|[\]().{}]/g;
function pad(value, fill, width) {
var sign = value < 0 ? "-" : "",
string = (sign ? -value : value) + "",
length = string.length;
return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
}
function requote(s) {
return s.replace(requoteRe, "\\$&");
}
function formatRe(names) {
return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i");
}
function formatLookup(names) {
var map = {}, i = -1, n = names.length;
while (++i < n) map[names[i].toLowerCase()] = i;
return map;
}
function parseWeekdayNumberSunday(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 1));
return n ? (d.w = +n[0], i + n[0].length) : -1;
}
function parseWeekdayNumberMonday(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 1));
return n ? (d.u = +n[0], i + n[0].length) : -1;
}
function parseWeekNumberSunday(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.U = +n[0], i + n[0].length) : -1;
}
function parseWeekNumberISO(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.V = +n[0], i + n[0].length) : -1;
}
function parseWeekNumberMonday(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.W = +n[0], i + n[0].length) : -1;
}
function parseFullYear(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 4));
return n ? (d.y = +n[0], i + n[0].length) : -1;
}
function parseYear(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;
}
function parseZone(d, string, i) {
var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6));
return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1;
}
function parseMonthNumber(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.m = n[0] - 1, i + n[0].length) : -1;
}
function parseDayOfMonth(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.d = +n[0], i + n[0].length) : -1;
}
function parseDayOfYear(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 3));
return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;
}
function parseHour24(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.H = +n[0], i + n[0].length) : -1;
}
function parseMinutes(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.M = +n[0], i + n[0].length) : -1;
}
function parseSeconds(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.S = +n[0], i + n[0].length) : -1;
}
function parseMilliseconds(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 3));
return n ? (d.L = +n[0], i + n[0].length) : -1;
}
function parseMicroseconds(d, string, i) {
var n = numberRe.exec(string.slice(i, i + 6));
return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;
}
function parseLiteralPercent(d, string, i) {
var n = percentRe.exec(string.slice(i, i + 1));
return n ? i + n[0].length : -1;
}
function parseUnixTimestamp(d, string, i) {
var n = numberRe.exec(string.slice(i));
return n ? (d.Q = +n[0], i + n[0].length) : -1;
}
function parseUnixTimestampSeconds(d, string, i) {
var n = numberRe.exec(string.slice(i));
return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;
}
function formatDayOfMonth(d, p) {
return pad(d.getDate(), p, 2);
}
function formatHour24(d, p) {
return pad(d.getHours(), p, 2);
}
function formatHour12(d, p) {
return pad(d.getHours() % 12 || 12, p, 2);
}
function formatDayOfYear(d, p) {
return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);
}
function formatMilliseconds(d, p) {
return pad(d.getMilliseconds(), p, 3);
}
function formatMicroseconds(d, p) {
return formatMilliseconds(d, p) + "000";
}
function formatMonthNumber(d, p) {
return pad(d.getMonth() + 1, p, 2);
}
function formatMinutes(d, p) {
return pad(d.getMinutes(), p, 2);
}
function formatSeconds(d, p) {
return pad(d.getSeconds(), p, 2);
}
function formatWeekdayNumberMonday(d) {
var day = d.getDay();
return day === 0 ? 7 : day;
}
function formatWeekNumberSunday(d, p) {
return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);
}
function formatWeekNumberISO(d, p) {
var day = d.getDay();
d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);
return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2);
}
function formatWeekdayNumberSunday(d) {
return d.getDay();
}
function formatWeekNumberMonday(d, p) {
return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);
}
function formatYear(d, p) {
return pad(d.getFullYear() % 100, p, 2);
}
function formatFullYear(d, p) {
return pad(d.getFullYear() % 10000, p, 4);
}
function formatZone(d) {
var z = d.getTimezoneOffset();
return (z > 0 ? "-" : (z *= -1, "+"))
+ pad(z / 60 | 0, "0", 2)
+ pad(z % 60, "0", 2);
}
function formatUTCDayOfMonth(d, p) {
return pad(d.getUTCDate(), p, 2);
}
function formatUTCHour24(d, p) {
return pad(d.getUTCHours(), p, 2);
}
function formatUTCHour12(d, p) {
return pad(d.getUTCHours() % 12 || 12, p, 2);
}
function formatUTCDayOfYear(d, p) {
return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);
}
function formatUTCMilliseconds(d, p) {
return pad(d.getUTCMilliseconds(), p, 3);
}
function formatUTCMicroseconds(d, p) {
return formatUTCMilliseconds(d, p) + "000";
}
function formatUTCMonthNumber(d, p) {
return pad(d.getUTCMonth() + 1, p, 2);
}
function formatUTCMinutes(d, p) {
return pad(d.getUTCMinutes(), p, 2);
}
function formatUTCSeconds(d, p) {
return pad(d.getUTCSeconds(), p, 2);
}
function formatUTCWeekdayNumberMonday(d) {
var dow = d.getUTCDay();
return dow === 0 ? 7 : dow;
}
function formatUTCWeekNumberSunday(d, p) {
return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);
}
function formatUTCWeekNumberISO(d, p) {
var day = d.getUTCDay();
d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);
return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2);
}
function formatUTCWeekdayNumberSunday(d) {
return d.getUTCDay();
}
function formatUTCWeekNumberMonday(d, p) {
return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);
}
function formatUTCYear(d, p) {
return pad(d.getUTCFullYear() % 100, p, 2);
}
function formatUTCFullYear(d, p) {
return pad(d.getUTCFullYear() % 10000, p, 4);
}
function formatUTCZone() {
return "+0000";
}
function formatLiteralPercent() {
return "%";
}
function formatUnixTimestamp(d) {
return +d;
}
function formatUnixTimestampSeconds(d) {
return Math.floor(+d / 1000);
}
var locale;
defaultLocale({
dateTime: "%x, %X",
date: "%-m/%-d/%Y",
time: "%-I:%M:%S %p",
periods: ["AM", "PM"],
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
});
function defaultLocale(definition) {
locale = formatLocale(definition);
exports.timeFormat = locale.format;
exports.timeParse = locale.parse;
exports.utcFormat = locale.utcFormat;
exports.utcParse = locale.utcParse;
return locale;
}
var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ";
function formatIsoNative(date) {
return date.toISOString();
}
var formatIso = Date.prototype.toISOString
? formatIsoNative
: exports.utcFormat(isoSpecifier);
function parseIsoNative(string) {
var date = new Date(string);
return isNaN(date) ? null : date;
}
var parseIso = +new Date("2000-01-01T00:00:00.000Z")
? parseIsoNative
: exports.utcParse(isoSpecifier);
exports.timeFormatDefaultLocale = defaultLocale;
exports.timeFormatLocale = formatLocale;
exports.isoFormat = formatIso;
exports.isoParse = parseIso;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-time":25}],25:[function(require,module,exports){
// https://d3js.org/d3-time/ Version 1.0.8. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var t0 = new Date;
var t1 = new Date;
function newInterval(floori, offseti, count, field) {
function interval(date) {
return floori(date = new Date(+date)), date;
}
interval.floor = interval;
interval.ceil = function(date) {
return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;
};
interval.round = function(date) {
var d0 = interval(date),
d1 = interval.ceil(date);
return date - d0 < d1 - date ? d0 : d1;
};
interval.offset = function(date, step) {
return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;
};
interval.range = function(start, stop, step) {
var range = [], previous;
start = interval.ceil(start);
step = step == null ? 1 : Math.floor(step);
if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date
do range.push(previous = new Date(+start)), offseti(start, step), floori(start);
while (previous < start && start < stop);
return range;
};
interval.filter = function(test) {
return newInterval(function(date) {
if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);
}, function(date, step) {
if (date >= date) {
if (step < 0) while (++step <= 0) {
while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty
} else while (--step >= 0) {
while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty
}
}
});
};
if (count) {
interval.count = function(start, end) {
t0.setTime(+start), t1.setTime(+end);
floori(t0), floori(t1);
return Math.floor(count(t0, t1));
};
interval.every = function(step) {
step = Math.floor(step);
return !isFinite(step) || !(step > 0) ? null
: !(step > 1) ? interval
: interval.filter(field
? function(d) { return field(d) % step === 0; }
: function(d) { return interval.count(0, d) % step === 0; });
};
}
return interval;
}
var millisecond = newInterval(function() {
// noop
}, function(date, step) {
date.setTime(+date + step);
}, function(start, end) {
return end - start;
});
// An optimized implementation for this simple case.
millisecond.every = function(k) {
k = Math.floor(k);
if (!isFinite(k) || !(k > 0)) return null;
if (!(k > 1)) return millisecond;
return newInterval(function(date) {
date.setTime(Math.floor(date / k) * k);
}, function(date, step) {
date.setTime(+date + step * k);
}, function(start, end) {
return (end - start) / k;
});
};
var milliseconds = millisecond.range;
var durationSecond = 1e3;
var durationMinute = 6e4;
var durationHour = 36e5;
var durationDay = 864e5;
var durationWeek = 6048e5;
var second = newInterval(function(date) {
date.setTime(Math.floor(date / durationSecond) * durationSecond);
}, function(date, step) {
date.setTime(+date + step * durationSecond);
}, function(start, end) {
return (end - start) / durationSecond;
}, function(date) {
return date.getUTCSeconds();
});
var seconds = second.range;
var minute = newInterval(function(date) {
date.setTime(Math.floor(date / durationMinute) * durationMinute);
}, function(date, step) {
date.setTime(+date + step * durationMinute);
}, function(start, end) {
return (end - start) / durationMinute;
}, function(date) {
return date.getMinutes();
});
var minutes = minute.range;
var hour = newInterval(function(date) {
var offset = date.getTimezoneOffset() * durationMinute % durationHour;
if (offset < 0) offset += durationHour;
date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);
}, function(date, step) {
date.setTime(+date + step * durationHour);
}, function(start, end) {
return (end - start) / durationHour;
}, function(date) {
return date.getHours();
});
var hours = hour.range;
var day = newInterval(function(date) {
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setDate(date.getDate() + step);
}, function(start, end) {
return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;
}, function(date) {
return date.getDate() - 1;
});
var days = day.range;
function weekday(i) {
return newInterval(function(date) {
date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setDate(date.getDate() + step * 7);
}, function(start, end) {
return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;
});
}
var sunday = weekday(0);
var monday = weekday(1);
var tuesday = weekday(2);
var wednesday = weekday(3);
var thursday = weekday(4);
var friday = weekday(5);
var saturday = weekday(6);
var sundays = sunday.range;
var mondays = monday.range;
var tuesdays = tuesday.range;
var wednesdays = wednesday.range;
var thursdays = thursday.range;
var fridays = friday.range;
var saturdays = saturday.range;
var month = newInterval(function(date) {
date.setDate(1);
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setMonth(date.getMonth() + step);
}, function(start, end) {
return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;
}, function(date) {
return date.getMonth();
});
var months = month.range;
var year = newInterval(function(date) {
date.setMonth(0, 1);
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setFullYear(date.getFullYear() + step);
}, function(start, end) {
return end.getFullYear() - start.getFullYear();
}, function(date) {
return date.getFullYear();
});
// An optimized implementation for this simple case.
year.every = function(k) {
return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {
date.setFullYear(Math.floor(date.getFullYear() / k) * k);
date.setMonth(0, 1);
date.setHours(0, 0, 0, 0);
}, function(date, step) {
date.setFullYear(date.getFullYear() + step * k);
});
};
var years = year.range;
var utcMinute = newInterval(function(date) {
date.setUTCSeconds(0, 0);
}, function(date, step) {
date.setTime(+date + step * durationMinute);
}, function(start, end) {
return (end - start) / durationMinute;
}, function(date) {
return date.getUTCMinutes();
});
var utcMinutes = utcMinute.range;
var utcHour = newInterval(function(date) {
date.setUTCMinutes(0, 0, 0);
}, function(date, step) {
date.setTime(+date + step * durationHour);
}, function(start, end) {
return (end - start) / durationHour;
}, function(date) {
return date.getUTCHours();
});
var utcHours = utcHour.range;
var utcDay = newInterval(function(date) {
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCDate(date.getUTCDate() + step);
}, function(start, end) {
return (end - start) / durationDay;
}, function(date) {
return date.getUTCDate() - 1;
});
var utcDays = utcDay.range;
function utcWeekday(i) {
return newInterval(function(date) {
date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCDate(date.getUTCDate() + step * 7);
}, function(start, end) {
return (end - start) / durationWeek;
});
}
var utcSunday = utcWeekday(0);
var utcMonday = utcWeekday(1);
var utcTuesday = utcWeekday(2);
var utcWednesday = utcWeekday(3);
var utcThursday = utcWeekday(4);
var utcFriday = utcWeekday(5);
var utcSaturday = utcWeekday(6);
var utcSundays = utcSunday.range;
var utcMondays = utcMonday.range;
var utcTuesdays = utcTuesday.range;
var utcWednesdays = utcWednesday.range;
var utcThursdays = utcThursday.range;
var utcFridays = utcFriday.range;
var utcSaturdays = utcSaturday.range;
var utcMonth = newInterval(function(date) {
date.setUTCDate(1);
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCMonth(date.getUTCMonth() + step);
}, function(start, end) {
return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;
}, function(date) {
return date.getUTCMonth();
});
var utcMonths = utcMonth.range;
var utcYear = newInterval(function(date) {
date.setUTCMonth(0, 1);
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCFullYear(date.getUTCFullYear() + step);
}, function(start, end) {
return end.getUTCFullYear() - start.getUTCFullYear();
}, function(date) {
return date.getUTCFullYear();
});
// An optimized implementation for this simple case.
utcYear.every = function(k) {
return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {
date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);
date.setUTCMonth(0, 1);
date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
date.setUTCFullYear(date.getUTCFullYear() + step * k);
});
};
var utcYears = utcYear.range;
exports.timeInterval = newInterval;
exports.timeMillisecond = millisecond;
exports.timeMilliseconds = milliseconds;
exports.utcMillisecond = millisecond;
exports.utcMilliseconds = milliseconds;
exports.timeSecond = second;
exports.timeSeconds = seconds;
exports.utcSecond = second;
exports.utcSeconds = seconds;
exports.timeMinute = minute;
exports.timeMinutes = minutes;
exports.timeHour = hour;
exports.timeHours = hours;
exports.timeDay = day;
exports.timeDays = days;
exports.timeWeek = sunday;
exports.timeWeeks = sundays;
exports.timeSunday = sunday;
exports.timeSundays = sundays;
exports.timeMonday = monday;
exports.timeMondays = mondays;
exports.timeTuesday = tuesday;
exports.timeTuesdays = tuesdays;
exports.timeWednesday = wednesday;
exports.timeWednesdays = wednesdays;
exports.timeThursday = thursday;
exports.timeThursdays = thursdays;
exports.timeFriday = friday;
exports.timeFridays = fridays;
exports.timeSaturday = saturday;
exports.timeSaturdays = saturdays;
exports.timeMonth = month;
exports.timeMonths = months;
exports.timeYear = year;
exports.timeYears = years;
exports.utcMinute = utcMinute;
exports.utcMinutes = utcMinutes;
exports.utcHour = utcHour;
exports.utcHours = utcHours;
exports.utcDay = utcDay;
exports.utcDays = utcDays;
exports.utcWeek = utcSunday;
exports.utcWeeks = utcSundays;
exports.utcSunday = utcSunday;
exports.utcSundays = utcSundays;
exports.utcMonday = utcMonday;
exports.utcMondays = utcMondays;
exports.utcTuesday = utcTuesday;
exports.utcTuesdays = utcTuesdays;
exports.utcWednesday = utcWednesday;
exports.utcWednesdays = utcWednesdays;
exports.utcThursday = utcThursday;
exports.utcThursdays = utcThursdays;
exports.utcFriday = utcFriday;
exports.utcFridays = utcFridays;
exports.utcSaturday = utcSaturday;
exports.utcSaturdays = utcSaturdays;
exports.utcMonth = utcMonth;
exports.utcMonths = utcMonths;
exports.utcYear = utcYear;
exports.utcYears = utcYears;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],26:[function(require,module,exports){
// https://d3js.org/d3-timer/ Version 1.0.7. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.d3 = global.d3 || {})));
}(this, (function (exports) { 'use strict';
var frame = 0;
var timeout = 0;
var interval = 0;
var pokeDelay = 1000;
var taskHead;
var taskTail;
var clockLast = 0;
var clockNow = 0;
var clockSkew = 0;
var clock = typeof performance === "object" && performance.now ? performance : Date;
var setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };
function now() {
return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);
}
function clearNow() {
clockNow = 0;
}
function Timer() {
this._call =
this._time =
this._next = null;
}
Timer.prototype = timer.prototype = {
constructor: Timer,
restart: function(callback, delay, time) {
if (typeof callback !== "function") throw new TypeError("callback is not a function");
time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);
if (!this._next && taskTail !== this) {
if (taskTail) taskTail._next = this;
else taskHead = this;
taskTail = this;
}
this._call = callback;
this._time = time;
sleep();
},
stop: function() {
if (this._call) {
this._call = null;
this._time = Infinity;
sleep();
}
}
};
function timer(callback, delay, time) {
var t = new Timer;
t.restart(callback, delay, time);
return t;
}
function timerFlush() {
now(); // Get the current time, if not already set.
++frame; // Pretend we’ve set an alarm, if we haven’t already.
var t = taskHead, e;
while (t) {
if ((e = clockNow - t._time) >= 0) t._call.call(null, e);
t = t._next;
}
--frame;
}
function wake() {
clockNow = (clockLast = clock.now()) + clockSkew;
frame = timeout = 0;
try {
timerFlush();
} finally {
frame = 0;
nap();
clockNow = 0;
}
}
function poke() {
var now = clock.now(), delay = now - clockLast;
if (delay > pokeDelay) clockSkew -= delay, clockLast = now;
}
function nap() {
var t0, t1 = taskHead, t2, time = Infinity;
while (t1) {
if (t1._call) {
if (time > t1._time) time = t1._time;
t0 = t1, t1 = t1._next;
} else {
t2 = t1._next, t1._next = null;
t1 = t0 ? t0._next = t2 : taskHead = t2;
}
}
taskTail = t0;
sleep(time);
}
function sleep(time) {
if (frame) return; // Soonest alarm already set, or will be.
if (timeout) timeout = clearTimeout(timeout);
var delay = time - clockNow; // Strictly less than if we recomputed clockNow.
if (delay > 24) {
if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);
if (interval) interval = clearInterval(interval);
} else {
if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);
frame = 1, setFrame(wake);
}
}
var timeout$1 = function(callback, delay, time) {
var t = new Timer;
delay = delay == null ? 0 : +delay;
t.restart(function(elapsed) {
t.stop();
callback(elapsed + delay);
}, delay, time);
return t;
};
var interval$1 = function(callback, delay, time) {
var t = new Timer, total = delay;
if (delay == null) return t.restart(callback, delay, time), t;
delay = +delay, time = time == null ? now() : +time;
t.restart(function tick(elapsed) {
elapsed += total;
t.restart(tick, total += delay, time);
callback(elapsed);
}, delay, time);
return t;
};
exports.now = now;
exports.timer = timer;
exports.timerFlush = timerFlush;
exports.timeout = timeout$1;
exports.interval = interval$1;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{}],27:[function(require,module,exports){
// https://d3js.org/d3-transition/ Version 1.1.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch'), require('d3-timer'), require('d3-interpolate'), require('d3-color'), require('d3-ease')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-timer', 'd3-interpolate', 'd3-color', 'd3-ease'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));
}(this, (function (exports,d3Selection,d3Dispatch,d3Timer,d3Interpolate,d3Color,d3Ease) { 'use strict';
var emptyOn = d3Dispatch.dispatch("start", "end", "interrupt");
var emptyTween = [];
var CREATED = 0;
var SCHEDULED = 1;
var STARTING = 2;
var STARTED = 3;
var RUNNING = 4;
var ENDING = 5;
var ENDED = 6;
var schedule = function(node, name, id, index, group, timing) {
var schedules = node.__transition;
if (!schedules) node.__transition = {};
else if (id in schedules) return;
create(node, id, {
name: name,
index: index, // For context during callback.
group: group, // For context during callback.
on: emptyOn,
tween: emptyTween,
time: timing.time,
delay: timing.delay,
duration: timing.duration,
ease: timing.ease,
timer: null,
state: CREATED
});
};
function init(node, id) {
var schedule = get(node, id);
if (schedule.state > CREATED) throw new Error("too late; already scheduled");
return schedule;
}
function set(node, id) {
var schedule = get(node, id);
if (schedule.state > STARTING) throw new Error("too late; already started");
return schedule;
}
function get(node, id) {
var schedule = node.__transition;
if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found");
return schedule;
}
function create(node, id, self) {
var schedules = node.__transition,
tween;
// Initialize the self timer when the transition is created.
// Note the actual delay is not known until the first callback!
schedules[id] = self;
self.timer = d3Timer.timer(schedule, 0, self.time);
function schedule(elapsed) {
self.state = SCHEDULED;
self.timer.restart(start, self.delay, self.time);
// If the elapsed delay is less than our first sleep, start immediately.
if (self.delay <= elapsed) start(elapsed - self.delay);
}
function start(elapsed) {
var i, j, n, o;
// If the state is not SCHEDULED, then we previously errored on start.
if (self.state !== SCHEDULED) return stop();
for (i in schedules) {
o = schedules[i];
if (o.name !== self.name) continue;
// While this element already has a starting transition during this frame,
// defer starting an interrupting transition until that transition has a
// chance to tick (and possibly end); see d3/d3-transition#54!
if (o.state === STARTED) return d3Timer.timeout(start);
// Interrupt the active transition, if any.
// Dispatch the interrupt event.
if (o.state === RUNNING) {
o.state = ENDED;
o.timer.stop();
o.on.call("interrupt", node, node.__data__, o.index, o.group);
delete schedules[i];
}
// Cancel any pre-empted transitions. No interrupt event is dispatched
// because the cancelled transitions never started. Note that this also
// removes this transition from the pending list!
else if (+i < id) {
o.state = ENDED;
o.timer.stop();
delete schedules[i];
}
}
// Defer the first tick to end of the current frame; see d3/d3#1576.
// Note the transition may be canceled after start and before the first tick!
// Note this must be scheduled before the start event; see d3/d3-transition#16!
// Assuming this is successful, subsequent callbacks go straight to tick.
d3Timer.timeout(function() {
if (self.state === STARTED) {
self.state = RUNNING;
self.timer.restart(tick, self.delay, self.time);
tick(elapsed);
}
});
// Dispatch the start event.
// Note this must be done before the tween are initialized.
self.state = STARTING;
self.on.call("start", node, node.__data__, self.index, self.group);
if (self.state !== STARTING) return; // interrupted
self.state = STARTED;
// Initialize the tween, deleting null tween.
tween = new Array(n = self.tween.length);
for (i = 0, j = -1; i < n; ++i) {
if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {
tween[++j] = o;
}
}
tween.length = j + 1;
}
function tick(elapsed) {
var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),
i = -1,
n = tween.length;
while (++i < n) {
tween[i].call(null, t);
}
// Dispatch the end event.
if (self.state === ENDING) {
self.on.call("end", node, node.__data__, self.index, self.group);
stop();
}
}
function stop() {
self.state = ENDED;
self.timer.stop();
delete schedules[id];
for (var i in schedules) return; // eslint-disable-line no-unused-vars
delete node.__transition;
}
}
var interrupt = function(node, name) {
var schedules = node.__transition,
schedule,
active,
empty = true,
i;
if (!schedules) return;
name = name == null ? null : name + "";
for (i in schedules) {
if ((schedule = schedules[i]).name !== name) { empty = false; continue; }
active = schedule.state > STARTING && schedule.state < ENDING;
schedule.state = ENDED;
schedule.timer.stop();
if (active) schedule.on.call("interrupt", node, node.__data__, schedule.index, schedule.group);
delete schedules[i];
}
if (empty) delete node.__transition;
};
var selection_interrupt = function(name) {
return this.each(function() {
interrupt(this, name);
});
};
function tweenRemove(id, name) {
var tween0, tween1;
return function() {
var schedule = set(this, id),
tween = schedule.tween;
// If this node shared tween with the previous node,
// just assign the updated shared tween and we’re done!
// Otherwise, copy-on-write.
if (tween !== tween0) {
tween1 = tween0 = tween;
for (var i = 0, n = tween1.length; i < n; ++i) {
if (tween1[i].name === name) {
tween1 = tween1.slice();
tween1.splice(i, 1);
break;
}
}
}
schedule.tween = tween1;
};
}
function tweenFunction(id, name, value) {
var tween0, tween1;
if (typeof value !== "function") throw new Error;
return function() {
var schedule = set(this, id),
tween = schedule.tween;
// If this node shared tween with the previous node,
// just assign the updated shared tween and we’re done!
// Otherwise, copy-on-write.
if (tween !== tween0) {
tween1 = (tween0 = tween).slice();
for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {
if (tween1[i].name === name) {
tween1[i] = t;
break;
}
}
if (i === n) tween1.push(t);
}
schedule.tween = tween1;
};
}
var transition_tween = function(name, value) {
var id = this._id;
name += "";
if (arguments.length < 2) {
var tween = get(this.node(), id).tween;
for (var i = 0, n = tween.length, t; i < n; ++i) {
if ((t = tween[i]).name === name) {
return t.value;
}
}
return null;
}
return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));
};
function tweenValue(transition, name, value) {
var id = transition._id;
transition.each(function() {
var schedule = set(this, id);
(schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);
});
return function(node) {
return get(node, id).value[name];
};
}
var interpolate = function(a, b) {
var c;
return (typeof b === "number" ? d3Interpolate.interpolateNumber
: b instanceof d3Color.color ? d3Interpolate.interpolateRgb
: (c = d3Color.color(b)) ? (b = c, d3Interpolate.interpolateRgb)
: d3Interpolate.interpolateString)(a, b);
};
function attrRemove(name) {
return function() {
this.removeAttribute(name);
};
}
function attrRemoveNS(fullname) {
return function() {
this.removeAttributeNS(fullname.space, fullname.local);
};
}
function attrConstant(name, interpolate$$1, value1) {
var value00,
interpolate0;
return function() {
var value0 = this.getAttribute(name);
return value0 === value1 ? null
: value0 === value00 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value1);
};
}
function attrConstantNS(fullname, interpolate$$1, value1) {
var value00,
interpolate0;
return function() {
var value0 = this.getAttributeNS(fullname.space, fullname.local);
return value0 === value1 ? null
: value0 === value00 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value1);
};
}
function attrFunction(name, interpolate$$1, value) {
var value00,
value10,
interpolate0;
return function() {
var value0, value1 = value(this);
if (value1 == null) return void this.removeAttribute(name);
value0 = this.getAttribute(name);
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
};
}
function attrFunctionNS(fullname, interpolate$$1, value) {
var value00,
value10,
interpolate0;
return function() {
var value0, value1 = value(this);
if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);
value0 = this.getAttributeNS(fullname.space, fullname.local);
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
};
}
var transition_attr = function(name, value) {
var fullname = d3Selection.namespace(name), i = fullname === "transform" ? d3Interpolate.interpolateTransformSvg : interpolate;
return this.attrTween(name, typeof value === "function"
? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, "attr." + name, value))
: value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)
: (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value + ""));
};
function attrTweenNS(fullname, value) {
function tween() {
var node = this, i = value.apply(node, arguments);
return i && function(t) {
node.setAttributeNS(fullname.space, fullname.local, i(t));
};
}
tween._value = value;
return tween;
}
function attrTween(name, value) {
function tween() {
var node = this, i = value.apply(node, arguments);
return i && function(t) {
node.setAttribute(name, i(t));
};
}
tween._value = value;
return tween;
}
var transition_attrTween = function(name, value) {
var key = "attr." + name;
if (arguments.length < 2) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
var fullname = d3Selection.namespace(name);
return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));
};
function delayFunction(id, value) {
return function() {
init(this, id).delay = +value.apply(this, arguments);
};
}
function delayConstant(id, value) {
return value = +value, function() {
init(this, id).delay = value;
};
}
var transition_delay = function(value) {
var id = this._id;
return arguments.length
? this.each((typeof value === "function"
? delayFunction
: delayConstant)(id, value))
: get(this.node(), id).delay;
};
function durationFunction(id, value) {
return function() {
set(this, id).duration = +value.apply(this, arguments);
};
}
function durationConstant(id, value) {
return value = +value, function() {
set(this, id).duration = value;
};
}
var transition_duration = function(value) {
var id = this._id;
return arguments.length
? this.each((typeof value === "function"
? durationFunction
: durationConstant)(id, value))
: get(this.node(), id).duration;
};
function easeConstant(id, value) {
if (typeof value !== "function") throw new Error;
return function() {
set(this, id).ease = value;
};
}
var transition_ease = function(value) {
var id = this._id;
return arguments.length
? this.each(easeConstant(id, value))
: get(this.node(), id).ease;
};
var transition_filter = function(match) {
if (typeof match !== "function") match = d3Selection.matcher(match);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
subgroup.push(node);
}
}
}
return new Transition(subgroups, this._parents, this._name, this._id);
};
var transition_merge = function(transition) {
if (transition._id !== this._id) throw new Error;
for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
if (node = group0[i] || group1[i]) {
merge[i] = node;
}
}
}
for (; j < m0; ++j) {
merges[j] = groups0[j];
}
return new Transition(merges, this._parents, this._name, this._id);
};
function start(name) {
return (name + "").trim().split(/^|\s+/).every(function(t) {
var i = t.indexOf(".");
if (i >= 0) t = t.slice(0, i);
return !t || t === "start";
});
}
function onFunction(id, name, listener) {
var on0, on1, sit = start(name) ? init : set;
return function() {
var schedule = sit(this, id),
on = schedule.on;
// If this node shared a dispatch with the previous node,
// just assign the updated shared dispatch and we’re done!
// Otherwise, copy-on-write.
if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);
schedule.on = on1;
};
}
var transition_on = function(name, listener) {
var id = this._id;
return arguments.length < 2
? get(this.node(), id).on.on(name)
: this.each(onFunction(id, name, listener));
};
function removeFunction(id) {
return function() {
var parent = this.parentNode;
for (var i in this.__transition) if (+i !== id) return;
if (parent) parent.removeChild(this);
};
}
var transition_remove = function() {
return this.on("end.remove", removeFunction(this._id));
};
var transition_select = function(select) {
var name = this._name,
id = this._id;
if (typeof select !== "function") select = d3Selection.selector(select);
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
subgroup[i] = subnode;
schedule(subgroup[i], name, id, i, subgroup, get(node, id));
}
}
}
return new Transition(subgroups, this._parents, name, id);
};
var transition_selectAll = function(select) {
var name = this._name,
id = this._id;
if (typeof select !== "function") select = d3Selection.selectorAll(select);
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {
if (child = children[k]) {
schedule(child, name, id, k, children, inherit);
}
}
subgroups.push(children);
parents.push(node);
}
}
}
return new Transition(subgroups, parents, name, id);
};
var Selection = d3Selection.selection.prototype.constructor;
var transition_selection = function() {
return new Selection(this._groups, this._parents);
};
function styleRemove(name, interpolate$$1) {
var value00,
value10,
interpolate0;
return function() {
var value0 = d3Selection.style(this, name),
value1 = (this.style.removeProperty(name), d3Selection.style(this, name));
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
};
}
function styleRemoveEnd(name) {
return function() {
this.style.removeProperty(name);
};
}
function styleConstant(name, interpolate$$1, value1) {
var value00,
interpolate0;
return function() {
var value0 = d3Selection.style(this, name);
return value0 === value1 ? null
: value0 === value00 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value1);
};
}
function styleFunction(name, interpolate$$1, value) {
var value00,
value10,
interpolate0;
return function() {
var value0 = d3Selection.style(this, name),
value1 = value(this);
if (value1 == null) value1 = (this.style.removeProperty(name), d3Selection.style(this, name));
return value0 === value1 ? null
: value0 === value00 && value1 === value10 ? interpolate0
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
};
}
var transition_style = function(name, value, priority) {
var i = (name += "") === "transform" ? d3Interpolate.interpolateTransformCss : interpolate;
return value == null ? this
.styleTween(name, styleRemove(name, i))
.on("end.style." + name, styleRemoveEnd(name))
: this.styleTween(name, typeof value === "function"
? styleFunction(name, i, tweenValue(this, "style." + name, value))
: styleConstant(name, i, value + ""), priority);
};
function styleTween(name, value, priority) {
function tween() {
var node = this, i = value.apply(node, arguments);
return i && function(t) {
node.style.setProperty(name, i(t), priority);
};
}
tween._value = value;
return tween;
}
var transition_styleTween = function(name, value, priority) {
var key = "style." + (name += "");
if (arguments.length < 2) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
return this.tween(key, styleTween(name, value, priority == null ? "" : priority));
};
function textConstant(value) {
return function() {
this.textContent = value;
};
}
function textFunction(value) {
return function() {
var value1 = value(this);
this.textContent = value1 == null ? "" : value1;
};
}
var transition_text = function(value) {
return this.tween("text", typeof value === "function"
? textFunction(tweenValue(this, "text", value))
: textConstant(value == null ? "" : value + ""));
};
var transition_transition = function() {
var name = this._name,
id0 = this._id,
id1 = newId();
for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
var inherit = get(node, id0);
schedule(node, name, id1, i, group, {
time: inherit.time + inherit.delay + inherit.duration,
delay: 0,
duration: inherit.duration,
ease: inherit.ease
});
}
}
}
return new Transition(groups, this._parents, name, id1);
};
var id = 0;
function Transition(groups, parents, name, id) {
this._groups = groups;
this._parents = parents;
this._name = name;
this._id = id;
}
function transition(name) {
return d3Selection.selection().transition(name);
}
function newId() {
return ++id;
}
var selection_prototype = d3Selection.selection.prototype;
Transition.prototype = transition.prototype = {
constructor: Transition,
select: transition_select,
selectAll: transition_selectAll,
filter: transition_filter,
merge: transition_merge,
selection: transition_selection,
transition: transition_transition,
call: selection_prototype.call,
nodes: selection_prototype.nodes,
node: selection_prototype.node,
size: selection_prototype.size,
empty: selection_prototype.empty,
each: selection_prototype.each,
on: transition_on,
attr: transition_attr,
attrTween: transition_attrTween,
style: transition_style,
styleTween: transition_styleTween,
text: transition_text,
remove: transition_remove,
tween: transition_tween,
delay: transition_delay,
duration: transition_duration,
ease: transition_ease
};
var defaultTiming = {
time: null, // Set on use.
delay: 0,
duration: 250,
ease: d3Ease.easeCubicInOut
};
function inherit(node, id) {
var timing;
while (!(timing = node.__transition) || !(timing = timing[id])) {
if (!(node = node.parentNode)) {
return defaultTiming.time = d3Timer.now(), defaultTiming;
}
}
return timing;
}
var selection_transition = function(name) {
var id,
timing;
if (name instanceof Transition) {
id = name._id, name = name._name;
} else {
id = newId(), (timing = defaultTiming).time = d3Timer.now(), name = name == null ? null : name + "";
}
for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
if (node = group[i]) {
schedule(node, name, id, i, group, timing || inherit(node, id));
}
}
}
return new Transition(groups, this._parents, name, id);
};
d3Selection.selection.prototype.interrupt = selection_interrupt;
d3Selection.selection.prototype.transition = selection_transition;
var root = [null];
var active = function(node, name) {
var schedules = node.__transition,
schedule,
i;
if (schedules) {
name = name == null ? null : name + "";
for (i in schedules) {
if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {
return new Transition([[node]], root, name, +i);
}
}
}
return null;
};
exports.transition = transition;
exports.active = active;
exports.interrupt = interrupt;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-color":14,"d3-dispatch":15,"d3-ease":17,"d3-interpolate":21,"d3-selection":23,"d3-timer":26}],28:[function(require,module,exports){
// https://d3js.org/d3-zoom/ Version 1.7.1. Copyright 2017 Mike Bostock.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-dispatch'), require('d3-drag'), require('d3-interpolate'), require('d3-selection'), require('d3-transition')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-dispatch', 'd3-drag', 'd3-interpolate', 'd3-selection', 'd3-transition'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3));
}(this, (function (exports,d3Dispatch,d3Drag,d3Interpolate,d3Selection,d3Transition) { 'use strict';
var constant = function(x) {
return function() {
return x;
};
};
function ZoomEvent(target, type, transform) {
this.target = target;
this.type = type;
this.transform = transform;
}
function Transform(k, x, y) {
this.k = k;
this.x = x;
this.y = y;
}
Transform.prototype = {
constructor: Transform,
scale: function(k) {
return k === 1 ? this : new Transform(this.k * k, this.x, this.y);
},
translate: function(x, y) {
return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);
},
apply: function(point) {
return [point[0] * this.k + this.x, point[1] * this.k + this.y];
},
applyX: function(x) {
return x * this.k + this.x;
},
applyY: function(y) {
return y * this.k + this.y;
},
invert: function(location) {
return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];
},
invertX: function(x) {
return (x - this.x) / this.k;
},
invertY: function(y) {
return (y - this.y) / this.k;
},
rescaleX: function(x) {
return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));
},
rescaleY: function(y) {
return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));
},
toString: function() {
return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
}
};
var identity = new Transform(1, 0, 0);
transform.prototype = Transform.prototype;
function transform(node) {
return node.__zoom || identity;
}
function nopropagation() {
d3Selection.event.stopImmediatePropagation();
}
var noevent = function() {
d3Selection.event.preventDefault();
d3Selection.event.stopImmediatePropagation();
};
// Ignore right-click, since that should open the context menu.
function defaultFilter() {
return !d3Selection.event.button;
}
function defaultExtent() {
var e = this, w, h;
if (e instanceof SVGElement) {
e = e.ownerSVGElement || e;
w = e.width.baseVal.value;
h = e.height.baseVal.value;
} else {
w = e.clientWidth;
h = e.clientHeight;
}
return [[0, 0], [w, h]];
}
function defaultTransform() {
return this.__zoom || identity;
}
function defaultWheelDelta() {
return -d3Selection.event.deltaY * (d3Selection.event.deltaMode ? 120 : 1) / 500;
}
function defaultTouchable() {
return "ontouchstart" in this;
}
function defaultConstrain(transform$$1, extent, translateExtent) {
var dx0 = transform$$1.invertX(extent[0][0]) - translateExtent[0][0],
dx1 = transform$$1.invertX(extent[1][0]) - translateExtent[1][0],
dy0 = transform$$1.invertY(extent[0][1]) - translateExtent[0][1],
dy1 = transform$$1.invertY(extent[1][1]) - translateExtent[1][1];
return transform$$1.translate(
dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),
dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)
);
}
var zoom = function() {
var filter = defaultFilter,
extent = defaultExtent,
constrain = defaultConstrain,
wheelDelta = defaultWheelDelta,
touchable = defaultTouchable,
scaleExtent = [0, Infinity],
translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],
duration = 250,
interpolate = d3Interpolate.interpolateZoom,
gestures = [],
listeners = d3Dispatch.dispatch("start", "zoom", "end"),
touchstarting,
touchending,
touchDelay = 500,
wheelDelay = 150,
clickDistance2 = 0;
function zoom(selection) {
selection
.property("__zoom", defaultTransform)
.on("wheel.zoom", wheeled)
.on("mousedown.zoom", mousedowned)
.on("dblclick.zoom", dblclicked)
.filter(touchable)
.on("touchstart.zoom", touchstarted)
.on("touchmove.zoom", touchmoved)
.on("touchend.zoom touchcancel.zoom", touchended)
.style("touch-action", "none")
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
}
zoom.transform = function(collection, transform$$1) {
var selection = collection.selection ? collection.selection() : collection;
selection.property("__zoom", defaultTransform);
if (collection !== selection) {
schedule(collection, transform$$1);
} else {
selection.interrupt().each(function() {
gesture(this, arguments)
.start()
.zoom(null, typeof transform$$1 === "function" ? transform$$1.apply(this, arguments) : transform$$1)
.end();
});
}
};
zoom.scaleBy = function(selection, k) {
zoom.scaleTo(selection, function() {
var k0 = this.__zoom.k,
k1 = typeof k === "function" ? k.apply(this, arguments) : k;
return k0 * k1;
});
};
zoom.scaleTo = function(selection, k) {
zoom.transform(selection, function() {
var e = extent.apply(this, arguments),
t0 = this.__zoom,
p0 = centroid(e),
p1 = t0.invert(p0),
k1 = typeof k === "function" ? k.apply(this, arguments) : k;
return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);
});
};
zoom.translateBy = function(selection, x, y) {
zoom.transform(selection, function() {
return constrain(this.__zoom.translate(
typeof x === "function" ? x.apply(this, arguments) : x,
typeof y === "function" ? y.apply(this, arguments) : y
), extent.apply(this, arguments), translateExtent);
});
};
zoom.translateTo = function(selection, x, y) {
zoom.transform(selection, function() {
var e = extent.apply(this, arguments),
t = this.__zoom,
p = centroid(e);
return constrain(identity.translate(p[0], p[1]).scale(t.k).translate(
typeof x === "function" ? -x.apply(this, arguments) : -x,
typeof y === "function" ? -y.apply(this, arguments) : -y
), e, translateExtent);
});
};
function scale(transform$$1, k) {
k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));
return k === transform$$1.k ? transform$$1 : new Transform(k, transform$$1.x, transform$$1.y);
}
function translate(transform$$1, p0, p1) {
var x = p0[0] - p1[0] * transform$$1.k, y = p0[1] - p1[1] * transform$$1.k;
return x === transform$$1.x && y === transform$$1.y ? transform$$1 : new Transform(transform$$1.k, x, y);
}
function centroid(extent) {
return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];
}
function schedule(transition, transform$$1, center) {
transition
.on("start.zoom", function() { gesture(this, arguments).start(); })
.on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); })
.tween("zoom", function() {
var that = this,
args = arguments,
g = gesture(that, args),
e = extent.apply(that, args),
p = center || centroid(e),
w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),
a = that.__zoom,
b = typeof transform$$1 === "function" ? transform$$1.apply(that, args) : transform$$1,
i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));
return function(t) {
if (t === 1) t = b; // Avoid rounding error on end.
else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }
g.zoom(null, t);
};
});
}
function gesture(that, args) {
for (var i = 0, n = gestures.length, g; i < n; ++i) {
if ((g = gestures[i]).that === that) {
return g;
}
}
return new Gesture(that, args);
}
function Gesture(that, args) {
this.that = that;
this.args = args;
this.index = -1;
this.active = 0;
this.extent = extent.apply(that, args);
}
Gesture.prototype = {
start: function() {
if (++this.active === 1) {
this.index = gestures.push(this) - 1;
this.emit("start");
}
return this;
},
zoom: function(key, transform$$1) {
if (this.mouse && key !== "mouse") this.mouse[1] = transform$$1.invert(this.mouse[0]);
if (this.touch0 && key !== "touch") this.touch0[1] = transform$$1.invert(this.touch0[0]);
if (this.touch1 && key !== "touch") this.touch1[1] = transform$$1.invert(this.touch1[0]);
this.that.__zoom = transform$$1;
this.emit("zoom");
return this;
},
end: function() {
if (--this.active === 0) {
gestures.splice(this.index, 1);
this.index = -1;
this.emit("end");
}
return this;
},
emit: function(type) {
d3Selection.customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);
}
};
function wheeled() {
if (!filter.apply(this, arguments)) return;
var g = gesture(this, arguments),
t = this.__zoom,
k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),
p = d3Selection.mouse(this);
// If the mouse is in the same location as before, reuse it.
// If there were recent wheel events, reset the wheel idle timeout.
if (g.wheel) {
if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {
g.mouse[1] = t.invert(g.mouse[0] = p);
}
clearTimeout(g.wheel);
}
// If this wheel event won’t trigger a transform change, ignore it.
else if (t.k === k) return;
// Otherwise, capture the mouse point and location at the start.
else {
g.mouse = [p, t.invert(p)];
d3Transition.interrupt(this);
g.start();
}
noevent();
g.wheel = setTimeout(wheelidled, wheelDelay);
g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));
function wheelidled() {
g.wheel = null;
g.end();
}
}
function mousedowned() {
if (touchending || !filter.apply(this, arguments)) return;
var g = gesture(this, arguments),
v = d3Selection.select(d3Selection.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true),
p = d3Selection.mouse(this),
x0 = d3Selection.event.clientX,
y0 = d3Selection.event.clientY;
d3Drag.dragDisable(d3Selection.event.view);
nopropagation();
g.mouse = [p, this.__zoom.invert(p)];
d3Transition.interrupt(this);
g.start();
function mousemoved() {
noevent();
if (!g.moved) {
var dx = d3Selection.event.clientX - x0, dy = d3Selection.event.clientY - y0;
g.moved = dx * dx + dy * dy > clickDistance2;
}
g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = d3Selection.mouse(g.that), g.mouse[1]), g.extent, translateExtent));
}
function mouseupped() {
v.on("mousemove.zoom mouseup.zoom", null);
d3Drag.dragEnable(d3Selection.event.view, g.moved);
noevent();
g.end();
}
}
function dblclicked() {
if (!filter.apply(this, arguments)) return;
var t0 = this.__zoom,
p0 = d3Selection.mouse(this),
p1 = t0.invert(p0),
k1 = t0.k * (d3Selection.event.shiftKey ? 0.5 : 2),
t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);
noevent();
if (duration > 0) d3Selection.select(this).transition().duration(duration).call(schedule, t1, p0);
else d3Selection.select(this).call(zoom.transform, t1);
}
function touchstarted() {
if (!filter.apply(this, arguments)) return;
var g = gesture(this, arguments),
touches = d3Selection.event.changedTouches,
started,
n = touches.length, i, t, p;
nopropagation();
for (i = 0; i < n; ++i) {
t = touches[i], p = d3Selection.touch(this, touches, t.identifier);
p = [p, this.__zoom.invert(p), t.identifier];
if (!g.touch0) g.touch0 = p, started = true;
else if (!g.touch1) g.touch1 = p;
}
// If this is a dbltap, reroute to the (optional) dblclick.zoom handler.
if (touchstarting) {
touchstarting = clearTimeout(touchstarting);
if (!g.touch1) {
g.end();
p = d3Selection.select(this).on("dblclick.zoom");
if (p) p.apply(this, arguments);
return;
}
}
if (started) {
touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);
d3Transition.interrupt(this);
g.start();
}
}
function touchmoved() {
var g = gesture(this, arguments),
touches = d3Selection.event.changedTouches,
n = touches.length, i, t, p, l;
noevent();
if (touchstarting) touchstarting = clearTimeout(touchstarting);
for (i = 0; i < n; ++i) {
t = touches[i], p = d3Selection.touch(this, touches, t.identifier);
if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;
else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;
}
t = g.that.__zoom;
if (g.touch1) {
var p0 = g.touch0[0], l0 = g.touch0[1],
p1 = g.touch1[0], l1 = g.touch1[1],
dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,
dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;
t = scale(t, Math.sqrt(dp / dl));
p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];
l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
}
else if (g.touch0) p = g.touch0[0], l = g.touch0[1];
else return;
g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent));
}
function touchended() {
var g = gesture(this, arguments),
touches = d3Selection.event.changedTouches,
n = touches.length, i, t;
nopropagation();
if (touchending) clearTimeout(touchending);
touchending = setTimeout(function() { touchending = null; }, touchDelay);
for (i = 0; i < n; ++i) {
t = touches[i];
if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;
else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;
}
if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;
if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);
else g.end();
}
zoom.wheelDelta = function(_) {
return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant(+_), zoom) : wheelDelta;
};
zoom.filter = function(_) {
return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), zoom) : filter;
};
zoom.touchable = function(_) {
return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), zoom) : touchable;
};
zoom.extent = function(_) {
return arguments.length ? (extent = typeof _ === "function" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;
};
zoom.scaleExtent = function(_) {
return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];
};
zoom.translateExtent = function(_) {
return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];
};
zoom.constrain = function(_) {
return arguments.length ? (constrain = _, zoom) : constrain;
};
zoom.duration = function(_) {
return arguments.length ? (duration = +_, zoom) : duration;
};
zoom.interpolate = function(_) {
return arguments.length ? (interpolate = _, zoom) : interpolate;
};
zoom.on = function() {
var value = listeners.on.apply(listeners, arguments);
return value === listeners ? zoom : value;
};
zoom.clickDistance = function(_) {
return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);
};
return zoom;
};
exports.zoom = zoom;
exports.zoomTransform = transform;
exports.zoomIdentity = identity;
Object.defineProperty(exports, '__esModule', { value: true });
})));
},{"d3-dispatch":15,"d3-drag":16,"d3-interpolate":21,"d3-selection":23,"d3-transition":27}],29:[function(require,module,exports){
/**
* Returns a function, that, as long as it continues to be invoked, will not
* be triggered. The function will be called after it stops being called for
* N milliseconds. If `immediate` is passed, trigger the function on the
* leading edge, instead of the trailing. The function also has a property 'clear'
* that is a function which will clear the timer to prevent previously scheduled executions.
*
* @source underscore.js
* @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/
* @param {Function} function to wrap
* @param {Number} timeout in ms (`100`)
* @param {Boolean} whether to execute at the beginning (`false`)
* @api public
*/
module.exports = function debounce(func, wait, immediate){
var timeout, args, context, timestamp, result;
if (null == wait) wait = 100;
function later() {
var last = Date.now() - timestamp;
if (last < wait && last >= 0) {
timeout = setTimeout(later, wait - last);
} else {
timeout = null;
if (!immediate) {
result = func.apply(context, args);
context = args = null;
}
}
};
var debounced = function(){
context = this;
args = arguments;
timestamp = Date.now();
var callNow = immediate && !timeout;
if (!timeout) timeout = setTimeout(later, wait);
if (callNow) {
result = func.apply(context, args);
context = args = null;
}
return result;
};
debounced.clear = function() {
if (timeout) {
clearTimeout(timeout);
timeout = null;
}
};
debounced.flush = function() {
if (timeout) {
result = func.apply(context, args);
context = args = null;
clearTimeout(timeout);
timeout = null;
}
};
return debounced;
};
},{}],30:[function(require,module,exports){
'use strict';
var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
module.exports = function (str) {
if (typeof str !== 'string') {
throw new TypeError('Expected a string');
}
return str.replace(matchOperatorsRe, '\\$&');
};
},{}],31:[function(require,module,exports){
// expected hue range: [0, 360)
// expected saturation range: [0, 1]
// expected lightness range: [0, 1]
var hslToRgb = function(hue, saturation, lightness){
// based on algorithm from http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB
if( hue == undefined ){
return [0, 0, 0];
}
var chroma = (1 - Math.abs((2 * lightness) - 1)) * saturation;
var huePrime = hue / 60;
var secondComponent = chroma * (1 - Math.abs((huePrime % 2) - 1));
huePrime = Math.floor(huePrime);
var red;
var green;
var blue;
if( huePrime === 0 ){
red = chroma;
green = secondComponent;
blue = 0;
}else if( huePrime === 1 ){
red = secondComponent;
green = chroma;
blue = 0;
}else if( huePrime === 2 ){
red = 0;
green = chroma;
blue = secondComponent;
}else if( huePrime === 3 ){
red = 0;
green = secondComponent;
blue = chroma;
}else if( huePrime === 4 ){
red = secondComponent;
green = 0;
blue = chroma;
}else if( huePrime === 5 ){
red = chroma;
green = 0;
blue = secondComponent;
}
var lightnessAdjustment = lightness - (chroma / 2);
red += lightnessAdjustment;
green += lightnessAdjustment;
blue += lightnessAdjustment;
return [Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255)];
};
module.exports = hslToRgb;
},{}],32:[function(require,module,exports){
module.exports = attributeToProperty
var transform = {
'class': 'className',
'for': 'htmlFor',
'http-equiv': 'httpEquiv'
}
function attributeToProperty (h) {
return function (tagName, attrs, children) {
for (var attr in attrs) {
if (attr in transform) {
attrs[transform[attr]] = attrs[attr]
delete attrs[attr]
}
}
return h(tagName, attrs, children)
}
}
},{}],33:[function(require,module,exports){
var attrToProp = require('hyperscript-attribute-to-property')
var VAR = 0, TEXT = 1, OPEN = 2, CLOSE = 3, ATTR = 4
var ATTR_KEY = 5, ATTR_KEY_W = 6
var ATTR_VALUE_W = 7, ATTR_VALUE = 8
var ATTR_VALUE_SQ = 9, ATTR_VALUE_DQ = 10
var ATTR_EQ = 11, ATTR_BREAK = 12
var COMMENT = 13
module.exports = function (h, opts) {
if (!opts) opts = {}
var concat = opts.concat || function (a, b) {
return String(a) + String(b)
}
if (opts.attrToProp !== false) {
h = attrToProp(h)
}
return function (strings) {
var state = TEXT, reg = ''
var arglen = arguments.length
var parts = []
for (var i = 0; i < strings.length; i++) {
if (i < arglen - 1) {
var arg = arguments[i+1]
var p = parse(strings[i])
var xstate = state
if (xstate === ATTR_VALUE_DQ) xstate = ATTR_VALUE
if (xstate === ATTR_VALUE_SQ) xstate = ATTR_VALUE
if (xstate === ATTR_VALUE_W) xstate = ATTR_VALUE
if (xstate === ATTR) xstate = ATTR_KEY
if (xstate === OPEN) {
if (reg === '/') {
p.push([ OPEN, '/', arg ])
reg = ''
} else {
p.push([ OPEN, arg ])
}
} else {
p.push([ VAR, xstate, arg ])
}
parts.push.apply(parts, p)
} else parts.push.apply(parts, parse(strings[i]))
}
var tree = [null,{},[]]
var stack = [[tree,-1]]
for (var i = 0; i < parts.length; i++) {
var cur = stack[stack.length-1][0]
var p = parts[i], s = p[0]
if (s === OPEN && /^\//.test(p[1])) {
var ix = stack[stack.length-1][1]
if (stack.length > 1) {
stack.pop()
stack[stack.length-1][0][2][ix] = h(
cur[0], cur[1], cur[2].length ? cur[2] : undefined
)
}
} else if (s === OPEN) {
var c = [p[1],{},[]]
cur[2].push(c)
stack.push([c,cur[2].length-1])
} else if (s === ATTR_KEY || (s === VAR && p[1] === ATTR_KEY)) {
var key = ''
var copyKey
for (; i < parts.length; i++) {
if (parts[i][0] === ATTR_KEY) {
key = concat(key, parts[i][1])
} else if (parts[i][0] === VAR && parts[i][1] === ATTR_KEY) {
if (typeof parts[i][2] === 'object' && !key) {
for (copyKey in parts[i][2]) {
if (parts[i][2].hasOwnProperty(copyKey) && !cur[1][copyKey]) {
cur[1][copyKey] = parts[i][2][copyKey]
}
}
} else {
key = concat(key, parts[i][2])
}
} else break
}
if (parts[i][0] === ATTR_EQ) i++
var j = i
for (; i < parts.length; i++) {
if (parts[i][0] === ATTR_VALUE || parts[i][0] === ATTR_KEY) {
if (!cur[1][key]) cur[1][key] = strfn(parts[i][1])
else parts[i][1]==="" || (cur[1][key] = concat(cur[1][key], parts[i][1]));
} else if (parts[i][0] === VAR
&& (parts[i][1] === ATTR_VALUE || parts[i][1] === ATTR_KEY)) {
if (!cur[1][key]) cur[1][key] = strfn(parts[i][2])
else parts[i][2]==="" || (cur[1][key] = concat(cur[1][key], parts[i][2]));
} else {
if (key.length && !cur[1][key] && i === j
&& (parts[i][0] === CLOSE || parts[i][0] === ATTR_BREAK)) {
// https://html.spec.whatwg.org/multipage/infrastructure.html#boolean-attributes
// empty string is falsy, not well behaved value in browser
cur[1][key] = key.toLowerCase()
}
if (parts[i][0] === CLOSE) {
i--
}
break
}
}
} else if (s === ATTR_KEY) {
cur[1][p[1]] = true
} else if (s === VAR && p[1] === ATTR_KEY) {
cur[1][p[2]] = true
} else if (s === CLOSE) {
if (selfClosing(cur[0]) && stack.length) {
var ix = stack[stack.length-1][1]
stack.pop()
stack[stack.length-1][0][2][ix] = h(
cur[0], cur[1], cur[2].length ? cur[2] : undefined
)
}
} else if (s === VAR && p[1] === TEXT) {
if (p[2] === undefined || p[2] === null) p[2] = ''
else if (!p[2]) p[2] = concat('', p[2])
if (Array.isArray(p[2][0])) {
cur[2].push.apply(cur[2], p[2])
} else {
cur[2].push(p[2])
}
} else if (s === TEXT) {
cur[2].push(p[1])
} else if (s === ATTR_EQ || s === ATTR_BREAK) {
// no-op
} else {
throw new Error('unhandled: ' + s)
}
}
if (tree[2].length > 1 && /^\s*$/.test(tree[2][0])) {
tree[2].shift()
}
if (tree[2].length > 2
|| (tree[2].length === 2 && /\S/.test(tree[2][1]))) {
throw new Error(
'multiple root elements must be wrapped in an enclosing tag'
)
}
if (Array.isArray(tree[2][0]) && typeof tree[2][0][0] === 'string'
&& Array.isArray(tree[2][0][2])) {
tree[2][0] = h(tree[2][0][0], tree[2][0][1], tree[2][0][2])
}
return tree[2][0]
function parse (str) {
var res = []
if (state === ATTR_VALUE_W) state = ATTR
for (var i = 0; i < str.length; i++) {
var c = str.charAt(i)
if (state === TEXT && c === '<') {
if (reg.length) res.push([TEXT, reg])
reg = ''
state = OPEN
} else if (c === '>' && !quot(state) && state !== COMMENT) {
if (state === OPEN && reg.length) {
res.push([OPEN,reg])
} else if (state === ATTR_KEY) {
res.push([ATTR_KEY,reg])
} else if (state === ATTR_VALUE && reg.length) {
res.push([ATTR_VALUE,reg])
}
res.push([CLOSE])
reg = ''
state = TEXT
} else if (state === COMMENT && /-$/.test(reg) && c === '-') {
if (opts.comments) {
res.push([ATTR_VALUE,reg.substr(0, reg.length - 1)],[CLOSE])
}
reg = ''
state = TEXT
} else if (state === OPEN && /^!--$/.test(reg)) {
if (opts.comments) {
res.push([OPEN, reg],[ATTR_KEY,'comment'],[ATTR_EQ])
}
reg = c
state = COMMENT
} else if (state === TEXT || state === COMMENT) {
reg += c
} else if (state === OPEN && c === '/' && reg.length) {
// no-op, self closing tag without a space <br/>
} else if (state === OPEN && /\s/.test(c)) {
if (reg.length) {
res.push([OPEN, reg])
}
reg = ''
state = ATTR
} else if (state === OPEN) {
reg += c
} else if (state === ATTR && /[^\s"'=/]/.test(c)) {
state = ATTR_KEY
reg = c
} else if (state === ATTR && /\s/.test(c)) {
if (reg.length) res.push([ATTR_KEY,reg])
res.push([ATTR_BREAK])
} else if (state === ATTR_KEY && /\s/.test(c)) {
res.push([ATTR_KEY,reg])
reg = ''
state = ATTR_KEY_W
} else if (state === ATTR_KEY && c === '=') {
res.push([ATTR_KEY,reg],[ATTR_EQ])
reg = ''
state = ATTR_VALUE_W
} else if (state === ATTR_KEY) {
reg += c
} else if ((state === ATTR_KEY_W || state === ATTR) && c === '=') {
res.push([ATTR_EQ])
state = ATTR_VALUE_W
} else if ((state === ATTR_KEY_W || state === ATTR) && !/\s/.test(c)) {
res.push([ATTR_BREAK])
if (/[\w-]/.test(c)) {
reg += c
state = ATTR_KEY
} else state = ATTR
} else if (state === ATTR_VALUE_W && c === '"') {
state = ATTR_VALUE_DQ
} else if (state === ATTR_VALUE_W && c === "'") {
state = ATTR_VALUE_SQ
} else if (state === ATTR_VALUE_DQ && c === '"') {
res.push([ATTR_VALUE,reg],[ATTR_BREAK])
reg = ''
state = ATTR
} else if (state === ATTR_VALUE_SQ && c === "'") {
res.push([ATTR_VALUE,reg],[ATTR_BREAK])
reg = ''
state = ATTR
} else if (state === ATTR_VALUE_W && !/\s/.test(c)) {
state = ATTR_VALUE
i--
} else if (state === ATTR_VALUE && /\s/.test(c)) {
res.push([ATTR_VALUE,reg],[ATTR_BREAK])
reg = ''
state = ATTR
} else if (state === ATTR_VALUE || state === ATTR_VALUE_SQ
|| state === ATTR_VALUE_DQ) {
reg += c
}
}
if (state === TEXT && reg.length) {
res.push([TEXT,reg])
reg = ''
} else if (state === ATTR_VALUE && reg.length) {
res.push([ATTR_VALUE,reg])
reg = ''
} else if (state === ATTR_VALUE_DQ && reg.length) {
res.push([ATTR_VALUE,reg])
reg = ''
} else if (state === ATTR_VALUE_SQ && reg.length) {
res.push([ATTR_VALUE,reg])
reg = ''
} else if (state === ATTR_KEY) {
res.push([ATTR_KEY,reg])
reg = ''
}
return res
}
}
function strfn (x) {
if (typeof x === 'function') return x
else if (typeof x === 'string') return x
else if (x && typeof x === 'object') return x
else return concat('', x)
}
}
function quot (state) {
return state === ATTR_VALUE_SQ || state === ATTR_VALUE_DQ
}
var hasOwn = Object.prototype.hasOwnProperty
function has (obj, key) { return hasOwn.call(obj, key) }
var closeRE = RegExp('^(' + [
'area', 'base', 'basefont', 'bgsound', 'br', 'col', 'command', 'embed',
'frame', 'hr', 'img', 'input', 'isindex', 'keygen', 'link', 'meta', 'param',
'source', 'track', 'wbr', '!--',
// SVG TAGS
'animate', 'animateTransform', 'circle', 'cursor', 'desc', 'ellipse',
'feBlend', 'feColorMatrix', 'feComposite',
'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap',
'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR',
'feGaussianBlur', 'feImage', 'feMergeNode', 'feMorphology',
'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile',
'feTurbulence', 'font-face-format', 'font-face-name', 'font-face-uri',
'glyph', 'glyphRef', 'hkern', 'image', 'line', 'missing-glyph', 'mpath',
'path', 'polygon', 'polyline', 'rect', 'set', 'stop', 'tref', 'use', 'view',
'vkern'
].join('|') + ')(?:[\.#][a-zA-Z0-9\u007F-\uFFFF_:-]+)*$')
function selfClosing (tag) { return closeRE.test(tag) }
},{"hyperscript-attribute-to-property":32}],34:[function(require,module,exports){
'use strict';
var range; // Create a range object for efficently rendering strings to elements.
var NS_XHTML = 'http://www.w3.org/1999/xhtml';
var doc = typeof document === 'undefined' ? undefined : document;
var testEl = doc ?
doc.body || doc.createElement('div') :
{};
// Fixes <https://github.com/patrick-steele-idem/morphdom/issues/32>
// (IE7+ support) <=IE7 does not support el.hasAttribute(name)
var actualHasAttributeNS;
if (testEl.hasAttributeNS) {
actualHasAttributeNS = function(el, namespaceURI, name) {
return el.hasAttributeNS(namespaceURI, name);
};
} else if (testEl.hasAttribute) {
actualHasAttributeNS = function(el, namespaceURI, name) {
return el.hasAttribute(name);
};
} else {
actualHasAttributeNS = function(el, namespaceURI, name) {
return el.getAttributeNode(namespaceURI, name) != null;
};
}
var hasAttributeNS = actualHasAttributeNS;
function toElement(str) {
if (!range && doc.createRange) {
range = doc.createRange();
range.selectNode(doc.body);
}
var fragment;
if (range && range.createContextualFragment) {
fragment = range.createContextualFragment(str);
} else {
fragment = doc.createElement('body');
fragment.innerHTML = str;
}
return fragment.childNodes[0];
}
/**
* Returns true if two node's names are the same.
*
* NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same
* nodeName and different namespace URIs.
*
* @param {Element} a
* @param {Element} b The target element
* @return {boolean}
*/
function compareNodeNames(fromEl, toEl) {
var fromNodeName = fromEl.nodeName;
var toNodeName = toEl.nodeName;
if (fromNodeName === toNodeName) {
return true;
}
if (toEl.actualize &&
fromNodeName.charCodeAt(0) < 91 && /* from tag name is upper case */
toNodeName.charCodeAt(0) > 90 /* target tag name is lower case */) {
// If the target element is a virtual DOM node then we may need to normalize the tag name
// before comparing. Normal HTML elements that are in the "http://www.w3.org/1999/xhtml"
// are converted to upper case
return fromNodeName === toNodeName.toUpperCase();
} else {
return false;
}
}
/**
* Create an element, optionally with a known namespace URI.
*
* @param {string} name the element name, e.g. 'div' or 'svg'
* @param {string} [namespaceURI] the element's namespace URI, i.e. the value of
* its `xmlns` attribute or its inferred namespace.
*
* @return {Element}
*/
function createElementNS(name, namespaceURI) {
return !namespaceURI || namespaceURI === NS_XHTML ?
doc.createElement(name) :
doc.createElementNS(namespaceURI, name);
}
/**
* Copies the children of one DOM element to another DOM element
*/
function moveChildren(fromEl, toEl) {
var curChild = fromEl.firstChild;
while (curChild) {
var nextChild = curChild.nextSibling;
toEl.appendChild(curChild);
curChild = nextChild;
}
return toEl;
}
function morphAttrs(fromNode, toNode) {
var attrs = toNode.attributes;
var i;
var attr;
var attrName;
var attrNamespaceURI;
var attrValue;
var fromValue;
for (i = attrs.length - 1; i >= 0; --i) {
attr = attrs[i];
attrName = attr.name;
attrNamespaceURI = attr.namespaceURI;
attrValue = attr.value;
if (attrNamespaceURI) {
attrName = attr.localName || attrName;
fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);
if (fromValue !== attrValue) {
fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);
}
} else {
fromValue = fromNode.getAttribute(attrName);
if (fromValue !== attrValue) {
fromNode.setAttribute(attrName, attrValue);
}
}
}
// Remove any extra attributes found on the original DOM element that
// weren't found on the target element.
attrs = fromNode.attributes;
for (i = attrs.length - 1; i >= 0; --i) {
attr = attrs[i];
if (attr.specified !== false) {
attrName = attr.name;
attrNamespaceURI = attr.namespaceURI;
if (attrNamespaceURI) {
attrName = attr.localName || attrName;
if (!hasAttributeNS(toNode, attrNamespaceURI, attrName)) {
fromNode.removeAttributeNS(attrNamespaceURI, attrName);
}
} else {
if (!hasAttributeNS(toNode, null, attrName)) {
fromNode.removeAttribute(attrName);
}
}
}
}
}
function syncBooleanAttrProp(fromEl, toEl, name) {
if (fromEl[name] !== toEl[name]) {
fromEl[name] = toEl[name];
if (fromEl[name]) {
fromEl.setAttribute(name, '');
} else {
fromEl.removeAttribute(name, '');
}
}
}
var specialElHandlers = {
/**
* Needed for IE. Apparently IE doesn't think that "selected" is an
* attribute when reading over the attributes using selectEl.attributes
*/
OPTION: function(fromEl, toEl) {
syncBooleanAttrProp(fromEl, toEl, 'selected');
},
/**
* The "value" attribute is special for the <input> element since it sets
* the initial value. Changing the "value" attribute without changing the
* "value" property will have no effect since it is only used to the set the
* initial value. Similar for the "checked" attribute, and "disabled".
*/
INPUT: function(fromEl, toEl) {
syncBooleanAttrProp(fromEl, toEl, 'checked');
syncBooleanAttrProp(fromEl, toEl, 'disabled');
if (fromEl.value !== toEl.value) {
fromEl.value = toEl.value;
}
if (!hasAttributeNS(toEl, null, 'value')) {
fromEl.removeAttribute('value');
}
},
TEXTAREA: function(fromEl, toEl) {
var newValue = toEl.value;
if (fromEl.value !== newValue) {
fromEl.value = newValue;
}
var firstChild = fromEl.firstChild;
if (firstChild) {
// Needed for IE. Apparently IE sets the placeholder as the
// node value and vise versa. This ignores an empty update.
var oldValue = firstChild.nodeValue;
if (oldValue == newValue || (!newValue && oldValue == fromEl.placeholder)) {
return;
}
firstChild.nodeValue = newValue;
}
},
SELECT: function(fromEl, toEl) {
if (!hasAttributeNS(toEl, null, 'multiple')) {
var selectedIndex = -1;
var i = 0;
var curChild = toEl.firstChild;
while(curChild) {
var nodeName = curChild.nodeName;
if (nodeName && nodeName.toUpperCase() === 'OPTION') {
if (hasAttributeNS(curChild, null, 'selected')) {
selectedIndex = i;
break;
}
i++;
}
curChild = curChild.nextSibling;
}
fromEl.selectedIndex = i;
}
}
};
var ELEMENT_NODE = 1;
var TEXT_NODE = 3;
var COMMENT_NODE = 8;
function noop() {}
function defaultGetNodeKey(node) {
return node.id;
}
function morphdomFactory(morphAttrs) {
return function morphdom(fromNode, toNode, options) {
if (!options) {
options = {};
}
if (typeof toNode === 'string') {
if (fromNode.nodeName === '#document' || fromNode.nodeName === 'HTML') {
var toNodeHtml = toNode;
toNode = doc.createElement('html');
toNode.innerHTML = toNodeHtml;
} else {
toNode = toElement(toNode);
}
}
var getNodeKey = options.getNodeKey || defaultGetNodeKey;
var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;
var onNodeAdded = options.onNodeAdded || noop;
var onBeforeElUpdated = options.onBeforeElUpdated || noop;
var onElUpdated = options.onElUpdated || noop;
var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;
var onNodeDiscarded = options.onNodeDiscarded || noop;
var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;
var childrenOnly = options.childrenOnly === true;
// This object is used as a lookup to quickly find all keyed elements in the original DOM tree.
var fromNodesLookup = {};
var keyedRemovalList;
function addKeyedRemoval(key) {
if (keyedRemovalList) {
keyedRemovalList.push(key);
} else {
keyedRemovalList = [key];
}
}
function walkDiscardedChildNodes(node, skipKeyedNodes) {
if (node.nodeType === ELEMENT_NODE) {
var curChild = node.firstChild;
while (curChild) {
var key = undefined;
if (skipKeyedNodes && (key = getNodeKey(curChild))) {
// If we are skipping keyed nodes then we add the key
// to a list so that it can be handled at the very end.
addKeyedRemoval(key);
} else {
// Only report the node as discarded if it is not keyed. We do this because
// at the end we loop through all keyed elements that were unmatched
// and then discard them in one final pass.
onNodeDiscarded(curChild);
if (curChild.firstChild) {
walkDiscardedChildNodes(curChild, skipKeyedNodes);
}
}
curChild = curChild.nextSibling;
}
}
}
/**
* Removes a DOM node out of the original DOM
*
* @param {Node} node The node to remove
* @param {Node} parentNode The nodes parent
* @param {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.
* @return {undefined}
*/
function removeNode(node, parentNode, skipKeyedNodes) {
if (onBeforeNodeDiscarded(node) === false) {
return;
}
if (parentNode) {
parentNode.removeChild(node);
}
onNodeDiscarded(node);
walkDiscardedChildNodes(node, skipKeyedNodes);
}
// // TreeWalker implementation is no faster, but keeping this around in case this changes in the future
// function indexTree(root) {
// var treeWalker = document.createTreeWalker(
// root,
// NodeFilter.SHOW_ELEMENT);
//
// var el;
// while((el = treeWalker.nextNode())) {
// var key = getNodeKey(el);
// if (key) {
// fromNodesLookup[key] = el;
// }
// }
// }
// // NodeIterator implementation is no faster, but keeping this around in case this changes in the future
//
// function indexTree(node) {
// var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT);
// var el;
// while((el = nodeIterator.nextNode())) {
// var key = getNodeKey(el);
// if (key) {
// fromNodesLookup[key] = el;
// }
// }
// }
function indexTree(node) {
if (node.nodeType === ELEMENT_NODE) {
var curChild = node.firstChild;
while (curChild) {
var key = getNodeKey(curChild);
if (key) {
fromNodesLookup[key] = curChild;
}
// Walk recursively
indexTree(curChild);
curChild = curChild.nextSibling;
}
}
}
indexTree(fromNode);
function handleNodeAdded(el) {
onNodeAdded(el);
var curChild = el.firstChild;
while (curChild) {
var nextSibling = curChild.nextSibling;
var key = getNodeKey(curChild);
if (key) {
var unmatchedFromEl = fromNodesLookup[key];
if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {
curChild.parentNode.replaceChild(unmatchedFromEl, curChild);
morphEl(unmatchedFromEl, curChild);
}
}
handleNodeAdded(curChild);
curChild = nextSibling;
}
}
function morphEl(fromEl, toEl, childrenOnly) {
var toElKey = getNodeKey(toEl);
var curFromNodeKey;
if (toElKey) {
// If an element with an ID is being morphed then it is will be in the final
// DOM so clear it out of the saved elements collection
delete fromNodesLookup[toElKey];
}
if (toNode.isSameNode && toNode.isSameNode(fromNode)) {
return;
}
if (!childrenOnly) {
if (onBeforeElUpdated(fromEl, toEl) === false) {
return;
}
morphAttrs(fromEl, toEl);
onElUpdated(fromEl);
if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {
return;
}
}
if (fromEl.nodeName !== 'TEXTAREA') {
var curToNodeChild = toEl.firstChild;
var curFromNodeChild = fromEl.firstChild;
var curToNodeKey;
var fromNextSibling;
var toNextSibling;
var matchingFromEl;
outer: while (curToNodeChild) {
toNextSibling = curToNodeChild.nextSibling;
curToNodeKey = getNodeKey(curToNodeChild);
while (curFromNodeChild) {
fromNextSibling = curFromNodeChild.nextSibling;
if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {
curToNodeChild = toNextSibling;
curFromNodeChild = fromNextSibling;
continue outer;
}
curFromNodeKey = getNodeKey(curFromNodeChild);
var curFromNodeType = curFromNodeChild.nodeType;
var isCompatible = undefined;
if (curFromNodeType === curToNodeChild.nodeType) {
if (curFromNodeType === ELEMENT_NODE) {
// Both nodes being compared are Element nodes
if (curToNodeKey) {
// The target node has a key so we want to match it up with the correct element
// in the original DOM tree
if (curToNodeKey !== curFromNodeKey) {
// The current element in the original DOM tree does not have a matching key so
// let's check our lookup to see if there is a matching element in the original
// DOM tree
if ((matchingFromEl = fromNodesLookup[curToNodeKey])) {
if (curFromNodeChild.nextSibling === matchingFromEl) {
// Special case for single element removals. To avoid removing the original
// DOM node out of the tree (since that can break CSS transitions, etc.),
// we will instead discard the current node and wait until the next
// iteration to properly match up the keyed target element with its matching
// element in the original tree
isCompatible = false;
} else {
// We found a matching keyed element somewhere in the original DOM tree.
// Let's moving the original DOM node into the current position and morph
// it.
// NOTE: We use insertBefore instead of replaceChild because we want to go through
// the `removeNode()` function for the node that is being discarded so that
// all lifecycle hooks are correctly invoked
fromEl.insertBefore(matchingFromEl, curFromNodeChild);
fromNextSibling = curFromNodeChild.nextSibling;
if (curFromNodeKey) {
// Since the node is keyed it might be matched up later so we defer
// the actual removal to later
addKeyedRemoval(curFromNodeKey);
} else {
// NOTE: we skip nested keyed nodes from being removed since there is
// still a chance they will be matched up later
removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);
}
curFromNodeChild = matchingFromEl;
}
} else {
// The nodes are not compatible since the "to" node has a key and there
// is no matching keyed node in the source tree
isCompatible = false;
}
}
} else if (curFromNodeKey) {
// The original has a key
isCompatible = false;
}
isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);
if (isCompatible) {
// We found compatible DOM elements so transform
// the current "from" node to match the current
// target DOM node.
morphEl(curFromNodeChild, curToNodeChild);
}
} else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {
// Both nodes being compared are Text or Comment nodes
isCompatible = true;
// Simply update nodeValue on the original node to
// change the text value
if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {
curFromNodeChild.nodeValue = curToNodeChild.nodeValue;
}
}
}
if (isCompatible) {
// Advance both the "to" child and the "from" child since we found a match
curToNodeChild = toNextSibling;
curFromNodeChild = fromNextSibling;
continue outer;
}
// No compatible match so remove the old node from the DOM and continue trying to find a
// match in the original DOM. However, we only do this if the from node is not keyed
// since it is possible that a keyed node might match up with a node somewhere else in the
// target tree and we don't want to discard it just yet since it still might find a
// home in the final DOM tree. After everything is done we will remove any keyed nodes
// that didn't find a home
if (curFromNodeKey) {
// Since the node is keyed it might be matched up later so we defer
// the actual removal to later
addKeyedRemoval(curFromNodeKey);
} else {
// NOTE: we skip nested keyed nodes from being removed since there is
// still a chance they will be matched up later
removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);
}
curFromNodeChild = fromNextSibling;
}
// If we got this far then we did not find a candidate match for
// our "to node" and we exhausted all of the children "from"
// nodes. Therefore, we will just append the current "to" node
// to the end
if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {
fromEl.appendChild(matchingFromEl);
morphEl(matchingFromEl, curToNodeChild);
} else {
var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);
if (onBeforeNodeAddedResult !== false) {
if (onBeforeNodeAddedResult) {
curToNodeChild = onBeforeNodeAddedResult;
}
if (curToNodeChild.actualize) {
curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);
}
fromEl.appendChild(curToNodeChild);
handleNodeAdded(curToNodeChild);
}
}
curToNodeChild = toNextSibling;
curFromNodeChild = fromNextSibling;
}
// We have processed all of the "to nodes". If curFromNodeChild is
// non-null then we still have some from nodes left over that need
// to be removed
while (curFromNodeChild) {
fromNextSibling = curFromNodeChild.nextSibling;
if ((curFromNodeKey = getNodeKey(curFromNodeChild))) {
// Since the node is keyed it might be matched up later so we defer
// the actual removal to later
addKeyedRemoval(curFromNodeKey);
} else {
// NOTE: we skip nested keyed nodes from being removed since there is
// still a chance they will be matched up later
removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);
}
curFromNodeChild = fromNextSibling;
}
}
var specialElHandler = specialElHandlers[fromEl.nodeName];
if (specialElHandler) {
specialElHandler(fromEl, toEl);
}
} // END: morphEl(...)
var morphedNode = fromNode;
var morphedNodeType = morphedNode.nodeType;
var toNodeType = toNode.nodeType;
if (!childrenOnly) {
// Handle the case where we are given two DOM nodes that are not
// compatible (e.g. <div> --> <span> or <div> --> TEXT)
if (morphedNodeType === ELEMENT_NODE) {
if (toNodeType === ELEMENT_NODE) {
if (!compareNodeNames(fromNode, toNode)) {
onNodeDiscarded(fromNode);
morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));
}
} else {
// Going from an element node to a text node
morphedNode = toNode;
}
} else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) { // Text or comment node
if (toNodeType === morphedNodeType) {
if (morphedNode.nodeValue !== toNode.nodeValue) {
morphedNode.nodeValue = toNode.nodeValue;
}
return morphedNode;
} else {
// Text node to something else
morphedNode = toNode;
}
}
}
if (morphedNode === toNode) {
// The "to node" was not compatible with the "from node" so we had to
// toss out the "from node" and use the "to node"
onNodeDiscarded(fromNode);
} else {
morphEl(morphedNode, toNode, childrenOnly);
// We now need to loop over any keyed nodes that might need to be
// removed. We only do the removal if we know that the keyed node
// never found a match. When a keyed node is matched up we remove
// it out of fromNodesLookup and we use fromNodesLookup to determine
// if a keyed node has been matched up or not
if (keyedRemovalList) {
for (var i=0, len=keyedRemovalList.length; i<len; i++) {
var elToRemove = fromNodesLookup[keyedRemovalList[i]];
if (elToRemove) {
removeNode(elToRemove, elToRemove.parentNode, false);
}
}
}
}
if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {
if (morphedNode.actualize) {
morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);
}
// If we had to swap out the from node with a new node because the old
// node was not compatible with the target node then we need to
// replace the old DOM node in the original DOM tree. This is only
// possible if the original DOM node was part of a DOM tree which
// we know is the case if it has a parent node.
fromNode.parentNode.replaceChild(morphedNode, fromNode);
}
return morphedNode;
};
}
var morphdom = morphdomFactory(morphAttrs);
module.exports = morphdom;
},{}],35:[function(require,module,exports){
var trailingNewlineRegex = /\n[\s]+$/
var leadingNewlineRegex = /^\n[\s]+/
var trailingSpaceRegex = /[\s]+$/
var leadingSpaceRegex = /^[\s]+/
var multiSpaceRegex = /[\n\s]+/g
var TEXT_TAGS = [
'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'data', 'dfn', 'em', 'i',
'kbd', 'mark', 'q', 'rp', 'rt', 'rtc', 'ruby', 's', 'amp', 'small', 'span',
'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr'
]
var VERBATIM_TAGS = [
'code', 'pre', 'textarea'
]
module.exports = function appendChild (el, childs) {
if (!Array.isArray(childs)) return
var nodeName = el.nodeName.toLowerCase()
var hadText = false
var value, leader
for (var i = 0, len = childs.length; i < len; i++) {
var node = childs[i]
if (Array.isArray(node)) {
appendChild(el, node)
continue
}
if (typeof node === 'number' ||
typeof node === 'boolean' ||
typeof node === 'function' ||
node instanceof Date ||
node instanceof RegExp) {
node = node.toString()
}
var lastChild = el.childNodes[el.childNodes.length - 1]
// Iterate over text nodes
if (typeof node === 'string') {
hadText = true
// If we already had text, append to the existing text
if (lastChild && lastChild.nodeName === '#text') {
lastChild.nodeValue += node
// We didn't have a text node yet, create one
} else {
node = document.createTextNode(node)
el.appendChild(node)
lastChild = node
}
// If this is the last of the child nodes, make sure we close it out
// right
if (i === len - 1) {
hadText = false
// Trim the child text nodes if the current node isn't a
// node where whitespace matters.
if (TEXT_TAGS.indexOf(nodeName) === -1 &&
VERBATIM_TAGS.indexOf(nodeName) === -1) {
value = lastChild.nodeValue
.replace(leadingNewlineRegex, '')
.replace(trailingSpaceRegex, '')
.replace(trailingNewlineRegex, '')
.replace(multiSpaceRegex, ' ')
if (value === '') {
el.removeChild(lastChild)
} else {
lastChild.nodeValue = value
}
} else if (VERBATIM_TAGS.indexOf(nodeName) === -1) {
// The very first node in the list should not have leading
// whitespace. Sibling text nodes should have whitespace if there
// was any.
leader = i === 0 ? '' : ' '
value = lastChild.nodeValue
.replace(leadingNewlineRegex, leader)
.replace(leadingSpaceRegex, ' ')
.replace(trailingSpaceRegex, '')
.replace(trailingNewlineRegex, '')
.replace(multiSpaceRegex, ' ')
lastChild.nodeValue = value
}
}
// Iterate over DOM nodes
} else if (node && node.nodeType) {
// If the last node was a text node, make sure it is properly closed out
if (hadText) {
hadText = false
// Trim the child text nodes if the current node isn't a
// text node or a code node
if (TEXT_TAGS.indexOf(nodeName) === -1 &&
VERBATIM_TAGS.indexOf(nodeName) === -1) {
value = lastChild.nodeValue
.replace(leadingNewlineRegex, '')
.replace(trailingNewlineRegex, '')
.replace(multiSpaceRegex, ' ')
// Remove empty text nodes, append otherwise
if (value === '') {
el.removeChild(lastChild)
} else {
lastChild.nodeValue = value
}
// Trim the child nodes if the current node is not a node
// where all whitespace must be preserved
} else if (VERBATIM_TAGS.indexOf(nodeName) === -1) {
value = lastChild.nodeValue
.replace(leadingSpaceRegex, ' ')
.replace(leadingNewlineRegex, '')
.replace(trailingNewlineRegex, '')
.replace(multiSpaceRegex, ' ')
lastChild.nodeValue = value
}
}
// Store the last nodename
var _nodeName = node.nodeName
if (_nodeName) nodeName = _nodeName.toLowerCase()
// Append the node to the DOM
el.appendChild(node)
}
}
}
},{}],36:[function(require,module,exports){
module.exports = [
'autofocus', 'checked', 'defaultchecked', 'disabled', 'formnovalidate',
'indeterminate', 'readonly', 'required', 'selected', 'willvalidate'
]
},{}],37:[function(require,module,exports){
var hyperx = require('hyperx')
var appendChild = require('./append-child')
var SVG_TAGS = require('./svg-tags')
var BOOL_PROPS = require('./bool-props')
// Props that need to be set directly rather than with el.setAttribute()
var DIRECT_PROPS = require('./direct-props')
var SVGNS = 'http://www.w3.org/2000/svg'
var XLINKNS = 'http://www.w3.org/1999/xlink'
var COMMENT_TAG = '!--'
function nanoHtmlCreateElement (tag, props, children) {
var el
// If an svg tag, it needs a namespace
if (SVG_TAGS.indexOf(tag) !== -1) {
props.namespace = SVGNS
}
// If we are using a namespace
var ns = false
if (props.namespace) {
ns = props.namespace
delete props.namespace
}
// Create the element
if (ns) {
el = document.createElementNS(ns, tag)
} else if (tag === COMMENT_TAG) {
return document.createComment(props.comment)
} else {
el = document.createElement(tag)
}
// Create the properties
for (var p in props) {
if (props.hasOwnProperty(p)) {
var key = p.toLowerCase()
var val = props[p]
// Normalize className
if (key === 'classname') {
key = 'class'
p = 'class'
}
// The for attribute gets transformed to htmlFor, but we just set as for
if (p === 'htmlFor') {
p = 'for'
}
// If a property is boolean, set itself to the key
if (BOOL_PROPS.indexOf(key) !== -1) {
if (val === 'true') val = key
else if (val === 'false') continue
}
// If a property prefers being set directly vs setAttribute
if (key.slice(0, 2) === 'on' || DIRECT_PROPS.indexOf(key) !== -1) {
el[p] = val
} else {
if (ns) {
if (p === 'xlink:href') {
el.setAttributeNS(XLINKNS, p, val)
} else if (/^xmlns($|:)/i.test(p)) {
// skip xmlns definitions
} else {
el.setAttributeNS(null, p, val)
}
} else {
el.setAttribute(p, val)
}
}
}
}
appendChild(el, children)
return el
}
module.exports = hyperx(nanoHtmlCreateElement, {comments: true})
module.exports.default = module.exports
module.exports.createElement = nanoHtmlCreateElement
},{"./append-child":35,"./bool-props":36,"./direct-props":38,"./svg-tags":39,"hyperx":33}],38:[function(require,module,exports){
module.exports = [
'indeterminate'
]
},{}],39:[function(require,module,exports){
module.exports = [
'svg', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor',
'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile',
'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix',
'feComponentTransfer', 'feComposite', 'feConvolveMatrix',
'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood',
'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage',
'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight',
'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter',
'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src',
'font-face-uri', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image',
'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph',
'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect',
'set', 'stop', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref',
'tspan', 'use', 'view', 'vkern'
]
},{}]},{},[11])(11)
});
visualizer({"merged":{"name":"all stacks","value":2192,"top":0,"children":[{"S":1,"name":"bootstrapNodeJSCore internal/bootstrap/node.js:15:30","value":2191,"top":0,"children":[{"S":1,"name":"startup internal/bootstrap/node.js:29:19","value":2191,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":4,"top":0,"children":[{"S":1,"name":"NativeModule.exists internal/bootstrap/loaders.js:174:33","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"/usr/lib/system/libsystem_pthread.dylib [SHARED_LIB]","value":1,"top":1}]}]},{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) internal/process.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":3,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) assert.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":2,"top":0,"children":[{"S":1,"name":"NativeModule.cache internal/bootstrap/loaders.js:297:42","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_SetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::DependentCode::MarkCodeForDeoptimization(v8::internal::Isolate*, v8::internal::DependentCode::DependencyGroup) [CPP]","value":1,"top":1}]}]},{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) fs.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) internal/url.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"defineIDLClass internal/url.js:911:24","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_ObjectDefineProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Object::AddDataProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::ShouldThrow, v8::internal::Object::StoreFromKeyed) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) internal/worker.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) stream.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) _stream_writable.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_InterpreterDeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T ___guarded_open_dprotected_np [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"setupProcessFatal internal/bootstrap/node.js:424:29","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) internal/async_hooks.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) internal/errors.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"E internal/errors.js:190:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_SetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t int v8::internal::BinarySearch<(v8::internal::SearchMode)1, v8::internal::DescriptorArray>(v8::internal::DescriptorArray*, v8::internal::Name*, int, int*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"setupProcessICUVersions internal/bootstrap/node.js:478:35","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T ___guarded_open_dprotected_np [CPP]","value":1,"top":1}]}]},{"S":1,"name":"setupGlobalVariables internal/bootstrap/node.js:297:32","value":3,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":3,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) util.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":3,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) internal/encoding.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) internal/util.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"Construct [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) buffer.js:1:11","value":2,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T __platform_memcmp [CPP]","value":1,"top":1}]},{"S":1,"name":"createPool buffer.js:124:20","value":1,"top":0,"children":[{"S":1,"name":"createUnsafeArrayBuffer buffer.js:115:33","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_ArrayBufferConstructor(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::JSFunction::EnsureHasInitialMap(v8::internal::Handle<v8::internal::JSFunction>) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]},{"S":0,"name":"T v8::internal::Runtime_LoadGlobalIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Context::global_object() [CPP]","value":1,"top":1}]},{"S":1,"name":"setupGlobalConsole internal/bootstrap/node.js:356:30","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) internal/modules/cjs/loader.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"Module._initPaths internal/modules/cjs/loader.js:749:29","value":1,"top":0,"children":[{"S":1,"name":"resolve path.js:1075:28","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_InterpreterDeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T ___guarded_open_dprotected_np [CPP]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"Module.runMain internal/modules/cjs/loader.js:742:26","value":2180,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2179,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2179,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2179,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2179,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2179,"top":0,"children":[{"S":1,"name":"stripShebang internal/modules/cjs/helpers.js:69:22","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_LoadIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::JavaScriptFrame::function() const [CPP]","value":1,"top":1}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/lib/cli.js:1:11","value":2178,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":259,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":241,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":241,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":241,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":241,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":239,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/chalk/index.js:1:11","value":7,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":6,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":6,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":5,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":5,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":5,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":5,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/ansi-styles/index.js:1:11","value":5,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":5,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":5,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":5,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":5,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":5,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":5,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/color-convert/index.js:1:11","value":5,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DefineDataPropertyInLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::LookupIterator::LookupIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::LookupIterator::Configuration) [CPP]","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/color-convert/conversions.js:1:11","value":2,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_InterpreterDeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T _mach_vm_protect [CPP]","value":1,"top":1}]},{"S":0,"name":"CallProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]},{"S":0,"name":"ArrayForEach [CODE:Builtin]","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/color-convert/index.js:61:25","value":2,"top":0,"children":[{"S":1,"name":"module.exports /usr/local/lib/node_modules/yo/node_modules/color-convert/route.js:78:27","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_KeyedStoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::FeedbackNexus::StateFromFeedback() const [CPP]","value":1,"top":1}]}]},{"S":0,"name":"ObjectKeys [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_ObjectKeys(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Factory::NewFixedArrayWithFiller(v8::internal::Heap::RootListIndex, int, v8::internal::Object*, v8::internal::PretenureFlag) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":0,"name":"CEntryStub [CODE:Stub]","value":1,"top":0,"children":[{"S":1,"name":"assembleStyles /usr/local/lib/node_modules/yo/node_modules/ansi-styles/index.js:19:24","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_SetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::Map::UpdateDescriptors(v8::internal::DescriptorArray*, v8::internal::LayoutDescriptor*) [CPP]","value":1,"top":1}]}]}]}]}]},{"S":0,"name":"T v8::internal::Runtime_AddDictionaryProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::(anonymous namespace)::GetIdentityHashHelper(v8::internal::Isolate*, v8::internal::JSReceiver*) [CPP]","value":1,"top":1}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/lib/index.js:1:11","value":81,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":81,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":81,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":80,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":80,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":80,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":80,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/os-name/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/win-release/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"Add.Wide [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/conf/index.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/make-dir/index.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_InterpreterDeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T _mach_vm_protect [CPP]","value":1,"top":1}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/write-file-atomic/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"StringPrototypeCharCodeAt [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/inquirer.js:1:11","value":77,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":71,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":71,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"stat internal/modules/cjs/loader.js:83:14","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"CEntryStub [CODE:Stub]","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":70,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":70,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":70,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":70,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/ui/bottom-bar.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":4,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":4,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":4,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/ui/baseUI.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/lodash/lodash.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/lodash/lodash.js:9:11","value":3,"top":0,"children":[{"S":1,"name":"runInContext /usr/local/lib/node_modules/yo/node_modules/lodash/lodash.js:1420:44","value":3,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_InterpreterDeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T ___guarded_open_dprotected_np [CPP]","value":1,"top":1}]},{"S":0,"name":"CallUndefinedReceiver2.Wide [CODE:BytecodeHandler]","value":1,"top":1},{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Map::RawCopy(v8::internal::Handle<v8::internal::Map>, int, int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]},{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) readline.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.wrap internal/bootstrap/loaders.js:207:31","value":1,"top":0,"children":[{"S":0,"name":"Add [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/ui/prompt.js:1:11","value":66,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":66,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":66,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":66,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":66,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":66,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":66,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/Rx.js:1:11","value":65,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":65,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":65,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":58,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":58,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":58,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":54,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/Subject.js:1:11","value":5,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":5,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":5,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":5,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":5,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":5,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":5,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/Observable.js:1:11","value":5,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":5,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":5,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":5,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":5,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":4,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/util/toSubscriber.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/Subscriber.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/Subscription.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"createScript vm.js:245:22","value":1,"top":0,"children":[{"S":1,"name":"Script vm.js:38:14","value":1,"top":0,"children":[{"S":0,"name":"JumpIfUndefined [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":1,"top":0,"children":[{"S":0,"name":"Dec [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":0,"name":"InterpreterEntryTrampoline [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":1,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":1,"name":"nullCheck internal/fs/utils.js:73:19","value":1,"top":0,"children":[{"S":0,"name":"CallFunction_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"dirname path.js:1269:28","value":1,"top":0,"children":[{"S":0,"name":"StringPrototypeCharCodeAt [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/combineLatest.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/combineLatest.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"ObjectKeys [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_ObjectKeys(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::KeyAccumulator::GetKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::KeyCollectionMode, v8::internal::PropertyFilter, v8::internal::GetKeysConversion, bool) [CPP]","value":1,"top":1}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/combineLatest.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/OuterSubscriber.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::LookupIterator::LookupIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::LookupIterator::Configuration) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/concat.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/concat.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/from.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/FromObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/observeOn.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"stripBOM internal/modules/cjs/helpers.js:59:18","value":1,"top":0,"children":[{"S":0,"name":"CallFunction_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/concatAll.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/mergeAll.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":1,"top":0,"children":[{"S":0,"name":"TestTypeOf [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/defer.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/defer.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/DeferObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"stat internal/modules/cjs/loader.js:83:14","value":1,"top":0,"children":[{"S":0,"name":"MapPrototypeGet [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"/usr/lib/libc++abi.dylib [SHARED_LIB]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/fromEvent.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/fromEvent.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/FromEventObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":0,"name":"LdaImmutableCurrentContextSlot [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/generate.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/generate.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/GenerateObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":1,"top":0,"children":[{"S":0,"name":"StringSubstring [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/range.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/range.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"ObjectKeys [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_ObjectKeys(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::FastKeyAccumulator::GetKeysFast(v8::internal::GetKeysConversion) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/throw.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"createScript vm.js:245:22","value":1,"top":0,"children":[{"S":1,"name":"Script vm.js:38:14","value":1,"top":0,"children":[{"S":0,"name":"LdaImmutableCurrentContextSlot [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/timer.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"tryCreateBuffer fs.js:318:25","value":1,"top":0,"children":[{"S":1,"name":"allocUnsafe buffer.js:289:42","value":1,"top":0,"children":[{"S":0,"name":"InterpreterEntryTrampoline [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/observable/dom/ajax.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/dom/ajax.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/dom/AjaxObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":0,"name":"LdaNamedProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/bufferToggle.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::StackFrame::ComputeType(v8::internal::StackFrameIteratorBase const*, v8::internal::StackFrame::State*) [CPP]","value":1,"top":1}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/combineAll.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":0,"name":"Call_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/concatMap.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/concatMap.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":0,"name":"CallVarargs [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/concatMapTo.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/concatMapTo.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/concatMapTo.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"stat internal/modules/cjs/loader.js:83:14","value":1,"top":0,"children":[{"S":0,"name":"LdaNamedProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/delay.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/delay.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/delayWhen.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"CallFunction_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/delayWhen.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/delayWhen.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_StringPrototypeLastIndexOf(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t void v8::internal::String::WriteToFlat<unsigned char>(v8::internal::String*, unsigned char*, int, int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/expand.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/expand.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/expand.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::StringTable::LookupStringIfExists_NoAllocate(v8::internal::String*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/filter.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/filter.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/filter.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Map::SetPrototype(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, bool) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/finally.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/finally.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/finalize.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"t void v8::internal::String::WriteToFlat<unsigned char>(v8::internal::String*, unsigned char*, int, int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/first.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/first.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/first.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"extname path.js:1374:28","value":1,"top":0,"children":[{"S":0,"name":"LdaSmi [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/groupBy.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/groupBy.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module internal/modules/cjs/loader.js:102:16","value":1,"top":0,"children":[{"S":0,"name":"CallUndefinedReceiver [CODE:BytecodeHandler]","value":1,"top":1}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/groupBy.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/util/Map.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"getOptions internal/fs/utils.js:52:20","value":1,"top":0,"children":[{"S":0,"name":"CallFunction_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/every.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"getOptions internal/fs/utils.js:52:20","value":1,"top":0,"children":[{"S":1,"name":"assertEncoding internal/fs/utils.js:39:24","value":1,"top":0,"children":[{"S":1,"name":"isEncoding buffer.js:448:40","value":1,"top":0,"children":[{"S":0,"name":"Star [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/max.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/max.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/max.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/reduce.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/takeLast.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/takeLast.js:74:36","value":1,"top":0,"children":[{"S":1,"name":"__extends /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/takeLast.js:2:54","value":1,"top":0,"children":[{"S":0,"name":"ObjectPrototypeHasOwnProperty [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/multicast.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/multicast.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/multicast.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"/usr/lib/system/libsystem_platform.dylib [SHARED_LIB]","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/observable/ConnectableObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DefineDataPropertyInLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t _update_cache_for_file_streams [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/publishReplay.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/publishReplay.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":0,"children":[{"S":0,"name":"StringSubstring [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/publishLast.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/publishLast.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/publishLast.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::Map::SetBackPointer(v8::internal::Object*, v8::internal::WriteBarrierMode) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/repeat.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/repeat.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"getOptions internal/fs/utils.js:52:20","value":1,"top":0,"children":[{"S":0,"name":"LdaImmutableCurrentContextSlot [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:86:19","value":1,"top":0,"children":[{"S":0,"name":"StaNamedOwnProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/retry.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/retry.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":1,"top":0}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/retryWhen.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/retryWhen.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"isUint32 internal/validators.js:13:18","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringToNumber(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringToNumber(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/sampleTime.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/sampleTime.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":0,"name":"CallFunction_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/switch.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/switch.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/switchAll.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":0,"name":"LdaNamedProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/take.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/take.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators/take.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"/usr/lib/system/libsystem_platform.dylib [SHARED_LIB]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/takeUntil.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":0,"name":"CallProperty1 [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/timeoutWith.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:86:19","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_LoadFromSuper(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_LoadFromSuper(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]},{"S":0,"name":"TestEqualStrict [CODE:BytecodeHandler]","value":1,"top":1},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/window.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/window.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/graceful-fs/graceful-fs.js:48:59","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_CreateListFromArrayLike(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Object::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::ElementTypes) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/windowTime.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operator/windowTime.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"t unsigned int v8::internal::StringHasher::HashSequentialString<unsigned char>(unsigned char const*, int, unsigned int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/withLatestFrom.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"createScript vm.js:245:22","value":1,"top":0,"children":[{"S":1,"name":"Script vm.js:38:14","value":1,"top":0,"children":[{"S":0,"name":"Construct [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/add/operator/zip.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/testing/TestScheduler.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/testing/ColdObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/testing/SubscriptionLoggable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":0,"name":"LdaNamedProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/scheduler/animationFrame.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/scheduler/AnimationFrameAction.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"openSync fs.js:433:18","value":1,"top":0,"children":[{"S":1,"name":"validatePath internal/fs/utils.js:326:22","value":1,"top":0,"children":[{"S":1,"name":"nullCheck internal/fs/utils.js:73:19","value":1,"top":0,"children":[{"S":0,"name":"StringPrototypeIndexOf [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/rxjs/operators.js:1:11","value":3,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Map::CopyDropDescriptors(v8::internal::Handle<v8::internal::Map>) [CPP]","value":1,"top":1}]},{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":2,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":2,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":2,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":2,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DefineDataPropertyInLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t _szone_malloc_should_clear [CPP]","value":1,"top":1}]},{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"FindOrderedHashMapEntry [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"readFileSync fs.js:345:22","value":4,"top":0,"children":[{"S":1,"name":"tryCreateBuffer fs.js:318:25","value":2,"top":0,"children":[{"S":1,"name":"allocUnsafe buffer.js:289:42","value":2,"top":0,"children":[{"S":1,"name":"allocate buffer.js:317:18","value":2,"top":0,"children":[{"S":0,"name":"Sub [CODE:BytecodeHandler]","value":1,"top":1},{"S":0,"name":"LdaNamedProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/graceful-fs/graceful-fs.js:48:59","value":1,"top":0,"children":[{"S":1,"name":"closeSync fs.js:403:19","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) [CPP]","value":1,"top":1}]}]}]},{"S":1,"name":"tryReadSync fs.js:333:21","value":1,"top":0,"children":[{"S":1,"name":"readSync fs.js:479:18","value":1,"top":0,"children":[{"S":0,"name":"CallUndefinedReceiver2 [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":7,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":5,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":4,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":4,"top":0,"children":[{"S":1,"name":"realpathSync fs.js:1356:22","value":2,"top":0,"children":[{"S":0,"name":"T v8::internal::Heap::CreateFillerObjectAt(unsigned char*, int, v8::internal::ClearRecordedSlots, v8::internal::ClearFreedMemoryMode) [CPP]","value":1,"top":1},{"S":0,"name":"t unsigned int v8::internal::StringHasher::HashSequentialString<unsigned char>(unsigned char const*, int, unsigned int) [CPP]","value":1,"top":1}]},{"S":0,"name":"T v8::internal::Runtime_DefineDataPropertyInLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::JSObject::NotifyMapChange(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>, v8::internal::Isolate*) [CPP]","value":1,"top":1}]},{"S":0,"name":"CreateObjectLiteral [CODE:BytecodeHandler]","value":1,"top":1}]}]},{"S":0,"name":"T v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) [CPP]","value":1,"top":1}]}]},{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":2,"top":0,"children":[{"S":0,"name":"ArgumentsAdaptorTrampoline [CODE:Builtin]","value":1,"top":1},{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringCharCodeAt(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringCharCodeAt(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/utils/utils.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"t unsigned int v8::internal::StringHasher::HashSequentialString<unsigned short>(unsigned short const*, int, unsigned int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"inquirer.createPromptModule /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/inquirer.js:25:39","value":6,"top":0,"children":[{"S":1,"name":"promptModule.restoreDefaultPrompts /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/inquirer.js:54:48","value":6,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":6,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":6,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":5,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":5,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":5,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":5,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/prompts/list.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/prompts/base.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":0,"name":"CallUndefinedReceiver2 [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/inquirer/lib/prompts/editor.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":4,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":4,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":4,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/external-editor/main/index.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/external-editor/main/index.js:9:10","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":4,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":4,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":4,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tmp/lib/tmp.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"ArrayMap [CODE:Builtin]","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tmp/lib/tmp.js:521:63","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T _mach_vm_protect [CPP]","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/iconv-lite/lib/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":0,"name":"CallFunction_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/chardet/index.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"t void v8::internal::String::WriteToFlat<unsigned char>(v8::internal::String*, unsigned char*, int, int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"module.exports.gb_18030 /usr/local/lib/node_modules/yo/node_modules/insight/node_modules/chardet/encoding/mbcs.js:430:35","value":1,"top":0,"children":[{"S":0,"name":"StoreIC [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":1,"top":0,"children":[{"S":0,"name":"StoreFastElementStub [CODE:Stub]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"RegExpPrototypeTest [CODE:Builtin]","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yosay/index.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yosay/node_modules/chalk/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"Mov [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/wrap-ansi/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:86:19","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_NewClosure(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"CEntryStub [CODE:Stub]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":0,"name":"CEntryStub [CODE:Stub]","value":1,"top":0,"children":[{"S":1,"name":"assembleStyles /usr/local/lib/node_modules/yo/node_modules/ansi-styles/index.js:19:24","value":1,"top":0,"children":[{"S":0,"name":"ObjectKeys [CODE:Builtin]","value":1,"top":1}]}]}]}]},{"S":1,"name":"get /usr/local/lib/node_modules/yo/node_modules/yosay/node_modules/chalk/index.js:101:18","value":1,"top":0,"children":[{"S":1,"name":"build /usr/local/lib/node_modules/yo/node_modules/yosay/node_modules/chalk/index.js:38:15","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, bool, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Handle<v8::internal::Object>, v8::internal::Execution::MessageHandling, v8::internal::Execution::Target) [CPP]","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/root-check/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/sudo-block/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/sudo-block/node_modules/chalk/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":1,"top":0,"children":[{"S":0,"name":"LdaNamedProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/meow/index.js:1:11","value":9,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":9,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":9,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":9,"top":0,"children":[{"S":0,"name":"TestEqualStrictNoFeedback [CODE:BytecodeHandler]","value":1,"top":1},{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":8,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":8,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":8,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/redent/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/redent/node_modules/indent-string/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/repeating/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"openSync fs.js:433:18","value":1,"top":0,"children":[{"S":0,"name":"CallFunction_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/meow/node_modules/read-pkg-up/index.js:1:11","value":7,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":7,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":7,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":7,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":7,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":7,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":7,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/meow/node_modules/find-up/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringCharCodeAt(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t void v8::internal::String::WriteToFlat<unsigned char>(v8::internal::String*, unsigned char*, int, int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/read-pkg/index.js:1:11","value":6,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":6,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":6,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"LdaNamedProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":5,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":5,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":5,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":5,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/normalize-package-data/lib/normalize.js:1:11","value":5,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":5,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":5,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":5,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":5,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":5,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":5,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/normalize-package-data/lib/fixer.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":4,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":4,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":4,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/validate-npm-package-license/index.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/spdx-expression-parse/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:86:19","value":1,"top":0,"children":[{"S":0,"name":"T node::contextify::ContextifyScript::RunInThisContext(v8::FunctionCallbackInfo<v8::Value> const&) [CPP]","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/spdx-expression-parse/scan.js:1:1","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_NewClosure(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::PagedSpace::AllocateRaw(int, v8::internal::AllocationAlignment) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/spdx-correct/index.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t ___inaddr_to_index [CPP]","value":1,"top":1}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DefineDataPropertyInLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t int v8::internal::BinarySearch<(v8::internal::SearchMode)0, v8::internal::TransitionArray>(v8::internal::TransitionArray*, v8::internal::Name*, int, int*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/hosted-git-info/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.require internal/bootstrap/loaders.js:129:34","value":1,"top":0,"children":[{"S":1,"name":"NativeModule.compile internal/bootstrap/loaders.js:222:44","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) url.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_CreateObjectLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t int v8::internal::Search<(v8::internal::SearchMode)1, v8::internal::DescriptorArray>(v8::internal::DescriptorArray*, v8::internal::Name*, int, int*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/normalize-package-data/lib/make_warning.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..json internal/modules/cjs/loader.js:718:39","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::Map::UpdateDescriptors(v8::internal::DescriptorArray*, v8::internal::LayoutDescriptor*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/index.js:1:11","value":9,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":9,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":9,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":9,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":9,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":9,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":9,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/src/index.js:1:11","value":9,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":9,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":9,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":9,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":9,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":9,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":9,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/src/complete.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/src/debug.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/debug/src/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/debug/src/node.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/debug/src/debug.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/ms/index.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_InterpreterDeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T ___guarded_open_dprotected_np [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/src/commands/index.js:1:11","value":8,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":8,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":8,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":8,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":8,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":8,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":8,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/src/installer.js:1:11","value":8,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":8,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":8,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":2,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":2,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":2,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":2,"top":0,"children":[{"S":0,"name":"T v8::internal::JSObject::AllocateStorageForMap(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>) [CPP]","value":1,"top":1},{"S":0,"name":"T v8::internal::Factory::NewJSArrayWithElements(v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, int, v8::internal::PretenureFlag) [CPP]","value":1,"top":1}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":6,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":6,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":6,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":6,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/inquirer.js:1:11","value":6,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"toString buffer.js:642:46","value":1,"top":0,"children":[{"S":0,"name":"TestEqualStrict [CODE:BytecodeHandler]","value":1,"top":1}]}]},{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/ui/bottom-bar.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/ui/baseUI.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":2,"name":"Module._nodeModulePaths internal/modules/cjs/loader.js:359:37","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/ui/prompt.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":2,"name":"Module._nodeModulePaths internal/modules/cjs/loader.js:359:37","value":1,"top":0,"children":[{"S":0,"name":"StringAddStub [CODE:Stub]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"inquirer.createPromptModule /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/inquirer.js:24:40","value":3,"top":0,"children":[{"S":1,"name":"promptModule.restoreDefaultPrompts /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/inquirer.js:53:49","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/prompts/list.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/cli-cursor/index.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::StackFrame::ComputeType(v8::internal::StackFrameIteratorBase const*, v8::internal::StackFrame::State*) [CPP]","value":1,"top":1}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/prompts/base.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":0,"name":"CallFunction_ReceiverIsAny [CODE:Builtin]","value":1,"top":1},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/inquirer/lib/utils/screen-manager.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/string-width/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/tabtab/node_modules/is-fullwidth-code-point/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"LoadIC [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/lib/router.js:1:11","value":128,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":128,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":128,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":128,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":128,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":128,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":128,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/lib/environment.js:1:11","value":128,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":128,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":127,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":126,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":126,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":126,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":126,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/mem-fs/index.js:1:11","value":7,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":7,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":7,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":7,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":7,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":7,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":7,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/vinyl-file/index.js:1:11","value":6,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/strip-bom-stream/index.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/first-chunk-stream/index.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/readable-stream/readable.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/readable-stream/lib/_stream_readable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::JsonParser<true>::ParseJsonString(v8::internal::Handle<v8::internal::String>) [CPP]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"createScript vm.js:245:22","value":1,"top":0,"children":[{"S":1,"name":"Script vm.js:38:14","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::MaybeHandle<v8::internal::JSObject> v8::internal::FixedArray::GetValue<v8::internal::JSObject>(v8::internal::Isolate*, int) const [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::LookupIterator::PropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::LookupIterator::Configuration) [CPP]","value":1,"top":1}]}]}]}]}]}]},{"S":1,"name":"module.exports /usr/local/lib/node_modules/yo/node_modules/vinyl-file/node_modules/pify/index.js:34:38","value":2,"top":0,"children":[{"S":0,"name":"ArrayReduce [CODE:Builtin]","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/vinyl-file/node_modules/pify/index.js:59:42","value":2,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_SetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::JSObject::MigrateToMap(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>, int) [CPP]","value":1,"top":1}]},{"S":0,"name":"T v8::internal::Runtime_KeyedLoadIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t int v8::internal::BinarySearch<(v8::internal::SearchMode)0, v8::internal::TransitionArray>(v8::internal::TransitionArray*, v8::internal::Name*, int, int*) [CPP]","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/through2/through2.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Map::GeneralizeField(v8::internal::Handle<v8::internal::Map>, int, v8::internal::PropertyConstness, v8::internal::Representation, v8::internal::Handle<v8::internal::FieldType>) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/debug/src/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/debug/src/node.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/debug/src/debug.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":0,"name":"LdaImmutableCurrentContextSlot [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/lib/resolver.js:1:11","value":54,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":54,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":54,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":54,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":54,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":54,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":54,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/globby/index.js:1:11","value":48,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":48,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":48,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":47,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":47,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":47,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":47,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/glob/glob.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fs.realpath/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::(anonymous namespace)::StringTableNoAllocateKey::IsMatch(v8::internal::Object*) [CPP]","value":1,"top":1}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/glob/sync.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/inflight/inflight.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"LdaConstant [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fast-glob/index.js:1:11","value":41,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":41,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":41,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":41,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":41,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":41,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":41,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fast-glob/out/index.js:1:11","value":41,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":41,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":41,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":41,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":41,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":41,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":41,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fast-glob/out/managers/tasks.js:1:11","value":35,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":35,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":35,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":35,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":35,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":35,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":35,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fast-glob/out/utils/pattern.js:1:11","value":35,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":35,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":35,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":35,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":35,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":35,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":35,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/glob-parent/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/glob-parent/node_modules/is-glob/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"ObjectKeys [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_ObjectKeys(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Factory::AllocateRawFixedArray(int, v8::internal::PretenureFlag) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/micromatch/index.js:1:11","value":34,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":34,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":34,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":34,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":34,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":34,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":34,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/braces/index.js:1:11","value":26,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":26,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":26,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::LookupIterator::PrepareTransitionToDataProperty(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::Object::StoreFromKeyed) [CPP]","value":1,"top":1}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":25,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":25,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":25,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":25,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/to-regex/index.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/define-property/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Factory::AllocateRawOneByteInternalizedString(int, unsigned int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/extend-shallow/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/extend-shallow/node_modules/is-extendable/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t void v8::internal::String::WriteToFlat<unsigned char>(v8::internal::String*, unsigned char*, int, int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/regex-not/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/braces/node_modules/extend-shallow/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"getOptions internal/fs/utils.js:52:20","value":1,"top":0,"children":[{"S":0,"name":"InterpreterEntryTrampoline [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/braces/lib/compilers.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/braces/lib/utils.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"t unsigned int v8::internal::StringHasher::HashSequentialString<unsigned short>(unsigned short const*, int, unsigned int) [CPP]","value":1,"top":1}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fill-range/index.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/is-number/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"LoadIC_Noninlined [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/braces/lib/parsers.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/snapdragon-node/index.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/snapdragon-node/node_modules/define-property/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::IteratingStringHasher::VisitConsString(v8::internal::ConsString*) [CPP]","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/snapdragon-util/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":0,"name":"ArgumentsAdaptorTrampoline [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/braces/lib/braces.js:1:11","value":15,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":15,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":15,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":14,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":14,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":14,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":14,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/snapdragon/index.js:1:11","value":14,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":14,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":14,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":14,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":14,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":14,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":14,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/base/index.js:1:11","value":10,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":10,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":10,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":2,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":2,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"KeyedStoreIC_Megamorphic [CODE:Builtin]","value":1,"top":1}]}]},{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":1}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":8,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":8,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":8,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":8,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/base/node_modules/define-property/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/base/node_modules/is-descriptor/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/base/node_modules/is-accessor-descriptor/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/cache-base/index.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/collection-visit/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/object-visit/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"T v8::Locker::IsActive() [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/union-value/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"makeRequireFunction internal/modules/cjs/helpers.js:14:29","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::IncrementalMarking::RecordWriteSlow(v8::internal::HeapObject*, v8::internal::HeapObjectReference**, v8::internal::Object*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::Worklist<v8::internal::HeapObject*, 64>::Push(int, v8::internal::HeapObject*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/unset-value/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/unset-value/node_modules/has-value/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/class-utils/index.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/class-utils/node_modules/define-property/index.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/is-descriptor/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/static-extend/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/object-copy/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/object-copy/node_modules/define-property/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"join native array.js:280:46","value":1,"top":0,"children":[{"S":1,"name":"InnerArrayJoin native array.js:267:24","value":1,"top":0,"children":[{"S":1,"name":"Join native array.js:112:14","value":1,"top":0,"children":[{"S":1,"name":"DoJoin native array.js:87:16","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringBuilderJoin(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringBuilderJoin(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/snapdragon/lib/compiler.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":4,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":4,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":4,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/snapdragon/lib/utils.js:1:11","value":4,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":4,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":4,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":2,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":2,"top":0,"children":[{"S":0,"name":"T v8::Isolate::GetCurrentContext() [CPP]","value":1,"top":1},{"S":1,"name":"readPackage internal/modules/cjs/loader.js:152:21","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::TransitionsAccessor::Insert(v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Map>, v8::internal::SimpleTransitionFlag) [CPP]","value":1,"top":1}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/source-map/source-map.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/source-map/lib/source-map-generator.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":1}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/source-map/lib/array-set.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_NewClosure_Tenured(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Factory::NewFunction(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::PretenureFlag) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"ObjectKeys [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_ObjectKeys(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::(anonymous namespace)::CopyObjectToObjectElements(v8::internal::FixedArrayBase*, v8::internal::ElementsKind, unsigned int, v8::internal::FixedArrayBase*, v8::internal::ElementsKind, unsigned int, int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/micromatch/lib/compilers.js:1:11","value":8,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":8,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":8,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":8,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":8,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":8,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":8,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/nanomatch/index.js:1:11","value":3,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":3,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":3,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":3,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":3,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":3,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/nanomatch/lib/cache.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fragment-cache/index.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_CreateObjectLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::Map::UpdateDescriptors(v8::internal::DescriptorArray*, v8::internal::LayoutDescriptor*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/nanomatch/lib/utils.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"join native array.js:280:46","value":1,"top":0,"children":[{"S":1,"name":"InnerArrayJoin native array.js:267:24","value":1,"top":0,"children":[{"S":1,"name":"Join native array.js:112:14","value":1,"top":0,"children":[{"S":1,"name":"StackHas native array.js:78:18","value":1,"top":0,"children":[{"S":0,"name":"Ldar [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"runInThisContext vm.js:294:26","value":1,"top":0,"children":[{"S":1,"name":"createScript vm.js:245:22","value":1,"top":0,"children":[{"S":1,"name":"Script vm.js:38:14","value":1,"top":0,"children":[{"S":0,"name":"JumpIfNotUndefined [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/extglob/index.js:1:11","value":5,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":5,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":5,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":4,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":4,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":4,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/extglob/lib/compilers.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/expand-brackets/index.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/expand-brackets/lib/parsers.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/expand-brackets/lib/utils.js:1:11","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::IncrementalMarking::RevisitObject(v8::internal::HeapObject*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/extglob/lib/parsers.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DefineDataPropertyInLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"/usr/lib/system/libsystem_malloc.dylib [SHARED_LIB]","value":1,"top":1}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/extglob/lib/utils.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DefineDataPropertyInLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::JSObject::DefineOwnPropertyIgnoreAttributes(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::ShouldThrow, v8::internal::JSObject::AccessorInfoHandling) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fast-glob/out/providers/reader-async.js:1:11","value":5,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":5,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":5,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_KeyedGetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T __platform_memcmp [CPP]","value":1,"top":1}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":4,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":4,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":4,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/@mrmlnc/readdir-enhanced/lib/index.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/@mrmlnc/readdir-enhanced/lib/sync/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":0,"name":"LdaNamedProperty [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fast-glob/out/providers/reader.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_KeyedGetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::Heap::AllocateRaw(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [CPP]","value":1,"top":1}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/graceful-fs/graceful-fs.js:48:59","value":1,"top":0,"children":[{"S":0,"name":"InterpreterEntryTrampoline [CODE:Builtin]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fast-glob/out/providers/reader-stream.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/fast-glob/out/providers/reader-stream.js:17:47","value":1,"top":0,"children":[{"S":1,"name":"__extends /usr/local/lib/node_modules/yo/node_modules/fast-glob/out/providers/reader-stream.js:6:21","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_NewObject(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Heap::AllocateRawWithRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/dir-glob/index.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_KeyedGetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::Handle<v8::internal::String> v8::internal::Factory::AllocateInternalizedStringImpl<true, v8::internal::Handle<v8::internal::String> >(v8::internal::Handle<v8::internal::String>, int, unsigned int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/globby/gitignore.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":1,"name":"tryFile internal/modules/cjs/loader.js:193:17","value":1,"top":0,"children":[{"S":1,"name":"toRealPath internal/modules/cjs/loader.js:201:20","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringCharCodeAt(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Factory::NewRawOneByteString(int, v8::internal::PretenureFlag) [CPP]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/cross-spawn/index.js:1:11","value":6,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":6,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":6,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T _sendto [CPP]","value":1,"top":1}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":5,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":5,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":5,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":5,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/cross-spawn/lib/parse.js:1:11","value":5,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_CreateRegExpLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::RegExpKey::IsMatch(v8::internal::Object*) [CPP]","value":1,"top":1}]},{"S":1,"name":"module.exports /usr/local/lib/node_modules/yo/node_modules/nice-try/src/index.js:8:26","value":4,"top":0,"children":[{"S":1,"name":"niceTry /usr/local/lib/node_modules/yo/node_modules/cross-spawn/lib/parse.js:15:37","value":4,"top":0,"children":[{"S":1,"name":"satisfies /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:1155:19","value":4,"top":0,"children":[{"S":1,"name":"Range /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:760:15","value":4,"top":0,"children":[{"S":0,"name":"ArrayMap [CODE:Builtin]","value":4,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:780:52","value":4,"top":0,"children":[{"S":1,"name":"Range.parseRange /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:805:38","value":4,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_CreateRegExpLiteral(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t v8::internal::AddClass(int const*, int, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::Zone*) [CPP]","value":1,"top":1}]},{"S":0,"name":"ArrayMap [CODE:Builtin]","value":3,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:830:42","value":2,"top":0,"children":[{"S":1,"name":"parseComparator /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:875:25","value":2,"top":0,"children":[{"S":1,"name":"replaceCarets /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:939:23","value":1,"top":0,"children":[{"S":0,"name":"ArrayMap [CODE:Builtin]","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:940:47","value":1,"top":0,"children":[{"S":1,"name":"replaceCaret /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:945:22","value":1,"top":0,"children":[{"S":0,"name":"StringPrototypeReplace [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"CEntryStub [CODE:Stub]","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:948:34","value":1,"top":0,"children":[{"S":1,"name":"isX /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:888:13","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_DeserializeLazy(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T ___guarded_open_dprotected_np [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]},{"S":1,"name":"replaceXRanges /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:994:24","value":1,"top":0,"children":[{"S":0,"name":"ArrayMap [CODE:Builtin]","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:996:40","value":1,"top":0,"children":[{"S":1,"name":"replaceXRange /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:1001:23","value":1,"top":0,"children":[{"S":0,"name":"StringPrototypeReplace [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringReplaceNonGlobalRegExpWithFunction(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::ActionNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:839:25","value":1,"top":0,"children":[{"S":1,"name":"Comparator /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:661:20","value":1,"top":0,"children":[{"S":1,"name":"Comparator.parse /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:685:38","value":1,"top":0,"children":[{"S":1,"name":"SemVer /usr/local/lib/node_modules/yo/node_modules/semver/semver.js:284:16","value":1,"top":0,"children":[{"S":0,"name":"StringPrototypeMatch [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_RegExpExec(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T _mach_vm_protect [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/lib/adapter.js:1:11","value":64,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":64,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":59,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":59,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":59,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":59,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":59,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/inquirer/lib/inquirer.js:1:11","value":59,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":56,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":56,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":55,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":55,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":55,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":55,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/inquirer/lib/ui/prompt.js:1:11","value":55,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":55,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":55,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":55,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":55,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":55,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":55,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/Rx.js:1:11","value":55,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":55,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":23,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":20,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":20,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":19,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":19,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/Subject.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/Observable.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/util/toSubscriber.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"openSync fs.js:433:18","value":1,"top":0,"children":[{"S":1,"name":"validatePath internal/fs/utils.js:326:22","value":1,"top":0,"children":[{"S":1,"name":"nullCheck internal/fs/utils.js:73:19","value":1,"top":0,"children":[{"S":0,"name":"LdaSmi [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]},{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/Subscriber.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":0,"name":"CallUndefinedReceiver1 [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/bindNodeCallback.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/combineLatest.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/combineLatest.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/ArrayObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/EmptyObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_StringCharCodeAt(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"t void v8::internal::String::WriteToFlat<unsigned char>(v8::internal::String*, unsigned char*, int, int) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/concat.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":2,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":2,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":2,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":2,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/concat.js:1:11","value":2,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":2,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":2,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::String::GetFlatContent() [CPP]","value":1,"top":1}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/from.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/FromObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"tryReadSync fs.js:333:21","value":1,"top":0,"children":[{"S":1,"name":"readSync fs.js:479:18","value":1,"top":0,"children":[{"S":1,"name":"validateOffsetLengthRead internal/fs/utils.js:292:34","value":1,"top":0,"children":[{"S":0,"name":"TestGreaterThan [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/defer.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/defer.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"t node::fs::InternalModuleStat(v8::FunctionCallbackInfo<v8::Value> const&) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/empty.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/if.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/interval.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/interval.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/IntervalObservable.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/scheduler/async.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"ObjectKeys [CODE:Builtin]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::Runtime_ObjectKeys(int, v8::internal::Object**, v8::internal::Isolate*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::KeyAccumulator::GetOwnEnumPropertyKeys(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/onErrorResumeNext.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":1,"name":"tryCreateBuffer fs.js:318:25","value":1,"top":0,"children":[{"S":1,"name":"allocUnsafe buffer.js:289:42","value":1,"top":0,"children":[{"S":1,"name":"allocate buffer.js:317:18","value":1,"top":0,"children":[{"S":1,"name":"FastBuffer buffer.js:79:1","value":1,"top":0,"children":[{"S":0,"name":"GetSuperConstructor [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/pairs.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/range.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/throw.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"readFileSync fs.js:345:22","value":1,"top":0,"children":[{"S":0,"name":"LdaZero [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/zip.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":1}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/observable/dom/webSocket.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/dom/webSocket.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/observable/dom/WebSocketSubject.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::IteratingStringHasher::VisitConsString(v8::internal::ConsString*) [CPP]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/operator/bufferTime.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":1,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":1,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":1,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":1,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/operator/bufferTime.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveLookupPaths internal/modules/cjs/loader.js:400:38","value":1,"top":0,"children":[{"S":0,"name":"Ldar [CODE:BytecodeHandler]","value":1,"top":1}]}]}]}]}]}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/operator/bufferToggle.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::IteratingStringHasher::VisitConsString(v8::internal::ConsString*) [CPP]","value":1,"top":0,"children":[{"S":0,"name":"/usr/lib/libc++abi.dylib [SHARED_LIB]","value":1,"top":0,"children":[{"S":0,"name":"T _malloc_set_zone_name [CPP]","value":1,"top":1}]}]}]}]}]}]}]},{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/operator/concat.js:1:11","value":1,"top":0,"children":[{"S":1,"name":"require internal/modules/cjs/helpers.js:17:19","value":1,"top":0,"children":[{"S":1,"name":"Module._load internal/modules/cjs/loader.js:502:24","value":1,"top":0,"children":[{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":1,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":1,"top":0,"children":[{"S":0,"name":"T v8::internal::String::ComputeAndSetHash() [CPP]","value":1,"top":1}]}]}]}]}]}]}]},{"S":2,"name":"Module._nodeModulePaths internal/modules/cjs/loader.js:359:37","value":1,"top":0,"children":[{"S":2,"name":"normalizeString path.js:57:25","value":1,"top":1}]}]}]},{"S":1,"name":"Module._resolveFilename internal/modules/cjs/loader.js:560:35","value":3,"top":0,"children":[{"S":2,"name":"Module._findPath internal/modules/cjs/loader.js:220:28","value":3,"top":1,"children":[{"S":2,"name":"realpathSync fs.js:1356:22","value":2,"top":1,"children":[{"S":1,"name":"splitRoot fs.js:1318:33","value":1,"top":0,"children":[{"S":0,"name":"Call_ReceiverIsAny [CODE:Builtin]","value":1,"top":1}]}]}]}]}]},{"S":1,"name":"tryModuleLoad internal/modules/cjs/loader.js:548:23","value":28,"top":0,"children":[{"S":1,"name":"Module.load internal/modules/cjs/loader.js:603:33","value":28,"top":0,"children":[{"S":1,"name":"Module._extensions..js internal/modules/cjs/loader.js:711:37","value":27,"top":0,"children":[{"S":1,"name":"Module._compile internal/modules/cjs/loader.js:663:37","value":25,"top":0,"children":[{"S":1,"name":"(anonymous) /usr/local/lib/node_modules/yo/node_modules/yeoman-environment/node_modules/rxjs/add/operator/defaultI
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment